@public-ui/kolibri-cli 2.1.0 → 2.1.2

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/README.md CHANGED
@@ -39,10 +39,18 @@ Options:
39
39
  -h, --help display help for command
40
40
 
41
41
  Commands:
42
+ info Shows the system and KoliBri package information
42
43
  migrate [options] <string> This command migrates KoliBri code to the current version.
43
44
  help [command] display help for command
44
45
  ```
45
46
 
47
+ ### Info
48
+ With the `info` command you can show the current system and KoliBri package information.
49
+
50
+ This command is mainly needed for our bug issue templates.
51
+ If errors occur in our packages, we would like to ask you to create an issue under the following link:
52
+ [Submit report](https://github.com/public-ui/kolibri/issues/new/choose)
53
+
46
54
  ### Migrate
47
55
 
48
56
  With the `migrate` command you can migrate your project to the latest version of `KoliBri`.
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const commander_1 = require("commander");
8
8
  const gradient_string_1 = __importDefault(require("gradient-string"));
9
+ const info_1 = __importDefault(require("./info"));
9
10
  const migrate_1 = __importDefault(require("./migrate"));
10
11
  const reuse_1 = require("./migrate/shares/reuse");
11
12
  const versionOfPublicUiKoliBriCli = (0, reuse_1.getVersionOfPublicUiKoliBriCli)();
@@ -23,5 +24,6 @@ console.log(banner);
23
24
  const program = new commander_1.Command();
24
25
  program.name('kolibri').description('CLI for executing some helpful commands for KoliBri projects.').version(versionOfPublicUiKoliBriCli);
25
26
  // Add commands
27
+ (0, info_1.default)(program);
26
28
  (0, migrate_1.default)(program);
27
29
  program.parse();
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const os_1 = __importDefault(require("os"));
7
+ const child_process_1 = require("child_process");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ // Function to get the binary version
11
+ const getBinaryVersion = (command) => {
12
+ try {
13
+ return (0, child_process_1.execSync)(`${command} --version`, { encoding: 'utf8' }).trim();
14
+ }
15
+ catch (_a) {
16
+ return 'N/A';
17
+ }
18
+ };
19
+ // Get operating system information
20
+ const getOsInfo = () => ({
21
+ platform: os_1.default.platform(),
22
+ arch: os_1.default.arch(),
23
+ version: os_1.default.release(),
24
+ });
25
+ // Get binaries information
26
+ const getBinariesInfo = () => ({
27
+ node: getBinaryVersion('node'),
28
+ npm: getBinaryVersion('npm'),
29
+ pnpm: getBinaryVersion('pnpm'),
30
+ yarn: getBinaryVersion('yarn'),
31
+ });
32
+ // Get relevant packages information
33
+ const getRelevantPackagesInfo = () => {
34
+ const packageJsonPath = path_1.default.join(process.cwd(), 'package.json');
35
+ const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf8'));
36
+ const packagePattern = /^@public-ui\//;
37
+ const packagesInfo = {};
38
+ const allDependencies = Object.assign(Object.assign({}, packageJson === null || packageJson === void 0 ? void 0 : packageJson.dependencies), packageJson === null || packageJson === void 0 ? void 0 : packageJson.devDependencies);
39
+ Object.keys(allDependencies).forEach((pkg) => {
40
+ if (packagePattern.test(pkg)) {
41
+ packagesInfo[pkg] = allDependencies === null || allDependencies === void 0 ? void 0 : allDependencies[pkg];
42
+ }
43
+ });
44
+ // Add specific packages not matching the pattern
45
+ const additionalPackages = ['react', 'react-dom', 'typescript'];
46
+ additionalPackages.forEach((pkg) => {
47
+ packagesInfo[pkg] = (allDependencies === null || allDependencies === void 0 ? void 0 : allDependencies[pkg]) || 'N/A';
48
+ });
49
+ return packagesInfo;
50
+ };
51
+ /**
52
+ * This function is used to register the migrate command.
53
+ * @param {Command} program The program object to register the command
54
+ */
55
+ function default_1(program) {
56
+ program
57
+ .command('info')
58
+ .description('This command returns information about your system.')
59
+ .action(() => {
60
+ // Gather all information
61
+ const systemInfo = {
62
+ 'Operating System': getOsInfo(),
63
+ Binaries: getBinariesInfo(),
64
+ 'Relevant Packages': getRelevantPackagesInfo(),
65
+ };
66
+ console.log(JSON.stringify(systemInfo, null, 2));
67
+ });
68
+ }
69
+ exports.default = default_1;
@@ -8,12 +8,12 @@ const semver_1 = __importDefault(require("semver"));
8
8
  const types_1 = require("../../types");
9
9
  const reuse_1 = require("../shares/reuse");
10
10
  class AbstractTask {
11
- constructor(identifier, title, extensions, versionRange, dependentTasks = [], options = {}) {
11
+ constructor(identifier, title, extensions, versionRange, taskDependencies = [], options = {}) {
12
12
  this.identifier = identifier;
13
13
  this.title = title;
14
14
  this.extensions = extensions;
15
15
  this.versionRange = versionRange;
16
- this.dependentTasks = dependentTasks;
16
+ this.taskDependencies = taskDependencies;
17
17
  this.status = 'pending';
18
18
  this.description = options.description;
19
19
  this.extensions = this.extensions.filter((ext) => types_1.FILE_EXTENSIONS.includes(ext));
@@ -21,8 +21,8 @@ class AbstractTask {
21
21
  throw (0, reuse_1.logAndCreateError)(`[${this.identifier}] Invalid semver range version: ${this.versionRange}`);
22
22
  }
23
23
  }
24
- getDependentTasks() {
25
- return this.dependentTasks;
24
+ getTaskDependencies() {
25
+ return this.taskDependencies;
26
26
  }
27
27
  getDescription() {
28
28
  return this.description;
@@ -54,9 +54,9 @@ class TaskRunner {
54
54
  }
55
55
  registerTasks(tasks) {
56
56
  tasks.forEach((task) => {
57
- const dependentTasks = task.getDependentTasks();
58
- if (dependentTasks.length > 0) {
59
- this.registerTasks(dependentTasks);
57
+ const taskDependencies = task.getTaskDependencies();
58
+ if (taskDependencies.length > 0) {
59
+ this.registerTasks(taskDependencies);
60
60
  }
61
61
  if (semver_1.default.gtr(this.projectVersion, task.getVersionRange(), {
62
62
  includePrerelease: true,
@@ -98,17 +98,17 @@ class TaskRunner {
98
98
  }
99
99
  }
100
100
  }
101
- dependentTaskRun(task, dependentTasks) {
102
- dependentTasks.forEach((dependentTask) => {
103
- this.dependentTaskRun(dependentTask, dependentTask.getDependentTasks());
101
+ dependentTaskRun(task, taskDependencies) {
102
+ taskDependencies.forEach((dependentTask) => {
103
+ this.dependentTaskRun(dependentTask, dependentTask.getTaskDependencies());
104
104
  });
105
- if (dependentTasks.every((dependentTask) => dependentTask.getStatus() === 'done')) {
105
+ if (taskDependencies.every((dependentTask) => dependentTask.getStatus() === 'done')) {
106
106
  this.runTask(task);
107
107
  }
108
108
  }
109
109
  run() {
110
110
  this.tasks.forEach((task) => {
111
- this.dependentTaskRun(task, task.getDependentTasks());
111
+ this.dependentTaskRun(task, task.getTaskDependencies());
112
112
  });
113
113
  }
114
114
  getPendingMinVersion() {
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RefactorPropertyIconAlign = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const types_1 = require("../../../../types");
9
+ const reuse_1 = require("../../../shares/reuse");
10
+ const abstract_task_1 = require("../../abstract-task");
11
+ class RefactorPropertyIconAlign extends abstract_task_1.AbstractTask {
12
+ constructor(tag) {
13
+ super(`refactor-property-icon-align`, `Refactor property "_icon-align" - integrate in "_icons" property`, types_1.MARKUP_EXTENSIONS, '^2'); //fixme revert version
14
+ this.tag = tag;
15
+ }
16
+ static getInstance(tag) {
17
+ const identifier = `${tag}-refactor-property-label-replace-false`;
18
+ if (!this.instances.has(identifier)) {
19
+ this.instances.set(identifier, new RefactorPropertyIconAlign(tag));
20
+ }
21
+ return this.instances.get(identifier);
22
+ }
23
+ run(baseDir) {
24
+ this.transpileComponentFile(baseDir);
25
+ this.transpileCustomElementFile(baseDir);
26
+ }
27
+ transpileComponentFile(baseDir) {
28
+ (0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
29
+ const content = fs_1.default.readFileSync(file, 'utf8');
30
+ const newContent = this.rewriteComponentContents(content, true);
31
+ if (content !== newContent) {
32
+ reuse_1.MODIFIED_FILES.add(file);
33
+ fs_1.default.writeFileSync(file, newContent);
34
+ }
35
+ });
36
+ }
37
+ transpileCustomElementFile(baseDir) {
38
+ (0, reuse_1.filterFilesByExt)(baseDir, types_1.CUSTOM_ELEMENT_FILE_EXTENSIONS).forEach((file) => {
39
+ const content = fs_1.default.readFileSync(file, 'utf8');
40
+ const newContent = this.rewriteComponentContents(content, false);
41
+ if (content !== newContent) {
42
+ reuse_1.MODIFIED_FILES.add(file);
43
+ fs_1.default.writeFileSync(file, newContent);
44
+ }
45
+ });
46
+ }
47
+ rewriteComponentContents(input, isComponent) {
48
+ const tagName = isComponent ? (0, reuse_1.kebabToCapitalCase)(this.tag) : this.tag;
49
+ const tagsRegex = new RegExp(`<(${tagName}[^>]*_icon(?:-a|A)lign[^>]*)>`, 'g');
50
+ const iconAlignRegex = /_icon(?:-a|A)lign=["'{]+?(\w+)["'}]/;
51
+ const iconsRegex = /_icons=(?:'|"|{"|{')([\w\s-]+)["'}]/;
52
+ return input.replace(tagsRegex, (componentTag) => {
53
+ const iconAlignMatches = componentTag.match(iconAlignRegex);
54
+ const iconsMatches = componentTag.match(iconsRegex);
55
+ // Make sure icons and iconAlign are valid
56
+ if ((iconAlignMatches === null || iconAlignMatches === void 0 ? void 0 : iconAlignMatches[1]) && (iconsMatches === null || iconsMatches === void 0 ? void 0 : iconsMatches[1])) {
57
+ // Replace icons and iconAlign with one joined object
58
+ const newIcons = isComponent
59
+ ? `_icons={{ '${iconAlignMatches === null || iconAlignMatches === void 0 ? void 0 : iconAlignMatches[1]}': '${iconsMatches === null || iconsMatches === void 0 ? void 0 : iconsMatches[1]}' }}`
60
+ : `_icons="{ '${iconAlignMatches === null || iconAlignMatches === void 0 ? void 0 : iconAlignMatches[1]}': '${iconsMatches === null || iconsMatches === void 0 ? void 0 : iconsMatches[1]}' }"`;
61
+ return componentTag.replace(iconAlignRegex, '').replace(iconsRegex, newIcons);
62
+ }
63
+ return componentTag;
64
+ });
65
+ }
66
+ }
67
+ exports.RefactorPropertyIconAlign = RefactorPropertyIconAlign;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ButtonRenamePropertyIconToIcons = exports.ButtonRenamePropertyIconOnlyToHideLabel = exports.ButtonRemovePropertyIconAlign = exports.ButtonRemovePropertyAriaLabel = exports.ButtonRemovePropertyAriaCurrent = void 0;
3
+ exports.ButtonRenamePropertyIconToIcons = exports.ButtonRenamePropertyIconOnlyToHideLabel = exports.ButtonRefactorPropertyIconAlign = exports.ButtonRemovePropertyAriaLabel = exports.ButtonRemovePropertyAriaCurrent = void 0;
4
4
  const RemovePropertyNameTask_1 = require("../common/RemovePropertyNameTask");
5
5
  const RenamePropertyNameTask_1 = require("../common/RenamePropertyNameTask");
6
+ const RefactorPropertyIconAlign_1 = require("../common/RefactorPropertyIconAlign");
6
7
  exports.ButtonRemovePropertyAriaCurrent = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-button', '_aria-current', '^1');
7
8
  exports.ButtonRemovePropertyAriaLabel = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-button', '_aria-label', '^1');
8
- // @todo: handle _icon-align in _icon
9
- exports.ButtonRemovePropertyIconAlign = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-button', '_icon-align', '^1');
9
+ exports.ButtonRefactorPropertyIconAlign = RefactorPropertyIconAlign_1.RefactorPropertyIconAlign.getInstance('kol-button');
10
10
  exports.ButtonRenamePropertyIconOnlyToHideLabel = RenamePropertyNameTask_1.RenamePropertyNameTask.getInstance('kol-button', '_icon-only', '_hide-label', '^1');
11
11
  exports.ButtonRenamePropertyIconToIcons = RenamePropertyNameTask_1.RenamePropertyNameTask.getInstance('kol-button', '_icon', '_icons', '^1');
@@ -60,8 +60,8 @@ exports.v1Tasks.push(button_link_1.ButtonLinkRenamePropertyIconOnlyToHideLabel);
60
60
  exports.v1Tasks.push(button_link_1.ButtonLinkRenamePropertyIconToIcons);
61
61
  exports.v1Tasks.push(button_1.ButtonRemovePropertyAriaCurrent);
62
62
  exports.v1Tasks.push(button_1.ButtonRemovePropertyAriaLabel);
63
- exports.v1Tasks.push(button_1.ButtonRemovePropertyIconAlign);
64
63
  exports.v1Tasks.push(button_1.ButtonRenamePropertyIconOnlyToHideLabel);
64
+ exports.v1Tasks.push(button_1.ButtonRefactorPropertyIconAlign);
65
65
  exports.v1Tasks.push(button_1.ButtonRenamePropertyIconToIcons);
66
66
  exports.v1Tasks.push(card_1.CardRenamePropertyHeadingToLabel);
67
67
  exports.v1Tasks.push(card_1.CardRenamePropertyHeadlineToLabel);
@@ -108,7 +108,7 @@ exports.v1Tasks.push(link_1.LinkRemovePropertyAriaExpanded);
108
108
  exports.v1Tasks.push(link_1.LinkRemovePropertyAriaLabel);
109
109
  exports.v1Tasks.push(link_1.LinkRemovePropertyAriaSelected);
110
110
  exports.v1Tasks.push(link_1.LinkRemovePropertyDisabled);
111
- exports.v1Tasks.push(link_1.LinkRemovePropertyIconAlign);
111
+ exports.v1Tasks.push(link_1.LinkRefactorPropertyIconAlign);
112
112
  exports.v1Tasks.push(link_1.LinkRemovePropertySelector);
113
113
  exports.v1Tasks.push(link_1.LinkRemovePropertyStealth);
114
114
  exports.v1Tasks.push(link_1.LinkRemovePropertyUseCase);
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LinkRemovePropertyUseCase = exports.LinkRemovePropertyStealth = exports.LinkRemovePropertySelector = exports.LinkRenamePropertyIconOnlyToHideLabel = exports.LinkRemovePropertyIconAlign = exports.LinkRenamePropertyIconToIcons = exports.LinkRemovePropertyDisabled = exports.LinkRemovePropertyAriaSelected = exports.LinkRemovePropertyAriaLabel = exports.LinkRemovePropertyAriaExpanded = exports.LinkRenamePropertyAriaCurrentToListenAriaCurrent = exports.LinkRemovePropertyAriaControls = void 0;
3
+ exports.LinkRemovePropertyUseCase = exports.LinkRemovePropertyStealth = exports.LinkRemovePropertySelector = exports.LinkRenamePropertyIconOnlyToHideLabel = exports.LinkRefactorPropertyIconAlign = exports.LinkRenamePropertyIconToIcons = exports.LinkRemovePropertyDisabled = exports.LinkRemovePropertyAriaSelected = exports.LinkRemovePropertyAriaLabel = exports.LinkRemovePropertyAriaExpanded = exports.LinkRenamePropertyAriaCurrentToListenAriaCurrent = exports.LinkRemovePropertyAriaControls = void 0;
4
4
  const RemovePropertyNameTask_1 = require("../common/RemovePropertyNameTask");
5
5
  const RenamePropertyNameTask_1 = require("../common/RenamePropertyNameTask");
6
+ const RefactorPropertyIconAlign_1 = require("../common/RefactorPropertyIconAlign");
6
7
  exports.LinkRemovePropertyAriaControls = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_aria-controls', '^1');
7
8
  exports.LinkRenamePropertyAriaCurrentToListenAriaCurrent = RenamePropertyNameTask_1.RenamePropertyNameTask.getInstance('kol-link', '_aria-current', '_listen-aria-current', '^1');
8
9
  exports.LinkRemovePropertyAriaExpanded = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_aria-expanded', '^1');
@@ -10,8 +11,7 @@ exports.LinkRemovePropertyAriaLabel = RemovePropertyNameTask_1.RemovePropertyNam
10
11
  exports.LinkRemovePropertyAriaSelected = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_aria-selected', '^1');
11
12
  exports.LinkRemovePropertyDisabled = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_disabled', '^1');
12
13
  exports.LinkRenamePropertyIconToIcons = RenamePropertyNameTask_1.RenamePropertyNameTask.getInstance('kol-link', '_icon', '_icons', '^1');
13
- // @todo: handle _icon-align in _icon
14
- exports.LinkRemovePropertyIconAlign = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_icon-align', '^1');
14
+ exports.LinkRefactorPropertyIconAlign = RefactorPropertyIconAlign_1.RefactorPropertyIconAlign.getInstance('kol-link');
15
15
  exports.LinkRenamePropertyIconOnlyToHideLabel = RenamePropertyNameTask_1.RenamePropertyNameTask.getInstance('kol-link', '_icon-only', '_hide-label', '^1');
16
16
  exports.LinkRemovePropertySelector = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_selector', '^1');
17
17
  exports.LinkRemovePropertyStealth = RemovePropertyNameTask_1.RemovePropertyNameTask.getInstance('kol-link', '_stealth', '^1');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@public-ui/kolibri-cli",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "license": "EUPL-1.2",
5
5
  "homepage": "https://public-ui.github.io",
6
6
  "repository": {
@@ -22,34 +22,34 @@
22
22
  "type": "commonjs",
23
23
  "dependencies": {
24
24
  "chalk": "4.1.2",
25
- "commander": "12.0.0",
25
+ "commander": "12.1.0",
26
26
  "deepmerge": "4.3.1",
27
27
  "gradient-string": "2.0.2",
28
28
  "loglevel": "1.9.1",
29
- "prettier": "3.2.5",
30
- "semver": "7.6.0"
29
+ "prettier": "3.3.1",
30
+ "semver": "7.6.2"
31
31
  },
32
32
  "devDependencies": {
33
- "@public-ui/components": "2.1.0",
34
33
  "@types/gradient-string": "1.1.6",
35
34
  "@types/node": "ts5.4",
36
- "@typescript-eslint/eslint-plugin": "7.7.1",
37
- "@typescript-eslint/parser": "7.7.1",
35
+ "@typescript-eslint/eslint-plugin": "7.12.0",
36
+ "@typescript-eslint/parser": "7.12.0",
38
37
  "cpy-cli": "5.0.0",
39
38
  "eslint": "8.57.0",
40
39
  "eslint-config-prettier": "9.1.0",
41
40
  "eslint-plugin-html": "8.1.1",
42
- "eslint-plugin-jsdoc": "48.2.3",
41
+ "eslint-plugin-jsdoc": "48.2.9",
43
42
  "eslint-plugin-json": "3.1.0",
44
43
  "eslint-plugin-jsx-a11y": "6.8.0",
45
44
  "eslint-plugin-no-loops": "0.3.0",
46
- "eslint-plugin-react": "7.34.1",
47
- "knip": "5.11.0",
45
+ "eslint-plugin-react": "7.34.2",
46
+ "knip": "5.18.2",
48
47
  "mocha": "10.4.0",
49
- "nodemon": "3.1.0",
50
- "rimraf": "5.0.5",
48
+ "nodemon": "3.1.3",
49
+ "rimraf": "5.0.7",
51
50
  "ts-node": "10.9.2",
52
- "typescript": "5.4.5"
51
+ "typescript": "5.4.5",
52
+ "@public-ui/components": "2.1.2"
53
53
  },
54
54
  "files": [
55
55
  "dist"