@public-ui/kolibri-cli 4.0.0-alpha.0 → 4.0.0-alpha.10
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 +277 -64
- package/dist/generate-scss/index.js +18 -0
- package/dist/index.js +5 -5
- package/dist/info/index.js +19 -6
- package/dist/migrate/index.js +18 -3
- package/dist/migrate/runner/abstract-task.js +8 -2
- package/dist/migrate/runner/task-runner.js +18 -19
- package/dist/migrate/runner/tasks/common/ExecTask.js +1 -0
- package/dist/migrate/runner/tasks/common/GenericRenamePropertyTask.js +4 -0
- package/dist/migrate/runner/tasks/common/GenericRenameSlotNameTask.js +5 -0
- package/dist/migrate/runner/tasks/common/GenericRenameTagNameTask.js +5 -2
- package/dist/migrate/runner/tasks/common/GenericUpdatePropertyValueTask.js +62 -0
- package/dist/migrate/runner/tasks/common/GitIgnoreAddRuleTask.js +1 -0
- package/dist/migrate/runner/tasks/common/HandleDependencyTask.js +10 -8
- package/dist/migrate/runner/tasks/common/JsonTask.js +2 -1
- package/dist/migrate/runner/tasks/common/LabelExpertSlot.js +7 -0
- package/dist/migrate/runner/tasks/common/MergeHtmlTask.js +3 -0
- package/dist/migrate/runner/tasks/common/NpmRcAddRuleTask.js +1 -0
- package/dist/migrate/runner/tasks/common/RefactorPropertyErrorToMsg.js +59 -0
- package/dist/migrate/runner/tasks/common/RefactorPropertyIconAlign.js +4 -3
- package/dist/migrate/runner/tasks/common/RefactorPropertyLabelReplaceFalse.js +2 -2
- package/dist/migrate/runner/tasks/common/RemoveMsgPropsTask.js +54 -0
- package/dist/migrate/runner/tasks/common/RemovePropertyNameTask.js +6 -0
- package/dist/migrate/runner/tasks/common/RenamePropertyNameTask.js +1 -2
- package/dist/migrate/runner/tasks/common/RenameTagNameTask.js +1 -2
- package/dist/migrate/runner/tasks/common/ScssAddSelectorTask.js +203 -0
- package/dist/migrate/runner/tasks/common/ScssRemoveSelectorTask.js +275 -0
- package/dist/migrate/runner/tasks/common/ScssRenameBlockTask.js +43 -0
- package/dist/migrate/runner/tasks/common/ScssRenameElementTask.js +48 -0
- package/dist/migrate/runner/tasks/common/ScssRenameModifierTask.js +48 -0
- package/dist/migrate/runner/tasks/common/ScssUpdateTokenTask.js +51 -0
- package/dist/migrate/runner/tasks/common/TsConfigReconfigureTask.js +3 -1
- package/dist/migrate/runner/tasks/common/UpdatePropertyValueTask.js +14 -0
- package/dist/migrate/runner/tasks/common/VsCodeSettingsReconfigureTask.js +3 -1
- package/dist/migrate/runner/tasks/v1/button.js +1 -1
- package/dist/migrate/runner/tasks/v1/index.js +2 -2
- package/dist/migrate/runner/tasks/v1/input-email.js +1 -1
- package/dist/migrate/runner/tasks/v1/input-number.js +1 -1
- package/dist/migrate/runner/tasks/v1/input-password.js +1 -1
- package/dist/migrate/runner/tasks/v1/input-text.js +1 -1
- package/dist/migrate/runner/tasks/v1/link.js +1 -1
- package/dist/migrate/runner/tasks/v1/select.js +1 -1
- package/dist/migrate/runner/tasks/v3/abbr.js +5 -0
- package/dist/migrate/runner/tasks/v3/all-input.js +27 -0
- package/dist/migrate/runner/tasks/v3/index.js +17 -0
- package/dist/migrate/runner/tasks/v3/input-file.js +5 -0
- package/dist/migrate/runner/tasks/v3/modal.js +5 -0
- package/dist/migrate/runner/tasks/v3/textarea.js +6 -0
- package/dist/migrate/runner/tasks/v3/toaster.js +34 -0
- package/dist/migrate/runner/tasks/v4/id.js +26 -0
- package/dist/migrate/runner/tasks/v4/index.js +16 -0
- package/dist/migrate/runner/tasks/v4/link.js +66 -0
- package/dist/migrate/runner/tasks/v4/loader.js +36 -0
- package/dist/migrate/runner/tasks/v4/msg.js +5 -0
- package/dist/migrate/runner/tasks/v4/toast.js +56 -0
- package/dist/migrate/runner/tasks/v4/toaster.js +68 -0
- package/dist/migrate/shares/reuse.js +44 -1
- package/dist/types.js +5 -2
- package/package.json +27 -20
|
@@ -8,13 +8,20 @@ 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
|
+
identifier;
|
|
12
|
+
title;
|
|
13
|
+
extensions;
|
|
14
|
+
versionRange;
|
|
15
|
+
taskDependencies;
|
|
16
|
+
status = 'pending';
|
|
17
|
+
static instances = new Map();
|
|
18
|
+
description;
|
|
11
19
|
constructor(identifier, title, extensions, versionRange, taskDependencies = [], options = {}) {
|
|
12
20
|
this.identifier = identifier;
|
|
13
21
|
this.title = title;
|
|
14
22
|
this.extensions = extensions;
|
|
15
23
|
this.versionRange = versionRange;
|
|
16
24
|
this.taskDependencies = taskDependencies;
|
|
17
|
-
this.status = 'pending';
|
|
18
25
|
this.description = options.description;
|
|
19
26
|
this.extensions = this.extensions.filter((ext) => types_1.FILE_EXTENSIONS.includes(ext));
|
|
20
27
|
if (!semver_1.default.validRange(this.versionRange)) {
|
|
@@ -44,4 +51,3 @@ class AbstractTask {
|
|
|
44
51
|
}
|
|
45
52
|
}
|
|
46
53
|
exports.AbstractTask = AbstractTask;
|
|
47
|
-
AbstractTask.instances = new Map();
|
|
@@ -11,20 +11,20 @@ const semver_1 = __importDefault(require("semver"));
|
|
|
11
11
|
const reuse_1 = require("../shares/reuse");
|
|
12
12
|
const MIN_VERSION_OF_PUBLIC_UI = '1.4.2';
|
|
13
13
|
class TaskRunner {
|
|
14
|
+
tasks = new Map();
|
|
15
|
+
baseDir = '/';
|
|
16
|
+
cliVersion = '0.0.0';
|
|
17
|
+
projectVersion = '0.0.0';
|
|
18
|
+
config = {
|
|
19
|
+
migrate: {
|
|
20
|
+
tasks: {},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
14
23
|
constructor(baseDir, cliVersion, projectVersion, config) {
|
|
15
|
-
this.tasks = new Map();
|
|
16
|
-
this.baseDir = '/';
|
|
17
|
-
this.cliVersion = '0.0.0';
|
|
18
|
-
this.projectVersion = '0.0.0';
|
|
19
|
-
this.config = {
|
|
20
|
-
migrate: {
|
|
21
|
-
tasks: {},
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
24
|
this.setBaseDir(baseDir);
|
|
25
25
|
this.setCliVersion(cliVersion);
|
|
26
26
|
this.setProjectVersion(projectVersion);
|
|
27
|
-
this.setConfig(
|
|
27
|
+
this.setConfig({ ...config }); // clone config
|
|
28
28
|
}
|
|
29
29
|
setBaseDir(baseDir) {
|
|
30
30
|
if (!fs_1.default.existsSync(path_1.default.resolve(process.cwd(), baseDir))) {
|
|
@@ -47,9 +47,11 @@ class TaskRunner {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
setConfig(config) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
if (config.migrate?.tasks) {
|
|
51
|
+
this.config.migrate.tasks = {
|
|
52
|
+
...this.config.migrate.tasks,
|
|
53
|
+
...config.migrate?.tasks,
|
|
54
|
+
};
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
57
|
registerTasks(tasks) {
|
|
@@ -79,8 +81,7 @@ class TaskRunner {
|
|
|
79
81
|
this.registerTasks([task]);
|
|
80
82
|
}
|
|
81
83
|
runTask(task) {
|
|
82
|
-
|
|
83
|
-
if (((_a = this.config.migrate) === null || _a === void 0 ? void 0 : _a.tasks[task.getIdentifier()]) === false) {
|
|
84
|
+
if (this.config.migrate?.tasks[task.getIdentifier()] === false) {
|
|
84
85
|
task.setStatus('skipped');
|
|
85
86
|
}
|
|
86
87
|
else {
|
|
@@ -112,18 +113,16 @@ class TaskRunner {
|
|
|
112
113
|
});
|
|
113
114
|
}
|
|
114
115
|
getPendingMinVersion() {
|
|
115
|
-
var _a;
|
|
116
116
|
let version = this.cliVersion;
|
|
117
117
|
this.tasks.forEach((task) => {
|
|
118
|
-
var _a, _b;
|
|
119
118
|
if (task.getStatus() === 'pending') {
|
|
120
|
-
const minVersion =
|
|
119
|
+
const minVersion = semver_1.default.minVersion(task.getVersionRange())?.raw ?? this.cliVersion;
|
|
121
120
|
if (semver_1.default.gt(version, minVersion)) {
|
|
122
121
|
version = minVersion;
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
124
|
});
|
|
126
|
-
return
|
|
125
|
+
return semver_1.default.maxSatisfying([version], `>=${MIN_VERSION_OF_PUBLIC_UI}`) ?? MIN_VERSION_OF_PUBLIC_UI;
|
|
127
126
|
}
|
|
128
127
|
getStatus(outline = false) {
|
|
129
128
|
let done = 0;
|
|
@@ -4,6 +4,7 @@ exports.ExecTask = void 0;
|
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
5
|
const abstract_task_1 = require("../../abstract-task");
|
|
6
6
|
class ExecTask extends abstract_task_1.AbstractTask {
|
|
7
|
+
command;
|
|
7
8
|
constructor(identifier, title, command, versionRange, dependentTasks, options) {
|
|
8
9
|
super(identifier, title, [], versionRange, dependentTasks, options);
|
|
9
10
|
this.command = command;
|
|
@@ -11,6 +11,10 @@ const abstract_task_1 = require("../../abstract-task");
|
|
|
11
11
|
const DATA_REMOVED_REGEXP = /DataRemoved_/gi; // not /DataRemoved-_/g
|
|
12
12
|
const DATA_REMOVEDS_REGEXP = /(data-removed-){2,}/g;
|
|
13
13
|
class GenericRenamePropertyTask extends abstract_task_1.AbstractTask {
|
|
14
|
+
newProperty;
|
|
15
|
+
componentRegExp;
|
|
16
|
+
customElementRegExp;
|
|
17
|
+
newPropertyInCamelCase;
|
|
14
18
|
constructor(identifier, description, tag, oldProperty, newProperty, versionRange, dependentTasks = [], options = {}) {
|
|
15
19
|
super(identifier, description, types_1.MARKUP_EXTENSIONS, versionRange, dependentTasks, options);
|
|
16
20
|
this.newProperty = newProperty;
|
|
@@ -9,6 +9,11 @@ const types_1 = require("../../../../types");
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class GenericRenameSlotNameTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
newSlotName;
|
|
13
|
+
slotAttributeName;
|
|
14
|
+
regExpCurlyBrackets;
|
|
15
|
+
regExpQuotationMarks;
|
|
16
|
+
regExpCurlyBracketsAndQuotationMarks;
|
|
12
17
|
constructor(identifier, description, tag, oldSlotName, newSlotName, slotAttributeName, versionRange, dependentTasks, options) {
|
|
13
18
|
super(identifier, description, types_1.MARKUP_EXTENSIONS, versionRange, dependentTasks, options);
|
|
14
19
|
this.newSlotName = newSlotName;
|
|
@@ -9,6 +9,11 @@ const types_1 = require("../../../../types");
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class GenericRenameTagNameTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
newTagName;
|
|
13
|
+
componentRegExp;
|
|
14
|
+
componentImportRegExp;
|
|
15
|
+
customElementRegExp;
|
|
16
|
+
newTagNameInCamelCase;
|
|
12
17
|
constructor(identifier, description, oldTagName, newTagName, versionRange, dependentTasks = [], options = {}) {
|
|
13
18
|
super(identifier, description, types_1.MARKUP_EXTENSIONS, versionRange, dependentTasks, options);
|
|
14
19
|
this.newTagName = newTagName;
|
|
@@ -30,7 +35,6 @@ class GenericRenameTagNameTask extends abstract_task_1.AbstractTask {
|
|
|
30
35
|
transpileComponentFileRename(baseDir) {
|
|
31
36
|
(0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
|
|
32
37
|
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
33
|
-
console.log('CONTENT: ', content);
|
|
34
38
|
const newContent = content
|
|
35
39
|
// Replacements
|
|
36
40
|
.replace(this.componentRegExp, `$1${this.newTagNameInCamelCase}$2`)
|
|
@@ -39,7 +43,6 @@ class GenericRenameTagNameTask extends abstract_task_1.AbstractTask {
|
|
|
39
43
|
reuse_1.MODIFIED_FILES.add(file);
|
|
40
44
|
fs_1.default.writeFileSync(file, newContent);
|
|
41
45
|
}
|
|
42
|
-
console.log('NEW CONTENT: ', newContent);
|
|
43
46
|
});
|
|
44
47
|
}
|
|
45
48
|
transpileCustomElementFileRename(baseDir) {
|
|
@@ -0,0 +1,62 @@
|
|
|
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.GenericUpdatePropertyValueTask = 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 GenericUpdatePropertyValueTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
oldValue;
|
|
13
|
+
newValue;
|
|
14
|
+
componentRegExp;
|
|
15
|
+
customElementRegExp;
|
|
16
|
+
constructor(identifier, description, tag, property, oldValue, newValue, versionRange, dependentTasks = [], options = {}) {
|
|
17
|
+
super(identifier, description, types_1.MARKUP_EXTENSIONS, versionRange, dependentTasks, options);
|
|
18
|
+
this.oldValue = oldValue;
|
|
19
|
+
this.newValue = newValue;
|
|
20
|
+
if (!reuse_1.isTagKebabCaseRegExp.test(tag)) {
|
|
21
|
+
throw (0, reuse_1.logAndCreateError)(`Tag "${tag}" is not in kebab case.`);
|
|
22
|
+
}
|
|
23
|
+
if (!reuse_1.isPropertyKebabCaseRegExp.test(property)) {
|
|
24
|
+
throw (0, reuse_1.logAndCreateError)(`Property "${property}" is not in kebab case.`);
|
|
25
|
+
}
|
|
26
|
+
const propertyInCamelCase = (0, reuse_1.kebabToCamelCase)(property);
|
|
27
|
+
// Use propertyInCamelCase for Angular components
|
|
28
|
+
this.componentRegExp = new RegExp(`<${(0, reuse_1.kebabToCapitalCase)(tag)}[^>]+${propertyInCamelCase}=['"]${oldValue}['"]`, 'g');
|
|
29
|
+
// Use original property name for custom elements
|
|
30
|
+
this.customElementRegExp = new RegExp(`<${tag}[^>]+${property}=['"]${oldValue}['"]`, 'g');
|
|
31
|
+
}
|
|
32
|
+
run(baseDir) {
|
|
33
|
+
this.transpileComponentFileUpdate(baseDir);
|
|
34
|
+
this.transpileCustomElementFileUpdate(baseDir);
|
|
35
|
+
}
|
|
36
|
+
transpileComponentFileUpdate(baseDir) {
|
|
37
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
|
|
38
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
39
|
+
const newContent = updateAttributeValue(content, this.componentRegExp, this.oldValue, this.newValue);
|
|
40
|
+
if (content !== newContent) {
|
|
41
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
42
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
transpileCustomElementFileUpdate(baseDir) {
|
|
47
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.CUSTOM_ELEMENT_FILE_EXTENSIONS).forEach((file) => {
|
|
48
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
49
|
+
const newContent = updateAttributeValue(content, this.customElementRegExp, this.oldValue, this.newValue);
|
|
50
|
+
if (content !== newContent) {
|
|
51
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
52
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.GenericUpdatePropertyValueTask = GenericUpdatePropertyValueTask;
|
|
58
|
+
function updateAttributeValue(htmlString, tagRegExp, oldValue, newValue) {
|
|
59
|
+
return htmlString.replace(tagRegExp, (match) => {
|
|
60
|
+
return match.replace(`="${oldValue}"`, `="${newValue}"`).replace(`='${oldValue}'`, `='${newValue}'`);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -9,6 +9,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class GitIgnoreAddRuleTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
rule;
|
|
12
13
|
constructor(identifier, rule, versionRange, dependentTasks = [], options = {}) {
|
|
13
14
|
super(identifier, `Add the rule "${rule}" to the .gitignore of your project.`, [], versionRange, dependentTasks, options);
|
|
14
15
|
this.rule = rule;
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HandleDependencyTask = void 0;
|
|
4
4
|
const child_process_1 = require("child_process");
|
|
5
|
-
const abstract_task_1 = require("../../abstract-task");
|
|
6
5
|
const reuse_1 = require("../../../shares/reuse");
|
|
6
|
+
const abstract_task_1 = require("../../abstract-task");
|
|
7
7
|
class HandleDependencyTask extends abstract_task_1.AbstractTask {
|
|
8
|
+
command;
|
|
9
|
+
dependencies;
|
|
10
|
+
devDependencies;
|
|
8
11
|
constructor(identifier, title, command, dependencies, // Map<string, string | null>
|
|
9
12
|
devDependencies, // Map<string, string | null>
|
|
10
13
|
versionRange, dependentTasks, options) {
|
|
@@ -14,18 +17,17 @@ class HandleDependencyTask extends abstract_task_1.AbstractTask {
|
|
|
14
17
|
this.devDependencies = devDependencies;
|
|
15
18
|
}
|
|
16
19
|
static getInstance(command, dependencies, devDependencies, versionRange, dependentTasks = [], options = {}) {
|
|
17
|
-
const identifier = `${command}-${Object.keys(dependencies
|
|
18
|
-
const title = `${command === 'add' ? 'Add' : command === 'install' ? 'Install' : 'Remove'} dependency "${Object.keys(dependencies
|
|
20
|
+
const identifier = `${command}-${Object.keys(dependencies ?? {}).join(',')}-${Object.keys(devDependencies ?? {}).join(',')}`;
|
|
21
|
+
const title = `${command === 'add' ? 'Add' : command === 'install' ? 'Install' : 'Remove'} dependency "${Object.keys(dependencies ?? {}).join(', ')}" and devDependency "${Object.keys(devDependencies ?? {}).join(', ')}".`;
|
|
19
22
|
if (!this.instances.has(identifier)) {
|
|
20
23
|
this.instances.set(identifier, new HandleDependencyTask(identifier, title, command, dependencies, devDependencies, versionRange, dependentTasks, options));
|
|
21
24
|
}
|
|
22
25
|
return this.instances.get(identifier);
|
|
23
26
|
}
|
|
24
27
|
run() {
|
|
25
|
-
|
|
26
|
-
if (Object.keys((_a = this.dependencies) !== null && _a !== void 0 ? _a : {}).length > 0) {
|
|
28
|
+
if (Object.keys(this.dependencies ?? {}).length > 0) {
|
|
27
29
|
let command = `${(0, reuse_1.getPackageManagerCommand)(this.command)}`;
|
|
28
|
-
Object.keys(
|
|
30
|
+
Object.keys(this.dependencies ?? {}).forEach((dependency) => {
|
|
29
31
|
command += ` ${dependency}@${this.dependencies[dependency]}`;
|
|
30
32
|
});
|
|
31
33
|
try {
|
|
@@ -37,9 +39,9 @@ class HandleDependencyTask extends abstract_task_1.AbstractTask {
|
|
|
37
39
|
console.warn(error);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
|
-
if (Object.keys(
|
|
42
|
+
if (Object.keys(this.devDependencies ?? {}).length > 0) {
|
|
41
43
|
let command = `${(0, reuse_1.getPackageManagerCommand)(this.command)} -D`;
|
|
42
|
-
Object.keys(
|
|
44
|
+
Object.keys(this.devDependencies ?? {}).forEach((dependency) => {
|
|
43
45
|
command += ` ${dependency}`;
|
|
44
46
|
});
|
|
45
47
|
try {
|
|
@@ -10,6 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const reuse_1 = require("../../../shares/reuse");
|
|
11
11
|
const abstract_task_1 = require("../../abstract-task");
|
|
12
12
|
class JsonTask extends abstract_task_1.AbstractTask {
|
|
13
|
+
json;
|
|
13
14
|
constructor(identifier, key, json, versionRange, dependentTasks = [], options = {}) {
|
|
14
15
|
super(identifier, `Reconfigure "${key}" in package.json of your project.`, [], versionRange, dependentTasks, options);
|
|
15
16
|
this.json = json;
|
|
@@ -19,7 +20,7 @@ class JsonTask extends abstract_task_1.AbstractTask {
|
|
|
19
20
|
try {
|
|
20
21
|
JSON.stringify(json);
|
|
21
22
|
}
|
|
22
|
-
catch
|
|
23
|
+
catch {
|
|
23
24
|
throw (0, reuse_1.logAndCreateError)(`Value of task "${this.identifier}" is not able to stringify (JSON).`);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -12,6 +12,13 @@ const removeLineBreaksAndSpaces = (match) => {
|
|
|
12
12
|
return match.replace(/\r?\n/g, ' ').replace(/>\s+/g, '>').replace(/\s+</g, '<');
|
|
13
13
|
};
|
|
14
14
|
class LabelExpertSlot extends abstract_task_1.AbstractTask {
|
|
15
|
+
tag;
|
|
16
|
+
property;
|
|
17
|
+
componentRegExp;
|
|
18
|
+
componentNoLabelPropRegExp;
|
|
19
|
+
customElementRegExp;
|
|
20
|
+
customElementNoLabelPropRegExp;
|
|
21
|
+
propertyInCamelCase;
|
|
15
22
|
constructor(identifier, tag, property, versionRange, dependentTasks, options) {
|
|
16
23
|
super(identifier, `Move innerText of "${tag}" component to property "${property}"`, types_1.MARKUP_EXTENSIONS, versionRange, dependentTasks, options);
|
|
17
24
|
this.tag = tag;
|
|
@@ -8,6 +8,9 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const reuse_1 = require("../../../shares/reuse");
|
|
9
9
|
const abstract_task_1 = require("../../abstract-task");
|
|
10
10
|
class MergeHtmlTask extends abstract_task_1.AbstractTask {
|
|
11
|
+
path;
|
|
12
|
+
filename;
|
|
13
|
+
html;
|
|
11
14
|
constructor(identifier, title, path, filename, html, versionRange, dependentTasks, options) {
|
|
12
15
|
super(identifier, title, [], versionRange, dependentTasks, options);
|
|
13
16
|
this.path = path;
|
|
@@ -9,6 +9,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class NpmRcAddRuleTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
rule;
|
|
12
13
|
constructor(identifier, rule, versionRange, dependentTasks = [], options = {}) {
|
|
13
14
|
super(identifier, `Add the rule "${rule}" to the .npmrc of your project.`, [], versionRange, dependentTasks, options);
|
|
14
15
|
this.rule = rule;
|
|
@@ -0,0 +1,59 @@
|
|
|
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.RefactorPropertyErrorToMsg = 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 RefactorPropertyErrorToMsg extends abstract_task_1.AbstractTask {
|
|
12
|
+
componentRegExpCurlyBrackets;
|
|
13
|
+
componentRegExpQuotationMarks;
|
|
14
|
+
customElementRegExpQuotationMarks;
|
|
15
|
+
constructor(identifier, tag, versionRange) {
|
|
16
|
+
super(identifier, `Refactor property "_error" to "_msg" of "${tag}" component`, types_1.MARKUP_EXTENSIONS, versionRange);
|
|
17
|
+
if (!reuse_1.isTagKebabCaseRegExp.test(tag)) {
|
|
18
|
+
throw (0, reuse_1.logAndCreateError)(`Tag "${tag}" is not in kebab case.`);
|
|
19
|
+
}
|
|
20
|
+
const tagCapitalCase = (0, reuse_1.kebabToCapitalCase)(tag);
|
|
21
|
+
this.componentRegExpCurlyBrackets = new RegExp(`(<${tagCapitalCase}[^>]+)_error=\\{([^\\}]+)\\}`, 'g');
|
|
22
|
+
this.componentRegExpQuotationMarks = new RegExp(`(<${tagCapitalCase}[^>]+)_error="([^"]+)"`, 'g');
|
|
23
|
+
this.customElementRegExpQuotationMarks = new RegExp(`(<${tag}[^>]+)_error="([^"]+)"`, 'g');
|
|
24
|
+
}
|
|
25
|
+
static getInstance(tag, versionRange) {
|
|
26
|
+
const identifier = `${tag}-refactor-property-error-to-msg`;
|
|
27
|
+
if (!this.instances.has(identifier)) {
|
|
28
|
+
this.instances.set(identifier, new RefactorPropertyErrorToMsg(identifier, tag, versionRange));
|
|
29
|
+
}
|
|
30
|
+
return this.instances.get(identifier);
|
|
31
|
+
}
|
|
32
|
+
run(baseDir) {
|
|
33
|
+
this.transpileComponentFiles(baseDir);
|
|
34
|
+
this.transpileCustomElementFiles(baseDir);
|
|
35
|
+
}
|
|
36
|
+
transpileComponentFiles(baseDir) {
|
|
37
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.COMPONENT_FILE_EXTENSIONS).forEach((file) => {
|
|
38
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
39
|
+
const newContent = content
|
|
40
|
+
.replace(this.componentRegExpCurlyBrackets, `$1_msg={{ _type: 'error', _description: $2 }}`)
|
|
41
|
+
.replace(this.componentRegExpQuotationMarks, `$1_msg={{ _type: 'error', _description: '$2' }}`);
|
|
42
|
+
if (content !== newContent) {
|
|
43
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
44
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
transpileCustomElementFiles(baseDir) {
|
|
49
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.CUSTOM_ELEMENT_FILE_EXTENSIONS).forEach((file) => {
|
|
50
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
51
|
+
const newContent = content.replace(this.customElementRegExpQuotationMarks, `$1_msg='${JSON.stringify({ _type: 'error', _description: '$2' })}'`);
|
|
52
|
+
if (content !== newContent) {
|
|
53
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
54
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.RefactorPropertyErrorToMsg = RefactorPropertyErrorToMsg;
|
|
@@ -9,6 +9,7 @@ const types_1 = require("../../../../types");
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class RefactorPropertyIconAlign extends abstract_task_1.AbstractTask {
|
|
12
|
+
tag;
|
|
12
13
|
constructor(tag) {
|
|
13
14
|
super(`refactor-property-icon-align`, `Refactor property "_icon-align" - integrate in "_icons" property`, types_1.MARKUP_EXTENSIONS, '^2'); //fixme revert version
|
|
14
15
|
this.tag = tag;
|
|
@@ -53,11 +54,11 @@ class RefactorPropertyIconAlign extends abstract_task_1.AbstractTask {
|
|
|
53
54
|
const iconAlignMatches = componentTag.match(iconAlignRegex);
|
|
54
55
|
const iconsMatches = componentTag.match(iconsRegex);
|
|
55
56
|
// Make sure icons and iconAlign are valid
|
|
56
|
-
if (
|
|
57
|
+
if (iconAlignMatches?.[1] && iconsMatches?.[1]) {
|
|
57
58
|
// Replace icons and iconAlign with one joined object
|
|
58
59
|
const newIcons = isComponent
|
|
59
|
-
? `_icons={{ '${iconAlignMatches
|
|
60
|
-
: `_icons="{ '${iconAlignMatches
|
|
60
|
+
? `_icons={{ '${iconAlignMatches?.[1]}': '${iconsMatches?.[1]}' }}`
|
|
61
|
+
: `_icons="{ '${iconAlignMatches?.[1]}': '${iconsMatches?.[1]}' }"`;
|
|
61
62
|
return componentTag.replace(iconAlignRegex, '').replace(iconsRegex, newIcons);
|
|
62
63
|
}
|
|
63
64
|
return componentTag;
|
|
@@ -9,10 +9,10 @@ const types_1 = require("../../../../types");
|
|
|
9
9
|
const reuse_1 = require("../../../shares/reuse");
|
|
10
10
|
const abstract_task_1 = require("../../abstract-task");
|
|
11
11
|
class RefactorPropertyLabelReplaceFalse extends abstract_task_1.AbstractTask {
|
|
12
|
+
componentRegExp = /_label={false}/g;
|
|
13
|
+
customElementRegExp = /_label="false"/g;
|
|
12
14
|
constructor() {
|
|
13
15
|
super(`refactor-property-label-replace-false`, `Refactor property "_label" - replace "false" with ""`, types_1.MARKUP_EXTENSIONS, '>=1.6 <=1.7');
|
|
14
|
-
this.componentRegExp = /_label={false}/g;
|
|
15
|
-
this.customElementRegExp = /_label="false"/g;
|
|
16
16
|
}
|
|
17
17
|
static getInstance() {
|
|
18
18
|
const identifier = `refact-property-label-replace-false`;
|
|
@@ -0,0 +1,54 @@
|
|
|
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.RemoveMsgPropsTask = 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 RemoveMsgPropsTask extends abstract_task_1.AbstractTask {
|
|
12
|
+
constructor(identifier, versionRange) {
|
|
13
|
+
super(identifier, 'Remove _label and _variant from _msg', types_1.MARKUP_EXTENSIONS, versionRange);
|
|
14
|
+
}
|
|
15
|
+
static getInstance(versionRange) {
|
|
16
|
+
const identifier = 'remove-msg-props';
|
|
17
|
+
if (!this.instances.has(identifier)) {
|
|
18
|
+
this.instances.set(identifier, new RemoveMsgPropsTask(identifier, versionRange));
|
|
19
|
+
}
|
|
20
|
+
return this.instances.get(identifier);
|
|
21
|
+
}
|
|
22
|
+
run(baseDir) {
|
|
23
|
+
(0, reuse_1.filterFilesByExt)(baseDir, types_1.MARKUP_EXTENSIONS).forEach((file) => {
|
|
24
|
+
const content = fs_1.default.readFileSync(file, 'utf8');
|
|
25
|
+
let newContent = content;
|
|
26
|
+
newContent = newContent.replace(/_msg=\{\{([\s\S]*?)\}\}/g, (_match, body) => {
|
|
27
|
+
const updated = String(body)
|
|
28
|
+
.replace(/,?\s*_label:\s*[^,}]+/g, '')
|
|
29
|
+
.replace(/,?\s*_variant:\s*[^,}]+/g, '')
|
|
30
|
+
.replace(/,\s*}/g, ' }')
|
|
31
|
+
.replace(/\{\s*,/g, '{ ');
|
|
32
|
+
return `_msg={{${updated}}}`;
|
|
33
|
+
});
|
|
34
|
+
newContent = newContent.replace(/_msg=('([^']*)'|"([^"]*)")/g, (match, _p0, single, dbl) => {
|
|
35
|
+
const quote = single !== undefined ? "'" : '"';
|
|
36
|
+
const json = single ?? dbl;
|
|
37
|
+
try {
|
|
38
|
+
const obj = JSON.parse(json);
|
|
39
|
+
delete obj._label;
|
|
40
|
+
delete obj._variant;
|
|
41
|
+
return `_msg=${quote}${JSON.stringify(obj)}${quote}`;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return match;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
if (content !== newContent) {
|
|
48
|
+
fs_1.default.writeFileSync(file, newContent);
|
|
49
|
+
reuse_1.MODIFIED_FILES.add(file);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.RemoveMsgPropsTask = RemoveMsgPropsTask;
|
|
@@ -10,6 +10,12 @@ const reuse_1 = require("../../../shares/reuse");
|
|
|
10
10
|
const GenericRenamePropertyTask_1 = require("./GenericRenamePropertyTask");
|
|
11
11
|
const DATA_REMOVED_REGEXP = /data-removed-/g;
|
|
12
12
|
class RemovePropertyNameTask extends GenericRenamePropertyTask_1.GenericRenamePropertyTask {
|
|
13
|
+
componentRegExpBoolean;
|
|
14
|
+
componentRegExpCurlyBrackets;
|
|
15
|
+
componentRegExpQuotationMarks;
|
|
16
|
+
customElementRegExpBoolean;
|
|
17
|
+
customElementRegExpCurlyBrackets;
|
|
18
|
+
customElementRegExpQuotationMarks;
|
|
13
19
|
constructor(identifier, tag, property, versionRange, dependentTasks, options) {
|
|
14
20
|
super(identifier, `Remove property "${property}" of "${tag}" component`, tag, property, `data-removed-${property}`, versionRange, dependentTasks, options);
|
|
15
21
|
if (!reuse_1.isTagKebabCaseRegExp.test(tag)) {
|
|
@@ -4,10 +4,9 @@ exports.RenamePropertyNameTask = void 0;
|
|
|
4
4
|
const GenericRenamePropertyTask_1 = require("./GenericRenamePropertyTask");
|
|
5
5
|
class RenamePropertyNameTask extends GenericRenamePropertyTask_1.GenericRenamePropertyTask {
|
|
6
6
|
static getInstance(tag, oldProperty, newProperty, versionRange, dependentTasks = [], options = {}) {
|
|
7
|
-
var _a;
|
|
8
7
|
const identifier = `${tag}-rename-property-${oldProperty}-to-${newProperty}`;
|
|
9
8
|
if (!this.instances.has(identifier)) {
|
|
10
|
-
|
|
9
|
+
this.instances?.set(identifier, new RenamePropertyNameTask(identifier, `Rename property "${oldProperty}" to "${newProperty}" of "${tag}" component`, tag, oldProperty, newProperty, versionRange, dependentTasks, options));
|
|
11
10
|
}
|
|
12
11
|
return this.instances.get(identifier);
|
|
13
12
|
}
|
|
@@ -4,10 +4,9 @@ exports.RenameTagNameTask = void 0;
|
|
|
4
4
|
const GenericRenameTagNameTask_1 = require("./GenericRenameTagNameTask");
|
|
5
5
|
class RenameTagNameTask extends GenericRenameTagNameTask_1.GenericRenameTagNameTask {
|
|
6
6
|
static getInstance(oldTagName, newTagName, versionRange, dependentTasks = [], options = {}) {
|
|
7
|
-
var _a;
|
|
8
7
|
const identifier = `rename-tag-name-${oldTagName}-to-${newTagName}`;
|
|
9
8
|
if (!this.instances.has(identifier)) {
|
|
10
|
-
|
|
9
|
+
this.instances?.set(identifier, new RenameTagNameTask(identifier, `Rename tag name "${oldTagName}" to "${newTagName}" component`, oldTagName, newTagName, versionRange, dependentTasks, options));
|
|
11
10
|
}
|
|
12
11
|
return this.instances.get(identifier);
|
|
13
12
|
}
|