sf-decomposer 5.3.3 → 5.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/lib/service/decomposeFileHandler.js +21 -23
- package/lib/service/decomposeFileHandler.js.map +1 -1
- package/lib/service/moveFiles.d.ts +1 -1
- package/lib/service/moveFiles.js +4 -4
- package/lib/service/moveFiles.js.map +1 -1
- package/lib/service/recomposeFileHandler.js +18 -17
- package/lib/service/recomposeFileHandler.js.map +1 -1
- package/lib/service/renameBotVersionFiles.d.ts +1 -1
- package/lib/service/renameBotVersionFiles.js +8 -7
- package/lib/service/renameBotVersionFiles.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## [5.3.4](https://github.com/mcarvin8/sf-decomposer/compare/v5.3.3...v5.3.4) (2025-01-21)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* set concurrency limit on parallel operations ([0ff717d](https://github.com/mcarvin8/sf-decomposer/commit/0ff717d84c2085d0c16bcf5efa92d6eb94c4df3e))
|
|
14
|
+
|
|
8
15
|
## [5.3.3](https://github.com/mcarvin8/sf-decomposer/compare/v5.3.2...v5.3.3) (2025-01-21)
|
|
9
16
|
|
|
10
17
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { resolve, relative, join } from 'node:path';
|
|
3
3
|
import { readdir, stat, rm, rename } from 'node:fs/promises';
|
|
4
|
-
import { DisassembleXMLFileHandler, setLogLevel } from 'xml-disassembler';
|
|
4
|
+
import { DisassembleXMLFileHandler, setLogLevel, withConcurrencyLimit, getConcurrencyThreshold, } from 'xml-disassembler';
|
|
5
5
|
import { XmlToYamlDisassembler } from 'xml2yaml-disassembler';
|
|
6
6
|
import { XmlToJsonDisassembler } from 'xml2json-disassembler';
|
|
7
7
|
import { CUSTOM_LABELS_FILE, WORKFLOW_SUFFIX_MAPPING } from '../helpers/constants.js';
|
|
@@ -10,27 +10,26 @@ export async function decomposeFileHandler(metaAttributes, prepurge, postpurge,
|
|
|
10
10
|
const { metadataPaths, metaSuffix, strictDirectoryName, folderType, uniqueIdElements } = metaAttributes;
|
|
11
11
|
if (debug)
|
|
12
12
|
setLogLevel('debug');
|
|
13
|
-
|
|
13
|
+
const concurrencyLimit = getConcurrencyThreshold();
|
|
14
|
+
await withConcurrencyLimit(metadataPaths.map((metadataPath) => async () => {
|
|
14
15
|
if (strictDirectoryName || folderType) {
|
|
15
|
-
await subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath);
|
|
16
|
+
await subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath, concurrencyLimit);
|
|
16
17
|
}
|
|
17
18
|
else if (metaSuffix === 'labels') {
|
|
18
|
-
// do not use the prePurge flag in the xml-disassembler package for labels due to file moving
|
|
19
19
|
if (prepurge)
|
|
20
|
-
await prePurgeLabels(metadataPath);
|
|
20
|
+
await prePurgeLabels(metadataPath, concurrencyLimit);
|
|
21
21
|
const absoluteLabelFilePath = resolve(metadataPath, CUSTOM_LABELS_FILE);
|
|
22
22
|
const relativeLabelFilePath = relative(process.cwd(), absoluteLabelFilePath);
|
|
23
23
|
await disassembleHandler(relativeLabelFilePath, uniqueIdElements, false, postpurge, format, ignorePath);
|
|
24
|
-
|
|
25
|
-
await moveAndRenameLabels(metadataPath, format);
|
|
24
|
+
await moveAndRenameLabels(metadataPath, format, concurrencyLimit);
|
|
26
25
|
}
|
|
27
26
|
else {
|
|
28
27
|
await disassembleHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath);
|
|
29
28
|
}
|
|
30
29
|
if (metaSuffix === 'workflow') {
|
|
31
|
-
await renameWorkflows(metadataPath);
|
|
30
|
+
await renameWorkflows(metadataPath, concurrencyLimit);
|
|
32
31
|
}
|
|
33
|
-
}));
|
|
32
|
+
}), concurrencyLimit);
|
|
34
33
|
}
|
|
35
34
|
async function disassembleHandler(filePath, uniqueIdElements, prePurge, postPurge, format, ignorePath) {
|
|
36
35
|
let handler;
|
|
@@ -51,43 +50,42 @@ async function disassembleHandler(filePath, uniqueIdElements, prePurge, postPurg
|
|
|
51
50
|
ignorePath,
|
|
52
51
|
});
|
|
53
52
|
}
|
|
54
|
-
async function prePurgeLabels(metadataPath) {
|
|
53
|
+
async function prePurgeLabels(metadataPath, concurrencyLimit) {
|
|
55
54
|
const subFiles = await readdir(metadataPath);
|
|
56
|
-
await
|
|
55
|
+
await withConcurrencyLimit(subFiles.map((subFile) => async () => {
|
|
57
56
|
const subfilePath = join(metadataPath, subFile);
|
|
58
57
|
if ((await stat(subfilePath)).isFile() && subFile !== CUSTOM_LABELS_FILE) {
|
|
59
58
|
await rm(subfilePath, { recursive: true });
|
|
60
59
|
}
|
|
61
|
-
}));
|
|
60
|
+
}), concurrencyLimit);
|
|
62
61
|
}
|
|
63
|
-
async function moveAndRenameLabels(metadataPath, format) {
|
|
62
|
+
async function moveAndRenameLabels(metadataPath, format, concurrencyLimit) {
|
|
64
63
|
const sourceDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
65
64
|
const destinationDirectory = metadataPath;
|
|
66
65
|
const labelFiles = await readdir(sourceDirectory);
|
|
67
|
-
await
|
|
66
|
+
await withConcurrencyLimit(labelFiles.map((file) => async () => {
|
|
68
67
|
if (file.endsWith(`.labels-meta.${format}`)) {
|
|
69
68
|
const oldFilePath = join(sourceDirectory, file);
|
|
70
69
|
const newFileName = file.replace(`.labels-meta.${format}`, `.label-meta.${format}`);
|
|
71
70
|
const newFilePath = join(destinationDirectory, newFileName);
|
|
72
71
|
await rename(oldFilePath, newFilePath);
|
|
73
72
|
}
|
|
74
|
-
}));
|
|
75
|
-
await moveFiles(sourceDirectory, destinationDirectory, () => true);
|
|
73
|
+
}), concurrencyLimit);
|
|
74
|
+
await moveFiles(sourceDirectory, destinationDirectory, concurrencyLimit, () => true);
|
|
76
75
|
await rm(join(metadataPath, 'CustomLabels'), { recursive: true });
|
|
77
76
|
}
|
|
78
|
-
async function subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath) {
|
|
77
|
+
async function subDirectoryHandler(metadataPath, uniqueIdElements, prepurge, postpurge, format, ignorePath, concurrencyLimit) {
|
|
79
78
|
const subFiles = await readdir(metadataPath);
|
|
80
|
-
await
|
|
79
|
+
await withConcurrencyLimit(subFiles.map((subFile) => async () => {
|
|
81
80
|
const subFilePath = join(metadataPath, subFile);
|
|
82
81
|
if ((await stat(subFilePath)).isDirectory()) {
|
|
83
82
|
await disassembleHandler(subFilePath, uniqueIdElements, prepurge, postpurge, format, ignorePath);
|
|
84
83
|
}
|
|
85
|
-
}));
|
|
84
|
+
}), concurrencyLimit);
|
|
86
85
|
}
|
|
87
|
-
async function renameWorkflows(directory) {
|
|
86
|
+
async function renameWorkflows(directory, concurrencyLimit) {
|
|
88
87
|
const files = await readdir(directory, { recursive: true });
|
|
89
|
-
await
|
|
90
|
-
// Check if the file matches any suffix in WORKFLOW_SUFFIX_MAPPING
|
|
88
|
+
await withConcurrencyLimit(files.map((file) => async () => {
|
|
91
89
|
for (const [suffix, newSuffix] of Object.entries(WORKFLOW_SUFFIX_MAPPING)) {
|
|
92
90
|
if (file.endsWith(suffix)) {
|
|
93
91
|
const oldFilePath = join(directory, file);
|
|
@@ -95,6 +93,6 @@ async function renameWorkflows(directory) {
|
|
|
95
93
|
return rename(oldFilePath, newFilePath);
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
|
-
}));
|
|
96
|
+
}), concurrencyLimit);
|
|
99
97
|
}
|
|
100
98
|
//# sourceMappingURL=decomposeFileHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/decomposeFileHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"decomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/decomposeFileHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function moveFiles(sourceDirectory: string, destinationDirectory: string, predicate: (fileName: string) => boolean): Promise<void>;
|
|
1
|
+
export declare function moveFiles(sourceDirectory: string, destinationDirectory: string, concurrencyLimit: number, predicate: (fileName: string) => boolean): Promise<void>;
|
package/lib/service/moveFiles.js
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import { readdir, stat } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { move } from 'fs-extra';
|
|
5
|
-
|
|
5
|
+
import { withConcurrencyLimit } from 'xml-disassembler';
|
|
6
|
+
export async function moveFiles(sourceDirectory, destinationDirectory, concurrencyLimit, predicate) {
|
|
6
7
|
const files = await readdir(sourceDirectory);
|
|
7
|
-
|
|
8
|
+
await withConcurrencyLimit(files.map((file) => async () => {
|
|
8
9
|
const sourceFile = join(sourceDirectory, file);
|
|
9
10
|
const fileStat = await stat(sourceFile);
|
|
10
11
|
if (fileStat.isFile() && predicate(file)) {
|
|
11
12
|
const destinationFile = join(destinationDirectory, file);
|
|
12
13
|
await move(sourceFile, destinationFile, { overwrite: true });
|
|
13
14
|
}
|
|
14
|
-
});
|
|
15
|
-
await Promise.all(moveFilePromises);
|
|
15
|
+
}), concurrencyLimit);
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=moveFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moveFiles.js","sourceRoot":"","sources":["../../src/service/moveFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"moveFiles.js","sourceRoot":"","sources":["../../src/service/moveFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,eAAuB,EACvB,oBAA4B,EAC5B,gBAAwB,EACxB,SAAwC;IAExC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7C,MAAM,oBAAoB,CACxB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC,EACF,gBAAgB,CACjB,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { readdir, stat, rm } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { ReassembleXMLFileHandler, setLogLevel } from 'xml-disassembler';
|
|
4
|
+
import { ReassembleXMLFileHandler, setLogLevel, withConcurrencyLimit, getConcurrencyThreshold } from 'xml-disassembler';
|
|
5
5
|
import { YamlToXmlReassembler } from 'xml2yaml-disassembler';
|
|
6
6
|
import { JsonToXmlReassembler } from 'xml2json-disassembler';
|
|
7
7
|
import { CUSTOM_LABELS_FILE } from '../helpers/constants.js';
|
|
@@ -11,18 +11,19 @@ export async function recomposeFileHandler(metaAttributes, postpurge, debug, for
|
|
|
11
11
|
const { metaSuffix, strictDirectoryName, folderType, metadataPaths } = metaAttributes;
|
|
12
12
|
if (debug)
|
|
13
13
|
setLogLevel('debug');
|
|
14
|
-
|
|
14
|
+
const concurrencyLimit = getConcurrencyThreshold();
|
|
15
|
+
await withConcurrencyLimit(metadataPaths.map((metadataPath) => async () => {
|
|
15
16
|
if (metaSuffix === 'labels') {
|
|
16
|
-
await reassembleLabels(metadataPath, metaSuffix, postpurge, format);
|
|
17
|
+
await reassembleLabels(metadataPath, metaSuffix, postpurge, format, concurrencyLimit);
|
|
17
18
|
}
|
|
18
19
|
else {
|
|
19
20
|
const recurse = strictDirectoryName || Boolean(folderType);
|
|
20
|
-
await reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format);
|
|
21
|
+
await reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format, concurrencyLimit);
|
|
21
22
|
}
|
|
22
23
|
if (metaSuffix === 'bot') {
|
|
23
|
-
await renameBotVersionFile(metadataPath);
|
|
24
|
+
await renameBotVersionFile(metadataPath, concurrencyLimit);
|
|
24
25
|
}
|
|
25
|
-
}));
|
|
26
|
+
}), concurrencyLimit);
|
|
26
27
|
}
|
|
27
28
|
async function reassembleHandler(filePath, fileExtension, postPurge, format) {
|
|
28
29
|
let handler;
|
|
@@ -41,40 +42,40 @@ async function reassembleHandler(filePath, fileExtension, postPurge, format) {
|
|
|
41
42
|
postPurge,
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
|
-
async function reassembleLabels(metadataPath, metaSuffix, postpurge, format) {
|
|
45
|
+
async function reassembleLabels(metadataPath, metaSuffix, postpurge, format, concurrencyLimit) {
|
|
45
46
|
let sourceDirectory = metadataPath;
|
|
46
47
|
let destinationDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
47
|
-
await moveFiles(sourceDirectory, destinationDirectory, (fileName) => fileName !== CUSTOM_LABELS_FILE);
|
|
48
|
+
await moveFiles(sourceDirectory, destinationDirectory, concurrencyLimit, (fileName) => fileName !== CUSTOM_LABELS_FILE);
|
|
48
49
|
await reassembleHandler(join(metadataPath, 'CustomLabels'), `${metaSuffix}-meta.xml`, false, format);
|
|
49
50
|
sourceDirectory = join(metadataPath, 'CustomLabels', 'labels');
|
|
50
51
|
destinationDirectory = metadataPath;
|
|
51
|
-
await moveFiles(sourceDirectory, destinationDirectory, () => true);
|
|
52
|
+
await moveFiles(sourceDirectory, destinationDirectory, concurrencyLimit, () => true);
|
|
52
53
|
await rm(join(metadataPath, 'CustomLabels'), { recursive: true });
|
|
53
54
|
if (postpurge)
|
|
54
|
-
await deleteFilesInDirectory(destinationDirectory);
|
|
55
|
+
await deleteFilesInDirectory(destinationDirectory, concurrencyLimit);
|
|
55
56
|
}
|
|
56
|
-
async function deleteFilesInDirectory(directory) {
|
|
57
|
+
async function deleteFilesInDirectory(directory, concurrencyLimit) {
|
|
57
58
|
const files = await readdir(directory);
|
|
58
|
-
await
|
|
59
|
+
await withConcurrencyLimit(files.map((file) => async () => {
|
|
59
60
|
const filePath = join(directory, file);
|
|
60
61
|
const fileStat = await stat(filePath);
|
|
61
62
|
if (fileStat.isFile() && file !== CUSTOM_LABELS_FILE) {
|
|
62
63
|
await rm(filePath);
|
|
63
64
|
}
|
|
64
|
-
}));
|
|
65
|
+
}), concurrencyLimit);
|
|
65
66
|
}
|
|
66
|
-
async function reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format) {
|
|
67
|
+
async function reassembleDirectories(metadataPath, metaSuffix, recurse, postpurge, format, concurrencyLimit) {
|
|
67
68
|
const subdirectories = (await readdir(metadataPath)).map((file) => join(metadataPath, file));
|
|
68
|
-
await
|
|
69
|
+
await withConcurrencyLimit(subdirectories.map((subdirectory) => async () => {
|
|
69
70
|
const subDirStat = await stat(subdirectory);
|
|
70
71
|
if (subDirStat.isDirectory()) {
|
|
71
72
|
if (recurse) {
|
|
72
|
-
await reassembleDirectories(subdirectory, metaSuffix, false, postpurge, format);
|
|
73
|
+
await reassembleDirectories(subdirectory, metaSuffix, false, postpurge, format, concurrencyLimit);
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
75
76
|
await reassembleHandler(subdirectory, `${metaSuffix}-meta.xml`, postpurge, format);
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
|
-
}));
|
|
79
|
+
}), concurrencyLimit);
|
|
79
80
|
}
|
|
80
81
|
//# sourceMappingURL=recomposeFileHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/recomposeFileHandler.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"recomposeFileHandler.js","sourceRoot":"","sources":["../../src/service/recomposeFileHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function renameBotVersionFile(metadataPath: string): Promise<void>;
|
|
1
|
+
export declare function renameBotVersionFile(metadataPath: string, concurrencyLimit: number): Promise<void>;
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
import { lstat, readdir, rename } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
|
|
4
|
+
import { withConcurrencyLimit } from 'xml-disassembler';
|
|
5
|
+
export async function renameBotVersionFile(metadataPath, concurrencyLimit) {
|
|
5
6
|
const subDirectories = await readdir(metadataPath);
|
|
6
|
-
// Process
|
|
7
|
-
await
|
|
7
|
+
// Process subdirectories with controlled concurrency
|
|
8
|
+
await withConcurrencyLimit(subDirectories.map((subDirectory) => async () => {
|
|
8
9
|
const subDirectoryPath = join(metadataPath, subDirectory);
|
|
9
10
|
const stats = await lstat(subDirectoryPath);
|
|
10
11
|
if (stats.isDirectory()) {
|
|
11
12
|
const files = await readdir(subDirectoryPath);
|
|
12
|
-
// Process
|
|
13
|
-
await
|
|
13
|
+
// Process files within the subdirectory with controlled concurrency
|
|
14
|
+
await withConcurrencyLimit(files.map((file) => async () => {
|
|
14
15
|
// Check if the bot meta file name contains "v" followed by a number
|
|
15
16
|
if (/v\d+\.bot-meta\.xml$/.test(file)) {
|
|
16
17
|
const sourcePath = join(subDirectoryPath, file);
|
|
17
18
|
const destinationPath = join(subDirectoryPath, file.replace('bot-meta.xml', 'botVersion-meta.xml'));
|
|
18
19
|
await rename(sourcePath, destinationPath);
|
|
19
20
|
}
|
|
20
|
-
}));
|
|
21
|
+
}), concurrencyLimit);
|
|
21
22
|
}
|
|
22
|
-
}));
|
|
23
|
+
}), concurrencyLimit);
|
|
23
24
|
}
|
|
24
25
|
//# sourceMappingURL=renameBotVersionFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renameBotVersionFiles.js","sourceRoot":"","sources":["../../src/service/renameBotVersionFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"renameBotVersionFiles.js","sourceRoot":"","sources":["../../src/service/renameBotVersionFiles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,YAAoB,EAAE,gBAAwB;IACvF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnD,qDAAqD;IACrD,MAAM,oBAAoB,CACxB,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;QAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAE9C,oEAAoE;YACpE,MAAM,oBAAoB,CACxB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;gBAC7B,oEAAoE;gBACpE,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;oBAChD,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;oBACpG,MAAM,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,EACF,gBAAgB,CACjB,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EACF,gBAAgB,CACjB,CAAC;AACJ,CAAC"}
|
package/oclif.manifest.json
CHANGED