@grafana/create-plugin 2.11.2 → 2.12.0-canary.658.dabaee1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/bin/run.js +13 -18
  2. package/dist/commands/generate/prettify-files.js +15 -70
  3. package/dist/commands/generate/print-success-message.js +28 -31
  4. package/dist/commands/generate/prompt-user.js +23 -91
  5. package/dist/commands/generate/update-go-sdk-and-packages.js +36 -105
  6. package/dist/commands/generate.command.js +122 -240
  7. package/dist/commands/index.js +5 -21
  8. package/dist/commands/migrate.command.js +71 -134
  9. package/dist/commands/provisioning.command.js +30 -85
  10. package/dist/commands/types.js +1 -2
  11. package/dist/commands/update.command.js +44 -97
  12. package/dist/commands/version.command.js +16 -57
  13. package/dist/constants.js +37 -32
  14. package/dist/utils/tests/utils.files.test.js +21 -23
  15. package/dist/utils/tests/utils.handlebars.test.js +24 -26
  16. package/dist/utils/tests/utils.npm.test.js +103 -95
  17. package/dist/utils/tests/utils.plugin.test.js +11 -13
  18. package/dist/utils/tests/utils.templates.test.js +16 -18
  19. package/dist/utils/utils.config.js +30 -32
  20. package/dist/utils/utils.console.js +25 -31
  21. package/dist/utils/utils.files.js +38 -104
  22. package/dist/utils/utils.handlebars.js +30 -65
  23. package/dist/utils/utils.npm.js +75 -118
  24. package/dist/utils/utils.os.js +3 -7
  25. package/dist/utils/utils.packageManager.js +31 -37
  26. package/dist/utils/utils.packagejson.js +13 -22
  27. package/dist/utils/utils.path.js +7 -14
  28. package/dist/utils/utils.plugin.js +6 -13
  29. package/dist/utils/utils.templates.js +58 -80
  30. package/dist/utils/utils.version.js +9 -11
  31. package/package.json +20 -6
  32. package/src/bin/run.ts +2 -2
  33. package/src/commands/generate/prettify-files.ts +1 -1
  34. package/src/commands/generate/print-success-message.ts +4 -4
  35. package/src/commands/generate/prompt-user.ts +2 -2
  36. package/src/commands/generate/update-go-sdk-and-packages.ts +2 -2
  37. package/src/commands/generate.command.ts +15 -15
  38. package/src/commands/index.ts +5 -5
  39. package/src/commands/migrate.command.ts +6 -6
  40. package/src/commands/provisioning.command.ts +6 -6
  41. package/src/commands/types.ts +1 -1
  42. package/src/commands/update.command.ts +5 -5
  43. package/src/commands/version.command.ts +5 -2
  44. package/src/constants.ts +4 -1
  45. package/src/utils/tests/utils.files.test.ts +2 -2
  46. package/src/utils/tests/utils.handlebars.test.ts +2 -2
  47. package/src/utils/tests/utils.npm.test.ts +43 -34
  48. package/src/utils/tests/utils.plugin.test.ts +2 -2
  49. package/src/utils/tests/utils.templates.test.ts +2 -2
  50. package/src/utils/utils.config.ts +3 -3
  51. package/src/utils/utils.console.ts +16 -11
  52. package/src/utils/utils.files.ts +3 -3
  53. package/src/utils/utils.handlebars.ts +3 -3
  54. package/src/utils/utils.npm.ts +3 -3
  55. package/src/utils/utils.packageManager.ts +3 -3
  56. package/src/utils/utils.packagejson.ts +5 -5
  57. package/src/utils/utils.path.ts +3 -3
  58. package/src/utils/utils.plugin.ts +2 -3
  59. package/src/utils/utils.templates.ts +10 -10
  60. package/src/utils/utils.version.ts +5 -2
  61. package/tsconfig.json +5 -0
  62. package/vitest.config.ts +10 -0
@@ -1,48 +1,42 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.selectPrompt = exports.confirmPrompt = exports.printError = exports.printSuccessMessage = exports.printMessage = exports.displayArrayAsList = exports.displayAsMarkdown = void 0;
4
- var marked = require('marked').marked;
5
- var chalk = require('chalk');
6
- var TerminalRenderer = require('marked-terminal');
7
- var _a = require('enquirer'), Confirm = _a.Confirm, Select = _a.Select;
1
+ import { marked } from 'marked';
2
+ import chalk from 'chalk';
3
+ import TerminalRenderer from 'marked-terminal';
4
+ import Enquirer from 'enquirer';
5
+ const { prompt } = Enquirer;
8
6
  marked.setOptions({
9
7
  renderer: new TerminalRenderer({
10
8
  firstHeading: chalk.hex('#ff9900').underline.bold,
11
9
  }),
12
10
  });
13
- function displayAsMarkdown(msg) {
11
+ export function displayAsMarkdown(msg) {
14
12
  return marked(msg);
15
13
  }
16
- exports.displayAsMarkdown = displayAsMarkdown;
17
- function displayArrayAsList(files) {
18
- return " - ".concat(files.map(function (t) { return "`".concat(t, "`"); }).join('\n - '));
14
+ export function displayArrayAsList(files) {
15
+ return ` - ${files.map((t) => `\`${t}\``).join('\n - ')}`;
19
16
  }
20
- exports.displayArrayAsList = displayArrayAsList;
21
- function printMessage(msg) {
22
- console.log(displayAsMarkdown("\n".concat(msg)));
17
+ export function printMessage(msg) {
18
+ console.log(displayAsMarkdown(`\n${msg}`));
23
19
  }
24
- exports.printMessage = printMessage;
25
- function printSuccessMessage(msg) {
26
- console.log(displayAsMarkdown("\n\u2714 ".concat(msg)).trim());
20
+ export function printSuccessMessage(msg) {
21
+ console.log(displayAsMarkdown(`\n✔ ${msg}`).trim());
27
22
  }
28
- exports.printSuccessMessage = printSuccessMessage;
29
- function printError(error) {
30
- console.error(displayAsMarkdown("\n\u274C ".concat(error)));
23
+ export function printError(error) {
24
+ console.error(displayAsMarkdown(`\n❌ ${error}`));
31
25
  }
32
- exports.printError = printError;
33
- function confirmPrompt(message) {
34
- var prompt = new Confirm({
35
- name: 'question',
26
+ export async function confirmPrompt(message) {
27
+ const question = await prompt({
28
+ name: 'confirmPrompt',
29
+ type: 'confirm',
36
30
  message: displayAsMarkdown(message),
37
31
  });
38
- return prompt.run();
32
+ return question['confirmPrompt'];
39
33
  }
40
- exports.confirmPrompt = confirmPrompt;
41
- function selectPrompt(message, choices) {
42
- var prompt = new Select({
43
- choices: choices,
34
+ export async function selectPrompt(message, choices) {
35
+ const question = await prompt({
36
+ name: 'selectPrompt',
37
+ type: 'select',
38
+ choices,
44
39
  message: displayAsMarkdown(message),
45
40
  });
46
- return prompt.run();
41
+ return question['selectPrompt'];
47
42
  }
48
- exports.selectPrompt = selectPrompt;
@@ -1,143 +1,77 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- 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;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.isFileStartingWith = exports.getExportFileName = exports.getExportTemplateName = exports.removeFilesInCwd = exports.getOnlyNotExistingInCwd = exports.getOnlyExistingInCwd = exports.directoryExists = exports.readJsonFile = exports.isFile = exports.filterOutCommonFiles = void 0;
43
- var path_1 = __importDefault(require("path"));
44
- var fs_1 = __importDefault(require("fs"));
45
- var constants_1 = require("../constants");
46
- var promises_1 = require("fs/promises");
47
- function filterOutCommonFiles(files, pluginType) {
48
- var isFileCommonAndOverriden = function (file) {
49
- return file.includes(constants_1.TEMPLATE_PATHS.common) &&
50
- files.includes(file.replace(constants_1.TEMPLATE_PATHS.common, constants_1.TEMPLATE_PATHS[pluginType]));
51
- };
52
- return files.filter(function (file) { return (isFileCommonAndOverriden(file) ? false : true); });
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import { TEMPLATE_PATHS } from '../constants.js';
4
+ import { access, constants } from 'fs/promises';
5
+ export function filterOutCommonFiles(files, pluginType) {
6
+ const isFileCommonAndOverriden = (file) => file.includes(TEMPLATE_PATHS.common) &&
7
+ files.includes(file.replace(TEMPLATE_PATHS.common, TEMPLATE_PATHS[pluginType]));
8
+ return files.filter((file) => (isFileCommonAndOverriden(file) ? false : true));
53
9
  }
54
- exports.filterOutCommonFiles = filterOutCommonFiles;
55
- function isFile(path) {
10
+ export function isFile(path) {
56
11
  try {
57
- return fs_1.default.lstatSync(path).isFile();
12
+ return fs.lstatSync(path).isFile();
58
13
  }
59
14
  catch (e) {
60
15
  return false;
61
16
  }
62
17
  }
63
- exports.isFile = isFile;
64
- function readJsonFile(filename) {
18
+ export function readJsonFile(filename) {
65
19
  if (!isFile(filename)) {
66
- throw new Error("There is no \"".concat(path_1.default.basename(filename), "\" file found at \"").concat(filename, "\". Make sure you run this command from a plugins root directory."));
20
+ throw new Error(`There is no "${path.basename(filename)}" file found at "${filename}". Make sure you run this command from a plugins root directory.`);
67
21
  }
68
22
  try {
69
- return JSON.parse(fs_1.default.readFileSync(filename).toString());
23
+ return JSON.parse(fs.readFileSync(filename).toString());
70
24
  }
71
25
  catch (error) {
72
- error.message = "Cannot parse the \"".concat(path_1.default.basename(filename), "\" file at ").concat(filename, ".");
26
+ error.message = `Cannot parse the "${path.basename(filename)}" file at ${filename}.`;
73
27
  throw error;
74
28
  }
75
29
  }
76
- exports.readJsonFile = readJsonFile;
77
- function directoryExists(path) {
78
- return __awaiter(this, void 0, void 0, function () {
79
- var e_1;
80
- return __generator(this, function (_a) {
81
- switch (_a.label) {
82
- case 0:
83
- _a.trys.push([0, 2, , 3]);
84
- return [4, (0, promises_1.access)(path, promises_1.constants.F_OK)];
85
- case 1:
86
- _a.sent();
87
- return [2, true];
88
- case 2:
89
- e_1 = _a.sent();
90
- return [2, false];
91
- case 3: return [2];
92
- }
93
- });
94
- });
30
+ export async function directoryExists(path) {
31
+ try {
32
+ await access(path, constants.F_OK);
33
+ return true;
34
+ }
35
+ catch (e) {
36
+ return false;
37
+ }
95
38
  }
96
- exports.directoryExists = directoryExists;
97
- function getOnlyExistingInCwd(files) {
98
- return files.filter(function (file) { return fs_1.default.existsSync(path_1.default.join(process.cwd(), file)); });
39
+ export function getOnlyExistingInCwd(files) {
40
+ return files.filter((file) => fs.existsSync(path.join(process.cwd(), file)));
99
41
  }
100
- exports.getOnlyExistingInCwd = getOnlyExistingInCwd;
101
- function getOnlyNotExistingInCwd(files) {
102
- return files.filter(function (file) { return !fs_1.default.existsSync(path_1.default.join(process.cwd(), file)); });
42
+ export function getOnlyNotExistingInCwd(files) {
43
+ return files.filter((file) => !fs.existsSync(path.join(process.cwd(), file)));
103
44
  }
104
- exports.getOnlyNotExistingInCwd = getOnlyNotExistingInCwd;
105
- function removeFilesInCwd(files) {
106
- for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {
107
- var file = files_1[_i];
108
- fs_1.default.rmSync(path_1.default.join(process.cwd(), file), { recursive: true, force: true });
45
+ export function removeFilesInCwd(files) {
46
+ for (const file of files) {
47
+ fs.rmSync(path.join(process.cwd(), file), { recursive: true, force: true });
109
48
  }
110
49
  }
111
- exports.removeFilesInCwd = removeFilesInCwd;
112
- function getExportTemplateName(f) {
113
- var baseName = path_1.default.basename(f);
114
- for (var _i = 0, _a = Object.entries(configFileNamesMap); _i < _a.length; _i++) {
115
- var _b = _a[_i], key = _b[0], value = _b[1];
50
+ export function getExportTemplateName(f) {
51
+ const baseName = path.basename(f);
52
+ for (const [key, value] of Object.entries(configFileNamesMap)) {
116
53
  if (value === baseName) {
117
54
  return key;
118
55
  }
119
56
  }
120
57
  return baseName;
121
58
  }
122
- exports.getExportTemplateName = getExportTemplateName;
123
- function getExportFileName(f) {
124
- var baseName = path_1.default.basename(f);
59
+ export function getExportFileName(f) {
60
+ const baseName = path.basename(f);
125
61
  if (Object.keys(configFileNamesMap).includes(baseName)) {
126
62
  return configFileNamesMap[baseName];
127
63
  }
128
- return path_1.default.extname(f) === '.hbs' ? path_1.default.basename(f, '.hbs') : baseName;
64
+ return path.extname(f) === '.hbs' ? path.basename(f, '.hbs') : baseName;
129
65
  }
130
- exports.getExportFileName = getExportFileName;
131
- var configFileNamesMap = {
66
+ const configFileNamesMap = {
132
67
  gitignore: '.gitignore',
133
68
  npmrc: '.npmrc',
134
69
  _eslintrc: '.eslintrc',
135
70
  '_package.json': 'package.json',
136
71
  };
137
- function isFileStartingWith(file, filter) {
72
+ export function isFileStartingWith(file, filter) {
138
73
  if (Array.isArray(filter)) {
139
- return filter.some(function (f) { return file.startsWith(f); });
74
+ return filter.some((f) => file.startsWith(f));
140
75
  }
141
76
  return file.startsWith(filter);
142
77
  }
143
- exports.isFileStartingWith = isFileStartingWith;
@@ -1,87 +1,52 @@
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;
1
+ import Handlebars from 'handlebars';
2
+ import * as changeCase from 'change-case';
3
+ import titleCase from 'title-case';
4
+ import upperCase from 'upper-case';
5
+ import lowerCase from 'lower-case';
6
+ import { PARTIALS_DIR } from '../constants.js';
7
+ import { readFileSync, readdirSync } from 'node:fs';
8
+ import { basename, join } from 'node:path';
9
+ export const ifEq = (a, b, options) => {
10
+ return a === b ? options.fn(this) : options.inverse(this);
24
11
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ export const normalizeId = (pluginName, orgName, type) => {
13
+ const re = new RegExp(`-?${type}$`, 'i');
14
+ const nameRegex = new RegExp('[^0-9a-zA-Z]', 'g');
15
+ const newPluginName = pluginName.replace(re, '').replace(nameRegex, '');
16
+ const newOrgName = orgName.replace(nameRegex, '');
17
+ return changeCase.lowerCase(newOrgName) + '-' + changeCase.lowerCase(newPluginName) + `-${type}`;
27
18
  };
28
- var _this = this;
29
- Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.renderHandlebarsTemplate = exports.normalizeId = exports.ifEq = void 0;
31
- var handlebars_1 = __importDefault(require("handlebars"));
32
- var changeCase = __importStar(require("change-case"));
33
- var title_case_1 = __importDefault(require("title-case"));
34
- var upper_case_1 = __importDefault(require("upper-case"));
35
- var lower_case_1 = __importDefault(require("lower-case"));
36
- var constants_1 = require("../constants");
37
- var fs_1 = require("fs");
38
- var path_1 = require("path");
39
- var ifEq = function (a, b, options) {
40
- return a === b ? options.fn(_this) : options.inverse(_this);
41
- };
42
- exports.ifEq = ifEq;
43
- var normalizeId = function (pluginName, orgName, type) {
44
- var re = new RegExp("-?".concat(type, "$"), 'i');
45
- var nameRegex = new RegExp('[^0-9a-zA-Z]', 'g');
46
- var newPluginName = pluginName.replace(re, '').replace(nameRegex, '');
47
- var newOrgName = orgName.replace(nameRegex, '');
48
- return changeCase.lowerCase(newOrgName) + '-' + changeCase.lowerCase(newPluginName) + "-".concat(type);
49
- };
50
- exports.normalizeId = normalizeId;
51
19
  registerHandlebarsHelpers();
52
20
  registerHandlebarsPartials();
53
21
  function registerHandlebarsHelpers() {
54
- var helpers = {
22
+ const helpers = {
55
23
  camelCase: changeCase.camelCase,
56
24
  snakeCase: changeCase.snakeCase,
57
25
  dotCase: changeCase.dotCase,
58
26
  pathCase: changeCase.pathCase,
59
- lowerCase: lower_case_1.default,
60
- upperCase: upper_case_1.default,
27
+ lowerCase: lowerCase,
28
+ upperCase: upperCase,
61
29
  sentenceCase: changeCase.sentenceCase,
62
30
  constantCase: changeCase.constantCase,
63
- titleCase: title_case_1.default,
31
+ titleCase: titleCase,
64
32
  dashCase: changeCase.paramCase,
65
33
  kabobCase: changeCase.paramCase,
66
34
  kebabCase: changeCase.paramCase,
67
35
  properCase: changeCase.pascalCase,
68
36
  pascalCase: changeCase.pascalCase,
69
- if_eq: exports.ifEq,
70
- normalize_id: exports.normalizeId,
37
+ if_eq: ifEq,
38
+ normalize_id: normalizeId,
71
39
  };
72
- Object.keys(helpers).forEach(function (helperName) {
73
- return handlebars_1.default.registerHelper(helperName, helpers[helperName]);
74
- });
40
+ Object.keys(helpers).forEach((helperName) => Handlebars.registerHelper(helperName, helpers[helperName]));
75
41
  }
76
42
  function registerHandlebarsPartials() {
77
- var partialFiles = (0, fs_1.readdirSync)(constants_1.PARTIALS_DIR);
78
- partialFiles.forEach(function (fileName) {
79
- var name = (0, path_1.basename)(fileName, '.md');
80
- var template = (0, fs_1.readFileSync)((0, path_1.join)(constants_1.PARTIALS_DIR, fileName), 'utf-8');
81
- handlebars_1.default.registerPartial(name, template);
43
+ const partialFiles = readdirSync(PARTIALS_DIR);
44
+ partialFiles.forEach((fileName) => {
45
+ const name = basename(fileName, '.md');
46
+ const template = readFileSync(join(PARTIALS_DIR, fileName), 'utf-8');
47
+ Handlebars.registerPartial(name, template);
82
48
  });
83
49
  }
84
- function renderHandlebarsTemplate(template, data) {
85
- return handlebars_1.default.compile(template)(data);
50
+ export function renderHandlebarsTemplate(template, data) {
51
+ return Handlebars.compile(template)(data);
86
52
  }
87
- exports.renderHandlebarsTemplate = renderHandlebarsTemplate;