@grafana/create-plugin 1.0.0 → 1.0.1-canary.210.207e8c7.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/commands/migrate.command.js +3 -3
- package/dist/commands/update.command.js +97 -44
- package/dist/constants.js +1 -0
- package/dist/utils/tests/utils.npm.test.js +140 -0
- package/dist/utils/utils.npm.js +14 -31
- package/package.json +2 -2
- package/src/commands/migrate.command.ts +3 -3
- package/src/commands/update.command.ts +62 -37
- package/src/constants.ts +1 -0
- package/src/utils/tests/utils.npm.test.ts +94 -1
- package/src/utils/utils.npm.ts +19 -34
- package/templates/backend/pkg/plugin/datasource.go +0 -9
|
@@ -85,11 +85,11 @@ var migrate = function () { return __awaiter(void 0, void 0, void 0, function ()
|
|
|
85
85
|
}
|
|
86
86
|
_a.label = 5;
|
|
87
87
|
case 5:
|
|
88
|
-
if (!(0, utils_npm_1.hasNpmDependenciesToUpdate)()) return [3, 7];
|
|
89
|
-
return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateNpmDependenciesPrompt + (0, utils_npm_1.getPackageJsonUpdatesAsText)({
|
|
88
|
+
if (!(0, utils_npm_1.hasNpmDependenciesToUpdate)({ dontUpdateGrafanaDependencies: true })) return [3, 7];
|
|
89
|
+
return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateNpmDependenciesPrompt + (0, utils_npm_1.getPackageJsonUpdatesAsText)({ dontUpdateGrafanaDependencies: true }))];
|
|
90
90
|
case 6:
|
|
91
91
|
if (_a.sent()) {
|
|
92
|
-
(0, utils_npm_1.updatePackageJson)({
|
|
92
|
+
(0, utils_npm_1.updatePackageJson)({ dontUpdateGrafanaDependencies: true });
|
|
93
93
|
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.updateNpmDependenciesSuccess);
|
|
94
94
|
}
|
|
95
95
|
else {
|
|
@@ -41,60 +41,113 @@ var constants_1 = require("../constants");
|
|
|
41
41
|
var utils_templates_1 = require("../utils/utils.templates");
|
|
42
42
|
var utils_console_1 = require("../utils/utils.console");
|
|
43
43
|
var utils_npm_1 = require("../utils/utils.npm");
|
|
44
|
+
function updateConfigurationFiles() {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
46
|
+
return __generator(this, function (_a) {
|
|
47
|
+
switch (_a.label) {
|
|
48
|
+
case 0: return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateConfigPrompt)];
|
|
49
|
+
case 1:
|
|
50
|
+
if (_a.sent()) {
|
|
51
|
+
(0, utils_templates_1.compileTemplateFiles)(constants_1.UDPATE_CONFIG.filesToOverride, (0, utils_templates_1.getTemplateData)());
|
|
52
|
+
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.overrideFilesSuccess);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
(0, utils_console_1.printMessage)(constants_1.TEXT.overrideFilesAborted);
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
return [2];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function updateNpmDependencies() {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
+
var shouldUpdateGrafanaPackages, updatadableDependenciesText, PROMPT_CHOICES, shouldUpdateDeps;
|
|
66
|
+
return __generator(this, function (_a) {
|
|
67
|
+
switch (_a.label) {
|
|
68
|
+
case 0:
|
|
69
|
+
if (!(0, utils_npm_1.hasNpmDependenciesToUpdate)()) return [3, 3];
|
|
70
|
+
return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateNpmGrafanaPackagesPrompt)];
|
|
71
|
+
case 1:
|
|
72
|
+
shouldUpdateGrafanaPackages = _a.sent();
|
|
73
|
+
updatadableDependenciesText = (0, utils_npm_1.getPackageJsonUpdatesAsText)({
|
|
74
|
+
dontUpdateGrafanaDependencies: !shouldUpdateGrafanaPackages
|
|
75
|
+
});
|
|
76
|
+
if (updatadableDependenciesText.length === 0) {
|
|
77
|
+
return [2];
|
|
78
|
+
}
|
|
79
|
+
PROMPT_CHOICES = {
|
|
80
|
+
ALL: 'Yes, all of them',
|
|
81
|
+
ONLY_OUTDATED: 'Yes, but only the outdated ones',
|
|
82
|
+
NONE: 'No'
|
|
83
|
+
};
|
|
84
|
+
return [4, (0, utils_console_1.selectPrompt)(constants_1.TEXT.updateNpmDependenciesPrompt + updatadableDependenciesText, [
|
|
85
|
+
PROMPT_CHOICES.ALL,
|
|
86
|
+
PROMPT_CHOICES.ONLY_OUTDATED,
|
|
87
|
+
PROMPT_CHOICES.NONE,
|
|
88
|
+
])];
|
|
89
|
+
case 2:
|
|
90
|
+
shouldUpdateDeps = _a.sent();
|
|
91
|
+
if (shouldUpdateDeps && shouldUpdateDeps !== PROMPT_CHOICES.NONE) {
|
|
92
|
+
(0, utils_npm_1.updatePackageJson)({
|
|
93
|
+
dontUpdateGrafanaDependencies: !shouldUpdateGrafanaPackages,
|
|
94
|
+
onlyOutdated: shouldUpdateDeps === PROMPT_CHOICES.ONLY_OUTDATED
|
|
95
|
+
});
|
|
96
|
+
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.updateNpmDependenciesSuccess);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
(0, utils_console_1.printMessage)(constants_1.TEXT.updateNpmDependenciesAborted);
|
|
100
|
+
}
|
|
101
|
+
return [3, 4];
|
|
102
|
+
case 3:
|
|
103
|
+
(0, utils_console_1.printMessage)(constants_1.TEXT.updateNpmDependenciesAborted);
|
|
104
|
+
_a.label = 4;
|
|
105
|
+
case 4: return [2];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function updatePackageJsonScripts() {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
112
|
+
return __generator(this, function (_a) {
|
|
113
|
+
switch (_a.label) {
|
|
114
|
+
case 0: return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateNpmScriptsPrompt)];
|
|
115
|
+
case 1:
|
|
116
|
+
if (_a.sent()) {
|
|
117
|
+
(0, utils_npm_1.updateNpmScripts)();
|
|
118
|
+
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.updateNpmScriptsSuccess);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
(0, utils_console_1.printMessage)(constants_1.TEXT.updateNpmScriptsAborted);
|
|
122
|
+
}
|
|
123
|
+
return [2];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
44
128
|
var update = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
45
|
-
var
|
|
129
|
+
var error_1;
|
|
46
130
|
return __generator(this, function (_a) {
|
|
47
131
|
switch (_a.label) {
|
|
48
132
|
case 0:
|
|
49
|
-
_a.trys.push([0,
|
|
133
|
+
_a.trys.push([0, 4, , 5]);
|
|
50
134
|
(0, utils_console_1.printMessage)(constants_1.TEXT.updateCommandWarning);
|
|
51
|
-
return [4, (
|
|
135
|
+
return [4, updateConfigurationFiles()];
|
|
52
136
|
case 1:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.overrideFilesSuccess);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
(0, utils_console_1.printMessage)(constants_1.TEXT.overrideFilesAborted);
|
|
59
|
-
process.exit(0);
|
|
60
|
-
}
|
|
61
|
-
if (!(0, utils_npm_1.hasNpmDependenciesToUpdate)()) return [3, 3];
|
|
62
|
-
PROMPT_CHOICES = {
|
|
63
|
-
ALL: 'Yes, all of them',
|
|
64
|
-
ONLY_OUTDATED: 'Yes, but only the outdated ones',
|
|
65
|
-
NONE: 'No'
|
|
66
|
-
};
|
|
67
|
-
return [4, (0, utils_console_1.selectPrompt)(constants_1.TEXT.updateNpmDependenciesPrompt + (0, utils_npm_1.getPackageJsonUpdatesAsText)(), [
|
|
68
|
-
PROMPT_CHOICES.ALL,
|
|
69
|
-
PROMPT_CHOICES.ONLY_OUTDATED,
|
|
70
|
-
PROMPT_CHOICES.NONE,
|
|
71
|
-
])];
|
|
137
|
+
_a.sent();
|
|
138
|
+
return [4, updateNpmDependencies()];
|
|
72
139
|
case 2:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
(0, utils_console_1.printMessage)(constants_1.TEXT.updateNpmDependenciesAborted);
|
|
80
|
-
}
|
|
81
|
-
_a.label = 3;
|
|
82
|
-
case 3: return [4, (0, utils_console_1.confirmPrompt)(constants_1.TEXT.updateNpmScriptsPrompt)];
|
|
83
|
-
case 4:
|
|
84
|
-
if (_a.sent()) {
|
|
85
|
-
(0, utils_npm_1.updateNpmScripts)();
|
|
86
|
-
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.updateNpmScriptsSuccess);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
(0, utils_console_1.printMessage)(constants_1.TEXT.updateNpmScriptsAborted);
|
|
90
|
-
}
|
|
140
|
+
_a.sent();
|
|
141
|
+
return [4, updatePackageJsonScripts()];
|
|
142
|
+
case 3:
|
|
143
|
+
_a.sent();
|
|
91
144
|
(0, utils_console_1.printSuccessMessage)(constants_1.TEXT.updateCommandSuccess);
|
|
92
|
-
return [3,
|
|
93
|
-
case
|
|
145
|
+
return [3, 5];
|
|
146
|
+
case 4:
|
|
94
147
|
error_1 = _a.sent();
|
|
95
148
|
console.error(error_1);
|
|
96
|
-
return [3,
|
|
97
|
-
case
|
|
149
|
+
return [3, 5];
|
|
150
|
+
case 5: return [2];
|
|
98
151
|
}
|
|
99
152
|
});
|
|
100
153
|
}); };
|
package/dist/constants.js
CHANGED
|
@@ -72,6 +72,7 @@ exports.TEXT = {
|
|
|
72
72
|
updateNpmDependenciesPrompt: '**Would you like to update the following dependencies in the `package.json?`**',
|
|
73
73
|
updateNpmDependenciesSuccess: 'Successfully updated the NPM dependencies.',
|
|
74
74
|
updateNpmDependenciesAborted: 'No NPM dependencies have been updated.',
|
|
75
|
+
updateNpmGrafanaPackagesPrompt: 'Would you like to update the `@grafana/*` packages dependencies?',
|
|
75
76
|
removeNpmDependenciesPrompt: '**Would you like to remove the following possibly unnecessary NPM dependencies?**',
|
|
76
77
|
removeNpmDependenciesSuccess: 'Unnecessary NPM dependencies removed successfully.',
|
|
77
78
|
removeNpmDependenciesAborted: 'No NPM dependencies have been removed.',
|
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (_) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
2
61
|
exports.__esModule = true;
|
|
62
|
+
var files = __importStar(require("../utils.files"));
|
|
3
63
|
var utils_npm_1 = require("../utils.npm");
|
|
64
|
+
var templates = __importStar(require("../utils.templates"));
|
|
4
65
|
describe('Utils / NPM', function () {
|
|
5
66
|
describe('getDepenciesToBeUpdated()', function () {
|
|
6
67
|
test('it should return a summary of dependencies to be updated', function () {
|
|
@@ -135,4 +196,83 @@ describe('Utils / NPM', function () {
|
|
|
135
196
|
});
|
|
136
197
|
});
|
|
137
198
|
});
|
|
199
|
+
describe('getPackageJsonUpdates()', function () {
|
|
200
|
+
var spies;
|
|
201
|
+
beforeEach(function () {
|
|
202
|
+
spies = [
|
|
203
|
+
jest.spyOn(templates, 'renderTemplateFromFile').mockReturnValue(JSON.stringify({
|
|
204
|
+
scripts: {},
|
|
205
|
+
dependencies: {
|
|
206
|
+
'@emotion/css': '^11.1.3',
|
|
207
|
+
'@grafana/data': '9.3.0',
|
|
208
|
+
'@grafana/runtime': '9.3.0',
|
|
209
|
+
'@grafana/ui': '9.3.0'
|
|
210
|
+
},
|
|
211
|
+
devDependencies: {
|
|
212
|
+
'@babel/core': '^7.16.7',
|
|
213
|
+
'@grafana/e2e': '{{ grafanaVersion }}',
|
|
214
|
+
'@grafana/e2e-selectors': '{{ grafanaVersion }}',
|
|
215
|
+
'@grafana/eslint-config': '^5.1.0',
|
|
216
|
+
'@grafana/tsconfig': '^1.2.0-rc1',
|
|
217
|
+
'@swc/core': '^1.2.144'
|
|
218
|
+
}
|
|
219
|
+
})),
|
|
220
|
+
jest.spyOn(files, 'readJsonFile').mockImplementation(function () {
|
|
221
|
+
return {
|
|
222
|
+
dependencies: {
|
|
223
|
+
'@grafana/data': '9.0.0',
|
|
224
|
+
'@grafana/runtime': '9.0.0',
|
|
225
|
+
underscore: '2.0.0'
|
|
226
|
+
},
|
|
227
|
+
devDependencies: {
|
|
228
|
+
'eslint-plugin-react': '7.26.1'
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}),
|
|
232
|
+
];
|
|
233
|
+
});
|
|
234
|
+
afterEach(function () {
|
|
235
|
+
spies.forEach(function (s) { return s.mockRestore(); });
|
|
236
|
+
});
|
|
237
|
+
it('updates @grafana dependencies by default', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
238
|
+
var result;
|
|
239
|
+
return __generator(this, function (_a) {
|
|
240
|
+
result = (0, utils_npm_1.getPackageJsonUpdates)({ dontUpdateGrafanaDependencies: false });
|
|
241
|
+
expect(result.dependencyUpdates['@grafana/data']).toBeDefined();
|
|
242
|
+
expect(result.dependencyUpdates['@grafana/runtime']).toBeDefined();
|
|
243
|
+
expect(result.devDependencyUpdates['@grafana/data']).not.toBeDefined();
|
|
244
|
+
expect(result.devDependencyUpdates['@grafana/runtime']).not.toBeDefined();
|
|
245
|
+
return [2];
|
|
246
|
+
});
|
|
247
|
+
}); });
|
|
248
|
+
it('does not update @grafana dependencies when instructed', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
249
|
+
var result;
|
|
250
|
+
return __generator(this, function (_a) {
|
|
251
|
+
result = (0, utils_npm_1.getPackageJsonUpdates)({ dontUpdateGrafanaDependencies: true });
|
|
252
|
+
expect(result.dependencyUpdates['@grafana/data'].next).toEqual(result.dependencyUpdates['@grafana/data'].prev);
|
|
253
|
+
expect(result.dependencyUpdates['@grafana/runtime'].next).toEqual(result.dependencyUpdates['@grafana/runtime'].prev);
|
|
254
|
+
return [2];
|
|
255
|
+
});
|
|
256
|
+
}); });
|
|
257
|
+
it('moves @grafana/* dependencies from devDependencies to dependencies when instructed keeping their version', function () {
|
|
258
|
+
var spy = jest.spyOn(files, 'readJsonFile').mockImplementation(function () {
|
|
259
|
+
return {
|
|
260
|
+
dependencies: {
|
|
261
|
+
underscore: '2.0.0'
|
|
262
|
+
},
|
|
263
|
+
devDependencies: {
|
|
264
|
+
'eslint-plugin-react': '7.26.1',
|
|
265
|
+
'@grafana/data': '9.0.0',
|
|
266
|
+
'@grafana/runtime': '9.0.0'
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
});
|
|
270
|
+
var result = (0, utils_npm_1.getPackageJsonUpdates)({ dontUpdateGrafanaDependencies: true });
|
|
271
|
+
expect(result.dependencyUpdates['@grafana/data'].next).toEqual(result.dependencyUpdates['@grafana/data'].prev);
|
|
272
|
+
expect(result.dependencyUpdates['@grafana/runtime'].next).toEqual(result.dependencyUpdates['@grafana/runtime'].prev);
|
|
273
|
+
expect(result.devDependencyUpdates['@grafana/data']).not.toBeDefined();
|
|
274
|
+
expect(result.devDependencyUpdates['@grafana/runtime']).not.toBeDefined();
|
|
275
|
+
spy.mockRestore();
|
|
276
|
+
});
|
|
277
|
+
});
|
|
138
278
|
});
|
package/dist/utils/utils.npm.js
CHANGED
|
@@ -38,7 +38,7 @@ exports.writePackageJson = writePackageJson;
|
|
|
38
38
|
function getNpmDependencyUpdatesAsText(dependencyUpdates) {
|
|
39
39
|
return Object.entries(dependencyUpdates)
|
|
40
40
|
.filter(function (_a) {
|
|
41
|
-
var
|
|
41
|
+
var _ = _a[0], _b = _a[1], prev = _b.prev, next = _b.next;
|
|
42
42
|
return prev !== next;
|
|
43
43
|
})
|
|
44
44
|
.map(function (_a) {
|
|
@@ -96,50 +96,33 @@ function getPackageJsonUpdates(options) {
|
|
|
96
96
|
var devDependencies = packageJson.devDependencies || {};
|
|
97
97
|
var newDependencies = newPackageJson.dependencies || {};
|
|
98
98
|
var newDevDependencies = newPackageJson.devDependencies || {};
|
|
99
|
+
for (var _i = 0, GRAFANA_FE_PACKAGES_1 = constants_1.GRAFANA_FE_PACKAGES; _i < GRAFANA_FE_PACKAGES_1.length; _i++) {
|
|
100
|
+
var grafanaPackage = GRAFANA_FE_PACKAGES_1[_i];
|
|
101
|
+
if (devDependencies[grafanaPackage]) {
|
|
102
|
+
dependencies[grafanaPackage] = devDependencies[grafanaPackage];
|
|
103
|
+
delete devDependencies[grafanaPackage];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
99
106
|
var dependencyUpdates = getUpdatableNpmDependencies(dependencies, newDependencies, options);
|
|
100
107
|
var devDependencyUpdates = getUpdatableNpmDependencies(devDependencies, newDevDependencies, options);
|
|
101
|
-
if (options.ignoreGrafanaDependencies) {
|
|
102
|
-
var prevGrafanaDependencies = Object.entries(__assign(__assign({}, dependencies), devDependencies)).reduce(function (acc, _a) {
|
|
103
|
-
var key = _a[0], value = _a[1];
|
|
104
|
-
if (constants_1.GRAFANA_FE_PACKAGES.includes(key)) {
|
|
105
|
-
acc[key] = value;
|
|
106
|
-
}
|
|
107
|
-
return acc;
|
|
108
|
-
}, {});
|
|
109
|
-
return {
|
|
110
|
-
dependencyUpdates: ignoreGrafanaDependencies(dependencyUpdates, prevGrafanaDependencies),
|
|
111
|
-
devDependencyUpdates: ignoreGrafanaDependencies(devDependencyUpdates, prevGrafanaDependencies)
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
108
|
return {
|
|
115
109
|
dependencyUpdates: dependencyUpdates,
|
|
116
110
|
devDependencyUpdates: devDependencyUpdates
|
|
117
111
|
};
|
|
118
112
|
}
|
|
119
113
|
exports.getPackageJsonUpdates = getPackageJsonUpdates;
|
|
120
|
-
function ignoreGrafanaDependencies(dependencyUpdates, prevGrafanaDependencies) {
|
|
121
|
-
var whatever = Object.keys(prevGrafanaDependencies);
|
|
122
|
-
var result = Object.entries(dependencyUpdates).reduce(function (acc, _a) {
|
|
123
|
-
var packageName = _a[0], value = _a[1];
|
|
124
|
-
if (whatever.includes(packageName)) {
|
|
125
|
-
acc[packageName] = {
|
|
126
|
-
prev: prevGrafanaDependencies[packageName],
|
|
127
|
-
next: prevGrafanaDependencies[packageName]
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
acc[packageName] = value;
|
|
132
|
-
}
|
|
133
|
-
return acc;
|
|
134
|
-
}, {});
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
137
114
|
function getUpdatableNpmDependencies(prevDeps, nextDeps, options) {
|
|
138
115
|
if (options === void 0) { options = {}; }
|
|
139
116
|
var updateSummary = {};
|
|
140
117
|
for (var _i = 0, _a = Object.entries(nextDeps); _i < _a.length; _i++) {
|
|
141
118
|
var _b = _a[_i], packageName = _b[0], newSemverRange = _b[1];
|
|
142
119
|
var currentSemverRange = prevDeps[packageName];
|
|
120
|
+
if (options.dontUpdateGrafanaDependencies && constants_1.GRAFANA_FE_PACKAGES.includes(packageName)) {
|
|
121
|
+
if (currentSemverRange) {
|
|
122
|
+
updateSummary[packageName] = { prev: currentSemverRange, next: currentSemverRange };
|
|
123
|
+
}
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
143
126
|
if (!currentSemverRange) {
|
|
144
127
|
updateSummary[packageName] = { prev: null, next: newSemverRange };
|
|
145
128
|
continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/create-plugin",
|
|
3
|
-
"version": "1.0.0",
|
|
3
|
+
"version": "1.0.1-canary.210.207e8c7.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"directory": "packages/create-plugin",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=16"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "207e8c72cf7509ce7d29526db5df3a916d8db1c1"
|
|
64
64
|
}
|
|
@@ -57,13 +57,13 @@ export const migrate = async () => {
|
|
|
57
57
|
// 4. Add / update dependencies inside the `package.json`
|
|
58
58
|
// (skipped automatically if there is nothing to update)
|
|
59
59
|
// ------------------------------------------------
|
|
60
|
-
if (hasNpmDependenciesToUpdate()) {
|
|
60
|
+
if (hasNpmDependenciesToUpdate({ dontUpdateGrafanaDependencies: true })) {
|
|
61
61
|
if (
|
|
62
62
|
await confirmPrompt(
|
|
63
|
-
TEXT.updateNpmDependenciesPrompt + getPackageJsonUpdatesAsText({
|
|
63
|
+
TEXT.updateNpmDependenciesPrompt + getPackageJsonUpdatesAsText({ dontUpdateGrafanaDependencies: true })
|
|
64
64
|
)
|
|
65
65
|
) {
|
|
66
|
-
updatePackageJson({
|
|
66
|
+
updatePackageJson({ dontUpdateGrafanaDependencies: true });
|
|
67
67
|
printSuccessMessage(TEXT.updateNpmDependenciesSuccess);
|
|
68
68
|
} else {
|
|
69
69
|
printMessage(TEXT.updateNpmDependenciesAborted);
|
|
@@ -8,54 +8,79 @@ import {
|
|
|
8
8
|
updateNpmScripts,
|
|
9
9
|
} from '../utils/utils.npm';
|
|
10
10
|
|
|
11
|
+
async function updateConfigurationFiles() {
|
|
12
|
+
if (await confirmPrompt(TEXT.updateConfigPrompt)) {
|
|
13
|
+
compileTemplateFiles(UDPATE_CONFIG.filesToOverride, getTemplateData());
|
|
14
|
+
printSuccessMessage(TEXT.overrideFilesSuccess);
|
|
15
|
+
} else {
|
|
16
|
+
printMessage(TEXT.overrideFilesAborted);
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async function updateNpmDependencies() {
|
|
22
|
+
if (hasNpmDependenciesToUpdate()) {
|
|
23
|
+
// ask if we should update the grafana dependencies
|
|
24
|
+
const shouldUpdateGrafanaPackages = await confirmPrompt(TEXT.updateNpmGrafanaPackagesPrompt);
|
|
25
|
+
|
|
26
|
+
const updatadableDependenciesText = getPackageJsonUpdatesAsText({
|
|
27
|
+
dontUpdateGrafanaDependencies: !shouldUpdateGrafanaPackages,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (updatadableDependenciesText.length === 0) {
|
|
31
|
+
// No dependencies to update
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const PROMPT_CHOICES = {
|
|
36
|
+
ALL: 'Yes, all of them',
|
|
37
|
+
ONLY_OUTDATED: 'Yes, but only the outdated ones',
|
|
38
|
+
NONE: 'No',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const shouldUpdateDeps = await selectPrompt(TEXT.updateNpmDependenciesPrompt + updatadableDependenciesText, [
|
|
42
|
+
PROMPT_CHOICES.ALL,
|
|
43
|
+
PROMPT_CHOICES.ONLY_OUTDATED,
|
|
44
|
+
PROMPT_CHOICES.NONE,
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
if (shouldUpdateDeps && shouldUpdateDeps !== PROMPT_CHOICES.NONE) {
|
|
48
|
+
updatePackageJson({
|
|
49
|
+
dontUpdateGrafanaDependencies: !shouldUpdateGrafanaPackages,
|
|
50
|
+
onlyOutdated: shouldUpdateDeps === PROMPT_CHOICES.ONLY_OUTDATED,
|
|
51
|
+
});
|
|
52
|
+
printSuccessMessage(TEXT.updateNpmDependenciesSuccess);
|
|
53
|
+
} else {
|
|
54
|
+
printMessage(TEXT.updateNpmDependenciesAborted);
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
printMessage(TEXT.updateNpmDependenciesAborted);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function updatePackageJsonScripts() {
|
|
62
|
+
if (await confirmPrompt(TEXT.updateNpmScriptsPrompt)) {
|
|
63
|
+
updateNpmScripts();
|
|
64
|
+
printSuccessMessage(TEXT.updateNpmScriptsSuccess);
|
|
65
|
+
} else {
|
|
66
|
+
printMessage(TEXT.updateNpmScriptsAborted);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
11
70
|
export const update = async () => {
|
|
12
71
|
try {
|
|
13
|
-
// 0. Warning
|
|
14
|
-
// ----------
|
|
15
72
|
printMessage(TEXT.updateCommandWarning);
|
|
16
73
|
|
|
17
74
|
// 1. Add / update configuration files
|
|
18
|
-
|
|
19
|
-
if (await confirmPrompt(TEXT.updateConfigPrompt)) {
|
|
20
|
-
compileTemplateFiles(UDPATE_CONFIG.filesToOverride, getTemplateData());
|
|
21
|
-
printSuccessMessage(TEXT.overrideFilesSuccess);
|
|
22
|
-
} else {
|
|
23
|
-
printMessage(TEXT.overrideFilesAborted);
|
|
24
|
-
process.exit(0);
|
|
25
|
-
}
|
|
75
|
+
await updateConfigurationFiles();
|
|
26
76
|
|
|
27
77
|
// 2. Add / update dependencies inside the `package.json`
|
|
28
78
|
// (skipped automatically if there is nothing to update)
|
|
29
|
-
|
|
30
|
-
if (hasNpmDependenciesToUpdate()) {
|
|
31
|
-
const PROMPT_CHOICES = {
|
|
32
|
-
ALL: 'Yes, all of them',
|
|
33
|
-
ONLY_OUTDATED: 'Yes, but only the outdated ones',
|
|
34
|
-
NONE: 'No',
|
|
35
|
-
};
|
|
36
|
-
const shouldUpdateDeps = await selectPrompt(TEXT.updateNpmDependenciesPrompt + getPackageJsonUpdatesAsText(), [
|
|
37
|
-
PROMPT_CHOICES.ALL,
|
|
38
|
-
PROMPT_CHOICES.ONLY_OUTDATED,
|
|
39
|
-
PROMPT_CHOICES.NONE,
|
|
40
|
-
]);
|
|
41
|
-
|
|
42
|
-
if (shouldUpdateDeps && shouldUpdateDeps !== PROMPT_CHOICES.NONE) {
|
|
43
|
-
updatePackageJson({ onlyOutdated: shouldUpdateDeps === PROMPT_CHOICES.ONLY_OUTDATED });
|
|
44
|
-
printSuccessMessage(TEXT.updateNpmDependenciesSuccess);
|
|
45
|
-
} else {
|
|
46
|
-
printMessage(TEXT.updateNpmDependenciesAborted);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
79
|
+
await updateNpmDependencies();
|
|
49
80
|
|
|
50
81
|
// 3. Add / update NPM scripts
|
|
51
82
|
// (skipped automatically if there is nothing to update)
|
|
52
|
-
|
|
53
|
-
if (await confirmPrompt(TEXT.updateNpmScriptsPrompt)) {
|
|
54
|
-
updateNpmScripts();
|
|
55
|
-
printSuccessMessage(TEXT.updateNpmScriptsSuccess);
|
|
56
|
-
} else {
|
|
57
|
-
printMessage(TEXT.updateNpmScriptsAborted);
|
|
58
|
-
}
|
|
83
|
+
await updatePackageJsonScripts();
|
|
59
84
|
|
|
60
85
|
// 4. Summary
|
|
61
86
|
// -------------
|
package/src/constants.ts
CHANGED
|
@@ -95,6 +95,7 @@ export const TEXT = {
|
|
|
95
95
|
updateNpmDependenciesPrompt: '**Would you like to update the following dependencies in the `package.json?`**',
|
|
96
96
|
updateNpmDependenciesSuccess: 'Successfully updated the NPM dependencies.',
|
|
97
97
|
updateNpmDependenciesAborted: 'No NPM dependencies have been updated.',
|
|
98
|
+
updateNpmGrafanaPackagesPrompt: 'Would you like to update the `@grafana/*` packages dependencies?',
|
|
98
99
|
|
|
99
100
|
removeNpmDependenciesPrompt: '**Would you like to remove the following possibly unnecessary NPM dependencies?**',
|
|
100
101
|
removeNpmDependenciesSuccess: 'Unnecessary NPM dependencies removed successfully.',
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as files from '../utils.files';
|
|
2
|
+
import { updateNpmDependencies, getUpdatableNpmDependencies, getPackageJsonUpdates } from '../utils.npm';
|
|
3
|
+
import * as templates from '../utils.templates';
|
|
2
4
|
|
|
3
5
|
describe('Utils / NPM', () => {
|
|
4
6
|
describe('getDepenciesToBeUpdated()', () => {
|
|
@@ -190,4 +192,95 @@ describe('Utils / NPM', () => {
|
|
|
190
192
|
});
|
|
191
193
|
});
|
|
192
194
|
});
|
|
195
|
+
|
|
196
|
+
describe('getPackageJsonUpdates()', () => {
|
|
197
|
+
let spies: jest.SpyInstance[];
|
|
198
|
+
beforeEach(() => {
|
|
199
|
+
spies = [
|
|
200
|
+
// template package.json
|
|
201
|
+
jest.spyOn(templates, 'renderTemplateFromFile').mockReturnValue(
|
|
202
|
+
JSON.stringify({
|
|
203
|
+
scripts: {},
|
|
204
|
+
dependencies: {
|
|
205
|
+
'@emotion/css': '^11.1.3',
|
|
206
|
+
'@grafana/data': '9.3.0',
|
|
207
|
+
'@grafana/runtime': '9.3.0',
|
|
208
|
+
'@grafana/ui': '9.3.0',
|
|
209
|
+
},
|
|
210
|
+
devDependencies: {
|
|
211
|
+
'@babel/core': '^7.16.7',
|
|
212
|
+
'@grafana/e2e': '{{ grafanaVersion }}',
|
|
213
|
+
'@grafana/e2e-selectors': '{{ grafanaVersion }}',
|
|
214
|
+
'@grafana/eslint-config': '^5.1.0',
|
|
215
|
+
'@grafana/tsconfig': '^1.2.0-rc1',
|
|
216
|
+
'@swc/core': '^1.2.144',
|
|
217
|
+
},
|
|
218
|
+
})
|
|
219
|
+
),
|
|
220
|
+
// plugin package.json
|
|
221
|
+
jest.spyOn(files, 'readJsonFile').mockImplementation(() => {
|
|
222
|
+
return {
|
|
223
|
+
dependencies: {
|
|
224
|
+
'@grafana/data': '9.0.0',
|
|
225
|
+
'@grafana/runtime': '9.0.0',
|
|
226
|
+
underscore: '2.0.0',
|
|
227
|
+
},
|
|
228
|
+
devDependencies: {
|
|
229
|
+
'eslint-plugin-react': '7.26.1',
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}),
|
|
233
|
+
];
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
afterEach(() => {
|
|
237
|
+
spies.forEach((s) => s.mockRestore());
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
it('updates @grafana dependencies by default', async () => {
|
|
241
|
+
const result = getPackageJsonUpdates({ dontUpdateGrafanaDependencies: false }); // false by default
|
|
242
|
+
expect(result.dependencyUpdates['@grafana/data']).toBeDefined();
|
|
243
|
+
expect(result.dependencyUpdates['@grafana/runtime']).toBeDefined();
|
|
244
|
+
// shouldn't be in devDependencies
|
|
245
|
+
expect(result.devDependencyUpdates['@grafana/data']).not.toBeDefined();
|
|
246
|
+
expect(result.devDependencyUpdates['@grafana/runtime']).not.toBeDefined();
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
it('does not update @grafana dependencies when instructed', async () => {
|
|
250
|
+
// the plugin package.json
|
|
251
|
+
const result = getPackageJsonUpdates({ dontUpdateGrafanaDependencies: true });
|
|
252
|
+
expect(result.dependencyUpdates['@grafana/data'].next).toEqual(result.dependencyUpdates['@grafana/data'].prev);
|
|
253
|
+
expect(result.dependencyUpdates['@grafana/runtime'].next).toEqual(
|
|
254
|
+
result.dependencyUpdates['@grafana/runtime'].prev
|
|
255
|
+
);
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
it('moves @grafana/* dependencies from devDependencies to dependencies when instructed keeping their version', () => {
|
|
259
|
+
// the plugin package.json
|
|
260
|
+
const spy = jest.spyOn(files, 'readJsonFile').mockImplementation(() => {
|
|
261
|
+
return {
|
|
262
|
+
dependencies: {
|
|
263
|
+
underscore: '2.0.0',
|
|
264
|
+
},
|
|
265
|
+
devDependencies: {
|
|
266
|
+
'eslint-plugin-react': '7.26.1',
|
|
267
|
+
'@grafana/data': '9.0.0',
|
|
268
|
+
'@grafana/runtime': '9.0.0',
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
});
|
|
272
|
+
const result = getPackageJsonUpdates({ dontUpdateGrafanaDependencies: true });
|
|
273
|
+
|
|
274
|
+
// should be in dependencies
|
|
275
|
+
expect(result.dependencyUpdates['@grafana/data'].next).toEqual(result.dependencyUpdates['@grafana/data'].prev);
|
|
276
|
+
expect(result.dependencyUpdates['@grafana/runtime'].next).toEqual(
|
|
277
|
+
result.dependencyUpdates['@grafana/runtime'].prev
|
|
278
|
+
);
|
|
279
|
+
// should not be in devDependencies
|
|
280
|
+
expect(result.devDependencyUpdates['@grafana/data']).not.toBeDefined();
|
|
281
|
+
expect(result.devDependencyUpdates['@grafana/runtime']).not.toBeDefined();
|
|
282
|
+
|
|
283
|
+
spy.mockRestore();
|
|
284
|
+
});
|
|
285
|
+
});
|
|
193
286
|
});
|
package/src/utils/utils.npm.ts
CHANGED
|
@@ -9,7 +9,7 @@ type UpdateSummary = Record<string, { prev: string | null; next: string | null }
|
|
|
9
9
|
|
|
10
10
|
type UpdateOptions = {
|
|
11
11
|
onlyOutdated?: Boolean;
|
|
12
|
-
|
|
12
|
+
dontUpdateGrafanaDependencies?: boolean;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
type PackageJson = {
|
|
@@ -36,7 +36,7 @@ export function writePackageJson(json: PackageJson) {
|
|
|
36
36
|
|
|
37
37
|
export function getNpmDependencyUpdatesAsText(dependencyUpdates: UpdateSummary) {
|
|
38
38
|
return Object.entries(dependencyUpdates)
|
|
39
|
-
.filter(([
|
|
39
|
+
.filter(([_, { prev, next }]) => prev !== next)
|
|
40
40
|
.map(([packageName, { prev, next }]) => {
|
|
41
41
|
// New package
|
|
42
42
|
if (!prev) {
|
|
@@ -99,47 +99,24 @@ export function getPackageJsonUpdates(options: UpdateOptions = {}) {
|
|
|
99
99
|
const devDependencies = packageJson.devDependencies || {};
|
|
100
100
|
const newDependencies = newPackageJson.dependencies || {};
|
|
101
101
|
const newDevDependencies = newPackageJson.devDependencies || {};
|
|
102
|
-
const dependencyUpdates = getUpdatableNpmDependencies(dependencies, newDependencies, options);
|
|
103
|
-
const devDependencyUpdates = getUpdatableNpmDependencies(devDependencies, newDevDependencies, options);
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
return acc;
|
|
113
|
-
}, {});
|
|
114
|
-
return {
|
|
115
|
-
dependencyUpdates: ignoreGrafanaDependencies(dependencyUpdates, prevGrafanaDependencies),
|
|
116
|
-
devDependencyUpdates: ignoreGrafanaDependencies(devDependencyUpdates, prevGrafanaDependencies),
|
|
117
|
-
};
|
|
103
|
+
// Move grafana dependencies from devDependencies to dependencies
|
|
104
|
+
for (const grafanaPackage of GRAFANA_FE_PACKAGES) {
|
|
105
|
+
if (devDependencies[grafanaPackage]) {
|
|
106
|
+
dependencies[grafanaPackage] = devDependencies[grafanaPackage];
|
|
107
|
+
delete devDependencies[grafanaPackage];
|
|
108
|
+
}
|
|
118
109
|
}
|
|
119
110
|
|
|
111
|
+
const dependencyUpdates = getUpdatableNpmDependencies(dependencies, newDependencies, options);
|
|
112
|
+
const devDependencyUpdates = getUpdatableNpmDependencies(devDependencies, newDevDependencies, options);
|
|
113
|
+
|
|
120
114
|
return {
|
|
121
115
|
dependencyUpdates,
|
|
122
116
|
devDependencyUpdates,
|
|
123
117
|
};
|
|
124
118
|
}
|
|
125
119
|
|
|
126
|
-
function ignoreGrafanaDependencies(dependencyUpdates: UpdateSummary, prevGrafanaDependencies: Record<string, string>) {
|
|
127
|
-
const whatever = Object.keys(prevGrafanaDependencies);
|
|
128
|
-
const result = Object.entries(dependencyUpdates).reduce<UpdateSummary>((acc, [packageName, value]) => {
|
|
129
|
-
if (whatever.includes(packageName)) {
|
|
130
|
-
acc[packageName] = {
|
|
131
|
-
prev: prevGrafanaDependencies[packageName],
|
|
132
|
-
next: prevGrafanaDependencies[packageName],
|
|
133
|
-
};
|
|
134
|
-
} else {
|
|
135
|
-
acc[packageName] = value;
|
|
136
|
-
}
|
|
137
|
-
return acc;
|
|
138
|
-
}, {});
|
|
139
|
-
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
120
|
export function getUpdatableNpmDependencies(
|
|
144
121
|
prevDeps: Record<string, string>,
|
|
145
122
|
nextDeps: Record<string, string>,
|
|
@@ -151,6 +128,14 @@ export function getUpdatableNpmDependencies(
|
|
|
151
128
|
for (const [packageName, newSemverRange] of Object.entries(nextDeps)) {
|
|
152
129
|
const currentSemverRange = prevDeps[packageName];
|
|
153
130
|
|
|
131
|
+
// keep grafana dependencies at the same version when instructed
|
|
132
|
+
if (options.dontUpdateGrafanaDependencies && GRAFANA_FE_PACKAGES.includes(packageName)) {
|
|
133
|
+
if (currentSemverRange) {
|
|
134
|
+
updateSummary[packageName] = { prev: currentSemverRange, next: currentSemverRange };
|
|
135
|
+
}
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
|
|
154
139
|
// New dependency
|
|
155
140
|
if (!currentSemverRange) {
|
|
156
141
|
updateSummary[packageName] = { prev: null, next: newSemverRange };
|
|
@@ -9,7 +9,6 @@ import (
|
|
|
9
9
|
|
|
10
10
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
11
11
|
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
|
|
12
|
-
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
|
|
13
12
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
|
14
13
|
)
|
|
15
14
|
|
|
@@ -45,10 +44,6 @@ func (d *Datasource) Dispose() {
|
|
|
45
44
|
// The QueryDataResponse contains a map of RefID to the response for each query, and each response
|
|
46
45
|
// contains Frames ([]*Frame).
|
|
47
46
|
func (d *Datasource) QueryData(ctx context.Context, req *backend.QueryDataRequest) (*backend.QueryDataResponse, error) {
|
|
48
|
-
// when logging at a non-Debug level, make sure you don't include sensitive information in the message
|
|
49
|
-
// (like the *backend.QueryDataRequest)
|
|
50
|
-
log.DefaultLogger.Debug("QueryData called", "numQueries", len(req.Queries))
|
|
51
|
-
|
|
52
47
|
// create response struct
|
|
53
48
|
response := backend.NewQueryDataResponse()
|
|
54
49
|
|
|
@@ -99,10 +94,6 @@ func (d *Datasource) query(_ context.Context, pCtx backend.PluginContext, query
|
|
|
99
94
|
// datasource configuration page which allows users to verify that
|
|
100
95
|
// a datasource is working as expected.
|
|
101
96
|
func (d *Datasource) CheckHealth(_ context.Context, req *backend.CheckHealthRequest) (*backend.CheckHealthResult, error) {
|
|
102
|
-
// when logging at a non-Debug level, make sure you don't include sensitive information in the message
|
|
103
|
-
// (like the *backend.QueryDataRequest)
|
|
104
|
-
log.DefaultLogger.Debug("CheckHealth called")
|
|
105
|
-
|
|
106
97
|
var status = backend.HealthStatusOk
|
|
107
98
|
var message = "Data source is working"
|
|
108
99
|
|