@perses-dev/tempo-plugin 0.49.0 → 0.50.0-rc.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.
- package/dist/cjs/plugins/tempo-trace-query/get-trace-data.js +2 -2
- package/dist/components/TraceQLEditor.d.ts +2 -1
- package/dist/components/TraceQLEditor.d.ts.map +1 -1
- package/dist/components/TraceQLEditor.js.map +1 -1
- package/dist/components/TraceQLExtension.d.ts +2 -1
- package/dist/components/TraceQLExtension.d.ts.map +1 -1
- package/dist/components/TraceQLExtension.js.map +1 -1
- package/dist/components/complete.js.map +1 -1
- package/dist/model/tempo-client.d.ts.map +1 -1
- package/dist/model/tempo-client.js.map +1 -1
- package/dist/model/tempo-selectors.d.ts.map +1 -1
- package/dist/model/tempo-selectors.js.map +1 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQuery.d.ts +1 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQuery.d.ts.map +1 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQuery.js.map +1 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQueryEditor.d.ts +2 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQueryEditor.d.ts.map +1 -1
- package/dist/plugins/tempo-trace-query/TempoTraceQueryEditor.js.map +1 -1
- package/dist/plugins/tempo-trace-query/get-trace-data.d.ts +1 -1
- package/dist/plugins/tempo-trace-query/get-trace-data.d.ts.map +1 -1
- package/dist/plugins/tempo-trace-query/get-trace-data.js +1 -1
- package/dist/plugins/tempo-trace-query/get-trace-data.js.map +1 -1
- package/dist/plugins/tempo-trace-query/query-editor-model.d.ts.map +1 -1
- package/dist/plugins/tempo-trace-query/query-editor-model.js.map +1 -1
- package/dist/test/mock-data.js.map +1 -1
- package/package.json +6 -6
|
@@ -31,7 +31,7 @@ _export(exports, {
|
|
|
31
31
|
const _core = require("@perses-dev/core");
|
|
32
32
|
const _datefns = require("date-fns");
|
|
33
33
|
const _lodash = require("lodash");
|
|
34
|
-
const
|
|
34
|
+
const _model = require("../../model");
|
|
35
35
|
function getUnixTimeRange(timeRange) {
|
|
36
36
|
const { start, end } = timeRange;
|
|
37
37
|
return {
|
|
@@ -48,7 +48,7 @@ const getTraceData = async (spec, context)=>{
|
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
const defaultTempoDatasource = {
|
|
51
|
-
kind:
|
|
51
|
+
kind: _model.TEMPO_DATASOURCE_KIND
|
|
52
52
|
};
|
|
53
53
|
var _spec_datasource;
|
|
54
54
|
const client = await context.datasourceStore.getDatasourceClient((_spec_datasource = spec.datasource) !== null && _spec_datasource !== void 0 ? _spec_datasource : defaultTempoDatasource);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
1
2
|
import { ReactCodeMirrorProps } from '@uiw/react-codemirror';
|
|
2
3
|
import { CompletionConfig } from './TraceQLExtension';
|
|
3
4
|
export interface TraceQLEditorProps extends Omit<ReactCodeMirrorProps, 'theme' | 'extensions'> {
|
|
4
5
|
completeConfig: CompletionConfig;
|
|
5
6
|
}
|
|
6
|
-
export declare function TraceQLEditor({ completeConfig, ...rest }: TraceQLEditorProps):
|
|
7
|
+
export declare function TraceQLEditor({ completeConfig, ...rest }: TraceQLEditorProps): ReactElement;
|
|
7
8
|
//# sourceMappingURL=TraceQLEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TraceQLEditor.d.ts","sourceRoot":"","sources":["../../src/components/TraceQLEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TraceQLEditor.d.ts","sourceRoot":"","sources":["../../src/components/TraceQLEditor.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,OAAmB,EAAc,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAExE,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,YAAY,CAAC;IAC5F,cAAc,EAAE,gBAAgB,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,GAAG,YAAY,CA4D3F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/TraceQLEditor.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useMemo } from 'react';\nimport { InputLabel, Stack, useTheme } from '@mui/material';\nimport CodeMirror, { EditorView, ReactCodeMirrorProps } from '@uiw/react-codemirror';\nimport { isValidTraceId } from '@perses-dev/core';\nimport { CompletionConfig, TraceQLExtension } from './TraceQLExtension';\n\nexport interface TraceQLEditorProps extends Omit<ReactCodeMirrorProps, 'theme' | 'extensions'> {\n completeConfig: CompletionConfig;\n}\n\nexport function TraceQLEditor({ completeConfig, ...rest }: TraceQLEditorProps) {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n\n const traceQLExtension = useMemo(() => {\n return TraceQLExtension(completeConfig);\n }, [completeConfig]);\n\n const codemirrorTheme = useMemo(() => {\n // https://github.com/mui/material-ui/blob/v5.16.7/packages/mui-material/src/OutlinedInput/OutlinedInput.js#L43\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n\n return EditorView.theme({\n '&': {\n backgroundColor: 'transparent !important', // required for dark mode\n border: `1px solid ${borderColor}`,\n borderRadius: `${theme.shape.borderRadius}px`,\n },\n '&.cm-focused.cm-editor': {\n outline: 'none', // remove dotted outline on focus\n },\n '.cm-content': {\n padding: '8px',\n },\n });\n }, [theme]);\n\n return (\n <Stack position=\"relative\" sx={{ flexGrow: 1 }}>\n <InputLabel // reproduce the same kind of input label that regular MUI TextFields have\n shrink\n sx={{\n position: 'absolute',\n top: '-6px',\n left: '10px',\n padding: '0 4px',\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.default,\n zIndex: 1,\n }}\n >\n TraceQL Expression\n </InputLabel>\n <CodeMirror\n {...rest}\n theme={isDarkMode ? 'dark' : 'light'}\n basicSetup={{\n lineNumbers: false,\n highlightActiveLine: false,\n highlightActiveLineGutter: false,\n foldGutter: false,\n // The explore view accepts either a TraceQL query or a Trace ID as input. The lezer grammar marks Trace IDs as invalid,\n // therefore let's disable syntax highlighting if the input is a Trace ID.\n syntaxHighlighting: !isValidTraceId(rest.value ?? ''),\n }}\n extensions={[EditorView.lineWrapping, traceQLExtension, codemirrorTheme]}\n placeholder='Example: {span.http.method = \"GET\"}'\n />\n </Stack>\n );\n}\n"],"names":["useMemo","InputLabel","Stack","useTheme","CodeMirror","EditorView","isValidTraceId","TraceQLExtension","TraceQLEditor","completeConfig","rest","theme","isDarkMode","palette","mode","traceQLExtension","codemirrorTheme","borderColor","backgroundColor","border","borderRadius","shape","outline","padding","position","sx","flexGrow","shrink","top","left","color","text","primary","background","default","zIndex","basicSetup","lineNumbers","highlightActiveLine","highlightActiveLineGutter","foldGutter","syntaxHighlighting","value","extensions","lineWrapping","placeholder"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,
|
|
1
|
+
{"version":3,"sources":["../../src/components/TraceQLEditor.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ReactElement, useMemo } from 'react';\nimport { InputLabel, Stack, useTheme } from '@mui/material';\nimport CodeMirror, { EditorView, ReactCodeMirrorProps } from '@uiw/react-codemirror';\nimport { isValidTraceId } from '@perses-dev/core';\nimport { CompletionConfig, TraceQLExtension } from './TraceQLExtension';\n\nexport interface TraceQLEditorProps extends Omit<ReactCodeMirrorProps, 'theme' | 'extensions'> {\n completeConfig: CompletionConfig;\n}\n\nexport function TraceQLEditor({ completeConfig, ...rest }: TraceQLEditorProps): ReactElement {\n const theme = useTheme();\n const isDarkMode = theme.palette.mode === 'dark';\n\n const traceQLExtension = useMemo(() => {\n return TraceQLExtension(completeConfig);\n }, [completeConfig]);\n\n const codemirrorTheme = useMemo(() => {\n // https://github.com/mui/material-ui/blob/v5.16.7/packages/mui-material/src/OutlinedInput/OutlinedInput.js#L43\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n\n return EditorView.theme({\n '&': {\n backgroundColor: 'transparent !important', // required for dark mode\n border: `1px solid ${borderColor}`,\n borderRadius: `${theme.shape.borderRadius}px`,\n },\n '&.cm-focused.cm-editor': {\n outline: 'none', // remove dotted outline on focus\n },\n '.cm-content': {\n padding: '8px',\n },\n });\n }, [theme]);\n\n return (\n <Stack position=\"relative\" sx={{ flexGrow: 1 }}>\n <InputLabel // reproduce the same kind of input label that regular MUI TextFields have\n shrink\n sx={{\n position: 'absolute',\n top: '-6px',\n left: '10px',\n padding: '0 4px',\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.background.default,\n zIndex: 1,\n }}\n >\n TraceQL Expression\n </InputLabel>\n <CodeMirror\n {...rest}\n theme={isDarkMode ? 'dark' : 'light'}\n basicSetup={{\n lineNumbers: false,\n highlightActiveLine: false,\n highlightActiveLineGutter: false,\n foldGutter: false,\n // The explore view accepts either a TraceQL query or a Trace ID as input. The lezer grammar marks Trace IDs as invalid,\n // therefore let's disable syntax highlighting if the input is a Trace ID.\n syntaxHighlighting: !isValidTraceId(rest.value ?? ''),\n }}\n extensions={[EditorView.lineWrapping, traceQLExtension, codemirrorTheme]}\n placeholder='Example: {span.http.method = \"GET\"}'\n />\n </Stack>\n );\n}\n"],"names":["useMemo","InputLabel","Stack","useTheme","CodeMirror","EditorView","isValidTraceId","TraceQLExtension","TraceQLEditor","completeConfig","rest","theme","isDarkMode","palette","mode","traceQLExtension","codemirrorTheme","borderColor","backgroundColor","border","borderRadius","shape","outline","padding","position","sx","flexGrow","shrink","top","left","color","text","primary","background","default","zIndex","basicSetup","lineNumbers","highlightActiveLine","highlightActiveLineGutter","foldGutter","syntaxHighlighting","value","extensions","lineWrapping","placeholder"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAAuBA,OAAO,QAAQ,QAAQ;AAC9C,SAASC,UAAU,EAAEC,KAAK,EAAEC,QAAQ,QAAQ,gBAAgB;AAC5D,OAAOC,cAAcC,UAAU,QAA8B,wBAAwB;AACrF,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAA2BC,gBAAgB,QAAQ,qBAAqB;AAMxE,OAAO,SAASC,cAAc,EAAEC,cAAc,EAAE,GAAGC,MAA0B;IAC3E,MAAMC,QAAQR;IACd,MAAMS,aAAaD,MAAME,OAAO,CAACC,IAAI,KAAK;IAE1C,MAAMC,mBAAmBf,QAAQ;QAC/B,OAAOO,iBAAiBE;IAC1B,GAAG;QAACA;KAAe;IAEnB,MAAMO,kBAAkBhB,QAAQ;QAC9B,+GAA+G;QAC/G,MAAMiB,cAAcN,MAAME,OAAO,CAACC,IAAI,KAAK,UAAU,wBAAwB;QAE7E,OAAOT,WAAWM,KAAK,CAAC;YACtB,KAAK;gBACHO,iBAAiB;gBACjBC,QAAQ,CAAC,UAAU,EAAEF,YAAY,CAAC;gBAClCG,cAAc,CAAC,EAAET,MAAMU,KAAK,CAACD,YAAY,CAAC,EAAE,CAAC;YAC/C;YACA,0BAA0B;gBACxBE,SAAS;YACX;YACA,eAAe;gBACbC,SAAS;YACX;QACF;IACF,GAAG;QAACZ;KAAM;QA4BkCD;IA1B5C,qBACE,MAACR;QAAMsB,UAAS;QAAWC,IAAI;YAAEC,UAAU;QAAE;;0BAC3C,KAACzB,WAAW,0EAA0E;;gBACpF0B,MAAM;gBACNF,IAAI;oBACFD,UAAU;oBACVI,KAAK;oBACLC,MAAM;oBACNN,SAAS;oBACTO,OAAOnB,MAAME,OAAO,CAACkB,IAAI,CAACC,OAAO;oBACjCd,iBAAiBP,MAAME,OAAO,CAACoB,UAAU,CAACC,OAAO;oBACjDC,QAAQ;gBACV;0BACD;;0BAGD,KAAC/B;gBACE,GAAGM,IAAI;gBACRC,OAAOC,aAAa,SAAS;gBAC7BwB,YAAY;oBACVC,aAAa;oBACbC,qBAAqB;oBACrBC,2BAA2B;oBAC3BC,YAAY;oBACZ,wHAAwH;oBACxH,0EAA0E;oBAC1EC,oBAAoB,CAACnC,eAAeI,CAAAA,cAAAA,KAAKgC,KAAK,cAAVhC,yBAAAA,cAAc;gBACpD;gBACAiC,YAAY;oBAACtC,WAAWuC,YAAY;oBAAE7B;oBAAkBC;iBAAgB;gBACxE6B,aAAY;;;;AAIpB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { LRLanguage } from '@codemirror/language';
|
|
2
|
+
import { Extension } from '@uiw/react-codemirror';
|
|
2
3
|
import { TempoClient } from '../model/tempo-client';
|
|
3
4
|
export interface CompletionConfig {
|
|
4
5
|
client?: TempoClient;
|
|
5
6
|
endpoint?: string;
|
|
6
7
|
}
|
|
7
|
-
export declare function TraceQLExtension(completionCfg: CompletionConfig):
|
|
8
|
+
export declare function TraceQLExtension(completionCfg: CompletionConfig): Array<LRLanguage | Extension>;
|
|
8
9
|
//# sourceMappingURL=TraceQLExtension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TraceQLExtension.d.ts","sourceRoot":"","sources":["../../src/components/TraceQLExtension.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA2BpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TraceQLExtension.d.ts","sourceRoot":"","sources":["../../src/components/TraceQLExtension.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA2BpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,GAAG,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,CAQ/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/TraceQLExtension.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { LRLanguage } from '@codemirror/language';\nimport { parser } from '@grafana/lezer-traceql';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { TempoClient } from '../model/tempo-client';\nimport { TempoDatasource } from '../plugins/tempo-datasource';\nimport { traceQLHighlight } from './highlight';\nimport { complete } from './complete';\n\nfunction traceQLLanguage(): LRLanguage {\n return LRLanguage.define({\n parser: parser.configure({\n props: [traceQLHighlight],\n }),\n languageData: {\n closeBrackets: { brackets: ['(', '[', '{', \"'\", '\"', '`'] },\n commentTokens: { line: '//' },\n },\n });\n}\n\nfunction getTempoClient(completionCfg: CompletionConfig): TempoClient | undefined {\n if (completionCfg.client) {\n return completionCfg.client;\n }\n if (completionCfg.endpoint) {\n return TempoDatasource.createClient({ directUrl: completionCfg.endpoint }, {});\n }\n return undefined;\n}\n\nexport interface CompletionConfig {\n client?: TempoClient;\n endpoint?: string;\n}\n\nexport function TraceQLExtension(completionCfg: CompletionConfig) {\n const tempoClient = getTempoClient(completionCfg);\n const language = traceQLLanguage();\n const completion = language.data.of({\n autocomplete: (ctx: CompletionContext) =>\n complete(ctx, tempoClient).catch((e) => console.error('error during TraceQL auto-complete', e)),\n });\n return [language, completion];\n}\n"],"names":["LRLanguage","parser","TempoDatasource","traceQLHighlight","complete","traceQLLanguage","define","configure","props","languageData","closeBrackets","brackets","commentTokens","line","getTempoClient","completionCfg","client","endpoint","createClient","directUrl","undefined","TraceQLExtension","tempoClient","language","completion","data","of","autocomplete","ctx","catch","e","console","error"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,UAAU,QAAQ,uBAAuB;AAClD,SAASC,MAAM,QAAQ,yBAAyB;
|
|
1
|
+
{"version":3,"sources":["../../src/components/TraceQLExtension.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { LRLanguage } from '@codemirror/language';\nimport { parser } from '@grafana/lezer-traceql';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { Extension } from '@uiw/react-codemirror';\nimport { TempoClient } from '../model/tempo-client';\nimport { TempoDatasource } from '../plugins/tempo-datasource';\nimport { traceQLHighlight } from './highlight';\nimport { complete } from './complete';\n\nfunction traceQLLanguage(): LRLanguage {\n return LRLanguage.define({\n parser: parser.configure({\n props: [traceQLHighlight],\n }),\n languageData: {\n closeBrackets: { brackets: ['(', '[', '{', \"'\", '\"', '`'] },\n commentTokens: { line: '//' },\n },\n });\n}\n\nfunction getTempoClient(completionCfg: CompletionConfig): TempoClient | undefined {\n if (completionCfg.client) {\n return completionCfg.client;\n }\n if (completionCfg.endpoint) {\n return TempoDatasource.createClient({ directUrl: completionCfg.endpoint }, {});\n }\n return undefined;\n}\n\nexport interface CompletionConfig {\n client?: TempoClient;\n endpoint?: string;\n}\n\nexport function TraceQLExtension(completionCfg: CompletionConfig): Array<LRLanguage | Extension> {\n const tempoClient = getTempoClient(completionCfg);\n const language = traceQLLanguage();\n const completion = language.data.of({\n autocomplete: (ctx: CompletionContext) =>\n complete(ctx, tempoClient).catch((e) => console.error('error during TraceQL auto-complete', e)),\n });\n return [language, completion];\n}\n"],"names":["LRLanguage","parser","TempoDatasource","traceQLHighlight","complete","traceQLLanguage","define","configure","props","languageData","closeBrackets","brackets","commentTokens","line","getTempoClient","completionCfg","client","endpoint","createClient","directUrl","undefined","TraceQLExtension","tempoClient","language","completion","data","of","autocomplete","ctx","catch","e","console","error"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,UAAU,QAAQ,uBAAuB;AAClD,SAASC,MAAM,QAAQ,yBAAyB;AAIhD,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SAASC,gBAAgB,QAAQ,cAAc;AAC/C,SAASC,QAAQ,QAAQ,aAAa;AAEtC,SAASC;IACP,OAAOL,WAAWM,MAAM,CAAC;QACvBL,QAAQA,OAAOM,SAAS,CAAC;YACvBC,OAAO;gBAACL;aAAiB;QAC3B;QACAM,cAAc;YACZC,eAAe;gBAAEC,UAAU;oBAAC;oBAAK;oBAAK;oBAAK;oBAAK;oBAAK;iBAAI;YAAC;YAC1DC,eAAe;gBAAEC,MAAM;YAAK;QAC9B;IACF;AACF;AAEA,SAASC,eAAeC,aAA+B;IACrD,IAAIA,cAAcC,MAAM,EAAE;QACxB,OAAOD,cAAcC,MAAM;IAC7B;IACA,IAAID,cAAcE,QAAQ,EAAE;QAC1B,OAAOf,gBAAgBgB,YAAY,CAAC;YAAEC,WAAWJ,cAAcE,QAAQ;QAAC,GAAG,CAAC;IAC9E;IACA,OAAOG;AACT;AAOA,OAAO,SAASC,iBAAiBN,aAA+B;IAC9D,MAAMO,cAAcR,eAAeC;IACnC,MAAMQ,WAAWlB;IACjB,MAAMmB,aAAaD,SAASE,IAAI,CAACC,EAAE,CAAC;QAClCC,cAAc,CAACC,MACbxB,SAASwB,KAAKN,aAAaO,KAAK,CAAC,CAACC,IAAMC,QAAQC,KAAK,CAAC,sCAAsCF;IAChG;IACA,OAAO;QAACP;QAAUC;KAAW;AAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/complete.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Completion, CompletionContext, CompletionResult, insertCompletionText } from '@codemirror/autocomplete';\nimport { syntaxTree } from '@codemirror/language';\nimport { EditorState } from '@codemirror/state';\nimport { Tree } from '@lezer/common';\nimport {\n String as StringType,\n FieldExpression,\n AttributeField,\n Resource,\n Identifier,\n Span,\n SpansetFilter,\n FieldOp,\n} from '@grafana/lezer-traceql';\nimport { EditorView } from '@uiw/react-codemirror';\nimport { TempoClient } from '../model/tempo-client';\n\n/** CompletionScope specifies the completion kind, e.g. whether to complete tag names or values etc. */\ntype CompletionScope =\n | { kind: 'Scopes' } // 'resource'|'span'\n | { kind: 'TagName'; scope: 'resource' | 'span' | 'intrinsic' }\n | { kind: 'TagValue'; tag: string };\n\n/**\n * Completions specifies the identified scopes and position of the completion in the current editor text.\n * For example, when entering '{' the following completions are possible: Scopes(), TagName(scope=intrinsic)\n */\nexport interface Completions {\n scopes: CompletionScope[];\n from: number;\n to?: number;\n}\n\nexport async function complete(\n { state, pos }: CompletionContext,\n client?: TempoClient\n): Promise<CompletionResult | null> {\n // First, identify the completion scopes, for example Scopes() and TagName(scope=intrinsic)\n const completions = identifyCompletions(state, pos, syntaxTree(state));\n if (!completions) {\n // No completion scopes found for current cursor position.\n return null;\n }\n\n // Then, retrieve completion options for all identified scopes (from the Tempo API).\n const options = await retrieveOptions(completions.scopes, client);\n return { options, from: completions.from, to: completions.to };\n}\n\n/**\n * Identify completion scopes (e.g. TagValue) and position, based on the current node in the syntax tree.\n *\n * For development, you can visualize the tree of a TraceQL query using this tool:\n * https://github.com/grafana/lezer-traceql/blob/main/tools/tree-viz.html\n *\n * Function is exported for tests only.\n */\nexport function identifyCompletions(state: EditorState, pos: number, tree: Tree): Completions | undefined {\n const node = tree.resolveInner(pos, -1);\n\n switch (node.type.id) {\n case SpansetFilter:\n // autocomplete {\n // autocomplete {}\n // do not autocomplete if cursor is after } or { status=ok }\n if (\n (node.firstChild === null || node.firstChild?.type.id === 0) &&\n !state.sliceDoc(node.from, pos).includes('}')\n ) {\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: pos,\n };\n }\n break;\n\n case FieldExpression:\n // autocomplete { status=ok &&\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: pos,\n };\n\n case AttributeField:\n // autocomplete { resource.\n if (node.firstChild?.type.id === Resource) {\n return { scopes: [{ kind: 'TagName', scope: 'resource' }], from: pos };\n }\n\n // autocomplete { span.\n if (node.firstChild?.type.id === Span) {\n return { scopes: [{ kind: 'TagName', scope: 'span' }], from: pos };\n }\n\n // autocomplete { .\n if (state.sliceDoc(node.from, node.to) === '.') {\n return {\n scopes: [\n { kind: 'TagName', scope: 'resource' },\n { kind: 'TagName', scope: 'span' },\n ],\n from: pos,\n };\n }\n break;\n\n case Identifier:\n if (node.parent?.type.id === AttributeField) {\n const text = state.sliceDoc(node.parent.from, node.parent.to);\n // autocomplete { span:s\n // only intrinsic fields can have a : in the name.\n if (text.includes(':')) {\n return { scopes: [{ kind: 'TagName', scope: 'intrinsic' }], from: node.parent.from };\n }\n\n // autocomplete { resource.s\n if (node.parent?.firstChild?.type.id === Resource) {\n return { scopes: [{ kind: 'TagName', scope: 'resource' }], from: node.from };\n }\n\n // autocomplete { span.s\n if (node.parent?.firstChild?.type.id === Span) {\n return { scopes: [{ kind: 'TagName', scope: 'span' }], from: node.from };\n }\n\n // autocomplete { .s\n if (node.parent?.firstChild?.type.id === Identifier) {\n return {\n scopes: [\n { kind: 'TagName', scope: 'resource' },\n { kind: 'TagName', scope: 'span' },\n ],\n from: node.from,\n };\n }\n }\n break;\n\n case FieldOp:\n // autocomplete { status=\n // autocomplete { span.http.method=\n if (node.parent?.firstChild?.type.id === FieldExpression) {\n const fieldExpr = node.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from: pos };\n }\n break;\n\n case StringType:\n // autocomplete { resource.service.name=\"\n // do not autocomplete if cursor is after closing quotes { resource.service.name=\"\"\n if (\n node.parent?.parent?.parent?.firstChild?.type.id === FieldExpression &&\n !/^\".*\"$/.test(state.sliceDoc(node.from, pos))\n ) {\n const fieldExpr = node.parent.parent.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from: node.from + 1 }; // node.from+1 to ignore leading \"\n }\n break;\n\n case 0 /* error node */:\n // autocomplete { status=e\n if (node.prevSibling?.type.id === FieldOp && node.parent?.firstChild?.type.id === FieldExpression) {\n const fieldExpr = node.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n // ignore leading \" in { name=\"HT\n const from = state.sliceDoc(node.from, node.from + 1) === '\"' ? node.from + 1 : node.from;\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from };\n }\n\n // autocomplete { s\n // autocomplete { status=ok && s\n if (node.parent?.type.id === SpansetFilter || node.parent?.type.id === FieldExpression) {\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: node.from,\n };\n }\n break;\n }\n}\n\n/**\n * Retrieve all completion options based on the previously identified completion scopes.\n */\nasync function retrieveOptions(completions: CompletionScope[], client?: TempoClient): Promise<Completion[]> {\n const results: Array<Promise<Completion[]>> = [];\n\n for (const completion of completions) {\n switch (completion.kind) {\n case 'Scopes':\n results.push(Promise.resolve([{ label: 'span' }, { label: 'resource' }]));\n break;\n\n case 'TagName':\n if (client) {\n results.push(completeTagName(client, completion.scope));\n }\n break;\n\n case 'TagValue':\n if (client) {\n results.push(completeTagValue(client, completion.tag));\n }\n break;\n }\n }\n\n // Retrieve options concurrently\n // e.g. for unscoped attribute fields, retrieve list of span and resource attributes concurrently.\n const options = await Promise.all(results);\n return options.flat();\n}\n\nasync function completeTagName(client: TempoClient, scope: 'resource' | 'span' | 'intrinsic'): Promise<Completion[]> {\n const response = await client.searchTags({ scope });\n return response.scopes.flatMap((scope) => scope.tags).map((tag) => ({ label: tag }));\n}\n\n/**\n * Add quotes to the completion text in case quotes are not present already.\n * This handles the following cases:\n * { name=HTTP\n * { name=\"x\n * { name=\"x\" where cursor is after the 'x'\n */\nfunction applyQuotedCompletion(view: EditorView, completion: Completion, from: number, to: number) {\n let insertText = completion.label;\n if (view.state.sliceDoc(from - 1, from) !== '\"') {\n insertText = '\"' + insertText;\n }\n if (view.state.sliceDoc(to, to + 1) !== '\"') {\n insertText = insertText + '\"';\n }\n view.dispatch(insertCompletionText(view.state, insertText, from, to));\n}\n\nasync function completeTagValue(client: TempoClient, tag: string): Promise<Completion[]> {\n const response = await client.searchTagValues({ tag });\n const completions: Completion[] = [];\n for (const { type, value } of response.tagValues) {\n switch (type) {\n case 'string':\n completions.push({ label: value, apply: applyQuotedCompletion });\n break;\n\n case 'keyword':\n case 'int':\n completions.push({ label: value });\n break;\n }\n }\n return completions;\n}\n"],"names":["insertCompletionText","syntaxTree","String","StringType","FieldExpression","AttributeField","Resource","Identifier","Span","SpansetFilter","FieldOp","complete","state","pos","client","completions","identifyCompletions","options","retrieveOptions","scopes","from","to","tree","node","resolveInner","type","id","firstChild","sliceDoc","includes","kind","scope","parent","text","fieldExpr","attribute","tag","test","prevSibling","results","completion","push","Promise","resolve","label","completeTagName","completeTagValue","all","flat","response","searchTags","flatMap","tags","map","applyQuotedCompletion","view","insertText","dispatch","searchTagValues","value","tagValues","apply"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/components/complete.ts"],"sourcesContent":["// Copyright 2024 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Completion, CompletionContext, CompletionResult, insertCompletionText } from '@codemirror/autocomplete';\nimport { syntaxTree } from '@codemirror/language';\nimport { EditorState } from '@codemirror/state';\nimport { Tree } from '@lezer/common';\nimport {\n String as StringType,\n FieldExpression,\n AttributeField,\n Resource,\n Identifier,\n Span,\n SpansetFilter,\n FieldOp,\n} from '@grafana/lezer-traceql';\nimport { EditorView } from '@uiw/react-codemirror';\nimport { TempoClient } from '../model/tempo-client';\n\n/** CompletionScope specifies the completion kind, e.g. whether to complete tag names or values etc. */\ntype CompletionScope =\n | { kind: 'Scopes' } // 'resource'|'span'\n | { kind: 'TagName'; scope: 'resource' | 'span' | 'intrinsic' }\n | { kind: 'TagValue'; tag: string };\n\n/**\n * Completions specifies the identified scopes and position of the completion in the current editor text.\n * For example, when entering '{' the following completions are possible: Scopes(), TagName(scope=intrinsic)\n */\nexport interface Completions {\n scopes: CompletionScope[];\n from: number;\n to?: number;\n}\n\nexport async function complete(\n { state, pos }: CompletionContext,\n client?: TempoClient\n): Promise<CompletionResult | null> {\n // First, identify the completion scopes, for example Scopes() and TagName(scope=intrinsic)\n const completions = identifyCompletions(state, pos, syntaxTree(state));\n if (!completions) {\n // No completion scopes found for current cursor position.\n return null;\n }\n\n // Then, retrieve completion options for all identified scopes (from the Tempo API).\n const options = await retrieveOptions(completions.scopes, client);\n return { options, from: completions.from, to: completions.to };\n}\n\n/**\n * Identify completion scopes (e.g. TagValue) and position, based on the current node in the syntax tree.\n *\n * For development, you can visualize the tree of a TraceQL query using this tool:\n * https://github.com/grafana/lezer-traceql/blob/main/tools/tree-viz.html\n *\n * Function is exported for tests only.\n */\nexport function identifyCompletions(state: EditorState, pos: number, tree: Tree): Completions | undefined {\n const node = tree.resolveInner(pos, -1);\n\n switch (node.type.id) {\n case SpansetFilter:\n // autocomplete {\n // autocomplete {}\n // do not autocomplete if cursor is after } or { status=ok }\n if (\n (node.firstChild === null || node.firstChild?.type.id === 0) &&\n !state.sliceDoc(node.from, pos).includes('}')\n ) {\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: pos,\n };\n }\n break;\n\n case FieldExpression:\n // autocomplete { status=ok &&\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: pos,\n };\n\n case AttributeField:\n // autocomplete { resource.\n if (node.firstChild?.type.id === Resource) {\n return { scopes: [{ kind: 'TagName', scope: 'resource' }], from: pos };\n }\n\n // autocomplete { span.\n if (node.firstChild?.type.id === Span) {\n return { scopes: [{ kind: 'TagName', scope: 'span' }], from: pos };\n }\n\n // autocomplete { .\n if (state.sliceDoc(node.from, node.to) === '.') {\n return {\n scopes: [\n { kind: 'TagName', scope: 'resource' },\n { kind: 'TagName', scope: 'span' },\n ],\n from: pos,\n };\n }\n break;\n\n case Identifier:\n if (node.parent?.type.id === AttributeField) {\n const text = state.sliceDoc(node.parent.from, node.parent.to);\n // autocomplete { span:s\n // only intrinsic fields can have a : in the name.\n if (text.includes(':')) {\n return { scopes: [{ kind: 'TagName', scope: 'intrinsic' }], from: node.parent.from };\n }\n\n // autocomplete { resource.s\n if (node.parent?.firstChild?.type.id === Resource) {\n return { scopes: [{ kind: 'TagName', scope: 'resource' }], from: node.from };\n }\n\n // autocomplete { span.s\n if (node.parent?.firstChild?.type.id === Span) {\n return { scopes: [{ kind: 'TagName', scope: 'span' }], from: node.from };\n }\n\n // autocomplete { .s\n if (node.parent?.firstChild?.type.id === Identifier) {\n return {\n scopes: [\n { kind: 'TagName', scope: 'resource' },\n { kind: 'TagName', scope: 'span' },\n ],\n from: node.from,\n };\n }\n }\n break;\n\n case FieldOp:\n // autocomplete { status=\n // autocomplete { span.http.method=\n if (node.parent?.firstChild?.type.id === FieldExpression) {\n const fieldExpr = node.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from: pos };\n }\n break;\n\n case StringType:\n // autocomplete { resource.service.name=\"\n // do not autocomplete if cursor is after closing quotes { resource.service.name=\"\"\n if (\n node.parent?.parent?.parent?.firstChild?.type.id === FieldExpression &&\n !/^\".*\"$/.test(state.sliceDoc(node.from, pos))\n ) {\n const fieldExpr = node.parent.parent.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from: node.from + 1 }; // node.from+1 to ignore leading \"\n }\n break;\n\n case 0 /* error node */:\n // autocomplete { status=e\n if (node.prevSibling?.type.id === FieldOp && node.parent?.firstChild?.type.id === FieldExpression) {\n const fieldExpr = node.parent.firstChild;\n const attribute = state.sliceDoc(fieldExpr.from, fieldExpr.to);\n // ignore leading \" in { name=\"HT\n const from = state.sliceDoc(node.from, node.from + 1) === '\"' ? node.from + 1 : node.from;\n return { scopes: [{ kind: 'TagValue', tag: attribute }], from };\n }\n\n // autocomplete { s\n // autocomplete { status=ok && s\n if (node.parent?.type.id === SpansetFilter || node.parent?.type.id === FieldExpression) {\n return {\n scopes: [{ kind: 'Scopes' }, { kind: 'TagName', scope: 'intrinsic' }],\n from: node.from,\n };\n }\n break;\n }\n}\n\n/**\n * Retrieve all completion options based on the previously identified completion scopes.\n */\nasync function retrieveOptions(completions: CompletionScope[], client?: TempoClient): Promise<Completion[]> {\n const results: Array<Promise<Completion[]>> = [];\n\n for (const completion of completions) {\n switch (completion.kind) {\n case 'Scopes':\n results.push(Promise.resolve([{ label: 'span' }, { label: 'resource' }]));\n break;\n\n case 'TagName':\n if (client) {\n results.push(completeTagName(client, completion.scope));\n }\n break;\n\n case 'TagValue':\n if (client) {\n results.push(completeTagValue(client, completion.tag));\n }\n break;\n }\n }\n\n // Retrieve options concurrently\n // e.g. for unscoped attribute fields, retrieve list of span and resource attributes concurrently.\n const options = await Promise.all(results);\n return options.flat();\n}\n\nasync function completeTagName(client: TempoClient, scope: 'resource' | 'span' | 'intrinsic'): Promise<Completion[]> {\n const response = await client.searchTags({ scope });\n return response.scopes.flatMap((scope) => scope.tags).map((tag) => ({ label: tag }));\n}\n\n/**\n * Add quotes to the completion text in case quotes are not present already.\n * This handles the following cases:\n * { name=HTTP\n * { name=\"x\n * { name=\"x\" where cursor is after the 'x'\n */\nfunction applyQuotedCompletion(view: EditorView, completion: Completion, from: number, to: number): void {\n let insertText = completion.label;\n if (view.state.sliceDoc(from - 1, from) !== '\"') {\n insertText = '\"' + insertText;\n }\n if (view.state.sliceDoc(to, to + 1) !== '\"') {\n insertText = insertText + '\"';\n }\n view.dispatch(insertCompletionText(view.state, insertText, from, to));\n}\n\nasync function completeTagValue(client: TempoClient, tag: string): Promise<Completion[]> {\n const response = await client.searchTagValues({ tag });\n const completions: Completion[] = [];\n for (const { type, value } of response.tagValues) {\n switch (type) {\n case 'string':\n completions.push({ label: value, apply: applyQuotedCompletion });\n break;\n\n case 'keyword':\n case 'int':\n completions.push({ label: value });\n break;\n }\n }\n return completions;\n}\n"],"names":["insertCompletionText","syntaxTree","String","StringType","FieldExpression","AttributeField","Resource","Identifier","Span","SpansetFilter","FieldOp","complete","state","pos","client","completions","identifyCompletions","options","retrieveOptions","scopes","from","to","tree","node","resolveInner","type","id","firstChild","sliceDoc","includes","kind","scope","parent","text","fieldExpr","attribute","tag","test","prevSibling","results","completion","push","Promise","resolve","label","completeTagName","completeTagValue","all","flat","response","searchTags","flatMap","tags","map","applyQuotedCompletion","view","insertText","dispatch","searchTagValues","value","tagValues","apply"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo-client.d.ts","sourceRoot":"","sources":["../../src/model/tempo-client.ts"],"names":[],"mappings":"AAaA,OAAO,EAAS,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EAGb,cAAc,EACd,gCAAgC,EAChC,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,kBAAkB,CAAC;IAE5B,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxF,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3F,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvG,UAAU,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvG,eAAe,CAAC,MAAM,EAAE,gCAAgC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvH;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"tempo-client.d.ts","sourceRoot":"","sources":["../../src/model/tempo-client.ts"],"names":[],"mappings":"AAaA,OAAO,EAAS,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EAGb,cAAc,EACd,gCAAgC,EAChC,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAErB,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,kBAAkB,CAAC;IAE5B,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxF,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3F,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvG,UAAU,CAAC,MAAM,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvG,eAAe,CAAC,MAAM,EAAE,gCAAgC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACvH;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,wEAAwD,QAAQ,CAAC,CAI3F,CAAC;AAiBF;;GAEG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAE3G;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAExG;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,cAAc,CAAC,CAqDzB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,2BAA2B,EACnC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gCAAgC,EACxC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAOlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/model/tempo-client.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { fetch, RequestHeaders } from '@perses-dev/core';\nimport { DatasourceClient } from '@perses-dev/plugin-system';\nimport {\n QueryRequestParameters,\n SearchRequestParameters,\n SearchTagsRequestParameters,\n SearchTagsResponse,\n QueryResponse,\n ServiceStats,\n SpanStatusError,\n SearchResponse,\n SearchTagValuesRequestParameters,\n SearchTagValuesResponse,\n} from './api-types';\n\ninterface TempoClientOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport interface TempoClient extends DatasourceClient {\n options: TempoClientOptions;\n // https://grafana.com/docs/tempo/latest/api_docs/\n query(params: QueryRequestParameters, headers?: RequestHeaders): Promise<QueryResponse>;\n search(params: SearchRequestParameters, headers?: RequestHeaders): Promise<SearchResponse>;\n searchWithFallback(params: SearchRequestParameters, headers?: RequestHeaders): Promise<SearchResponse>;\n searchTags(params: SearchTagsRequestParameters, headers?: RequestHeaders): Promise<SearchTagsResponse>;\n searchTagValues(params: SearchTagValuesRequestParameters, headers?: RequestHeaders): Promise<SearchTagValuesResponse>;\n}\n\nexport interface QueryOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport const executeRequest = async <T>(...args: Parameters<typeof global.fetch>): Promise<T> => {\n const response = await fetch(...args);\n const jsonData = await response.json();\n return jsonData;\n};\n\nfunction fetchWithGet<T, TResponse>(apiURI: string, params: T | null, queryOptions: QueryOptions) {\n const { datasourceUrl, headers = {} } = queryOptions;\n\n let url = `${datasourceUrl}${apiURI}`;\n if (params) {\n url += '?' + new URLSearchParams(params);\n }\n const init = {\n method: 'GET',\n headers,\n };\n\n return executeRequest<TResponse>(url, init);\n}\n\n/**\n * Returns a summary report of traces that satisfy the query.\n */\nexport function search(params: SearchRequestParameters, queryOptions: QueryOptions) {\n return fetchWithGet<SearchRequestParameters, SearchResponse>('/api/search', params, queryOptions);\n}\n\n/**\n * Returns an entire trace.\n */\nexport function query(params: QueryRequestParameters, queryOptions: QueryOptions) {\n return fetchWithGet<null, QueryResponse>(`/api/traces/${encodeURIComponent(params.traceId)}`, null, queryOptions);\n}\n\n/**\n * Returns a summary report of traces that satisfy the query.\n *\n * If the serviceStats field is missing in the response, fetches all traces\n * and calculates the serviceStats.\n *\n * Tempo computes the serviceStats field during ingestion since vParquet4,\n * this fallback is required for older block formats.\n */\nexport async function searchWithFallback(\n params: SearchRequestParameters,\n queryOptions: QueryOptions\n): Promise<SearchResponse> {\n // Get a list of traces that satisfy the query.\n const searchResponse = await search(params, queryOptions);\n if (!searchResponse.traces || searchResponse.traces.length === 0) {\n return { traces: [] };\n }\n\n // exit early if fallback is not required (serviceStats are contained in the response)\n if (searchResponse.traces.every((t) => t.serviceStats)) {\n return searchResponse;\n }\n\n // calculate serviceStats (number of spans and errors) per service\n return {\n traces: await Promise.all(\n searchResponse.traces.map(async (trace) => {\n if (trace.serviceStats) {\n // fallback not required, serviceStats are contained in the response\n return trace;\n }\n\n const serviceStats: Record<string, ServiceStats> = {};\n const searchTraceIDResponse = await query({ traceId: trace.traceID }, queryOptions);\n\n // For every trace, get the full trace, and find the number of spans and errors.\n for (const batch of searchTraceIDResponse.batches) {\n let serviceName = '?';\n for (const attr of batch.resource.attributes) {\n if (attr.key === 'service.name' && 'stringValue' in attr.value) {\n serviceName = attr.value.stringValue;\n break;\n }\n }\n\n const stats = serviceStats[serviceName] ?? { spanCount: 0 };\n for (const scopeSpan of batch.scopeSpans) {\n stats.spanCount += scopeSpan.spans.length;\n for (const span of scopeSpan.spans) {\n if (span.status?.code === SpanStatusError) {\n stats.errorCount = (stats.errorCount ?? 0) + 1;\n }\n }\n }\n serviceStats[serviceName] = stats;\n }\n\n return {\n ...trace,\n serviceStats,\n };\n })\n ),\n };\n}\n\n/**\n * Returns a list of all tag names for a given scope.\n */\nexport function searchTags(params: SearchTagsRequestParameters
|
|
1
|
+
{"version":3,"sources":["../../src/model/tempo-client.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { fetch, RequestHeaders } from '@perses-dev/core';\nimport { DatasourceClient } from '@perses-dev/plugin-system';\nimport {\n QueryRequestParameters,\n SearchRequestParameters,\n SearchTagsRequestParameters,\n SearchTagsResponse,\n QueryResponse,\n ServiceStats,\n SpanStatusError,\n SearchResponse,\n SearchTagValuesRequestParameters,\n SearchTagValuesResponse,\n} from './api-types';\n\ninterface TempoClientOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport interface TempoClient extends DatasourceClient {\n options: TempoClientOptions;\n // https://grafana.com/docs/tempo/latest/api_docs/\n query(params: QueryRequestParameters, headers?: RequestHeaders): Promise<QueryResponse>;\n search(params: SearchRequestParameters, headers?: RequestHeaders): Promise<SearchResponse>;\n searchWithFallback(params: SearchRequestParameters, headers?: RequestHeaders): Promise<SearchResponse>;\n searchTags(params: SearchTagsRequestParameters, headers?: RequestHeaders): Promise<SearchTagsResponse>;\n searchTagValues(params: SearchTagValuesRequestParameters, headers?: RequestHeaders): Promise<SearchTagValuesResponse>;\n}\n\nexport interface QueryOptions {\n datasourceUrl: string;\n headers?: RequestHeaders;\n}\n\nexport const executeRequest = async <T>(...args: Parameters<typeof global.fetch>): Promise<T> => {\n const response = await fetch(...args);\n const jsonData = await response.json();\n return jsonData;\n};\n\nfunction fetchWithGet<T, TResponse>(apiURI: string, params: T | null, queryOptions: QueryOptions): Promise<TResponse> {\n const { datasourceUrl, headers = {} } = queryOptions;\n\n let url = `${datasourceUrl}${apiURI}`;\n if (params) {\n url += '?' + new URLSearchParams(params);\n }\n const init = {\n method: 'GET',\n headers,\n };\n\n return executeRequest<TResponse>(url, init);\n}\n\n/**\n * Returns a summary report of traces that satisfy the query.\n */\nexport function search(params: SearchRequestParameters, queryOptions: QueryOptions): Promise<SearchResponse> {\n return fetchWithGet<SearchRequestParameters, SearchResponse>('/api/search', params, queryOptions);\n}\n\n/**\n * Returns an entire trace.\n */\nexport function query(params: QueryRequestParameters, queryOptions: QueryOptions): Promise<QueryResponse> {\n return fetchWithGet<null, QueryResponse>(`/api/traces/${encodeURIComponent(params.traceId)}`, null, queryOptions);\n}\n\n/**\n * Returns a summary report of traces that satisfy the query.\n *\n * If the serviceStats field is missing in the response, fetches all traces\n * and calculates the serviceStats.\n *\n * Tempo computes the serviceStats field during ingestion since vParquet4,\n * this fallback is required for older block formats.\n */\nexport async function searchWithFallback(\n params: SearchRequestParameters,\n queryOptions: QueryOptions\n): Promise<SearchResponse> {\n // Get a list of traces that satisfy the query.\n const searchResponse = await search(params, queryOptions);\n if (!searchResponse.traces || searchResponse.traces.length === 0) {\n return { traces: [] };\n }\n\n // exit early if fallback is not required (serviceStats are contained in the response)\n if (searchResponse.traces.every((t) => t.serviceStats)) {\n return searchResponse;\n }\n\n // calculate serviceStats (number of spans and errors) per service\n return {\n traces: await Promise.all(\n searchResponse.traces.map(async (trace) => {\n if (trace.serviceStats) {\n // fallback not required, serviceStats are contained in the response\n return trace;\n }\n\n const serviceStats: Record<string, ServiceStats> = {};\n const searchTraceIDResponse = await query({ traceId: trace.traceID }, queryOptions);\n\n // For every trace, get the full trace, and find the number of spans and errors.\n for (const batch of searchTraceIDResponse.batches) {\n let serviceName = '?';\n for (const attr of batch.resource.attributes) {\n if (attr.key === 'service.name' && 'stringValue' in attr.value) {\n serviceName = attr.value.stringValue;\n break;\n }\n }\n\n const stats = serviceStats[serviceName] ?? { spanCount: 0 };\n for (const scopeSpan of batch.scopeSpans) {\n stats.spanCount += scopeSpan.spans.length;\n for (const span of scopeSpan.spans) {\n if (span.status?.code === SpanStatusError) {\n stats.errorCount = (stats.errorCount ?? 0) + 1;\n }\n }\n }\n serviceStats[serviceName] = stats;\n }\n\n return {\n ...trace,\n serviceStats,\n };\n })\n ),\n };\n}\n\n/**\n * Returns a list of all tag names for a given scope.\n */\nexport function searchTags(\n params: SearchTagsRequestParameters,\n queryOptions: QueryOptions\n): Promise<SearchTagsResponse> {\n return fetchWithGet<SearchTagsRequestParameters, SearchTagsResponse>('/api/v2/search/tags', params, queryOptions);\n}\n\n/**\n * Returns a list of all tag values for a given tag.\n */\nexport function searchTagValues(\n params: SearchTagValuesRequestParameters,\n queryOptions: QueryOptions\n): Promise<SearchTagValuesResponse> {\n const { tag, ...rest } = params;\n return fetchWithGet<Omit<SearchTagValuesRequestParameters, 'tag'>, SearchTagValuesResponse>(\n `/api/v2/search/tag/${encodeURIComponent(tag)}/values`,\n rest,\n queryOptions\n );\n}\n"],"names":["fetch","SpanStatusError","executeRequest","args","response","jsonData","json","fetchWithGet","apiURI","params","queryOptions","datasourceUrl","headers","url","URLSearchParams","init","method","search","query","encodeURIComponent","traceId","searchWithFallback","searchResponse","traces","length","every","t","serviceStats","Promise","all","map","trace","searchTraceIDResponse","traceID","batch","batches","serviceName","attr","resource","attributes","key","value","stringValue","stats","spanCount","scopeSpan","scopeSpans","spans","span","status","code","errorCount","searchTags","searchTagValues","tag","rest"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tempo-selectors.d.ts","sourceRoot":"","sources":["../../src/model/tempo-selectors.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,mBAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,IAAI,EAAE,OAAO,qBAAqB,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,uBAAyD,CAAC;AAEtF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"tempo-selectors.d.ts","sourceRoot":"","sources":["../../src/model/tempo-selectors.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,mBAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,IAAI,EAAE,OAAO,qBAAqB,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,uBAAyD,CAAC;AAEtF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAEjF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,QAAQ,IAAI,uBAAuB,CAE3G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/model/tempo-selectors.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector } from '@perses-dev/core';\n\nexport const TEMPO_DATASOURCE_KIND = 'TempoDatasource' as const;\n\n/**\n * DatasourceSelector for Tempo Datasources.\n */\nexport interface TempoDatasourceSelector extends DatasourceSelector {\n kind: typeof TEMPO_DATASOURCE_KIND;\n}\n\n/**\n * A default selector that asks for the default Tempo Datasource.\n */\nexport const DEFAULT_TEMPO: TempoDatasourceSelector = { kind: TEMPO_DATASOURCE_KIND };\n\n/**\n * Returns true if the provided TempoDatasourceSelector is the default one.\n */\nexport function isDefaultTempoSelector(selector: TempoDatasourceSelector) {\n return selector.name === undefined;\n}\n\n/**\n * Type guard to make sure a DatasourceSelector is a Tempo one.\n */\nexport function isTempoDatasourceSelector(selector: DatasourceSelector): selector is TempoDatasourceSelector {\n return selector.kind === TEMPO_DATASOURCE_KIND;\n}\n"],"names":["TEMPO_DATASOURCE_KIND","DEFAULT_TEMPO","kind","isDefaultTempoSelector","selector","name","undefined","isTempoDatasourceSelector"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,OAAO,MAAMA,wBAAwB,kBAA2B;AAShE;;CAEC,GACD,OAAO,MAAMC,gBAAyC;IAAEC,MAAMF;AAAsB,EAAE;AAEtF;;CAEC,GACD,OAAO,SAASG,uBAAuBC,QAAiC;IACtE,OAAOA,SAASC,IAAI,KAAKC;AAC3B;AAEA;;CAEC,GACD,OAAO,SAASC,0BAA0BH,QAA4B;IACpE,OAAOA,SAASF,IAAI,KAAKF;AAC3B"}
|
|
1
|
+
{"version":3,"sources":["../../src/model/tempo-selectors.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelector } from '@perses-dev/core';\n\nexport const TEMPO_DATASOURCE_KIND = 'TempoDatasource' as const;\n\n/**\n * DatasourceSelector for Tempo Datasources.\n */\nexport interface TempoDatasourceSelector extends DatasourceSelector {\n kind: typeof TEMPO_DATASOURCE_KIND;\n}\n\n/**\n * A default selector that asks for the default Tempo Datasource.\n */\nexport const DEFAULT_TEMPO: TempoDatasourceSelector = { kind: TEMPO_DATASOURCE_KIND };\n\n/**\n * Returns true if the provided TempoDatasourceSelector is the default one.\n */\nexport function isDefaultTempoSelector(selector: TempoDatasourceSelector): boolean {\n return selector.name === undefined;\n}\n\n/**\n * Type guard to make sure a DatasourceSelector is a Tempo one.\n */\nexport function isTempoDatasourceSelector(selector: DatasourceSelector): selector is TempoDatasourceSelector {\n return selector.kind === TEMPO_DATASOURCE_KIND;\n}\n"],"names":["TEMPO_DATASOURCE_KIND","DEFAULT_TEMPO","kind","isDefaultTempoSelector","selector","name","undefined","isTempoDatasourceSelector"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,OAAO,MAAMA,wBAAwB,kBAA2B;AAShE;;CAEC,GACD,OAAO,MAAMC,gBAAyC;IAAEC,MAAMF;AAAsB,EAAE;AAEtF;;CAEC,GACD,OAAO,SAASG,uBAAuBC,QAAiC;IACtE,OAAOA,SAASC,IAAI,KAAKC;AAC3B;AAEA;;CAEC,GACD,OAAO,SAASC,0BAA0BH,QAA4B;IACpE,OAAOA,SAASF,IAAI,KAAKF;AAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TempoTraceQuery.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/TempoTraceQuery.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"TempoTraceQuery.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/TempoTraceQuery.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,eAAe;;;gCAGA;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAKhF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/TempoTraceQuery.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { getTraceData } from './get-trace-data';\nimport { TempoTraceQueryEditor } from './TempoTraceQueryEditor';\n\n/**\n * The core Tempo TraceQuery plugin for Perses.\n */\nexport const TempoTraceQuery = {\n getTraceData,\n OptionsEditorComponent: TempoTraceQueryEditor,\n createInitialOptions: () => ({\n query: '',\n limit: 20,\n datasource: undefined,\n }),\n};\n"],"names":["getTraceData","TempoTraceQueryEditor","TempoTraceQuery","OptionsEditorComponent","createInitialOptions","query","limit","datasource","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,YAAY,QAAQ,mBAAmB;AAChD,SAASC,qBAAqB,QAAQ,0BAA0B;AAEhE;;CAEC,GACD,OAAO,MAAMC,kBAAkB;IAC7BF;IACAG,wBAAwBF;IACxBG,sBAAsB,
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/TempoTraceQuery.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { getTraceData } from './get-trace-data';\nimport { TempoTraceQueryEditor } from './TempoTraceQueryEditor';\n\n/**\n * The core Tempo TraceQuery plugin for Perses.\n */\nexport const TempoTraceQuery = {\n getTraceData,\n OptionsEditorComponent: TempoTraceQueryEditor,\n createInitialOptions: (): { query: string; limit: number; datasource?: string } => ({\n query: '',\n limit: 20,\n datasource: undefined,\n }),\n};\n"],"names":["getTraceData","TempoTraceQueryEditor","TempoTraceQuery","OptionsEditorComponent","createInitialOptions","query","limit","datasource","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,YAAY,QAAQ,mBAAmB;AAChD,SAASC,qBAAqB,QAAQ,0BAA0B;AAEhE;;CAEC,GACD,OAAO,MAAMC,kBAAkB;IAC7BF;IACAG,wBAAwBF;IACxBG,sBAAsB,IAA8D,CAAA;YAClFC,OAAO;YACPC,OAAO;YACPC,YAAYC;QACd,CAAA;AACF,EAAE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
1
2
|
import { TraceQueryEditorProps } from './query-editor-model';
|
|
2
|
-
export declare function TempoTraceQueryEditor(props: TraceQueryEditorProps):
|
|
3
|
+
export declare function TempoTraceQueryEditor(props: TraceQueryEditorProps): ReactElement;
|
|
3
4
|
//# sourceMappingURL=TempoTraceQueryEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TempoTraceQueryEditor.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/TempoTraceQueryEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TempoTraceQueryEditor.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/TempoTraceQueryEditor.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AASrC,OAAO,EAAE,qBAAqB,EAAgC,MAAM,sBAAsB,CAAC;AAE3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAyDhF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/TempoTraceQueryEditor.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelect, DatasourceSelectProps, useDatasourceClient } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport { FormControl, InputLabel, Stack, TextField } from '@mui/material';\nimport {\n DEFAULT_TEMPO,\n isDefaultTempoSelector,\n isTempoDatasourceSelector,\n TEMPO_DATASOURCE_KIND,\n} from '../../model/tempo-selectors';\nimport { TempoClient } from '../../model/tempo-client';\nimport { TraceQLEditor } from '../../components';\nimport { TraceQueryEditorProps, useLimitState, useQueryState } from './query-editor-model';\n\nexport function TempoTraceQueryEditor(props: TraceQueryEditorProps) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_TEMPO;\n\n const { data: client } = useDatasourceClient<TempoClient>(selectedDatasource);\n\n const { query, handleQueryChange, handleQueryBlur } = useQueryState(props);\n const { limit, handleLimitChange, handleLimitBlur, limitHasError } = useLimitState(props);\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isTempoDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n const nextDatasource = isDefaultTempoSelector(next) ? undefined : next;\n draft.datasource = nextDatasource;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Tempo datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\" fullWidth={false}>\n {/* TODO: How do we ensure unique ID values if there are multiple of these? Can we use React 18 useId and\n maintain 17 compatibility somehow with a polyfill/shim? */}\n <InputLabel id=\"tempo-datasource-label\">Tempo Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind={TEMPO_DATASOURCE_KIND}\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"tempo-datasource-label\"\n label=\"Tempo Datasource\"\n />\n </FormControl>\n <Stack direction=\"row\" spacing={2}>\n <TraceQLEditor\n completeConfig={{ client }}\n value={query}\n onChange={handleQueryChange}\n onBlur={handleQueryBlur}\n />\n <TextField\n label=\"Max Traces\"\n value={limit}\n error={limitHasError}\n onChange={(e) => handleLimitChange(e.target.value)}\n onBlur={handleLimitBlur}\n sx={{ width: '110px' }}\n />\n </Stack>\n </Stack>\n );\n}\n"],"names":["DatasourceSelect","useDatasourceClient","produce","FormControl","InputLabel","Stack","TextField","DEFAULT_TEMPO","isDefaultTempoSelector","isTempoDatasourceSelector","TEMPO_DATASOURCE_KIND","TraceQLEditor","useLimitState","useQueryState","TempoTraceQueryEditor","props","onChange","value","datasource","selectedDatasource","data","client","query","handleQueryChange","handleQueryBlur","limit","handleLimitChange","handleLimitBlur","limitHasError","handleDatasourceChange","next","draft","nextDatasource","undefined","Error","spacing","margin","fullWidth","id","datasourcePluginKind","labelId","label","direction","completeConfig","onBlur","error","e","target","sx","width"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAASA,gBAAgB,EAAyBC,mBAAmB,QAAQ,4BAA4B;AACzG,SAASC,OAAO,QAAQ,QAAQ;AAChC,SAASC,WAAW,EAAEC,UAAU,EAAEC,KAAK,EAAEC,SAAS,QAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/TempoTraceQueryEditor.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { DatasourceSelect, DatasourceSelectProps, useDatasourceClient } from '@perses-dev/plugin-system';\nimport { produce } from 'immer';\nimport { FormControl, InputLabel, Stack, TextField } from '@mui/material';\nimport { ReactElement } from 'react';\nimport {\n DEFAULT_TEMPO,\n isDefaultTempoSelector,\n isTempoDatasourceSelector,\n TEMPO_DATASOURCE_KIND,\n} from '../../model/tempo-selectors';\nimport { TempoClient } from '../../model/tempo-client';\nimport { TraceQLEditor } from '../../components';\nimport { TraceQueryEditorProps, useLimitState, useQueryState } from './query-editor-model';\n\nexport function TempoTraceQueryEditor(props: TraceQueryEditorProps): ReactElement {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_TEMPO;\n\n const { data: client } = useDatasourceClient<TempoClient>(selectedDatasource);\n\n const { query, handleQueryChange, handleQueryBlur } = useQueryState(props);\n const { limit, handleLimitChange, handleLimitBlur, limitHasError } = useLimitState(props);\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isTempoDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n const nextDatasource = isDefaultTempoSelector(next) ? undefined : next;\n draft.datasource = nextDatasource;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Tempo datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\" fullWidth={false}>\n {/* TODO: How do we ensure unique ID values if there are multiple of these? Can we use React 18 useId and\n maintain 17 compatibility somehow with a polyfill/shim? */}\n <InputLabel id=\"tempo-datasource-label\">Tempo Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind={TEMPO_DATASOURCE_KIND}\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"tempo-datasource-label\"\n label=\"Tempo Datasource\"\n />\n </FormControl>\n <Stack direction=\"row\" spacing={2}>\n <TraceQLEditor\n completeConfig={{ client }}\n value={query}\n onChange={handleQueryChange}\n onBlur={handleQueryBlur}\n />\n <TextField\n label=\"Max Traces\"\n value={limit}\n error={limitHasError}\n onChange={(e) => handleLimitChange(e.target.value)}\n onBlur={handleLimitBlur}\n sx={{ width: '110px' }}\n />\n </Stack>\n </Stack>\n );\n}\n"],"names":["DatasourceSelect","useDatasourceClient","produce","FormControl","InputLabel","Stack","TextField","DEFAULT_TEMPO","isDefaultTempoSelector","isTempoDatasourceSelector","TEMPO_DATASOURCE_KIND","TraceQLEditor","useLimitState","useQueryState","TempoTraceQueryEditor","props","onChange","value","datasource","selectedDatasource","data","client","query","handleQueryChange","handleQueryBlur","limit","handleLimitChange","handleLimitBlur","limitHasError","handleDatasourceChange","next","draft","nextDatasource","undefined","Error","spacing","margin","fullWidth","id","datasourcePluginKind","labelId","label","direction","completeConfig","onBlur","error","e","target","sx","width"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;;AAEjC,SAASA,gBAAgB,EAAyBC,mBAAmB,QAAQ,4BAA4B;AACzG,SAASC,OAAO,QAAQ,QAAQ;AAChC,SAASC,WAAW,EAAEC,UAAU,EAAEC,KAAK,EAAEC,SAAS,QAAQ,gBAAgB;AAE1E,SACEC,aAAa,EACbC,sBAAsB,EACtBC,yBAAyB,EACzBC,qBAAqB,QAChB,8BAA8B;AAErC,SAASC,aAAa,QAAQ,mBAAmB;AACjD,SAAgCC,aAAa,EAAEC,aAAa,QAAQ,uBAAuB;AAE3F,OAAO,SAASC,sBAAsBC,KAA4B;IAChE,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGF;IAC5B,MAAM,EAAEG,UAAU,EAAE,GAAGD;IACvB,MAAME,qBAAqBD,uBAAAA,wBAAAA,aAAcX;IAEzC,MAAM,EAAEa,MAAMC,MAAM,EAAE,GAAGpB,oBAAiCkB;IAE1D,MAAM,EAAEG,KAAK,EAAEC,iBAAiB,EAAEC,eAAe,EAAE,GAAGX,cAAcE;IACpE,MAAM,EAAEU,KAAK,EAAEC,iBAAiB,EAAEC,eAAe,EAAEC,aAAa,EAAE,GAAGhB,cAAcG;IAEnF,MAAMc,yBAA4D,CAACC;QACjE,IAAIrB,0BAA0BqB,OAAO;YACnCd,SACEd,QAAQe,OAAO,CAACc;gBACd,sFAAsF;gBACtF,MAAMC,iBAAiBxB,uBAAuBsB,QAAQG,YAAYH;gBAClEC,MAAMb,UAAU,GAAGc;YACrB;YAEF;QACF;QAEA,MAAM,IAAIE,MAAM;IAClB;IAEA,qBACE,MAAC7B;QAAM8B,SAAS;;0BACd,MAAChC;gBAAYiC,QAAO;gBAAQC,WAAW;;kCAGrC,KAACjC;wBAAWkC,IAAG;kCAAyB;;kCACxC,KAACtC;wBACCuC,sBAAsB7B;wBACtBO,OAAOE;wBACPH,UAAUa;wBACVW,SAAQ;wBACRC,OAAM;;;;0BAGV,MAACpC;gBAAMqC,WAAU;gBAAMP,SAAS;;kCAC9B,KAACxB;wBACCgC,gBAAgB;4BAAEtB;wBAAO;wBACzBJ,OAAOK;wBACPN,UAAUO;wBACVqB,QAAQpB;;kCAEV,KAAClB;wBACCmC,OAAM;wBACNxB,OAAOQ;wBACPoB,OAAOjB;wBACPZ,UAAU,CAAC8B,IAAMpB,kBAAkBoB,EAAEC,MAAM,CAAC9B,KAAK;wBACjD2B,QAAQjB;wBACRqB,IAAI;4BAAEC,OAAO;wBAAQ;;;;;;AAK/B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TraceQueryPlugin } from '@perses-dev/plugin-system';
|
|
2
2
|
import { AbsoluteTimeRange } from '@perses-dev/core';
|
|
3
|
-
import { TempoTraceQuerySpec } from '../../model
|
|
3
|
+
import { TempoTraceQuerySpec } from '../../model';
|
|
4
4
|
export declare function getUnixTimeRange(timeRange: AbsoluteTimeRange): {
|
|
5
5
|
start: number;
|
|
6
6
|
end: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-trace-data.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/get-trace-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,iBAAiB,EAMlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"get-trace-data.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/get-trace-data.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,iBAAiB,EAMlB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAkD,MAAM,aAAa,CAAC;AAWlG,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAM7F;AAED,eAAO,MAAM,YAAY,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,cAAc,CAwD9E,CAAC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { isValidTraceId } from '@perses-dev/core';
|
|
14
14
|
import { getUnixTime } from 'date-fns';
|
|
15
15
|
import { sortedIndexBy } from 'lodash';
|
|
16
|
-
import { TEMPO_DATASOURCE_KIND } from '../../model
|
|
16
|
+
import { TEMPO_DATASOURCE_KIND } from '../../model';
|
|
17
17
|
export function getUnixTimeRange(timeRange) {
|
|
18
18
|
const { start, end } = timeRange;
|
|
19
19
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/get-trace-data.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TraceQueryPlugin } from '@perses-dev/plugin-system';\nimport {\n TraceSearchResult,\n AbsoluteTimeRange,\n Trace,\n Span,\n isValidTraceId,\n TraceResource,\n SpanEvent,\n} from '@perses-dev/core';\nimport { getUnixTime } from 'date-fns';\nimport { sortedIndexBy } from 'lodash';\nimport { TempoTraceQuerySpec } from '../../model/trace-query-model';\nimport { TEMPO_DATASOURCE_KIND, TempoDatasourceSelector } from '../../model/tempo-selectors';\nimport { TempoClient } from '../../model/tempo-client';\nimport {\n SearchRequestParameters,\n QueryResponse,\n SearchResponse,\n Resource as TempoResource,\n Span as TempoSpan,\n SpanEvent as TempoSpanEvent,\n} from '../../model/api-types';\n\nexport function getUnixTimeRange(timeRange: AbsoluteTimeRange) {\n const { start, end } = timeRange;\n return {\n start: Math.ceil(getUnixTime(start)),\n end: Math.ceil(getUnixTime(end)),\n };\n}\n\nexport const getTraceData: TraceQueryPlugin<TempoTraceQuerySpec>['getTraceData'] = async (spec, context) => {\n if (spec.query === undefined || spec.query === null || spec.query === '') {\n // Do not make a request to the backend, instead return an empty TraceData\n console.error('TempoTraceQuery is undefined, null, or an empty string.');\n return { searchResult: [] };\n }\n\n const defaultTempoDatasource: TempoDatasourceSelector = {\n kind: TEMPO_DATASOURCE_KIND,\n };\n\n const client: TempoClient = await context.datasourceStore.getDatasourceClient(\n spec.datasource ?? defaultTempoDatasource\n );\n\n const getQuery = (): SearchRequestParameters => {\n const params: SearchRequestParameters = {\n q: spec.query,\n };\n\n // handle time range selection from UI drop down (e.g. last 5 minutes, last 1 hour )\n if (context.absoluteTimeRange) {\n const { start, end } = getUnixTimeRange(context.absoluteTimeRange);\n params.start = start;\n params.end = end;\n }\n\n if (spec.limit) {\n params.limit = spec.limit;\n }\n\n return params;\n };\n\n /**\n * determine type of query:\n * if the query is a valid traceId, fetch the trace by traceId\n * otherwise, execute a TraceQL query\n */\n if (isValidTraceId(spec.query)) {\n const response = await client.query({ traceId: spec.query });\n return {\n trace: parseTraceResponse(response),\n metadata: {\n executedQueryString: spec.query,\n },\n };\n } else {\n const response = await client.searchWithFallback(getQuery());\n return {\n searchResult: parseSearchResponse(response),\n metadata: {\n executedQueryString: spec.query,\n },\n };\n }\n};\n\nfunction parseResource(resource: TempoResource): TraceResource {\n let serviceName = 'unknown';\n for (const attr of resource.attributes) {\n if (attr.key === 'service.name' && 'stringValue' in attr.value) {\n serviceName = attr.value.stringValue;\n break;\n }\n }\n\n return {\n serviceName,\n attributes: resource.attributes,\n };\n}\n\nfunction parseEvent(event: TempoSpanEvent): SpanEvent {\n return {\n timeUnixMs: parseInt(event.timeUnixNano) * 1e-6, // convert to milliseconds because JS cannot handle numbers larger than 9007199254740991\n name: event.name,\n attributes: event.attributes || [],\n };\n}\n\n/**\n * parseSpan parses the Span API type to the internal representation\n * i.e. convert strings to numbers etc.\n */\nfunction parseSpan(span: TempoSpan) {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n kind: span.kind,\n startTimeUnixMs: parseInt(span.startTimeUnixNano) * 1e-6, // convert to milliseconds because JS cannot handle numbers larger than 9007199254740991\n endTimeUnixMs: parseInt(span.endTimeUnixNano) * 1e-6,\n attributes: span.attributes || [],\n events: (span.events || []).map(parseEvent),\n status: span.status,\n };\n}\n\n/**\n * parseTraceResponse builds a tree of spans from the Tempo API response\n * time complexity: O(2n)\n */\nfunction parseTraceResponse(response: QueryResponse): Trace {\n // first pass: build lookup table <spanId, Span>\n const lookup = new Map<string, Span>();\n for (const batch of response.batches) {\n const resource = parseResource(batch.resource);\n\n for (const scopeSpan of batch.scopeSpans) {\n const scope = scopeSpan.scope;\n\n for (const tempoSpan of scopeSpan.spans) {\n const span: Span = {\n resource,\n scope,\n childSpans: [],\n ...parseSpan(tempoSpan),\n };\n lookup.set(tempoSpan.spanId, span);\n }\n }\n }\n\n // second pass: build tree based on parentSpanId property\n let rootSpan: Span | null = null;\n for (const [, span] of lookup) {\n if (!span.parentSpanId) {\n rootSpan = span;\n } else {\n const parent = lookup.get(span.parentSpanId);\n if (!parent) {\n console.error(`span ${span.spanId} has parent ${span.parentSpanId} which has not been received yet`);\n continue;\n }\n\n span.parentSpan = parent;\n const insertChildSpanAt = sortedIndexBy(parent.childSpans, span, (s) => s.startTimeUnixMs);\n parent.childSpans.splice(insertChildSpanAt, 0, span);\n }\n }\n\n if (!rootSpan) {\n throw new Error('root span not found');\n }\n\n return {\n rootSpan,\n };\n}\n\nfunction parseSearchResponse(response: SearchResponse): TraceSearchResult[] {\n return response.traces.map((trace) => ({\n startTimeUnixMs: parseInt(trace.startTimeUnixNano) * 1e-6, // convert to millisecond for eChart time format,\n durationMs: trace.durationMs ?? 0, // Tempo API doesn't return 0 values\n traceId: trace.traceID,\n rootServiceName: trace.rootServiceName,\n rootTraceName: trace.rootTraceName,\n serviceStats: trace.serviceStats || {},\n }));\n}\n"],"names":["isValidTraceId","getUnixTime","sortedIndexBy","TEMPO_DATASOURCE_KIND","getUnixTimeRange","timeRange","start","end","Math","ceil","getTraceData","spec","context","query","undefined","console","error","searchResult","defaultTempoDatasource","kind","client","datasourceStore","getDatasourceClient","datasource","getQuery","params","q","absoluteTimeRange","limit","response","traceId","trace","parseTraceResponse","metadata","executedQueryString","searchWithFallback","parseSearchResponse","parseResource","resource","serviceName","attr","attributes","key","value","stringValue","parseEvent","event","timeUnixMs","parseInt","timeUnixNano","name","parseSpan","span","spanId","parentSpanId","startTimeUnixMs","startTimeUnixNano","endTimeUnixMs","endTimeUnixNano","events","map","status","lookup","Map","batch","batches","scopeSpan","scopeSpans","scope","tempoSpan","spans","childSpans","set","rootSpan","parent","get","parentSpan","insertChildSpanAt","s","splice","Error","traces","durationMs","traceID","rootServiceName","rootTraceName","serviceStats"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/get-trace-data.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { TraceQueryPlugin } from '@perses-dev/plugin-system';\nimport {\n TraceSearchResult,\n AbsoluteTimeRange,\n Trace,\n Span,\n isValidTraceId,\n TraceResource,\n SpanEvent,\n} from '@perses-dev/core';\nimport { getUnixTime } from 'date-fns';\nimport { sortedIndexBy } from 'lodash';\nimport { TempoTraceQuerySpec, TEMPO_DATASOURCE_KIND, TempoDatasourceSelector } from '../../model';\nimport { TempoClient } from '../../model/tempo-client';\nimport {\n SearchRequestParameters,\n QueryResponse,\n SearchResponse,\n Resource as TempoResource,\n Span as TempoSpan,\n SpanEvent as TempoSpanEvent,\n} from '../../model/api-types';\n\nexport function getUnixTimeRange(timeRange: AbsoluteTimeRange): { start: number; end: number } {\n const { start, end } = timeRange;\n return {\n start: Math.ceil(getUnixTime(start)),\n end: Math.ceil(getUnixTime(end)),\n };\n}\n\nexport const getTraceData: TraceQueryPlugin<TempoTraceQuerySpec>['getTraceData'] = async (spec, context) => {\n if (spec.query === undefined || spec.query === null || spec.query === '') {\n // Do not make a request to the backend, instead return an empty TraceData\n console.error('TempoTraceQuery is undefined, null, or an empty string.');\n return { searchResult: [] };\n }\n\n const defaultTempoDatasource: TempoDatasourceSelector = {\n kind: TEMPO_DATASOURCE_KIND,\n };\n\n const client: TempoClient = await context.datasourceStore.getDatasourceClient(\n spec.datasource ?? defaultTempoDatasource\n );\n\n const getQuery = (): SearchRequestParameters => {\n const params: SearchRequestParameters = {\n q: spec.query,\n };\n\n // handle time range selection from UI drop down (e.g. last 5 minutes, last 1 hour )\n if (context.absoluteTimeRange) {\n const { start, end } = getUnixTimeRange(context.absoluteTimeRange);\n params.start = start;\n params.end = end;\n }\n\n if (spec.limit) {\n params.limit = spec.limit;\n }\n\n return params;\n };\n\n /**\n * determine type of query:\n * if the query is a valid traceId, fetch the trace by traceId\n * otherwise, execute a TraceQL query\n */\n if (isValidTraceId(spec.query)) {\n const response = await client.query({ traceId: spec.query });\n return {\n trace: parseTraceResponse(response),\n metadata: {\n executedQueryString: spec.query,\n },\n };\n } else {\n const response = await client.searchWithFallback(getQuery());\n return {\n searchResult: parseSearchResponse(response),\n metadata: {\n executedQueryString: spec.query,\n },\n };\n }\n};\n\nfunction parseResource(resource: TempoResource): TraceResource {\n let serviceName = 'unknown';\n for (const attr of resource.attributes) {\n if (attr.key === 'service.name' && 'stringValue' in attr.value) {\n serviceName = attr.value.stringValue;\n break;\n }\n }\n\n return {\n serviceName,\n attributes: resource.attributes,\n };\n}\n\nfunction parseEvent(event: TempoSpanEvent): SpanEvent {\n return {\n timeUnixMs: parseInt(event.timeUnixNano) * 1e-6, // convert to milliseconds because JS cannot handle numbers larger than 9007199254740991\n name: event.name,\n attributes: event.attributes || [],\n };\n}\n\n/**\n * parseSpan parses the Span API type to the internal representation\n * i.e. convert strings to numbers etc.\n */\nfunction parseSpan(span: TempoSpan): Omit<Span, 'resource' | 'scope' | 'childSpans'> {\n return {\n traceId: span.traceId,\n spanId: span.spanId,\n parentSpanId: span.parentSpanId,\n name: span.name,\n kind: span.kind,\n startTimeUnixMs: parseInt(span.startTimeUnixNano) * 1e-6, // convert to milliseconds because JS cannot handle numbers larger than 9007199254740991\n endTimeUnixMs: parseInt(span.endTimeUnixNano) * 1e-6,\n attributes: span.attributes || [],\n events: (span.events || []).map(parseEvent),\n status: span.status,\n };\n}\n\n/**\n * parseTraceResponse builds a tree of spans from the Tempo API response\n * time complexity: O(2n)\n */\nfunction parseTraceResponse(response: QueryResponse): Trace {\n // first pass: build lookup table <spanId, Span>\n const lookup = new Map<string, Span>();\n for (const batch of response.batches) {\n const resource = parseResource(batch.resource);\n\n for (const scopeSpan of batch.scopeSpans) {\n const scope = scopeSpan.scope;\n\n for (const tempoSpan of scopeSpan.spans) {\n const span: Span = {\n resource,\n scope,\n childSpans: [],\n ...parseSpan(tempoSpan),\n };\n lookup.set(tempoSpan.spanId, span);\n }\n }\n }\n\n // second pass: build tree based on parentSpanId property\n let rootSpan: Span | null = null;\n for (const [, span] of lookup) {\n if (!span.parentSpanId) {\n rootSpan = span;\n } else {\n const parent = lookup.get(span.parentSpanId);\n if (!parent) {\n console.error(`span ${span.spanId} has parent ${span.parentSpanId} which has not been received yet`);\n continue;\n }\n\n span.parentSpan = parent;\n const insertChildSpanAt = sortedIndexBy(parent.childSpans, span, (s) => s.startTimeUnixMs);\n parent.childSpans.splice(insertChildSpanAt, 0, span);\n }\n }\n\n if (!rootSpan) {\n throw new Error('root span not found');\n }\n\n return {\n rootSpan,\n };\n}\n\nfunction parseSearchResponse(response: SearchResponse): TraceSearchResult[] {\n return response.traces.map((trace) => ({\n startTimeUnixMs: parseInt(trace.startTimeUnixNano) * 1e-6, // convert to millisecond for eChart time format,\n durationMs: trace.durationMs ?? 0, // Tempo API doesn't return 0 values\n traceId: trace.traceID,\n rootServiceName: trace.rootServiceName,\n rootTraceName: trace.rootTraceName,\n serviceStats: trace.serviceStats || {},\n }));\n}\n"],"names":["isValidTraceId","getUnixTime","sortedIndexBy","TEMPO_DATASOURCE_KIND","getUnixTimeRange","timeRange","start","end","Math","ceil","getTraceData","spec","context","query","undefined","console","error","searchResult","defaultTempoDatasource","kind","client","datasourceStore","getDatasourceClient","datasource","getQuery","params","q","absoluteTimeRange","limit","response","traceId","trace","parseTraceResponse","metadata","executedQueryString","searchWithFallback","parseSearchResponse","parseResource","resource","serviceName","attr","attributes","key","value","stringValue","parseEvent","event","timeUnixMs","parseInt","timeUnixNano","name","parseSpan","span","spanId","parentSpanId","startTimeUnixMs","startTimeUnixNano","endTimeUnixMs","endTimeUnixNano","events","map","status","lookup","Map","batch","batches","scopeSpan","scopeSpans","scope","tempoSpan","spans","childSpans","set","rootSpan","parent","get","parentSpan","insertChildSpanAt","s","splice","Error","traces","durationMs","traceID","rootServiceName","rootTraceName","serviceStats"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAKEA,cAAc,QAGT,mBAAmB;AAC1B,SAASC,WAAW,QAAQ,WAAW;AACvC,SAASC,aAAa,QAAQ,SAAS;AACvC,SAA8BC,qBAAqB,QAAiC,cAAc;AAWlG,OAAO,SAASC,iBAAiBC,SAA4B;IAC3D,MAAM,EAAEC,KAAK,EAAEC,GAAG,EAAE,GAAGF;IACvB,OAAO;QACLC,OAAOE,KAAKC,IAAI,CAACR,YAAYK;QAC7BC,KAAKC,KAAKC,IAAI,CAACR,YAAYM;IAC7B;AACF;AAEA,OAAO,MAAMG,eAAsE,OAAOC,MAAMC;IAC9F,IAAID,KAAKE,KAAK,KAAKC,aAAaH,KAAKE,KAAK,KAAK,QAAQF,KAAKE,KAAK,KAAK,IAAI;QACxE,0EAA0E;QAC1EE,QAAQC,KAAK,CAAC;QACd,OAAO;YAAEC,cAAc,EAAE;QAAC;IAC5B;IAEA,MAAMC,yBAAkD;QACtDC,MAAMhB;IACR;QAGEQ;IADF,MAAMS,SAAsB,MAAMR,QAAQS,eAAe,CAACC,mBAAmB,CAC3EX,CAAAA,mBAAAA,KAAKY,UAAU,cAAfZ,8BAAAA,mBAAmBO;IAGrB,MAAMM,WAAW;QACf,MAAMC,SAAkC;YACtCC,GAAGf,KAAKE,KAAK;QACf;QAEA,oFAAoF;QACpF,IAAID,QAAQe,iBAAiB,EAAE;YAC7B,MAAM,EAAErB,KAAK,EAAEC,GAAG,EAAE,GAAGH,iBAAiBQ,QAAQe,iBAAiB;YACjEF,OAAOnB,KAAK,GAAGA;YACfmB,OAAOlB,GAAG,GAAGA;QACf;QAEA,IAAII,KAAKiB,KAAK,EAAE;YACdH,OAAOG,KAAK,GAAGjB,KAAKiB,KAAK;QAC3B;QAEA,OAAOH;IACT;IAEA;;;;GAIC,GACD,IAAIzB,eAAeW,KAAKE,KAAK,GAAG;QAC9B,MAAMgB,WAAW,MAAMT,OAAOP,KAAK,CAAC;YAAEiB,SAASnB,KAAKE,KAAK;QAAC;QAC1D,OAAO;YACLkB,OAAOC,mBAAmBH;YAC1BI,UAAU;gBACRC,qBAAqBvB,KAAKE,KAAK;YACjC;QACF;IACF,OAAO;QACL,MAAMgB,WAAW,MAAMT,OAAOe,kBAAkB,CAACX;QACjD,OAAO;YACLP,cAAcmB,oBAAoBP;YAClCI,UAAU;gBACRC,qBAAqBvB,KAAKE,KAAK;YACjC;QACF;IACF;AACF,EAAE;AAEF,SAASwB,cAAcC,QAAuB;IAC5C,IAAIC,cAAc;IAClB,KAAK,MAAMC,QAAQF,SAASG,UAAU,CAAE;QACtC,IAAID,KAAKE,GAAG,KAAK,kBAAkB,iBAAiBF,KAAKG,KAAK,EAAE;YAC9DJ,cAAcC,KAAKG,KAAK,CAACC,WAAW;YACpC;QACF;IACF;IAEA,OAAO;QACLL;QACAE,YAAYH,SAASG,UAAU;IACjC;AACF;AAEA,SAASI,WAAWC,KAAqB;IACvC,OAAO;QACLC,YAAYC,SAASF,MAAMG,YAAY,IAAI;QAC3CC,MAAMJ,MAAMI,IAAI;QAChBT,YAAYK,MAAML,UAAU,IAAI,EAAE;IACpC;AACF;AAEA;;;CAGC,GACD,SAASU,UAAUC,IAAe;IAChC,OAAO;QACLtB,SAASsB,KAAKtB,OAAO;QACrBuB,QAAQD,KAAKC,MAAM;QACnBC,cAAcF,KAAKE,YAAY;QAC/BJ,MAAME,KAAKF,IAAI;QACf/B,MAAMiC,KAAKjC,IAAI;QACfoC,iBAAiBP,SAASI,KAAKI,iBAAiB,IAAI;QACpDC,eAAeT,SAASI,KAAKM,eAAe,IAAI;QAChDjB,YAAYW,KAAKX,UAAU,IAAI,EAAE;QACjCkB,QAAQ,AAACP,CAAAA,KAAKO,MAAM,IAAI,EAAE,AAAD,EAAGC,GAAG,CAACf;QAChCgB,QAAQT,KAAKS,MAAM;IACrB;AACF;AAEA;;;CAGC,GACD,SAAS7B,mBAAmBH,QAAuB;IACjD,gDAAgD;IAChD,MAAMiC,SAAS,IAAIC;IACnB,KAAK,MAAMC,SAASnC,SAASoC,OAAO,CAAE;QACpC,MAAM3B,WAAWD,cAAc2B,MAAM1B,QAAQ;QAE7C,KAAK,MAAM4B,aAAaF,MAAMG,UAAU,CAAE;YACxC,MAAMC,QAAQF,UAAUE,KAAK;YAE7B,KAAK,MAAMC,aAAaH,UAAUI,KAAK,CAAE;gBACvC,MAAMlB,OAAa;oBACjBd;oBACA8B;oBACAG,YAAY,EAAE;oBACd,GAAGpB,UAAUkB,UAAU;gBACzB;gBACAP,OAAOU,GAAG,CAACH,UAAUhB,MAAM,EAAED;YAC/B;QACF;IACF;IAEA,yDAAyD;IACzD,IAAIqB,WAAwB;IAC5B,KAAK,MAAM,GAAGrB,KAAK,IAAIU,OAAQ;QAC7B,IAAI,CAACV,KAAKE,YAAY,EAAE;YACtBmB,WAAWrB;QACb,OAAO;YACL,MAAMsB,SAASZ,OAAOa,GAAG,CAACvB,KAAKE,YAAY;YAC3C,IAAI,CAACoB,QAAQ;gBACX3D,QAAQC,KAAK,CAAC,CAAC,KAAK,EAAEoC,KAAKC,MAAM,CAAC,YAAY,EAAED,KAAKE,YAAY,CAAC,gCAAgC,CAAC;gBACnG;YACF;YAEAF,KAAKwB,UAAU,GAAGF;YAClB,MAAMG,oBAAoB3E,cAAcwE,OAAOH,UAAU,EAAEnB,MAAM,CAAC0B,IAAMA,EAAEvB,eAAe;YACzFmB,OAAOH,UAAU,CAACQ,MAAM,CAACF,mBAAmB,GAAGzB;QACjD;IACF;IAEA,IAAI,CAACqB,UAAU;QACb,MAAM,IAAIO,MAAM;IAClB;IAEA,OAAO;QACLP;IACF;AACF;AAEA,SAASrC,oBAAoBP,QAAwB;IACnD,OAAOA,SAASoD,MAAM,CAACrB,GAAG,CAAC,CAAC7B;YAEdA;eAFyB;YACrCwB,iBAAiBP,SAASjB,MAAMyB,iBAAiB,IAAI;YACrD0B,YAAYnD,CAAAA,oBAAAA,MAAMmD,UAAU,cAAhBnD,+BAAAA,oBAAoB;YAChCD,SAASC,MAAMoD,OAAO;YACtBC,iBAAiBrD,MAAMqD,eAAe;YACtCC,eAAetD,MAAMsD,aAAa;YAClCC,cAAcvD,MAAMuD,YAAY,IAAI,CAAC;QACvC;;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-editor-model.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/query-editor-model.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB
|
|
1
|
+
{"version":3,"file":"query-editor-model.d.ts","sourceRoot":"","sources":["../../../src/plugins/tempo-trace-query/query-editor-model.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CA+BA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACxB,CAmCA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/query-editor-model.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useState } from 'react';\nimport { produce } from 'immer';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { TempoTraceQuerySpec } from '../../model/trace-query-model';\n\nexport type TraceQueryEditorProps = OptionsEditorProps<TempoTraceQuerySpec>;\n\n/**\n * A hook for managing the `query` state in PrometheusTimeSeriesQuerySpec. Returns the `query` value, along with\n * `onChange` and `onBlur` event handlers to the input. Keeps a local copy of the user's input and only syncs those\n * changes with the overall spec value once the input is blurred to prevent re-running queries in the panel's preview\n * every time the user types.\n */\nexport function useQueryState(props: TraceQueryEditorProps) {\n const { onChange, value } = props;\n\n // Local copy of the query's value\n const [query, setQuery] = useState(value.query);\n\n // This is basically \"getDerivedStateFromProps\" to make sure if spec's value changes external to this component,\n // we render with the latest value\n const [lastSyncedQuery, setLastSyncedQuery] = useState(value.query);\n if (value.query !== lastSyncedQuery) {\n setQuery(value.query);\n setLastSyncedQuery(value.query);\n }\n\n // Update our local state's copy as the user types\n const handleQueryChange = (e: string) => {\n setQuery(e);\n };\n\n // Propagate changes to the query's value when the input is blurred to avoid constantly re-running queries in the\n // PanelPreview\n const handleQueryBlur = () => {\n setLastSyncedQuery(query);\n onChange(\n produce(value, (draft) => {\n draft.query = query;\n })\n );\n };\n\n return { query, handleQueryChange, handleQueryBlur };\n}\n\n/**\n * Hook to manage `limit` state to ensure panel preview does not rerender until text input is blurred\n */\nexport function useLimitState(props: TraceQueryEditorProps) {\n const { onChange, value } = props;\n\n // TODO: reusable hook or helper util instead of duplicating from useQueryState\n const [limit, setLimit] = useState(value.limit ? value.limit.toString() : '');\n const [lastSyncedLimit, setLastSyncedLimit] = useState(value.limit);\n if (value.limit !== lastSyncedLimit) {\n setLimit(value.limit ? value.limit.toString() : '');\n setLastSyncedLimit(value.limit);\n }\n\n // limit must be empty or an integer > 0\n const limitHasError = !(limit === '' || (/^[0-9]+$/.test(limit) && parseInt(limit) > 0));\n\n // Update our local state as the user types\n const handleLimitChange = (e: string) => {\n setLimit(e);\n };\n\n // Propagate changes to the panel preview component when limit TextField is blurred\n const handleLimitBlur = () => {\n if (limitHasError) {\n return;\n }\n\n const limitVal = limit === '' ? undefined : parseInt(limit);\n setLastSyncedLimit(limitVal);\n onChange(\n produce(value, (draft) => {\n draft.limit = limitVal;\n })\n );\n };\n\n return { limit, handleLimitChange, handleLimitBlur, limitHasError };\n}\n"],"names":["useState","produce","useQueryState","props","onChange","value","query","setQuery","lastSyncedQuery","setLastSyncedQuery","handleQueryChange","e","handleQueryBlur","draft","useLimitState","limit","setLimit","toString","lastSyncedLimit","setLastSyncedLimit","limitHasError","test","parseInt","handleLimitChange","handleLimitBlur","limitVal","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,QAAQ,QAAQ,QAAQ;AACjC,SAASC,OAAO,QAAQ,QAAQ;AAMhC;;;;;CAKC,GACD,OAAO,SAASC,cAAcC,KAA4B;
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/tempo-trace-query/query-editor-model.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { useState } from 'react';\nimport { produce } from 'immer';\nimport { OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { TempoTraceQuerySpec } from '../../model/trace-query-model';\n\nexport type TraceQueryEditorProps = OptionsEditorProps<TempoTraceQuerySpec>;\n\n/**\n * A hook for managing the `query` state in PrometheusTimeSeriesQuerySpec. Returns the `query` value, along with\n * `onChange` and `onBlur` event handlers to the input. Keeps a local copy of the user's input and only syncs those\n * changes with the overall spec value once the input is blurred to prevent re-running queries in the panel's preview\n * every time the user types.\n */\nexport function useQueryState(props: TraceQueryEditorProps): {\n query: string;\n handleQueryChange: (e: string) => void;\n handleQueryBlur: () => void;\n} {\n const { onChange, value } = props;\n\n // Local copy of the query's value\n const [query, setQuery] = useState(value.query);\n\n // This is basically \"getDerivedStateFromProps\" to make sure if spec's value changes external to this component,\n // we render with the latest value\n const [lastSyncedQuery, setLastSyncedQuery] = useState(value.query);\n if (value.query !== lastSyncedQuery) {\n setQuery(value.query);\n setLastSyncedQuery(value.query);\n }\n\n // Update our local state's copy as the user types\n const handleQueryChange = (e: string): void => {\n setQuery(e);\n };\n\n // Propagate changes to the query's value when the input is blurred to avoid constantly re-running queries in the\n // PanelPreview\n const handleQueryBlur = (): void => {\n setLastSyncedQuery(query);\n onChange(\n produce(value, (draft) => {\n draft.query = query;\n })\n );\n };\n\n return { query, handleQueryChange, handleQueryBlur };\n}\n\n/**\n * Hook to manage `limit` state to ensure panel preview does not rerender until text input is blurred\n */\nexport function useLimitState(props: TraceQueryEditorProps): {\n limit: string;\n handleLimitChange: (e: string) => void;\n handleLimitBlur: () => void;\n limitHasError: boolean;\n} {\n const { onChange, value } = props;\n\n // TODO: reusable hook or helper util instead of duplicating from useQueryState\n const [limit, setLimit] = useState(value.limit ? value.limit.toString() : '');\n const [lastSyncedLimit, setLastSyncedLimit] = useState(value.limit);\n if (value.limit !== lastSyncedLimit) {\n setLimit(value.limit ? value.limit.toString() : '');\n setLastSyncedLimit(value.limit);\n }\n\n // limit must be empty or an integer > 0\n const limitHasError = !(limit === '' || (/^[0-9]+$/.test(limit) && parseInt(limit) > 0));\n\n // Update our local state as the user types\n const handleLimitChange = (e: string): void => {\n setLimit(e);\n };\n\n // Propagate changes to the panel preview component when limit TextField is blurred\n const handleLimitBlur = (): void => {\n if (limitHasError) {\n return;\n }\n\n const limitVal = limit === '' ? undefined : parseInt(limit);\n setLastSyncedLimit(limitVal);\n onChange(\n produce(value, (draft) => {\n draft.limit = limitVal;\n })\n );\n };\n\n return { limit, handleLimitChange, handleLimitBlur, limitHasError };\n}\n"],"names":["useState","produce","useQueryState","props","onChange","value","query","setQuery","lastSyncedQuery","setLastSyncedQuery","handleQueryChange","e","handleQueryBlur","draft","useLimitState","limit","setLimit","toString","lastSyncedLimit","setLastSyncedLimit","limitHasError","test","parseInt","handleLimitChange","handleLimitBlur","limitVal","undefined"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,SAASA,QAAQ,QAAQ,QAAQ;AACjC,SAASC,OAAO,QAAQ,QAAQ;AAMhC;;;;;CAKC,GACD,OAAO,SAASC,cAAcC,KAA4B;IAKxD,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGF;IAE5B,kCAAkC;IAClC,MAAM,CAACG,OAAOC,SAAS,GAAGP,SAASK,MAAMC,KAAK;IAE9C,gHAAgH;IAChH,kCAAkC;IAClC,MAAM,CAACE,iBAAiBC,mBAAmB,GAAGT,SAASK,MAAMC,KAAK;IAClE,IAAID,MAAMC,KAAK,KAAKE,iBAAiB;QACnCD,SAASF,MAAMC,KAAK;QACpBG,mBAAmBJ,MAAMC,KAAK;IAChC;IAEA,kDAAkD;IAClD,MAAMI,oBAAoB,CAACC;QACzBJ,SAASI;IACX;IAEA,iHAAiH;IACjH,eAAe;IACf,MAAMC,kBAAkB;QACtBH,mBAAmBH;QACnBF,SACEH,QAAQI,OAAO,CAACQ;YACdA,MAAMP,KAAK,GAAGA;QAChB;IAEJ;IAEA,OAAO;QAAEA;QAAOI;QAAmBE;IAAgB;AACrD;AAEA;;CAEC,GACD,OAAO,SAASE,cAAcX,KAA4B;IAMxD,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAE,GAAGF;IAE5B,+EAA+E;IAC/E,MAAM,CAACY,OAAOC,SAAS,GAAGhB,SAASK,MAAMU,KAAK,GAAGV,MAAMU,KAAK,CAACE,QAAQ,KAAK;IAC1E,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGnB,SAASK,MAAMU,KAAK;IAClE,IAAIV,MAAMU,KAAK,KAAKG,iBAAiB;QACnCF,SAASX,MAAMU,KAAK,GAAGV,MAAMU,KAAK,CAACE,QAAQ,KAAK;QAChDE,mBAAmBd,MAAMU,KAAK;IAChC;IAEA,wCAAwC;IACxC,MAAMK,gBAAgB,CAAEL,CAAAA,UAAU,MAAO,WAAWM,IAAI,CAACN,UAAUO,SAASP,SAAS,CAAC;IAEtF,2CAA2C;IAC3C,MAAMQ,oBAAoB,CAACZ;QACzBK,SAASL;IACX;IAEA,mFAAmF;IACnF,MAAMa,kBAAkB;QACtB,IAAIJ,eAAe;YACjB;QACF;QAEA,MAAMK,WAAWV,UAAU,KAAKW,YAAYJ,SAASP;QACrDI,mBAAmBM;QACnBrB,SACEH,QAAQI,OAAO,CAACQ;YACdA,MAAME,KAAK,GAAGU;QAChB;IAEJ;IAEA,OAAO;QAAEV;QAAOQ;QAAmBC;QAAiBJ;IAAc;AACpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/test/mock-data.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Span, TraceData } from '@perses-dev/core';\nimport { QueryResponse, SearchResponse } from '../model/api-types';\n\nfunction addParentReferences(span: Span) {\n for (const child of span.childSpans) {\n child.parentSpan = span;\n addParentReferences(child);\n }\n}\n\nexport const MOCK_TRACE_RESPONSE: QueryResponse = {\n batches: [\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135898442804',\n endTimeUnixNano: '1718122136696651946',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.178.78',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'shop-backend.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8523',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/article-to-cart',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '798964',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'GET',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://shop-backend.local:8523/article-to-cart',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136121852899',\n name: 'event_k6.NatYZCF1v6',\n attributes: [\n {\n key: 'k6.vRlB3IwcJgPdes2',\n value: {\n stringValue: 'bx4L0E7Xun1cHFa2VBcJn9NZ7uD5up',\n },\n },\n {\n key: 'k6.e6PRrGoq3Sa0gLJ',\n value: {\n stringValue: 'C4vQHnkSsTpLrm7wqCADIG06SrOYJH',\n },\n },\n {\n key: 'k6.p4RmGEu0yfG1ysn',\n value: {\n stringValue: 'ngqd7T3ca52vKwWjcbX2POxyRU3syb',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135959148791',\n name: 'event_k6.dhqI1KzgcG',\n attributes: [\n {\n key: 'k6.8ZSxlGYQMpdtsb2',\n value: {\n stringValue: 'f1s5FaaXAjO7RwX9cJzg7o02fxCqYn',\n },\n },\n {\n key: 'k6.dwykekSkUbmNpbm',\n value: {\n stringValue: 'fXcViA4rTQIhH7b5gPqg2IHfyu3JIr',\n },\n },\n {\n key: 'k6.ao5Id3Am3ODvEcu',\n value: {\n stringValue: 'F98r8VLUBAVQuGlWyRnE04vkX4afnO',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136535757542',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.MI6I5eznGjjWV67pZXTV',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\nmain.main()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.J2JsFeiTDN',\n },\n },\n {\n key: 'k6.b5N57NHFwBy6NeA',\n value: {\n stringValue: 'RkxSWkFgRL438NkhrSbOVpEtjlRA5z',\n },\n },\n {\n key: 'k6.ZI1ihTktVIpf07N',\n value: {\n stringValue: 'jCQJpwoLprXVK9gmY92Gv5P6JGIqfN',\n },\n },\n {\n key: 'k6.aGENTrz8xteROR0',\n value: {\n stringValue: '982UX22GsdRtc0LJ51AvcNF60B6h1y',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135954765948',\n endTimeUnixNano: '1718122136154227489',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8615',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.80.125',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'auth-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'text/html',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '161675',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PATCH',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://auth-service.local:8322/authenticate',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136068613856',\n name: 'event_k6.7W272ywYih',\n attributes: [\n {\n key: 'k6.sJekvnAr5h7vJfK',\n value: {\n stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS',\n },\n },\n {\n key: 'k6.81JLO5NlT1lAeF1',\n value: {\n stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ',\n },\n },\n {\n key: 'k6.tdj0bfOxLndyJuN',\n value: {\n stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136095265320',\n name: 'event_k6.KCZc8Ro6UP',\n attributes: [\n {\n key: 'k6.NAn98VlCTpIgjdr',\n value: {\n stringValue: 'VMbkD6Pnn2AJW2coVczCfiW0Lvp0AL',\n },\n },\n {\n key: 'k6.ECtNrkLMxtxm6Lv',\n value: {\n stringValue: 'nle5O4vANrB7gPw3ZbvpQpsT0pWOvX',\n },\n },\n {\n key: 'k6.SDlhZuXOjrv0n2d',\n value: {\n stringValue: 'fI9fkYPaE2fKkKiBPFWbsNIkE9YMEy',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135959614494',\n name: 'exception',\n attributes: [\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.549QHAUnvmJqcORGZpTl',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\npayment.collect()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.ndxfJIt3Q8',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'k6.hx7eN6MvcsDrZbu',\n value: {\n stringValue: 'yq7cjJi6pCHXCQULbnr2zemQiD4sDD',\n },\n },\n {\n key: 'k6.0vrHzWQOLZe4CFL',\n value: {\n stringValue: 'cYlTmNgj6nRsvgaSL3glGcCQTZ5x0w',\n },\n },\n {\n key: 'k6.j0vPrk42aKgAn6M',\n value: {\n stringValue: '9iT9xHqHXD7CTLDt68xpXvaow4oANP',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135965210897',\n endTimeUnixNano: '1718122136520157839',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8834',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.40.73',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'article-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/x-www-form-urlencoded',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '840071',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://article-service.local:8146/get-article',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136095880853',\n name: 'event_k6.esi0tvI52F',\n attributes: [\n {\n key: 'k6.tlJUCbFg8xUyqBn',\n value: {\n stringValue: 'fPCoKtVMdrjd6U4fzn8zUlxnCKCFZ6',\n },\n },\n {\n key: 'k6.23yKJaHpSpPaFlf',\n value: {\n stringValue: 'TXUnXU0kJVYv6gVKV8uAwDb1SEFh5F',\n },\n },\n {\n key: 'k6.941Ut337TRmxSZY',\n value: {\n stringValue: 'TQw39BLyz0gOiklICoP01avxjCup8B',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136251990539',\n name: 'event_k6.ak6z7aVhHz',\n attributes: [\n {\n key: 'k6.U0xUmWwMkCKvgDr',\n value: {\n stringValue: 'KPBjWYRkXlE7WgIGfetcWwzYNOh3Dg',\n },\n },\n {\n key: 'k6.Ae1hEmw6fHfzGvN',\n value: {\n stringValue: 'JuORXGGEYpqKfueJQH6hEZ6dEzPYbn',\n },\n },\n {\n key: 'k6.mXspZ65CGfDXPTl',\n value: {\n stringValue: '8FOzwZNpaQsqFkPiXBkCVGcjjxdEJi',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135981029446',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.lDiv3BJzpVrRohNvd5iX',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\npayment.collect()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.cnB8FMWj0O',\n },\n },\n {\n key: 'k6.rzjx1Jb3nP3lx0j',\n value: {\n stringValue: 'NFag7Ie3d9CUp7IK6K8uQDtdbwqIgW',\n },\n },\n {\n key: 'k6.VipfBYYIE7TAoyv',\n value: {\n stringValue: '2FLijaW07hlifYiSd54zKCa8Rg1AGQ',\n },\n },\n {\n key: 'k6.KZ033g2dDKYI1DZ',\n value: {\n stringValue: 'toU991pl3dLDI7Uo2ncZfCpbex7afr',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'R5+h4rUGjAg=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'place-articles',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135966028415',\n endTimeUnixNano: '1718122136475626506',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8154',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.129.185',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'cart-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '751980',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PUT',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://cart-service.local:8569/place-articles',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '201',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136123608866',\n name: 'event_k6.3Sryhmkta7',\n attributes: [\n {\n key: 'k6.V5xiLax3uVsNdKW',\n value: {\n stringValue: 'A2Z2c4PayyYkcRE3YxvDCjhT90NUHA',\n },\n },\n {\n key: 'k6.xUgJMfnYCwkQcqi',\n value: {\n stringValue: 'krepg7b6G2T1mf4WSlzT05rItbnVXp',\n },\n },\n {\n key: 'k6.X9HgfnyYqrKUEAQ',\n value: {\n stringValue: 'M4Hk8n5goVVebPFPLUJjhQ7Go2jvpu',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136189408794',\n name: 'event_k6.XHavEme9S9',\n attributes: [\n {\n key: 'k6.At33Eb93zvfBqEM',\n value: {\n stringValue: 'xHYSOyuxwN2wumQXWfKLhYlHSZDdFR',\n },\n },\n {\n key: 'k6.PbSywD5KKD8FP3R',\n value: {\n stringValue: '8x2xinELQChu9I8wpwnIBnuLLTsITv',\n },\n },\n {\n key: 'k6.DMloaUzuVFyYz71',\n value: {\n stringValue: 'iYwGwzl399dn9cQ4xmY4v3XEF3vNn7',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136349567897',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.sG5d4qdkE11RLcbWQk7l',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\ntrace.makespan()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.8PslAmJ3dT',\n },\n },\n {\n key: 'k6.oF87iXjIiW1H0fO',\n value: {\n stringValue: '0TuahfA9Ss3kqKJc5iIXjqbhvTp7Jj',\n },\n },\n {\n key: 'k6.iMi4DvfLOcMNhbH',\n value: {\n stringValue: 'pDeruWs4qBI2c29fP4yEawwvwo7t5n',\n },\n },\n {\n key: 'k6.iDspSFE5Cl8nwtI',\n value: {\n stringValue: 'WK80HnveOFl1TeUPeaLKhsm8aaseam',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'auth-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135970602296',\n endTimeUnixNano: '1718122136107740742',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.80.125',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'auth-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8322',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'text/html',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/authenticate',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '161675',\n },\n },\n {\n key: 'http.request_content_length',\n value: {\n intValue: '15814',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PATCH',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://auth-service.local:8322/authenticate',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122135973731314',\n name: 'event_k6.GEhccAnJok',\n attributes: [\n {\n key: 'k6.T1JWJOTGQNuwucm',\n value: {\n stringValue: 'nsKwcTlJQCLKKAXfPOgOQDvxKjv3Tw',\n },\n },\n {\n key: 'k6.YW0obYcWNxBnjjG',\n value: {\n stringValue: 'EzvYbpCZ8ghjO9a85AttpuYSApFRfu',\n },\n },\n {\n key: 'k6.iwBzfbLvohAouYJ',\n value: {\n stringValue: '409XTWEnYj3v3AwRoqdgBy6btNKAyT',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135992251805',\n name: 'event_k6.gm85YbCvpm',\n attributes: [\n {\n key: 'k6.MtcuboSMDlSE4sp',\n value: {\n stringValue: 'f2nN1sAFSqO82mCG83KHnivWbvemq4',\n },\n },\n {\n key: 'k6.pMci576PvAe4SXX',\n value: {\n stringValue: 'Q0LHIU7S9eWlk58l7NCCyUn9Cbvucs',\n },\n },\n {\n key: 'k6.D6WBQBa3H3GZBMU',\n value: {\n stringValue: 'Bii98Iz53cmOvjX6xO1zOH8LigOKxx',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136053892329',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.nQlVyfS8ug7OrbniR6U0',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\nmain.main()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.bto3zuQex2',\n },\n },\n {\n key: 'k6.YJyP1LIuGX375b9',\n value: {\n stringValue: '9aOfrSQ3dnswtqA7NA9aSFzUr3Q9tg',\n },\n },\n {\n key: 'k6.eSrLSO4oYbaJ0fw',\n value: {\n stringValue: 'glKpJznQsZCDX7QVHBCS1nE0zNk6ZE',\n },\n },\n {\n key: 'k6.jfIgcZAEcX26te9',\n value: {\n stringValue: 'KHtYcZiyJ4WYJDkEGtf8c88v6nAhPU',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'article-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'd7ckd3aNLyo=',\n parentSpanId: 'r2NxHHPjciM=',\n name: 'get-article',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135995640399',\n endTimeUnixNano: '1718122136347061543',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.40.73',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'article-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8146',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/x-www-form-urlencoded',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/get-article',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '840071',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://article-service.local:8146/get-article',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136058281752',\n name: 'event_k6.QaCoyeuyO2',\n attributes: [\n {\n key: 'k6.2vFHMgf0JqdEQQ0',\n value: {\n stringValue: 'XU0LWwsh6qhm3eEslrFl06RTgyCcFI',\n },\n },\n {\n key: 'k6.Y6ADBqcOTJENhXY',\n value: {\n stringValue: '8GGtoIzZb9K1NfnIvguVYKkK7oHk9Z',\n },\n },\n {\n key: 'k6.ogCoDkhK5UKNbk3',\n value: {\n stringValue: 'NO6e09bLJ0F6nogOzJJ1HbBqEheRBj',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136112385367',\n name: 'event_k6.J6YoJTTxWK',\n attributes: [\n {\n key: 'k6.4BS0WAdGEOgHOBQ',\n value: {\n stringValue: 'FoySu3YOfbP4QSjcsC7KtF2cjQPOZ3',\n },\n },\n {\n key: 'k6.k0bKV9rjRBCe9ZR',\n value: {\n stringValue: 'KAgIztMuROn2nArmJpH5tMMYzWYby0',\n },\n },\n {\n key: 'k6.W5y1HG831ooasln',\n value: {\n stringValue: '4RmrSGgD7yKgn3mhFPD37o7n4ZWo7T',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136203641571',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.D3gOy3QvVkTbYgSaCYPp',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\ntrace.makespan()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.r86MZys2p8',\n },\n },\n {\n key: 'k6.T6Dia09arSO0X8K',\n value: {\n stringValue: 'YF47Zo9kzOhhIR2XrQXQ2ksabd3Gab',\n },\n },\n {\n key: 'k6.4JTG1iw7rFcS4Ju',\n value: {\n stringValue: 'pyvkkWsqXuhwlmdnpYpsXPglpquelS',\n },\n },\n {\n key: 'k6.ynJ9WO2xBQdJ5HY',\n value: {\n stringValue: '25mtvH6QCUgorKQCsjD3KCKsfmB5bF',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'ey6qRxofJmc=',\n parentSpanId: 'd7ckd3aNLyo=',\n name: 'select-articles',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122136029615583',\n endTimeUnixNano: '1718122136253492513',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8803',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.195.79',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'postgres.local',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136100198855',\n name: 'event_k6.bTjxPkehda',\n attributes: [\n {\n key: 'k6.cHxu9QKdcjw61cH',\n value: {\n stringValue: '9BOtyHe60cPmnAAyx5OLf7HUkkyGVu',\n },\n },\n {\n key: 'k6.z4mxHOF9lH4cWym',\n value: {\n stringValue: 'ewYXEMWx5rXEEV7qBsEt0gMSnFcprS',\n },\n },\n {\n key: 'k6.vQmJvoh0YU75MTq',\n value: {\n stringValue: 'DogsPXKbGpsDalcLGlXGwKWL5ykAMQ',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136036190109',\n name: 'event_k6.FhoqGTeALJ',\n attributes: [\n {\n key: 'k6.eQSVasGUkFmo4BU',\n value: {\n stringValue: 'tEpJ7jT8Zu64rS1jXKiftt8fBwMr1H',\n },\n },\n {\n key: 'k6.ooZC6oqEbDOuDkd',\n value: {\n stringValue: 'ul3MQpEQlyMO5QAQhQaPyFhKjVgyS2',\n },\n },\n {\n key: 'k6.eb2xT8J9lfDMRhR',\n value: {\n stringValue: 'zhm0w9E5d0JBcovyRXcEgbXuYHhKcw',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136053896641',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.5ymfEHCaUejvd7EYMVR6',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\ntrace.makespan()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.YgJGYyT4ZP',\n },\n },\n {\n key: 'k6.s4QwdDpX8xbP7qg',\n value: {\n stringValue: 'Y8WGayIe0GkUrlMGSzS0Gf1OsLvh5D',\n },\n },\n {\n key: 'k6.sddK8EDlFSl8uGQ',\n value: {\n stringValue: 'wAqAehAhurbu4JIAyAwFx94tczIbpW',\n },\n },\n {\n key: 'k6.Ho5hjf6ryokivDL',\n value: {\n stringValue: 'G48irDeGwDhOz985G8L5qjigaZSdKK',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'postgres',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'K60RcdOZ/A0=',\n parentSpanId: 'ey6qRxofJmc=',\n name: 'query-articles',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122136041528783',\n endTimeUnixNano: '1718122136210517760',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'k6.h4Cb9ao1B9ACcTx',\n value: {\n stringValue: 'uMVyp4sTRHwsmEIyA0JcmZ5s3KTFGv',\n },\n },\n {\n key: 'k6.bTvlPcLlmIIoIhz',\n value: {\n stringValue: 'Js8oMWskWDstC8q1bH0BjpdaxZJHvR',\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.195.79',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'postgres.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8523',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136128896049',\n name: 'event_k6.HxNJp7wrtw',\n attributes: [\n {\n key: 'k6.YyMj5iOPD3FN8H9',\n value: {\n stringValue: '7OGVPJmS6UdIKlqpZhB4XhwjasZ72R',\n },\n },\n {\n key: 'k6.RY9hKEnGmOYzB4W',\n value: {\n stringValue: '5E89roYYhl5KLvoTAnHmVtjZiOckoa',\n },\n },\n {\n key: 'k6.B0PGwsQsRMofoRe',\n value: {\n stringValue: 'zm0G1wyExyEBsGohzCTrUF94qz9IpC',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136106174905',\n name: 'event_k6.ffJnb3eRnS',\n attributes: [\n {\n key: 'k6.SJP3bOKT9lhNwMo',\n value: {\n stringValue: '7mFoXQBwmSLuirUHcTMa1lwlDJmW7C',\n },\n },\n {\n key: 'k6.dotaZmeMHFTSp3K',\n value: {\n stringValue: 'A3EHnd11QgTwFWLGRuvozbQbYo6qGL',\n },\n },\n {\n key: 'k6.tapw2o0UwOIltQ0',\n value: {\n stringValue: 'n2aKsqMfwI8Jscfxlo1N1UPnnS8faM',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136142550112',\n name: 'exception',\n attributes: [\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\ntrace.makespan()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.SRpBYt5TW3',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.dRIcyvphT9gmCO6OUWMS',\n },\n },\n {\n key: 'k6.AcaH1QyTXB7pgvX',\n value: {\n stringValue: 'b4ucnpk3Pe0pzMtuBZfZMGbZGUarsY',\n },\n },\n {\n key: 'k6.coZHMs3RqE3uUmO',\n value: {\n stringValue: 'WnEKZI0KmL8VSo0N954et4EKphAeuL',\n },\n },\n {\n key: 'k6.5h5AwuG29rFl0TZ',\n value: {\n stringValue: 'OBavPbd11dnhCjW4T7detonOKwZI4y',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'cart-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'vzwvNtutFW0=',\n parentSpanId: 'R5+h4rUGjAg=',\n name: 'place-articles',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122136007859429',\n endTimeUnixNano: '1718122136268919885',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'article.count',\n value: {\n intValue: '1',\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.129.185',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'cart-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8569',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/place-articles',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '751980',\n },\n },\n {\n key: 'http.request_content_length',\n value: {\n intValue: '34141',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PUT',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://cart-service.local:8569/place-articles',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '201',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136203406997',\n name: 'event_k6.MpUSHGnzHW',\n attributes: [\n {\n key: 'k6.l2JhL9LZbdTkz9E',\n value: {\n stringValue: 'qVBJorKlU0MA6VRnrd0pW9muK6Ij7k',\n },\n },\n {\n key: 'k6.pieF4s3vVr6p8ku',\n value: {\n stringValue: 'Xnf4V6q33T3wfckKmHbOg0afkEh5Fo',\n },\n },\n {\n key: 'k6.MNHbHRU5zLSQKWW',\n value: {\n stringValue: 'Hby9qlMSDjbiXYLnORqmvPYp7XNhTQ',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136146675140',\n name: 'event_k6.JnRiJWcamn',\n attributes: [\n {\n key: 'k6.nY9q92HcD0OQj66',\n value: {\n stringValue: 'jEN2cPz0ecykpAKAosH9BnQn7eBljV',\n },\n },\n {\n key: 'k6.cluyyyeK3ZlISD7',\n value: {\n stringValue: '7qyFcsRFfcI32uXfWD3mQagTQlszZu',\n },\n },\n {\n key: 'k6.v8sGq2lPUMgEOXZ',\n value: {\n stringValue: '5c1oTqFjjpTHP3vRfILdosK0F1a5EU',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136047138011',\n name: 'exception',\n attributes: [\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.DyoewbKjvlKhB7p7m1V3',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\nmain.main()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.UrRTn11slD',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'k6.5NYGiSBnep9YBIY',\n value: {\n stringValue: 'En58EmO8S1a37B2FU6XcHDhb4cFMta',\n },\n },\n {\n key: 'k6.TGjvbz4lnCS4ZT8',\n value: {\n stringValue: 'J6YCDh1j7m7ggQ0NDhY7tmVOmTUCVx',\n },\n },\n {\n key: 'k6.OvrsPnmMlQklKaW',\n value: {\n stringValue: 'Uwh0ePszj6xfZwLs5YV9yhY9JHJ1MH',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'f3J5Ie32ajw=',\n parentSpanId: 'vzwvNtutFW0=',\n name: 'persist-cart',\n kind: 'SPAN_KIND_INTERNAL',\n startTimeUnixNano: '1718122136032445342',\n endTimeUnixNano: '1718122136181070070',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136113822486',\n name: 'event_k6.NBujEjHLhn',\n attributes: [\n {\n key: 'k6.hkAPSBbu5QKTNdQ',\n value: {\n stringValue: '1x8f2TJvg7AI4RO4A30hYh4g7OPWii',\n },\n },\n {\n key: 'k6.aSpTXoAPRHgFSwb',\n value: {\n stringValue: 'x4LqX7VrugMRxkWm4EqxfTGyHg6c6a',\n },\n },\n {\n key: 'k6.YIZb89UktDSSuMv',\n value: {\n stringValue: '1ASIDwCeM8J8KNeBab3GqtINvAVhHp',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136107329261',\n name: 'event_k6.gkrRkvoUaJ',\n attributes: [\n {\n key: 'k6.hROOwpwdeK2SNMC',\n value: {\n stringValue: 'hiZ6CqaCuJb0lPZYJQlq4YHJtlc9D2',\n },\n },\n {\n key: 'k6.Ku4s4qcO6mdBJSI',\n value: {\n stringValue: 'kM0lf7uJKsad8Nr6fEnJmN4BlpRsnQ',\n },\n },\n {\n key: 'k6.1kauecg7ejqdT3x',\n value: {\n stringValue: 'JWu9BD49BHPspSmrQZHgP43b1lP4nR',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136113457263',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.nI7SzvvlWcofONBAuHnW',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\npayment.collect()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.fCLeszQUJO',\n },\n },\n {\n key: 'k6.XbP7rI1K5WGlFbi',\n value: {\n stringValue: '0XBtgNknyGLknDZ9LyOxHJeNUFIG0A',\n },\n },\n {\n key: 'k6.pXdHJMWGYPDjNAG',\n value: {\n stringValue: 'fjcaG7XLw6kWW3TtIna1VwlkwBiCUy',\n },\n },\n {\n key: 'k6.OAJwJcU2Y5RiDbs',\n value: {\n stringValue: 'yRwf8PxKADpRtmMa2zC6hOlvrNNzsu',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const MOCK_TRACE_RESPONSE_SMALL: QueryResponse = {\n batches: [\n {\n resource: {\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135898442804',\n endTimeUnixNano: '1718122136696651946',\n attributes: [\n {\n key: 'http.url',\n value: {\n stringValue: 'https://shop-backend.local:8523/article-to-cart',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135954765948',\n endTimeUnixNano: '1718122136154227489',\n attributes: [\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136068613856',\n name: 'event_k6.7W272ywYih',\n attributes: [\n {\n key: 'k6.sJekvnAr5h7vJfK',\n value: {\n stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS',\n },\n },\n {\n key: 'k6.81JLO5NlT1lAeF1',\n value: {\n stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ',\n },\n },\n {\n key: 'k6.tdj0bfOxLndyJuN',\n value: {\n stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135965210897',\n endTimeUnixNano: '1718122136520157839',\n attributes: [\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'auth-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135970602296',\n endTimeUnixNano: '1718122136107740742',\n status: {\n message: 'Forbidden',\n code: 'STATUS_CODE_ERROR',\n },\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_VPARQUET3: SearchResponse = {\n traces: [\n {\n traceID: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationMs: 798,\n spanSet: {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n spanSets: [\n {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n ],\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_VPARQUET4: SearchResponse = {\n traces: [\n {\n traceID: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationMs: 798,\n spanSet: {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n spanSets: [\n {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n ],\n serviceStats: {\n 'article-service': {\n spanCount: 2,\n },\n 'auth-service': {\n spanCount: 1,\n },\n 'cart-service': {\n spanCount: 2,\n },\n postgres: {\n spanCount: 1,\n },\n 'shop-backend': {\n spanCount: 4,\n },\n },\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_MIXED_VPARQUET3_AND_4: SearchResponse = {\n traces: [\n {\n traceID: '224a0e75a0d244f1a3dab3af233e6cf3',\n rootServiceName: 'telemetrygen',\n rootTraceName: 'lets-go',\n startTimeUnixNano: '1727969811138427469',\n spanSets: [\n {\n spans: [\n {\n spanID: '237f68dfbed2f473',\n startTimeUnixNano: '1727969811138427469',\n durationNanos: '123000',\n },\n {\n spanID: 'a8eefdaad116a872',\n startTimeUnixNano: '1727969811138427469',\n durationNanos: '123000',\n },\n ],\n matched: 2,\n },\n ],\n serviceStats: {\n telemetrygen: {\n spanCount: 2,\n },\n },\n },\n {\n traceID: '71bd40553a881d98dc52f2a27fd53fe3',\n rootServiceName: 'telemetrygen',\n rootTraceName: 'lets-go',\n startTimeUnixNano: '1727969665041183110',\n spanSets: [\n {\n spans: [\n {\n spanID: '968a78f0ffbc6570',\n startTimeUnixNano: '1727969665041183110',\n durationNanos: '123000',\n },\n {\n spanID: 'bb8ab44ffd46ca07',\n startTimeUnixNano: '1727969665041183110',\n durationNanos: '123000',\n },\n ],\n matched: 2,\n },\n ],\n },\n ],\n};\n\nexport const MOCK_TRACE_DATA_SEARCHRESULT: TraceData = {\n searchResult: [\n {\n startTimeUnixMs: 1718122135898.4426,\n durationMs: 798,\n serviceStats: {\n 'shop-backend': {\n spanCount: 4,\n },\n 'cart-service': {\n spanCount: 2,\n },\n 'article-service': {\n spanCount: 2,\n },\n 'auth-service': {\n spanCount: 1,\n },\n postgres: {\n spanCount: 1,\n },\n },\n traceId: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n },\n ],\n metadata: { executedQueryString: 'duration > 900ms' },\n};\n\nexport const MOCK_TRACE_DATA_TRACE: TraceData = {\n trace: {\n rootSpan: {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixMs: 1718122135898.4426,\n endTimeUnixMs: 1718122136696.6519,\n attributes: [\n { key: 'http.url', value: { stringValue: 'https://shop-backend.local:8523/article-to-cart' } },\n { key: 'http.status_code', value: { intValue: '202' } },\n ],\n events: [],\n status: {},\n childSpans: [\n {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n childSpans: [\n {\n resource: {\n serviceName: 'auth-service',\n attributes: [{ key: 'service.name', value: { stringValue: 'auth-service' } }],\n },\n scope: { name: 'k6' },\n childSpans: [],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixMs: 1718122135970.602,\n endTimeUnixMs: 1718122136107.7405,\n attributes: [],\n events: [],\n status: { message: 'Forbidden', code: 'STATUS_CODE_ERROR' },\n },\n ],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixMs: 1718122135954.7656,\n endTimeUnixMs: 1718122136154.2273,\n attributes: [{ key: 'net.transport', value: { stringValue: 'ip_tcp' } }],\n events: [\n {\n timeUnixMs: 1718122136068.6138,\n name: 'event_k6.7W272ywYih',\n attributes: [\n { key: 'k6.sJekvnAr5h7vJfK', value: { stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS' } },\n { key: 'k6.81JLO5NlT1lAeF1', value: { stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ' } },\n { key: 'k6.tdj0bfOxLndyJuN', value: { stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb' } },\n ],\n },\n ],\n status: {},\n },\n {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n childSpans: [],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixMs: 1718122135965.2107,\n endTimeUnixMs: 1718122136520.158,\n attributes: [{ key: 'http.method', value: { stringValue: 'DELETE' } }],\n events: [],\n status: {},\n },\n ],\n },\n },\n metadata: { executedQueryString: '61a1487c461d9e08' },\n};\naddParentReferences(MOCK_TRACE_DATA_TRACE.trace!.rootSpan);\n"],"names":["addParentReferences","span","child","childSpans","parentSpan","MOCK_TRACE_RESPONSE","batches","resource","attributes","key","value","stringValue","scopeSpans","scope","name","spans","traceId","spanId","kind","startTimeUnixNano","endTimeUnixNano","arrayValue","values","intValue","events","timeUnixNano","boolValue","status","parentSpanId","MOCK_TRACE_RESPONSE_SMALL","message","code","MOCK_SEARCH_RESPONSE_VPARQUET3","traces","traceID","rootServiceName","rootTraceName","durationMs","spanSet","spanID","durationNanos","matched","spanSets","MOCK_SEARCH_RESPONSE_VPARQUET4","serviceStats","spanCount","postgres","MOCK_SEARCH_RESPONSE_MIXED_VPARQUET3_AND_4","telemetrygen","MOCK_TRACE_DATA_SEARCHRESULT","searchResult","startTimeUnixMs","metadata","executedQueryString","MOCK_TRACE_DATA_TRACE","trace","rootSpan","serviceName","endTimeUnixMs","timeUnixMs"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAKjC,SAASA,oBAAoBC,IAAU;IACrC,KAAK,MAAMC,SAASD,KAAKE,UAAU,CAAE;QACnCD,MAAME,UAAU,GAAGH;QACnBD,oBAAoBE;IACtB;AACF;AAEA,OAAO,MAAMG,sBAAqC;IAChDC,SAAS;QACP;YACEC,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRH,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAME,4BAA2C;IACtDvB,SAAS;QACP;YACEC,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRH,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDI,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBO,QAAQ;gCACNG,SAAS;gCACTC,MAAM;4BACR;wBACF;qBACD;gBACH;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAMC,iCAAiD;IAC5DC,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBkB,YAAY;YACZC,SAAS;gBACPvB,OAAO;oBACL;wBACEwB,QAAQ;wBACRzB,MAAM;wBACNK,mBAAmB;wBACnBqB,eAAe;wBACfhC,YAAY;4BACV;gCACEC,KAAK;gCACLC,OAAO;oCACLC,aAAa;gCACf;4BACF;yBACD;oBACH;iBACD;gBACD8B,SAAS;YACX;YACAC,UAAU;gBACR;oBACE3B,OAAO;wBACL;4BACEwB,QAAQ;4BACRzB,MAAM;4BACNK,mBAAmB;4BACnBqB,eAAe;4BACfhC,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;wBACH;qBACD;oBACD8B,SAAS;gBACX;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAME,iCAAiD;IAC5DV,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBkB,YAAY;YACZC,SAAS;gBACPvB,OAAO;oBACL;wBACEwB,QAAQ;wBACRzB,MAAM;wBACNK,mBAAmB;wBACnBqB,eAAe;wBACfhC,YAAY;4BACV;gCACEC,KAAK;gCACLC,OAAO;oCACLC,aAAa;gCACf;4BACF;yBACD;oBACH;iBACD;gBACD8B,SAAS;YACX;YACAC,UAAU;gBACR;oBACE3B,OAAO;wBACL;4BACEwB,QAAQ;4BACRzB,MAAM;4BACNK,mBAAmB;4BACnBqB,eAAe;4BACfhC,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;wBACH;qBACD;oBACD8B,SAAS;gBACX;aACD;YACDG,cAAc;gBACZ,mBAAmB;oBACjBC,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;gBACAC,UAAU;oBACRD,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;YACF;QACF;KACD;AACH,EAAE;AAEF,OAAO,MAAME,6CAA6D;IACxEd,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBuB,UAAU;gBACR;oBACE3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"}
|
|
1
|
+
{"version":3,"sources":["../../src/test/mock-data.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { Span, TraceData } from '@perses-dev/core';\nimport { QueryResponse, SearchResponse } from '../model/api-types';\n\nfunction addParentReferences(span: Span): void {\n for (const child of span.childSpans) {\n child.parentSpan = span;\n addParentReferences(child);\n }\n}\n\nexport const MOCK_TRACE_RESPONSE: QueryResponse = {\n batches: [\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135898442804',\n endTimeUnixNano: '1718122136696651946',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.178.78',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'shop-backend.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8523',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/article-to-cart',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '798964',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'GET',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://shop-backend.local:8523/article-to-cart',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136121852899',\n name: 'event_k6.NatYZCF1v6',\n attributes: [\n {\n key: 'k6.vRlB3IwcJgPdes2',\n value: {\n stringValue: 'bx4L0E7Xun1cHFa2VBcJn9NZ7uD5up',\n },\n },\n {\n key: 'k6.e6PRrGoq3Sa0gLJ',\n value: {\n stringValue: 'C4vQHnkSsTpLrm7wqCADIG06SrOYJH',\n },\n },\n {\n key: 'k6.p4RmGEu0yfG1ysn',\n value: {\n stringValue: 'ngqd7T3ca52vKwWjcbX2POxyRU3syb',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135959148791',\n name: 'event_k6.dhqI1KzgcG',\n attributes: [\n {\n key: 'k6.8ZSxlGYQMpdtsb2',\n value: {\n stringValue: 'f1s5FaaXAjO7RwX9cJzg7o02fxCqYn',\n },\n },\n {\n key: 'k6.dwykekSkUbmNpbm',\n value: {\n stringValue: 'fXcViA4rTQIhH7b5gPqg2IHfyu3JIr',\n },\n },\n {\n key: 'k6.ao5Id3Am3ODvEcu',\n value: {\n stringValue: 'F98r8VLUBAVQuGlWyRnE04vkX4afnO',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136535757542',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.MI6I5eznGjjWV67pZXTV',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\nmain.main()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.J2JsFeiTDN',\n },\n },\n {\n key: 'k6.b5N57NHFwBy6NeA',\n value: {\n stringValue: 'RkxSWkFgRL438NkhrSbOVpEtjlRA5z',\n },\n },\n {\n key: 'k6.ZI1ihTktVIpf07N',\n value: {\n stringValue: 'jCQJpwoLprXVK9gmY92Gv5P6JGIqfN',\n },\n },\n {\n key: 'k6.aGENTrz8xteROR0',\n value: {\n stringValue: '982UX22GsdRtc0LJ51AvcNF60B6h1y',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135954765948',\n endTimeUnixNano: '1718122136154227489',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8615',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.80.125',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'auth-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'text/html',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '161675',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PATCH',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://auth-service.local:8322/authenticate',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136068613856',\n name: 'event_k6.7W272ywYih',\n attributes: [\n {\n key: 'k6.sJekvnAr5h7vJfK',\n value: {\n stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS',\n },\n },\n {\n key: 'k6.81JLO5NlT1lAeF1',\n value: {\n stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ',\n },\n },\n {\n key: 'k6.tdj0bfOxLndyJuN',\n value: {\n stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136095265320',\n name: 'event_k6.KCZc8Ro6UP',\n attributes: [\n {\n key: 'k6.NAn98VlCTpIgjdr',\n value: {\n stringValue: 'VMbkD6Pnn2AJW2coVczCfiW0Lvp0AL',\n },\n },\n {\n key: 'k6.ECtNrkLMxtxm6Lv',\n value: {\n stringValue: 'nle5O4vANrB7gPw3ZbvpQpsT0pWOvX',\n },\n },\n {\n key: 'k6.SDlhZuXOjrv0n2d',\n value: {\n stringValue: 'fI9fkYPaE2fKkKiBPFWbsNIkE9YMEy',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135959614494',\n name: 'exception',\n attributes: [\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.549QHAUnvmJqcORGZpTl',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\npayment.collect()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.ndxfJIt3Q8',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'k6.hx7eN6MvcsDrZbu',\n value: {\n stringValue: 'yq7cjJi6pCHXCQULbnr2zemQiD4sDD',\n },\n },\n {\n key: 'k6.0vrHzWQOLZe4CFL',\n value: {\n stringValue: 'cYlTmNgj6nRsvgaSL3glGcCQTZ5x0w',\n },\n },\n {\n key: 'k6.j0vPrk42aKgAn6M',\n value: {\n stringValue: '9iT9xHqHXD7CTLDt68xpXvaow4oANP',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135965210897',\n endTimeUnixNano: '1718122136520157839',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8834',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.40.73',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'article-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/x-www-form-urlencoded',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '840071',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://article-service.local:8146/get-article',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136095880853',\n name: 'event_k6.esi0tvI52F',\n attributes: [\n {\n key: 'k6.tlJUCbFg8xUyqBn',\n value: {\n stringValue: 'fPCoKtVMdrjd6U4fzn8zUlxnCKCFZ6',\n },\n },\n {\n key: 'k6.23yKJaHpSpPaFlf',\n value: {\n stringValue: 'TXUnXU0kJVYv6gVKV8uAwDb1SEFh5F',\n },\n },\n {\n key: 'k6.941Ut337TRmxSZY',\n value: {\n stringValue: 'TQw39BLyz0gOiklICoP01avxjCup8B',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136251990539',\n name: 'event_k6.ak6z7aVhHz',\n attributes: [\n {\n key: 'k6.U0xUmWwMkCKvgDr',\n value: {\n stringValue: 'KPBjWYRkXlE7WgIGfetcWwzYNOh3Dg',\n },\n },\n {\n key: 'k6.Ae1hEmw6fHfzGvN',\n value: {\n stringValue: 'JuORXGGEYpqKfueJQH6hEZ6dEzPYbn',\n },\n },\n {\n key: 'k6.mXspZ65CGfDXPTl',\n value: {\n stringValue: '8FOzwZNpaQsqFkPiXBkCVGcjjxdEJi',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135981029446',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.lDiv3BJzpVrRohNvd5iX',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\npayment.collect()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.cnB8FMWj0O',\n },\n },\n {\n key: 'k6.rzjx1Jb3nP3lx0j',\n value: {\n stringValue: 'NFag7Ie3d9CUp7IK6K8uQDtdbwqIgW',\n },\n },\n {\n key: 'k6.VipfBYYIE7TAoyv',\n value: {\n stringValue: '2FLijaW07hlifYiSd54zKCa8Rg1AGQ',\n },\n },\n {\n key: 'k6.KZ033g2dDKYI1DZ',\n value: {\n stringValue: 'toU991pl3dLDI7Uo2ncZfCpbex7afr',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'R5+h4rUGjAg=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'place-articles',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135966028415',\n endTimeUnixNano: '1718122136475626506',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8154',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.129.185',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'cart-service.local',\n },\n },\n {\n key: 'http.request.header.accept',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '751980',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PUT',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://cart-service.local:8569/place-articles',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '201',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136123608866',\n name: 'event_k6.3Sryhmkta7',\n attributes: [\n {\n key: 'k6.V5xiLax3uVsNdKW',\n value: {\n stringValue: 'A2Z2c4PayyYkcRE3YxvDCjhT90NUHA',\n },\n },\n {\n key: 'k6.xUgJMfnYCwkQcqi',\n value: {\n stringValue: 'krepg7b6G2T1mf4WSlzT05rItbnVXp',\n },\n },\n {\n key: 'k6.X9HgfnyYqrKUEAQ',\n value: {\n stringValue: 'M4Hk8n5goVVebPFPLUJjhQ7Go2jvpu',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136189408794',\n name: 'event_k6.XHavEme9S9',\n attributes: [\n {\n key: 'k6.At33Eb93zvfBqEM',\n value: {\n stringValue: 'xHYSOyuxwN2wumQXWfKLhYlHSZDdFR',\n },\n },\n {\n key: 'k6.PbSywD5KKD8FP3R',\n value: {\n stringValue: '8x2xinELQChu9I8wpwnIBnuLLTsITv',\n },\n },\n {\n key: 'k6.DMloaUzuVFyYz71',\n value: {\n stringValue: 'iYwGwzl399dn9cQ4xmY4v3XEF3vNn7',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136349567897',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.sG5d4qdkE11RLcbWQk7l',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\ntrace.makespan()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.8PslAmJ3dT',\n },\n },\n {\n key: 'k6.oF87iXjIiW1H0fO',\n value: {\n stringValue: '0TuahfA9Ss3kqKJc5iIXjqbhvTp7Jj',\n },\n },\n {\n key: 'k6.iMi4DvfLOcMNhbH',\n value: {\n stringValue: 'pDeruWs4qBI2c29fP4yEawwvwo7t5n',\n },\n },\n {\n key: 'k6.iDspSFE5Cl8nwtI',\n value: {\n stringValue: 'WK80HnveOFl1TeUPeaLKhsm8aaseam',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'auth-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135970602296',\n endTimeUnixNano: '1718122136107740742',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.80.125',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'auth-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8322',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'text/html',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/authenticate',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '161675',\n },\n },\n {\n key: 'http.request_content_length',\n value: {\n intValue: '15814',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PATCH',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://auth-service.local:8322/authenticate',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122135973731314',\n name: 'event_k6.GEhccAnJok',\n attributes: [\n {\n key: 'k6.T1JWJOTGQNuwucm',\n value: {\n stringValue: 'nsKwcTlJQCLKKAXfPOgOQDvxKjv3Tw',\n },\n },\n {\n key: 'k6.YW0obYcWNxBnjjG',\n value: {\n stringValue: 'EzvYbpCZ8ghjO9a85AttpuYSApFRfu',\n },\n },\n {\n key: 'k6.iwBzfbLvohAouYJ',\n value: {\n stringValue: '409XTWEnYj3v3AwRoqdgBy6btNKAyT',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122135992251805',\n name: 'event_k6.gm85YbCvpm',\n attributes: [\n {\n key: 'k6.MtcuboSMDlSE4sp',\n value: {\n stringValue: 'f2nN1sAFSqO82mCG83KHnivWbvemq4',\n },\n },\n {\n key: 'k6.pMci576PvAe4SXX',\n value: {\n stringValue: 'Q0LHIU7S9eWlk58l7NCCyUn9Cbvucs',\n },\n },\n {\n key: 'k6.D6WBQBa3H3GZBMU',\n value: {\n stringValue: 'Bii98Iz53cmOvjX6xO1zOH8LigOKxx',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136053892329',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.nQlVyfS8ug7OrbniR6U0',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\nmain.main()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.bto3zuQex2',\n },\n },\n {\n key: 'k6.YJyP1LIuGX375b9',\n value: {\n stringValue: '9aOfrSQ3dnswtqA7NA9aSFzUr3Q9tg',\n },\n },\n {\n key: 'k6.eSrLSO4oYbaJ0fw',\n value: {\n stringValue: 'glKpJznQsZCDX7QVHBCS1nE0zNk6ZE',\n },\n },\n {\n key: 'k6.jfIgcZAEcX26te9',\n value: {\n stringValue: 'KHtYcZiyJ4WYJDkEGtf8c88v6nAhPU',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'article-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'd7ckd3aNLyo=',\n parentSpanId: 'r2NxHHPjciM=',\n name: 'get-article',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135995640399',\n endTimeUnixNano: '1718122136347061543',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.40.73',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'article-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8146',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/x-www-form-urlencoded',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/get-article',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '840071',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://article-service.local:8146/get-article',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136058281752',\n name: 'event_k6.QaCoyeuyO2',\n attributes: [\n {\n key: 'k6.2vFHMgf0JqdEQQ0',\n value: {\n stringValue: 'XU0LWwsh6qhm3eEslrFl06RTgyCcFI',\n },\n },\n {\n key: 'k6.Y6ADBqcOTJENhXY',\n value: {\n stringValue: '8GGtoIzZb9K1NfnIvguVYKkK7oHk9Z',\n },\n },\n {\n key: 'k6.ogCoDkhK5UKNbk3',\n value: {\n stringValue: 'NO6e09bLJ0F6nogOzJJ1HbBqEheRBj',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136112385367',\n name: 'event_k6.J6YoJTTxWK',\n attributes: [\n {\n key: 'k6.4BS0WAdGEOgHOBQ',\n value: {\n stringValue: 'FoySu3YOfbP4QSjcsC7KtF2cjQPOZ3',\n },\n },\n {\n key: 'k6.k0bKV9rjRBCe9ZR',\n value: {\n stringValue: 'KAgIztMuROn2nArmJpH5tMMYzWYby0',\n },\n },\n {\n key: 'k6.W5y1HG831ooasln',\n value: {\n stringValue: '4RmrSGgD7yKgn3mhFPD37o7n4ZWo7T',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136203641571',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.D3gOy3QvVkTbYgSaCYPp',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\ntrace.makespan()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.r86MZys2p8',\n },\n },\n {\n key: 'k6.T6Dia09arSO0X8K',\n value: {\n stringValue: 'YF47Zo9kzOhhIR2XrQXQ2ksabd3Gab',\n },\n },\n {\n key: 'k6.4JTG1iw7rFcS4Ju',\n value: {\n stringValue: 'pyvkkWsqXuhwlmdnpYpsXPglpquelS',\n },\n },\n {\n key: 'k6.ynJ9WO2xBQdJ5HY',\n value: {\n stringValue: '25mtvH6QCUgorKQCsjD3KCKsfmB5bF',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'ey6qRxofJmc=',\n parentSpanId: 'd7ckd3aNLyo=',\n name: 'select-articles',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122136029615583',\n endTimeUnixNano: '1718122136253492513',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.peer.port',\n value: {\n intValue: '8803',\n },\n },\n {\n key: 'net.sock.peer.addr',\n value: {\n stringValue: '192.168.195.79',\n },\n },\n {\n key: 'net.peer.name',\n value: {\n stringValue: 'postgres.local',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136100198855',\n name: 'event_k6.bTjxPkehda',\n attributes: [\n {\n key: 'k6.cHxu9QKdcjw61cH',\n value: {\n stringValue: '9BOtyHe60cPmnAAyx5OLf7HUkkyGVu',\n },\n },\n {\n key: 'k6.z4mxHOF9lH4cWym',\n value: {\n stringValue: 'ewYXEMWx5rXEEV7qBsEt0gMSnFcprS',\n },\n },\n {\n key: 'k6.vQmJvoh0YU75MTq',\n value: {\n stringValue: 'DogsPXKbGpsDalcLGlXGwKWL5ykAMQ',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136036190109',\n name: 'event_k6.FhoqGTeALJ',\n attributes: [\n {\n key: 'k6.eQSVasGUkFmo4BU',\n value: {\n stringValue: 'tEpJ7jT8Zu64rS1jXKiftt8fBwMr1H',\n },\n },\n {\n key: 'k6.ooZC6oqEbDOuDkd',\n value: {\n stringValue: 'ul3MQpEQlyMO5QAQhQaPyFhKjVgyS2',\n },\n },\n {\n key: 'k6.eb2xT8J9lfDMRhR',\n value: {\n stringValue: 'zhm0w9E5d0JBcovyRXcEgbXuYHhKcw',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136053896641',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.5ymfEHCaUejvd7EYMVR6',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\ntrace.makespan()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.YgJGYyT4ZP',\n },\n },\n {\n key: 'k6.s4QwdDpX8xbP7qg',\n value: {\n stringValue: 'Y8WGayIe0GkUrlMGSzS0Gf1OsLvh5D',\n },\n },\n {\n key: 'k6.sddK8EDlFSl8uGQ',\n value: {\n stringValue: 'wAqAehAhurbu4JIAyAwFx94tczIbpW',\n },\n },\n {\n key: 'k6.Ho5hjf6ryokivDL',\n value: {\n stringValue: 'G48irDeGwDhOz985G8L5qjigaZSdKK',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'postgres',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'K60RcdOZ/A0=',\n parentSpanId: 'ey6qRxofJmc=',\n name: 'query-articles',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122136041528783',\n endTimeUnixNano: '1718122136210517760',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'k6.h4Cb9ao1B9ACcTx',\n value: {\n stringValue: 'uMVyp4sTRHwsmEIyA0JcmZ5s3KTFGv',\n },\n },\n {\n key: 'k6.bTvlPcLlmIIoIhz',\n value: {\n stringValue: 'Js8oMWskWDstC8q1bH0BjpdaxZJHvR',\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.195.79',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'postgres.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8523',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136128896049',\n name: 'event_k6.HxNJp7wrtw',\n attributes: [\n {\n key: 'k6.YyMj5iOPD3FN8H9',\n value: {\n stringValue: '7OGVPJmS6UdIKlqpZhB4XhwjasZ72R',\n },\n },\n {\n key: 'k6.RY9hKEnGmOYzB4W',\n value: {\n stringValue: '5E89roYYhl5KLvoTAnHmVtjZiOckoa',\n },\n },\n {\n key: 'k6.B0PGwsQsRMofoRe',\n value: {\n stringValue: 'zm0G1wyExyEBsGohzCTrUF94qz9IpC',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136106174905',\n name: 'event_k6.ffJnb3eRnS',\n attributes: [\n {\n key: 'k6.SJP3bOKT9lhNwMo',\n value: {\n stringValue: '7mFoXQBwmSLuirUHcTMa1lwlDJmW7C',\n },\n },\n {\n key: 'k6.dotaZmeMHFTSp3K',\n value: {\n stringValue: 'A3EHnd11QgTwFWLGRuvozbQbYo6qGL',\n },\n },\n {\n key: 'k6.tapw2o0UwOIltQ0',\n value: {\n stringValue: 'n2aKsqMfwI8Jscfxlo1N1UPnnS8faM',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136142550112',\n name: 'exception',\n attributes: [\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\ntrace.makespan()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.SRpBYt5TW3',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.dRIcyvphT9gmCO6OUWMS',\n },\n },\n {\n key: 'k6.AcaH1QyTXB7pgvX',\n value: {\n stringValue: 'b4ucnpk3Pe0pzMtuBZfZMGbZGUarsY',\n },\n },\n {\n key: 'k6.coZHMs3RqE3uUmO',\n value: {\n stringValue: 'WnEKZI0KmL8VSo0N954et4EKphAeuL',\n },\n },\n {\n key: 'k6.5h5AwuG29rFl0TZ',\n value: {\n stringValue: 'OBavPbd11dnhCjW4T7detonOKwZI4y',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'k6',\n value: {\n stringValue: 'true',\n },\n },\n {\n key: 'service.name',\n value: {\n stringValue: 'cart-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'vzwvNtutFW0=',\n parentSpanId: 'R5+h4rUGjAg=',\n name: 'place-articles',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122136007859429',\n endTimeUnixNano: '1718122136268919885',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n {\n key: 'article.count',\n value: {\n intValue: '1',\n },\n },\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n {\n key: 'net.sock.family',\n value: {\n stringValue: 'inet',\n },\n },\n {\n key: 'net.sock.host.addr',\n value: {\n stringValue: '192.168.129.185',\n },\n },\n {\n key: 'net.host.name',\n value: {\n stringValue: 'cart-service.local',\n },\n },\n {\n key: 'net.host.port',\n value: {\n intValue: '8569',\n },\n },\n {\n key: 'http.flavor',\n value: {\n stringValue: '1.1',\n },\n },\n {\n key: 'http.response.header.content-type',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'application/json',\n },\n ],\n },\n },\n },\n {\n key: 'http.scheme',\n value: {\n stringValue: 'https',\n },\n },\n {\n key: 'http.target',\n value: {\n stringValue: '/place-articles',\n },\n },\n {\n key: 'http.response_content_length',\n value: {\n intValue: '751980',\n },\n },\n {\n key: 'http.request_content_length',\n value: {\n intValue: '34141',\n },\n },\n {\n key: 'http.method',\n value: {\n stringValue: 'PUT',\n },\n },\n {\n key: 'http.url',\n value: {\n stringValue: 'https://cart-service.local:8569/place-articles',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '201',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136203406997',\n name: 'event_k6.MpUSHGnzHW',\n attributes: [\n {\n key: 'k6.l2JhL9LZbdTkz9E',\n value: {\n stringValue: 'qVBJorKlU0MA6VRnrd0pW9muK6Ij7k',\n },\n },\n {\n key: 'k6.pieF4s3vVr6p8ku',\n value: {\n stringValue: 'Xnf4V6q33T3wfckKmHbOg0afkEh5Fo',\n },\n },\n {\n key: 'k6.MNHbHRU5zLSQKWW',\n value: {\n stringValue: 'Hby9qlMSDjbiXYLnORqmvPYp7XNhTQ',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136146675140',\n name: 'event_k6.JnRiJWcamn',\n attributes: [\n {\n key: 'k6.nY9q92HcD0OQj66',\n value: {\n stringValue: 'jEN2cPz0ecykpAKAosH9BnQn7eBljV',\n },\n },\n {\n key: 'k6.cluyyyeK3ZlISD7',\n value: {\n stringValue: '7qyFcsRFfcI32uXfWD3mQagTQlszZu',\n },\n },\n {\n key: 'k6.v8sGq2lPUMgEOXZ',\n value: {\n stringValue: '5c1oTqFjjpTHP3vRfILdosK0F1a5EU',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136047138011',\n name: 'exception',\n attributes: [\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.DyoewbKjvlKhB7p7m1V3',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: 'panic: runtime error: index out of range\\nmain.main()',\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.UrRTn11slD',\n },\n },\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'k6.5NYGiSBnep9YBIY',\n value: {\n stringValue: 'En58EmO8S1a37B2FU6XcHDhb4cFMta',\n },\n },\n {\n key: 'k6.TGjvbz4lnCS4ZT8',\n value: {\n stringValue: 'J6YCDh1j7m7ggQ0NDhY7tmVOmTUCVx',\n },\n },\n {\n key: 'k6.OvrsPnmMlQklKaW',\n value: {\n stringValue: 'Uwh0ePszj6xfZwLs5YV9yhY9JHJ1MH',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'f3J5Ie32ajw=',\n parentSpanId: 'vzwvNtutFW0=',\n name: 'persist-cart',\n kind: 'SPAN_KIND_INTERNAL',\n startTimeUnixNano: '1718122136032445342',\n endTimeUnixNano: '1718122136181070070',\n attributes: [\n {\n key: 'numbers',\n value: {\n arrayValue: {\n values: [\n {\n stringValue: 'one',\n },\n {\n stringValue: 'two',\n },\n {\n stringValue: 'three',\n },\n ],\n },\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136113822486',\n name: 'event_k6.NBujEjHLhn',\n attributes: [\n {\n key: 'k6.hkAPSBbu5QKTNdQ',\n value: {\n stringValue: '1x8f2TJvg7AI4RO4A30hYh4g7OPWii',\n },\n },\n {\n key: 'k6.aSpTXoAPRHgFSwb',\n value: {\n stringValue: 'x4LqX7VrugMRxkWm4EqxfTGyHg6c6a',\n },\n },\n {\n key: 'k6.YIZb89UktDSSuMv',\n value: {\n stringValue: '1ASIDwCeM8J8KNeBab3GqtINvAVhHp',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136107329261',\n name: 'event_k6.gkrRkvoUaJ',\n attributes: [\n {\n key: 'k6.hROOwpwdeK2SNMC',\n value: {\n stringValue: 'hiZ6CqaCuJb0lPZYJQlq4YHJtlc9D2',\n },\n },\n {\n key: 'k6.Ku4s4qcO6mdBJSI',\n value: {\n stringValue: 'kM0lf7uJKsad8Nr6fEnJmN4BlpRsnQ',\n },\n },\n {\n key: 'k6.1kauecg7ejqdT3x',\n value: {\n stringValue: 'JWu9BD49BHPspSmrQZHgP43b1lP4nR',\n },\n },\n ],\n },\n {\n timeUnixNano: '1718122136113457263',\n name: 'exception',\n attributes: [\n {\n key: 'exception.escape',\n value: {\n boolValue: false,\n },\n },\n {\n key: 'exception.message',\n value: {\n stringValue: 'error: k6.nI7SzvvlWcofONBAuHnW',\n },\n },\n {\n key: 'exception.stacktrace',\n value: {\n stringValue: \"panic: runtime error: can't divide by 0\\npayment.collect()\",\n },\n },\n {\n key: 'exception.type',\n value: {\n stringValue: 'error.type_k6.fCLeszQUJO',\n },\n },\n {\n key: 'k6.XbP7rI1K5WGlFbi',\n value: {\n stringValue: '0XBtgNknyGLknDZ9LyOxHJeNUFIG0A',\n },\n },\n {\n key: 'k6.pXdHJMWGYPDjNAG',\n value: {\n stringValue: 'fjcaG7XLw6kWW3TtIna1VwlkwBiCUy',\n },\n },\n {\n key: 'k6.OAJwJcU2Y5RiDbs',\n value: {\n stringValue: 'yRwf8PxKADpRtmMa2zC6hOlvrNNzsu',\n },\n },\n ],\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const MOCK_TRACE_RESPONSE_SMALL: QueryResponse = {\n batches: [\n {\n resource: {\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135898442804',\n endTimeUnixNano: '1718122136696651946',\n attributes: [\n {\n key: 'http.url',\n value: {\n stringValue: 'https://shop-backend.local:8523/article-to-cart',\n },\n },\n {\n key: 'http.status_code',\n value: {\n intValue: '202',\n },\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135954765948',\n endTimeUnixNano: '1718122136154227489',\n attributes: [\n {\n key: 'net.transport',\n value: {\n stringValue: 'ip_tcp',\n },\n },\n ],\n events: [\n {\n timeUnixNano: '1718122136068613856',\n name: 'event_k6.7W272ywYih',\n attributes: [\n {\n key: 'k6.sJekvnAr5h7vJfK',\n value: {\n stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS',\n },\n },\n {\n key: 'k6.81JLO5NlT1lAeF1',\n value: {\n stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ',\n },\n },\n {\n key: 'k6.tdj0bfOxLndyJuN',\n value: {\n stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb',\n },\n },\n ],\n },\n ],\n status: {},\n },\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixNano: '1718122135965210897',\n endTimeUnixNano: '1718122136520157839',\n attributes: [\n {\n key: 'http.method',\n value: {\n stringValue: 'DELETE',\n },\n },\n ],\n status: {},\n },\n ],\n },\n ],\n },\n {\n resource: {\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'auth-service',\n },\n },\n ],\n },\n scopeSpans: [\n {\n scope: {\n name: 'k6',\n },\n spans: [\n {\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixNano: '1718122135970602296',\n endTimeUnixNano: '1718122136107740742',\n status: {\n message: 'Forbidden',\n code: 'STATUS_CODE_ERROR',\n },\n },\n ],\n },\n ],\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_VPARQUET3: SearchResponse = {\n traces: [\n {\n traceID: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationMs: 798,\n spanSet: {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n spanSets: [\n {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n ],\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_VPARQUET4: SearchResponse = {\n traces: [\n {\n traceID: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationMs: 798,\n spanSet: {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n spanSets: [\n {\n spans: [\n {\n spanID: '9c22eb77cb5c14c7',\n name: 'article-to-cart',\n startTimeUnixNano: '1718122135898442804',\n durationNanos: '798209142',\n attributes: [\n {\n key: 'service.name',\n value: {\n stringValue: 'shop-backend',\n },\n },\n ],\n },\n ],\n matched: 1,\n },\n ],\n serviceStats: {\n 'article-service': {\n spanCount: 2,\n },\n 'auth-service': {\n spanCount: 1,\n },\n 'cart-service': {\n spanCount: 2,\n },\n postgres: {\n spanCount: 1,\n },\n 'shop-backend': {\n spanCount: 4,\n },\n },\n },\n ],\n};\n\nexport const MOCK_SEARCH_RESPONSE_MIXED_VPARQUET3_AND_4: SearchResponse = {\n traces: [\n {\n traceID: '224a0e75a0d244f1a3dab3af233e6cf3',\n rootServiceName: 'telemetrygen',\n rootTraceName: 'lets-go',\n startTimeUnixNano: '1727969811138427469',\n spanSets: [\n {\n spans: [\n {\n spanID: '237f68dfbed2f473',\n startTimeUnixNano: '1727969811138427469',\n durationNanos: '123000',\n },\n {\n spanID: 'a8eefdaad116a872',\n startTimeUnixNano: '1727969811138427469',\n durationNanos: '123000',\n },\n ],\n matched: 2,\n },\n ],\n serviceStats: {\n telemetrygen: {\n spanCount: 2,\n },\n },\n },\n {\n traceID: '71bd40553a881d98dc52f2a27fd53fe3',\n rootServiceName: 'telemetrygen',\n rootTraceName: 'lets-go',\n startTimeUnixNano: '1727969665041183110',\n spanSets: [\n {\n spans: [\n {\n spanID: '968a78f0ffbc6570',\n startTimeUnixNano: '1727969665041183110',\n durationNanos: '123000',\n },\n {\n spanID: 'bb8ab44ffd46ca07',\n startTimeUnixNano: '1727969665041183110',\n durationNanos: '123000',\n },\n ],\n matched: 2,\n },\n ],\n },\n ],\n};\n\nexport const MOCK_TRACE_DATA_SEARCHRESULT: TraceData = {\n searchResult: [\n {\n startTimeUnixMs: 1718122135898.4426,\n durationMs: 798,\n serviceStats: {\n 'shop-backend': {\n spanCount: 4,\n },\n 'cart-service': {\n spanCount: 2,\n },\n 'article-service': {\n spanCount: 2,\n },\n 'auth-service': {\n spanCount: 1,\n },\n postgres: {\n spanCount: 1,\n },\n },\n traceId: 'fbd37845209d43cdccd418dc5f9ff021',\n rootServiceName: 'shop-backend',\n rootTraceName: 'article-to-cart',\n },\n ],\n metadata: { executedQueryString: 'duration > 900ms' },\n};\n\nexport const MOCK_TRACE_DATA_TRACE: TraceData = {\n trace: {\n rootSpan: {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'nCLrd8tcFMc=',\n name: 'article-to-cart',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixMs: 1718122135898.4426,\n endTimeUnixMs: 1718122136696.6519,\n attributes: [\n { key: 'http.url', value: { stringValue: 'https://shop-backend.local:8523/article-to-cart' } },\n { key: 'http.status_code', value: { intValue: '202' } },\n ],\n events: [],\n status: {},\n childSpans: [\n {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n childSpans: [\n {\n resource: {\n serviceName: 'auth-service',\n attributes: [{ key: 'service.name', value: { stringValue: 'auth-service' } }],\n },\n scope: { name: 'k6' },\n childSpans: [],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'AYBIFdTlycc=',\n parentSpanId: 'hGe8oRN3wWY=',\n name: 'authenticate',\n kind: 'SPAN_KIND_SERVER',\n startTimeUnixMs: 1718122135970.602,\n endTimeUnixMs: 1718122136107.7405,\n attributes: [],\n events: [],\n status: { message: 'Forbidden', code: 'STATUS_CODE_ERROR' },\n },\n ],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'hGe8oRN3wWY=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'authenticate',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixMs: 1718122135954.7656,\n endTimeUnixMs: 1718122136154.2273,\n attributes: [{ key: 'net.transport', value: { stringValue: 'ip_tcp' } }],\n events: [\n {\n timeUnixMs: 1718122136068.6138,\n name: 'event_k6.7W272ywYih',\n attributes: [\n { key: 'k6.sJekvnAr5h7vJfK', value: { stringValue: 'SZ9vwpLkAzAm2Bju1VJroUlGD8u3pS' } },\n { key: 'k6.81JLO5NlT1lAeF1', value: { stringValue: '4AzrPTOML11aIN3dYgbKSaAe9HErnZ' } },\n { key: 'k6.tdj0bfOxLndyJuN', value: { stringValue: 'PeMAsdQ5469IjQgGtifBA7OgfFdoMb' } },\n ],\n },\n ],\n status: {},\n },\n {\n resource: {\n serviceName: 'shop-backend',\n attributes: [{ key: 'service.name', value: { stringValue: 'shop-backend' } }],\n },\n scope: { name: 'k6' },\n childSpans: [],\n traceId: '+9N4RSCdQ83M1BjcX5/wIQ==',\n spanId: 'r2NxHHPjciM=',\n parentSpanId: 'nCLrd8tcFMc=',\n name: 'get-article',\n kind: 'SPAN_KIND_CLIENT',\n startTimeUnixMs: 1718122135965.2107,\n endTimeUnixMs: 1718122136520.158,\n attributes: [{ key: 'http.method', value: { stringValue: 'DELETE' } }],\n events: [],\n status: {},\n },\n ],\n },\n },\n metadata: { executedQueryString: '61a1487c461d9e08' },\n};\naddParentReferences(MOCK_TRACE_DATA_TRACE.trace!.rootSpan);\n"],"names":["addParentReferences","span","child","childSpans","parentSpan","MOCK_TRACE_RESPONSE","batches","resource","attributes","key","value","stringValue","scopeSpans","scope","name","spans","traceId","spanId","kind","startTimeUnixNano","endTimeUnixNano","arrayValue","values","intValue","events","timeUnixNano","boolValue","status","parentSpanId","MOCK_TRACE_RESPONSE_SMALL","message","code","MOCK_SEARCH_RESPONSE_VPARQUET3","traces","traceID","rootServiceName","rootTraceName","durationMs","spanSet","spanID","durationNanos","matched","spanSets","MOCK_SEARCH_RESPONSE_VPARQUET4","serviceStats","spanCount","postgres","MOCK_SEARCH_RESPONSE_MIXED_VPARQUET3_AND_4","telemetrygen","MOCK_TRACE_DATA_SEARCHRESULT","searchResult","startTimeUnixMs","metadata","executedQueryString","MOCK_TRACE_DATA_TRACE","trace","rootSpan","serviceName","endTimeUnixMs","timeUnixMs"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAKjC,SAASA,oBAAoBC,IAAU;IACrC,KAAK,MAAMC,SAASD,KAAKE,UAAU,CAAE;QACnCD,MAAME,UAAU,GAAGH;QACnBD,oBAAoBE;IACtB;AACF;AAEA,OAAO,MAAMG,sBAAqC;IAChDC,SAAS;QACP;YACEC,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRH,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;oBACA;wBACEF,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;gCACA;oCACEd,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDC,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLW,YAAY;4CACVC,QAAQ;gDACN;oDACEX,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;gDACA;oDACEA,aAAa;gDACf;6CACD;wCACH;oCACF;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;gCACA;oCACEc,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLgB,WAAW;4CACb;wCACF;wCACA;4CACEjB,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAME,4BAA2C;IACtDvB,SAAS;QACP;YACEC,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRH,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;gCACA;oCACEF,KAAK;oCACLC,OAAO;wCACLa,UAAU;oCACZ;gCACF;6BACD;4BACDI,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDa,QAAQ;gCACN;oCACEC,cAAc;oCACdX,MAAM;oCACNN,YAAY;wCACV;4CACEC,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;wCACA;4CACEF,KAAK;4CACLC,OAAO;gDACLC,aAAa;4CACf;wCACF;qCACD;gCACH;6BACD;4BACDgB,QAAQ,CAAC;wBACX;wBACA;4BACEX,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBZ,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;4BACDgB,QAAQ,CAAC;wBACX;qBACD;gBACH;aACD;QACH;QACA;YACEpB,UAAU;gBACRC,YAAY;oBACV;wBACEC,KAAK;wBACLC,OAAO;4BACLC,aAAa;wBACf;oBACF;iBACD;YACH;YACAC,YAAY;gBACV;oBACEC,OAAO;wBACLC,MAAM;oBACR;oBACAC,OAAO;wBACL;4BACEC,SAAS;4BACTC,QAAQ;4BACRW,cAAc;4BACdd,MAAM;4BACNI,MAAM;4BACNC,mBAAmB;4BACnBC,iBAAiB;4BACjBO,QAAQ;gCACNG,SAAS;gCACTC,MAAM;4BACR;wBACF;qBACD;gBACH;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAMC,iCAAiD;IAC5DC,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBkB,YAAY;YACZC,SAAS;gBACPvB,OAAO;oBACL;wBACEwB,QAAQ;wBACRzB,MAAM;wBACNK,mBAAmB;wBACnBqB,eAAe;wBACfhC,YAAY;4BACV;gCACEC,KAAK;gCACLC,OAAO;oCACLC,aAAa;gCACf;4BACF;yBACD;oBACH;iBACD;gBACD8B,SAAS;YACX;YACAC,UAAU;gBACR;oBACE3B,OAAO;wBACL;4BACEwB,QAAQ;4BACRzB,MAAM;4BACNK,mBAAmB;4BACnBqB,eAAe;4BACfhC,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;wBACH;qBACD;oBACD8B,SAAS;gBACX;aACD;QACH;KACD;AACH,EAAE;AAEF,OAAO,MAAME,iCAAiD;IAC5DV,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBkB,YAAY;YACZC,SAAS;gBACPvB,OAAO;oBACL;wBACEwB,QAAQ;wBACRzB,MAAM;wBACNK,mBAAmB;wBACnBqB,eAAe;wBACfhC,YAAY;4BACV;gCACEC,KAAK;gCACLC,OAAO;oCACLC,aAAa;gCACf;4BACF;yBACD;oBACH;iBACD;gBACD8B,SAAS;YACX;YACAC,UAAU;gBACR;oBACE3B,OAAO;wBACL;4BACEwB,QAAQ;4BACRzB,MAAM;4BACNK,mBAAmB;4BACnBqB,eAAe;4BACfhC,YAAY;gCACV;oCACEC,KAAK;oCACLC,OAAO;wCACLC,aAAa;oCACf;gCACF;6BACD;wBACH;qBACD;oBACD8B,SAAS;gBACX;aACD;YACDG,cAAc;gBACZ,mBAAmB;oBACjBC,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;gBACAC,UAAU;oBACRD,WAAW;gBACb;gBACA,gBAAgB;oBACdA,WAAW;gBACb;YACF;QACF;KACD;AACH,EAAE;AAEF,OAAO,MAAME,6CAA6D;IACxEd,QAAQ;QACN;YACEC,SAAS;YACTC,iBAAiB;YACjBC,eAAe;YACfjB,mBAAmB;YACnBuB,UAAU;gBACR;oBACE3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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@perses-dev/tempo-plugin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.0-rc.0",
|
|
4
4
|
"description": "A Perses plugin to interact with Tempo traces",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://github.com/perses/perses/blob/main/README.md",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"build:types": "tsc --project tsconfig.build.json",
|
|
24
24
|
"type-check": "tsc --noEmit",
|
|
25
25
|
"start": "concurrently -P \"npm:build:* -- {*}\" -- --watch",
|
|
26
|
-
"test": "TZ=UTC jest",
|
|
27
|
-
"test:watch": "TZ=UTC jest --watch",
|
|
26
|
+
"test": "cross-env TZ=UTC jest",
|
|
27
|
+
"test:watch": "cross-env TZ=UTC jest --watch",
|
|
28
28
|
"lint": "eslint src --ext .ts,.tsx",
|
|
29
29
|
"lint:fix": "eslint --fix src --ext .ts,.tsx"
|
|
30
30
|
},
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"@codemirror/autocomplete": "^6.17.0",
|
|
33
33
|
"@lezer/highlight": "^1.0.0",
|
|
34
34
|
"@grafana/lezer-traceql": "^0.0.18",
|
|
35
|
-
"@perses-dev/components": "0.
|
|
36
|
-
"@perses-dev/core": "0.
|
|
37
|
-
"@perses-dev/plugin-system": "0.
|
|
35
|
+
"@perses-dev/components": "0.50.0-rc.0",
|
|
36
|
+
"@perses-dev/core": "0.50.0-rc.0",
|
|
37
|
+
"@perses-dev/plugin-system": "0.50.0-rc.0",
|
|
38
38
|
"@uiw/react-codemirror": "^4.19.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|