@grafana/create-plugin 6.2.0-canary.2233.19368311379.0 → 6.2.0-canary.2233.19500011348.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/CHANGELOG.md +24 -0
- package/dist/codemods/additions/additions.js +2 -4
- package/dist/codemods/additions/scripts/example-addition.js +1 -1
- package/dist/codemods/migrations/migrations.js +17 -6
- package/dist/codemods/migrations/scripts/004-eslint9-flat-config.js +2 -2
- package/dist/codemods/migrations/scripts/006-webpack-nested-fix.js +80 -0
- package/dist/codemods/migrations/scripts/007-remove-testing-library-types.js +25 -0
- package/dist/codemods/runner.js +0 -5
- package/dist/codemods/utils.js +5 -8
- package/dist/commands/add.command.js +0 -4
- package/package.json +3 -2
- package/src/codemods/additions/additions.test.ts +9 -4
- package/src/codemods/additions/additions.ts +2 -3
- package/src/codemods/additions/scripts/example-addition.test.ts +1 -1
- package/src/codemods/additions/scripts/example-addition.ts +1 -1
- package/src/codemods/migrations/manager.test.ts +1 -1
- package/src/codemods/migrations/migrations.test.ts +4 -2
- package/src/codemods/migrations/migrations.ts +18 -6
- package/src/codemods/migrations/scripts/004-eslint9-flat-config.ts +2 -3
- package/src/codemods/migrations/scripts/006-webpack-nested-fix.test.ts +169 -0
- package/src/codemods/migrations/scripts/006-webpack-nested-fix.ts +117 -0
- package/src/codemods/migrations/scripts/007-remove-testing-library-types.test.ts +137 -0
- package/src/codemods/migrations/scripts/007-remove-testing-library-types.ts +25 -0
- package/src/codemods/runner.ts +0 -6
- package/src/codemods/utils.ts +4 -14
- package/src/commands/add.command.ts +0 -5
- package/src/utils/utils.config.ts +2 -2
- package/templates/backend/go.mod +67 -47
- package/templates/backend/go.sum +197 -222
- package/templates/backend-app/go.mod +67 -48
- package/templates/backend-app/go.sum +197 -222
- package/templates/common/.config/types/setupTests.d.ts +1 -0
- package/templates/common/.config/webpack/webpack.config.ts +1 -1
- package/templates/common/_package.json +0 -1
- package/dist/codemods/migrations/scripts/example-migration.js +0 -29
- package/src/codemods/migrations/scripts/example-migration.test.ts +0 -40
- package/src/codemods/migrations/scripts/example-migration.ts +0 -51
- package/src/migrations/migrations.ts +0 -44
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import * as recast from 'recast';
|
|
3
|
+
import * as typeScriptParser from 'recast/parsers/typescript.js';
|
|
4
|
+
import type { Context } from '../../context.js';
|
|
5
|
+
|
|
6
|
+
const { builders } = recast.types;
|
|
7
|
+
|
|
8
|
+
export default function migrate(context: Context): Context {
|
|
9
|
+
const webpackConfigPath = join('.config', 'webpack', 'webpack.config.ts');
|
|
10
|
+
if (!context.doesFileExist(webpackConfigPath)) {
|
|
11
|
+
return context;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const webpackConfigContent = context.getFile(webpackConfigPath);
|
|
15
|
+
if (!webpackConfigContent) {
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let hasChanges = false;
|
|
20
|
+
const ast = recast.parse(webpackConfigContent, {
|
|
21
|
+
parser: typeScriptParser,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
recast.visit(ast, {
|
|
25
|
+
visitNewExpression(path) {
|
|
26
|
+
const { node } = path;
|
|
27
|
+
|
|
28
|
+
// Check if this is a ReplaceInFileWebpackPlugin constructor
|
|
29
|
+
if (
|
|
30
|
+
node.callee.type === 'Identifier' &&
|
|
31
|
+
node.callee.name === 'ReplaceInFileWebpackPlugin' &&
|
|
32
|
+
node.arguments.length > 0
|
|
33
|
+
) {
|
|
34
|
+
const firstArg = node.arguments[0];
|
|
35
|
+
|
|
36
|
+
// The first argument should be an array of config objects
|
|
37
|
+
if (firstArg.type === 'ArrayExpression' && firstArg.elements) {
|
|
38
|
+
firstArg.elements.forEach((element) => {
|
|
39
|
+
if (element && element.type === 'ObjectExpression') {
|
|
40
|
+
const changed = transformFilesProperty(element);
|
|
41
|
+
if (changed) {
|
|
42
|
+
hasChanges = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return this.traverse(path);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Only update the file if we made changes
|
|
54
|
+
if (hasChanges) {
|
|
55
|
+
const output = recast.print(ast, {
|
|
56
|
+
tabWidth: 2,
|
|
57
|
+
trailingComma: true,
|
|
58
|
+
lineTerminator: '\n',
|
|
59
|
+
});
|
|
60
|
+
context.updateFile(webpackConfigPath, output.code);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return context;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function transformFilesProperty(objectExpression: recast.types.namedTypes.ObjectExpression): boolean {
|
|
67
|
+
const properties = objectExpression.properties;
|
|
68
|
+
if (!properties) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Find the 'files' property
|
|
73
|
+
const filesPropertyIndex = properties.findIndex(
|
|
74
|
+
(prop) =>
|
|
75
|
+
(prop.type === 'Property' || prop.type === 'ObjectProperty') &&
|
|
76
|
+
prop.key.type === 'Identifier' &&
|
|
77
|
+
prop.key.name === 'files'
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
if (filesPropertyIndex === -1) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const filesProperty = properties[filesPropertyIndex];
|
|
85
|
+
|
|
86
|
+
// Type guard: ensure it's a Property or ObjectProperty (which have a value)
|
|
87
|
+
if ((filesProperty.type !== 'Property' && filesProperty.type !== 'ObjectProperty') || !('value' in filesProperty)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Check if it's an array with the expected values
|
|
92
|
+
if (filesProperty.value.type === 'ArrayExpression' && filesProperty.value.elements.length === 2) {
|
|
93
|
+
const elements = filesProperty.value.elements;
|
|
94
|
+
const values = elements
|
|
95
|
+
.map((el) => (el?.type === 'Literal' || el?.type === 'StringLiteral' ? el?.value : null))
|
|
96
|
+
.filter((v) => v !== null);
|
|
97
|
+
|
|
98
|
+
// Only transform if it matches the exact pattern we're looking for
|
|
99
|
+
if (values.length === 2 && values.includes('plugin.json') && values.includes('README.md')) {
|
|
100
|
+
// Remove the 'files' property
|
|
101
|
+
properties.splice(filesPropertyIndex, 1);
|
|
102
|
+
|
|
103
|
+
// Add the 'test' property with regex array
|
|
104
|
+
const testProperty = builders.property(
|
|
105
|
+
'init',
|
|
106
|
+
builders.identifier('test'),
|
|
107
|
+
builders.arrayExpression([builders.literal(/(^|\/)plugin\.json$/), builders.literal(/(^|\/)README\.md$/)])
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
// Insert at the same position
|
|
111
|
+
properties.splice(filesPropertyIndex, 0, testProperty);
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import migrate from './007-remove-testing-library-types.js';
|
|
3
|
+
import { Context } from '../../context.js';
|
|
4
|
+
|
|
5
|
+
describe('006-remove-testing-library-types', () => {
|
|
6
|
+
it('should create setupTests.d.ts, remove types package, and add @testing-library/jest-dom when file does not exist', () => {
|
|
7
|
+
const context = new Context('/virtual');
|
|
8
|
+
|
|
9
|
+
context.addFile(
|
|
10
|
+
'package.json',
|
|
11
|
+
JSON.stringify({
|
|
12
|
+
devDependencies: {
|
|
13
|
+
'@types/testing-library__jest-dom': '^6.0.0',
|
|
14
|
+
'@testing-library/jest-dom': '6.0.0',
|
|
15
|
+
'@testing-library/react': '14.0.0',
|
|
16
|
+
},
|
|
17
|
+
})
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const result = migrate(context);
|
|
21
|
+
const setupTestsContent = result.getFile('./.config/types/setupTests.d.ts');
|
|
22
|
+
expect(setupTestsContent).toBe("import '@testing-library/jest-dom';\n");
|
|
23
|
+
|
|
24
|
+
const packageJson = JSON.parse(result.getFile('package.json') || '{}');
|
|
25
|
+
expect(packageJson.devDependencies).toEqual({
|
|
26
|
+
'@testing-library/jest-dom': '6.0.0',
|
|
27
|
+
'@testing-library/react': '14.0.0',
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should add import to existing setupTests.d.ts, remove types package, and add @testing-library/jest-dom if missing', () => {
|
|
32
|
+
const context = new Context('/virtual');
|
|
33
|
+
|
|
34
|
+
const existingContent = '// Some other type declarations\n';
|
|
35
|
+
context.addFile('./.config/types/setupTests.d.ts', existingContent);
|
|
36
|
+
context.addFile(
|
|
37
|
+
'package.json',
|
|
38
|
+
JSON.stringify({
|
|
39
|
+
devDependencies: {
|
|
40
|
+
'@types/testing-library__jest-dom': '^6.0.0',
|
|
41
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
42
|
+
'@testing-library/react': '14.0.0',
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const result = migrate(context);
|
|
48
|
+
const setupTestsContent = result.getFile('./.config/types/setupTests.d.ts');
|
|
49
|
+
expect(setupTestsContent).toBe(`import '@testing-library/jest-dom';\n${existingContent}`);
|
|
50
|
+
|
|
51
|
+
const packageJson = JSON.parse(result.getFile('package.json') || '{}');
|
|
52
|
+
expect(packageJson.devDependencies).toEqual({
|
|
53
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
54
|
+
'@testing-library/react': '14.0.0',
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it('should not modify setupTests.d.ts if import already exists', () => {
|
|
59
|
+
const context = new Context('/virtual');
|
|
60
|
+
|
|
61
|
+
const existingContent = "// Other content\nimport 'react';\nimport '@testing-library/jest-dom';\n";
|
|
62
|
+
context.addFile('./.config/types/setupTests.d.ts', existingContent);
|
|
63
|
+
context.addFile(
|
|
64
|
+
'package.json',
|
|
65
|
+
JSON.stringify({
|
|
66
|
+
devDependencies: {
|
|
67
|
+
'@types/testing-library__jest-dom': '^6.0.0',
|
|
68
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
69
|
+
'@testing-library/react': '14.0.0',
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
const result = migrate(context);
|
|
75
|
+
|
|
76
|
+
const setupTestsContent = result.getFile('./.config/types/setupTests.d.ts');
|
|
77
|
+
expect(setupTestsContent).toBe(existingContent);
|
|
78
|
+
|
|
79
|
+
const packageJson = JSON.parse(result.getFile('package.json') || '{}');
|
|
80
|
+
expect(packageJson.devDependencies).toEqual({
|
|
81
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
82
|
+
'@testing-library/react': '14.0.0',
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('should not modify anything if @testing-library/jest-dom is not greater than 6.0.0', () => {
|
|
87
|
+
const context = new Context('/virtual');
|
|
88
|
+
const packageJsonContent = JSON.stringify({
|
|
89
|
+
devDependencies: { '@testing-library/jest-dom': '5.14.2' },
|
|
90
|
+
});
|
|
91
|
+
context.addFile('package.json', packageJsonContent);
|
|
92
|
+
|
|
93
|
+
const result = migrate(context);
|
|
94
|
+
expect(result.getFile('package.json')).toEqual(packageJsonContent);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should handle package.json without the types package', () => {
|
|
98
|
+
const context = new Context('/virtual');
|
|
99
|
+
|
|
100
|
+
context.addFile(
|
|
101
|
+
'package.json',
|
|
102
|
+
JSON.stringify({
|
|
103
|
+
devDependencies: {
|
|
104
|
+
'@testing-library/react': '14.0.0',
|
|
105
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
106
|
+
},
|
|
107
|
+
})
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const result = migrate(context);
|
|
111
|
+
const setupTestsContent = result.getFile('./.config/types/setupTests.d.ts');
|
|
112
|
+
expect(setupTestsContent).toBe("import '@testing-library/jest-dom';\n");
|
|
113
|
+
|
|
114
|
+
const packageJson = JSON.parse(result.getFile('package.json') || '{}');
|
|
115
|
+
expect(packageJson.devDependencies).toEqual({
|
|
116
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
117
|
+
'@testing-library/react': '14.0.0',
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('should be idempotent', async () => {
|
|
122
|
+
const context = new Context('/virtual');
|
|
123
|
+
|
|
124
|
+
context.addFile(
|
|
125
|
+
'package.json',
|
|
126
|
+
JSON.stringify({
|
|
127
|
+
devDependencies: {
|
|
128
|
+
'@types/testing-library__jest-dom': '^6.0.0',
|
|
129
|
+
'@testing-library/jest-dom': '6.1.4',
|
|
130
|
+
'@testing-library/react': '14.0.0',
|
|
131
|
+
},
|
|
132
|
+
})
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
await expect(migrate).toBeIdempotent(context);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Context } from '../../context.js';
|
|
2
|
+
import { removeDependenciesFromPackageJson, isVersionGreater } from '../../utils.js';
|
|
3
|
+
|
|
4
|
+
export default function migrate(context: Context) {
|
|
5
|
+
if (context.doesFileExist('package.json')) {
|
|
6
|
+
const packageJson = JSON.parse(context.getFile('package.json') || '{}');
|
|
7
|
+
if (isVersionGreater(packageJson.devDependencies['@testing-library/jest-dom'], '6.0.0', true)) {
|
|
8
|
+
if (context.doesFileExist('./.config/types/setupTests.d.ts')) {
|
|
9
|
+
const setupTestsContent = context.getFile('./.config/types/setupTests.d.ts');
|
|
10
|
+
if (!setupTestsContent?.includes('@testing-library/jest-dom')) {
|
|
11
|
+
context.updateFile(
|
|
12
|
+
'./.config/types/setupTests.d.ts',
|
|
13
|
+
`import '@testing-library/jest-dom';\n${setupTestsContent}`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
context.addFile('./.config/types/setupTests.d.ts', "import '@testing-library/jest-dom';\n");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
removeDependenciesFromPackageJson(context, [], ['@types/testing-library__jest-dom']);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return context;
|
|
25
|
+
}
|
package/src/codemods/runner.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Context } from './context.js';
|
|
2
2
|
import { formatFiles, flushChanges, installNPMDependencies, printChanges } from './utils.js';
|
|
3
3
|
import { parseAndValidateOptions } from './schema-parser.js';
|
|
4
|
-
import { output } from '../utils/utils.console.js';
|
|
5
4
|
import { Codemod } from './types.js';
|
|
6
5
|
|
|
7
6
|
/**
|
|
@@ -32,11 +31,6 @@ export async function runCodemod(codemod: Codemod, options?: Record<string, any>
|
|
|
32
31
|
const context = new Context(basePath);
|
|
33
32
|
|
|
34
33
|
try {
|
|
35
|
-
output.log({
|
|
36
|
-
title: `Running ${codemod.name}`,
|
|
37
|
-
body: [codemod.description],
|
|
38
|
-
});
|
|
39
|
-
|
|
40
34
|
const updatedContext = await codemodModule.default(context, codemodOptions);
|
|
41
35
|
|
|
42
36
|
// standard post-processing pipeline
|
package/src/codemods/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dirname, join
|
|
1
|
+
import { dirname, join } from 'node:path';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { Context } from './context.js';
|
|
4
4
|
import { mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
@@ -7,7 +7,7 @@ import { output } from '../utils/utils.console.js';
|
|
|
7
7
|
import { getPackageManagerSilentInstallCmd, getPackageManagerWithFallback } from '../utils/utils.packageManager.js';
|
|
8
8
|
import { execSync } from 'node:child_process';
|
|
9
9
|
import { clean, coerce, gt, gte } from 'semver';
|
|
10
|
-
import {
|
|
10
|
+
import { debug } from '../utils/utils.cli.js';
|
|
11
11
|
|
|
12
12
|
export function printChanges(context: Context, key: string, description: string) {
|
|
13
13
|
const changes = context.listChanges();
|
|
@@ -299,15 +299,5 @@ function sortObjectByKeys<T extends Record<string, any>>(obj: T): T {
|
|
|
299
299
|
.reduce((acc, key) => ({ ...acc, [key]: obj[key] }), {} as T);
|
|
300
300
|
}
|
|
301
301
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
*
|
|
305
|
-
* @param callerUrl - The import.meta.url from the calling file
|
|
306
|
-
* @param relativePath - The relative path to resolve (e.g., './scripts/example.js')
|
|
307
|
-
* @returns The absolute resolved path
|
|
308
|
-
*/
|
|
309
|
-
export function resolveScriptPath(callerUrl: string, relativePath: string): string {
|
|
310
|
-
const __filename = fileURLToPath(callerUrl);
|
|
311
|
-
const __dirname = dirname(__filename);
|
|
312
|
-
return resolve(__dirname, relativePath);
|
|
313
|
-
}
|
|
302
|
+
export const migrationsDebug = debug.extend('migrations');
|
|
303
|
+
export const additionsDebug = debug.extend('additions');
|
|
@@ -22,11 +22,6 @@ export const add = async (argv: minimist.ParsedArgs) => {
|
|
|
22
22
|
throw new Error(`Unknown addition: ${subCommand}\n\nAvailable additions: ${additionsList.join(', ')}`);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
output.log({
|
|
26
|
-
title: `Running addition: ${addition.name}`,
|
|
27
|
-
body: [addition.description],
|
|
28
|
-
});
|
|
29
|
-
|
|
30
25
|
// filter out minimist internal properties (_ and $0) before passing to codemod
|
|
31
26
|
const { _, $0, ...codemodOptions } = argv;
|
|
32
27
|
await runCodemod(addition, codemodOptions);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { argv, commandName } from './utils.cli.js';
|
|
2
|
+
|
|
2
3
|
import { CURRENT_APP_VERSION } from './utils.version.js';
|
|
3
4
|
import { DEFAULT_FEATURE_FLAGS } from '../constants.js';
|
|
4
5
|
import fs from 'node:fs';
|
|
@@ -8,13 +9,12 @@ import path from 'node:path';
|
|
|
8
9
|
import { writeFile } from 'node:fs/promises';
|
|
9
10
|
import { EOL } from 'node:os';
|
|
10
11
|
|
|
11
|
-
type FeatureFlags = {
|
|
12
|
+
export type FeatureFlags = {
|
|
12
13
|
bundleGrafanaUI?: boolean;
|
|
13
14
|
|
|
14
15
|
// If set to true, the plugin will be scaffolded with React Router v6. Defaults to true.
|
|
15
16
|
// (Attention! We always scaffold new projects with React Router v6, so if you are changing this to `false` manually you will need to make changes to the React code as well.)
|
|
16
17
|
useReactRouterV6?: boolean;
|
|
17
|
-
usePlaywright?: boolean;
|
|
18
18
|
useExperimentalRspack?: boolean;
|
|
19
19
|
useExperimentalUpdates?: boolean;
|
|
20
20
|
};
|
package/templates/backend/go.mod
CHANGED
|
@@ -1,66 +1,86 @@
|
|
|
1
1
|
module github.com/{{ kebabCase orgName }}/{{ kebabCase pluginName }}
|
|
2
2
|
|
|
3
|
-
go 1.
|
|
3
|
+
go 1.24.6
|
|
4
4
|
|
|
5
|
-
require github.com/grafana/grafana-plugin-sdk-go v0.
|
|
5
|
+
require github.com/grafana/grafana-plugin-sdk-go v0.283.0
|
|
6
6
|
|
|
7
7
|
require (
|
|
8
|
-
github.com/BurntSushi/toml v1.
|
|
9
|
-
github.com/apache/arrow
|
|
8
|
+
github.com/BurntSushi/toml v1.5.0 // indirect
|
|
9
|
+
github.com/apache/arrow-go/v18 v18.4.1 // indirect
|
|
10
10
|
github.com/beorn7/perks v1.0.1 // indirect
|
|
11
|
-
github.com/
|
|
11
|
+
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
|
|
12
|
+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
12
13
|
github.com/cheekybits/genny v1.0.0 // indirect
|
|
13
|
-
github.com/
|
|
14
|
-
github.com/
|
|
15
|
-
github.com/
|
|
16
|
-
github.com/
|
|
17
|
-
github.com/
|
|
18
|
-
github.com/
|
|
19
|
-
github.com/
|
|
20
|
-
github.com/
|
|
21
|
-
github.com/
|
|
22
|
-
github.com/
|
|
23
|
-
github.com/google/
|
|
24
|
-
github.com/
|
|
25
|
-
github.com/
|
|
26
|
-
github.com/
|
|
27
|
-
github.com/grpc-ecosystem/go-grpc-middleware
|
|
28
|
-
github.com/grpc-ecosystem/
|
|
29
|
-
github.com/hashicorp/go-hclog
|
|
30
|
-
github.com/hashicorp/go-plugin v1.
|
|
31
|
-
github.com/hashicorp/yamux v0.
|
|
32
|
-
github.com/
|
|
14
|
+
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
|
|
15
|
+
github.com/fatih/color v1.15.0 // indirect
|
|
16
|
+
github.com/go-logr/logr v1.4.3 // indirect
|
|
17
|
+
github.com/go-logr/stdr v1.2.2 // indirect
|
|
18
|
+
github.com/goccy/go-json v0.10.5 // indirect
|
|
19
|
+
github.com/gogo/googleapis v1.4.1 // indirect
|
|
20
|
+
github.com/gogo/protobuf v1.3.2 // indirect
|
|
21
|
+
github.com/golang/protobuf v1.5.4 // indirect
|
|
22
|
+
github.com/google/flatbuffers v25.2.10+incompatible // indirect
|
|
23
|
+
github.com/google/go-cmp v0.7.0 // indirect
|
|
24
|
+
github.com/google/uuid v1.6.0 // indirect
|
|
25
|
+
github.com/grafana/otel-profiling-go v0.5.1 // indirect
|
|
26
|
+
github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect
|
|
27
|
+
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect
|
|
28
|
+
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect
|
|
29
|
+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
|
|
30
|
+
github.com/hashicorp/go-hclog v1.6.3 // indirect
|
|
31
|
+
github.com/hashicorp/go-plugin v1.7.0 // indirect
|
|
32
|
+
github.com/hashicorp/yamux v0.1.2 // indirect
|
|
33
|
+
github.com/jaegertracing/jaeger-idl v0.5.0 // indirect
|
|
33
34
|
github.com/json-iterator/go v1.1.12 // indirect
|
|
34
|
-
github.com/klauspost/compress v1.
|
|
35
|
-
github.com/
|
|
36
|
-
github.com/
|
|
35
|
+
github.com/klauspost/compress v1.18.0 // indirect
|
|
36
|
+
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
|
|
37
|
+
github.com/magefile/mage v1.15.0 // indirect
|
|
37
38
|
github.com/mattetti/filebuffer v1.0.1 // indirect
|
|
38
|
-
github.com/mattn/go-colorable v0.1.
|
|
39
|
-
github.com/mattn/go-isatty v0.0.
|
|
40
|
-
github.com/mattn/go-runewidth v0.0.
|
|
41
|
-
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
|
|
42
|
-
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
|
|
39
|
+
github.com/mattn/go-colorable v0.1.13 // indirect
|
|
40
|
+
github.com/mattn/go-isatty v0.0.20 // indirect
|
|
41
|
+
github.com/mattn/go-runewidth v0.0.16 // indirect
|
|
43
42
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
|
44
43
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
|
45
|
-
github.com/
|
|
44
|
+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
|
45
|
+
github.com/oklog/run v1.1.0 // indirect
|
|
46
46
|
github.com/olekukonko/tablewriter v0.0.5 // indirect
|
|
47
|
-
github.com/
|
|
48
|
-
github.com/
|
|
49
|
-
github.com/prometheus/
|
|
50
|
-
github.com/prometheus/
|
|
51
|
-
github.com/prometheus/
|
|
47
|
+
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
|
48
|
+
github.com/pierrec/lz4/v4 v4.1.22 // indirect
|
|
49
|
+
github.com/prometheus/client_golang v1.23.2 // indirect
|
|
50
|
+
github.com/prometheus/client_model v0.6.2 // indirect
|
|
51
|
+
github.com/prometheus/common v0.67.2 // indirect
|
|
52
|
+
github.com/prometheus/procfs v0.16.1 // indirect
|
|
53
|
+
github.com/rivo/uniseg v0.4.7 // indirect
|
|
52
54
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
|
53
55
|
github.com/unknwon/bra v0.0.0-20200517080246-1e3013ecaff8 // indirect
|
|
54
56
|
github.com/unknwon/com v1.0.1 // indirect
|
|
55
57
|
github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3 // indirect
|
|
56
|
-
github.com/urfave/cli v1.22.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
golang.org/
|
|
60
|
-
|
|
58
|
+
github.com/urfave/cli v1.22.17 // indirect
|
|
59
|
+
github.com/zeebo/xxh3 v1.0.2 // indirect
|
|
60
|
+
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
|
|
61
|
+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect
|
|
62
|
+
go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.63.0 // indirect
|
|
63
|
+
go.opentelemetry.io/contrib/propagators/jaeger v1.38.0 // indirect
|
|
64
|
+
go.opentelemetry.io/contrib/samplers/jaegerremote v0.32.0 // indirect
|
|
65
|
+
go.opentelemetry.io/otel v1.38.0 // indirect
|
|
66
|
+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.38.0 // indirect
|
|
67
|
+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.38.0 // indirect
|
|
68
|
+
go.opentelemetry.io/otel/metric v1.38.0 // indirect
|
|
69
|
+
go.opentelemetry.io/otel/sdk v1.38.0 // indirect
|
|
70
|
+
go.opentelemetry.io/otel/trace v1.38.0 // indirect
|
|
71
|
+
go.opentelemetry.io/proto/otlp v1.7.1 // indirect
|
|
72
|
+
go.yaml.in/yaml/v2 v2.4.3 // indirect
|
|
73
|
+
golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect
|
|
74
|
+
golang.org/x/mod v0.28.0 // indirect
|
|
75
|
+
golang.org/x/net v0.46.0 // indirect
|
|
76
|
+
golang.org/x/sync v0.18.0 // indirect
|
|
77
|
+
golang.org/x/sys v0.37.0 // indirect
|
|
78
|
+
golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect
|
|
79
|
+
golang.org/x/text v0.30.0 // indirect
|
|
80
|
+
golang.org/x/tools v0.37.0 // indirect
|
|
81
|
+
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
|
|
61
82
|
google.golang.org/genproto v0.0.0-20210630183607-d20f26d13c79 // indirect
|
|
62
|
-
google.golang.org/grpc v1.
|
|
63
|
-
google.golang.org/protobuf v1.
|
|
83
|
+
google.golang.org/grpc v1.76.0 // indirect
|
|
84
|
+
google.golang.org/protobuf v1.36.10 // indirect
|
|
64
85
|
gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect
|
|
65
|
-
gopkg.in/yaml.v2 v2.4.0 // indirect
|
|
66
86
|
)
|