@coralogix/rum-cli 1.1.37 → 1.1.38
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
|
@@ -68,7 +68,6 @@ coralogix-rum-cli upload-proguard -k <privateKey> -a <application> -v <version>
|
|
|
68
68
|
- `-c, --commit-hash <commitHash>`: GitHub commit hash (optional).
|
|
69
69
|
- `-n, --repo-name <repoName>`: GitHub repository name (optional).
|
|
70
70
|
- `-o, --org-name <orgName>`: GitHub organization name (optional).
|
|
71
|
-
- `-g, --generate`: Update existing release or create a new one if not found (optional).
|
|
72
71
|
- `-h, --help`: Display help.
|
|
73
72
|
|
|
74
73
|
## Environments
|
|
@@ -17,7 +17,7 @@ class BaseService {
|
|
|
17
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
18
|
const request = blobset_service_1.UploadBlobRequest.create();
|
|
19
19
|
const api = this.getApi();
|
|
20
|
-
console.log(consts_1.GRAY_COLOR, `🚀 Uploading ${this.getLogPrefix()}
|
|
20
|
+
console.log(consts_1.GRAY_COLOR, `🚀 Uploading ${this.getLogPrefix()}... (${new Date().toUTCString()})`);
|
|
21
21
|
try {
|
|
22
22
|
yield this.getFileProcessorMethod()(folderPath, request, this.getFileExtension());
|
|
23
23
|
yield api.upload(request, application, version, repoName, commitHash, orgName, env, privateKey);
|
|
@@ -31,4 +31,4 @@ class BaseService {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.BaseService = BaseService;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc2VydmljZXMvYmFzZS9iYXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaUdBQWdHO0FBQ2hHLGdEQUE4RDtBQUc5RCxNQUFzQixXQUFXO0lBTXpCLE1BQU0sQ0FDVixXQUFtQixFQUNuQixPQUFlLEVBQ2YsUUFBNEIsRUFDNUIsVUFBOEIsRUFDOUIsT0FBMkIsRUFDM0IsVUFBa0IsRUFDbEIsR0FBVyxFQUNYLFVBQWtCOztZQUVsQixNQUFNLE9BQU8sR0FBc0IsbUNBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUQsTUFBTSxHQUFHLEdBQVksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRW5DLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQVUsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRWhHLElBQUk7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7Z0JBRWxGLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBRWhHLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsQ0FBQztnQkFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBVyxFQUFFLHdCQUF3QixDQUFDLENBQUM7YUFDcEQ7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxNQUFNLEtBQUssQ0FBQzthQUNiO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUFoQ0Qsa0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXBsb2FkQmxvYlJlcXVlc3QgfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2Jsb2JzZXRfc2VydmljZSc7XG5pbXBvcnQgeyBHUkFZX0NPTE9SLCBHUkVFTl9DT0xPUiB9IGZyb20gJy4uLy4uL2NvbnN0cy9jb25zdHMnO1xuaW1wb3J0IHsgQmFzZUFwaSB9IGZyb20gJy4uLy4uL2FwaS9iYXNlL2Jhc2UuYXBpJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEFwaSgpOiBCYXNlQXBpO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RmlsZVByb2Nlc3Nvck1ldGhvZCgpOiAocGF0aDogc3RyaW5nLCByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCwgZmlsZUV4dGVuc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TG9nUHJlZml4KCk6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpbGVFeHRlbnNpb24oKTogc3RyaW5nO1xuXG4gIGFzeW5jIHVwbG9hZChcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICByZXBvTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbW1pdEhhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBvcmdOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgZm9sZGVyUGF0aDogc3RyaW5nLFxuICAgIGVudjogc3RyaW5nLFxuICAgIHByaXZhdGVLZXk6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxdWVzdDogVXBsb2FkQmxvYlJlcXVlc3QgPSBVcGxvYWRCbG9iUmVxdWVzdC5jcmVhdGUoKTtcbiAgICBjb25zdCBhcGk6IEJhc2VBcGkgPSB0aGlzLmdldEFwaSgpO1xuXG4gICAgY29uc29sZS5sb2coR1JBWV9DT0xPUiwgYPCfmoAgVXBsb2FkaW5nICR7dGhpcy5nZXRMb2dQcmVmaXgoKX0uLi4gKCR7bmV3IERhdGUoKS50b1VUQ1N0cmluZygpfSlgKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmdldEZpbGVQcm9jZXNzb3JNZXRob2QoKShmb2xkZXJQYXRoLCByZXF1ZXN0LCB0aGlzLmdldEZpbGVFeHRlbnNpb24oKSk7XG5cbiAgICAgIGF3YWl0IGFwaS51cGxvYWQocmVxdWVzdCwgYXBwbGljYXRpb24sIHZlcnNpb24sIHJlcG9OYW1lLCBjb21taXRIYXNoLCBvcmdOYW1lLCBlbnYsIHByaXZhdGVLZXkpO1xuXG4gICAgICBjb25zb2xlLmxvZyhHUkVFTl9DT0xPUiwgYOKchSAke3RoaXMuZ2V0TG9nUHJlZml4KCl9IHVwbG9hZGVkIHN1Y2Nlc3NmdWxseSFgKTtcbiAgICAgIGNvbnNvbGUubG9nKEdSRUVOX0NPTE9SLCAn4pyFIFByb2Nlc3NpbmcgY29tcGxldGUuJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -31,6 +31,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
31
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
32
|
});
|
|
33
33
|
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
34
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
38
|
exports.FileProcessor = void 0;
|
|
36
39
|
const fs = __importStar(require("fs"));
|
|
@@ -38,6 +41,7 @@ const fs_1 = require("fs");
|
|
|
38
41
|
const path = __importStar(require("path"));
|
|
39
42
|
const shared_utils_1 = require("./shared.utils");
|
|
40
43
|
const zlib = __importStar(require("node:zlib"));
|
|
44
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
41
45
|
const { readdir, stat, readFile } = fs_1.promises;
|
|
42
46
|
class FileProcessor {
|
|
43
47
|
static traverseProguardFolder(proguardPath, request, fileExtension) {
|
|
@@ -109,17 +113,12 @@ class FileProcessor {
|
|
|
109
113
|
}
|
|
110
114
|
static traverse(folderPath, request, fileExtension) {
|
|
111
115
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return yield this.processSingleFile(folderPath, request, fileExtension);
|
|
116
|
-
}
|
|
117
|
-
else if (stats.isDirectory()) {
|
|
118
|
-
return yield this.processDirectory(folderPath, request, fileExtension);
|
|
119
|
-
}
|
|
116
|
+
const stats = yield stat(folderPath);
|
|
117
|
+
if (stats.isFile() && folderPath.endsWith(fileExtension)) {
|
|
118
|
+
return yield this.processSingleFile(folderPath, request, fileExtension);
|
|
120
119
|
}
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
else if (stats.isDirectory()) {
|
|
121
|
+
return yield this.processDirectory(folderPath, request, fileExtension);
|
|
123
122
|
}
|
|
124
123
|
});
|
|
125
124
|
}
|
|
@@ -151,7 +150,8 @@ class FileProcessor {
|
|
|
151
150
|
if (dirent.isFile() && dirent.name.endsWith(fileExtension)) {
|
|
152
151
|
const content = yield readFile(filePath);
|
|
153
152
|
const { name } = path.parse(filePath);
|
|
154
|
-
|
|
153
|
+
const { size } = yield stat(filePath);
|
|
154
|
+
fileDataList.push({ name, size, content: content.toString('base64') });
|
|
155
155
|
}
|
|
156
156
|
else if (dirent.isDirectory()) {
|
|
157
157
|
yield traverseDirectory(filePath);
|
|
@@ -159,6 +159,10 @@ class FileProcessor {
|
|
|
159
159
|
}
|
|
160
160
|
});
|
|
161
161
|
yield traverseDirectory(folderPath);
|
|
162
|
+
// Assert that at least one file was found
|
|
163
|
+
(0, node_assert_1.default)(fileDataList.length > 0, `No files with extension ${fileExtension} found in the directory: 📁 ${folderPath}`);
|
|
164
|
+
console.log(`Found ${fileDataList.length} ${fileExtension} files in ${folderPath} directory.`);
|
|
165
|
+
fileDataList.forEach(file => console.log(`⛶ ${file.name}, Size: ${file.size} bytes`));
|
|
162
166
|
const compressedContent = zlib.gzipSync(Buffer.from(JSON.stringify(fileDataList)));
|
|
163
167
|
request.data = new Uint8Array(compressedContent);
|
|
164
168
|
});
|
|
@@ -179,4 +183,4 @@ class FileProcessor {
|
|
|
179
183
|
}
|
|
180
184
|
}
|
|
181
185
|
exports.FileProcessor = FileProcessor;
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcm9jZXNzb3IudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91dGlscy9maWxlLXByb2Nlc3Nvci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQkFBb0Q7QUFDcEQsMkNBQTZCO0FBQzdCLGlEQUE4QztBQUU5QyxnREFBa0M7QUFFbEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBVSxDQUFDO0FBRS9DLE1BQWEsYUFBYTtJQUN4QixNQUFNLENBQU8sc0JBQXNCLENBQUMsWUFBb0IsRUFBRSxPQUEwQixFQUFFLGFBQXFCOztZQUN6RyxJQUFJO2dCQUNGLE1BQU0sY0FBYyxHQUFHLENBQU8sWUFBb0IsRUFBRSxFQUFFO29CQUNwRCxNQUFNLE9BQU8sR0FBRyxNQUFNLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNqRCxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ25ELENBQUMsQ0FBQSxDQUFDO2dCQUVGLDRDQUE0QztnQkFDNUMsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO29CQUN4QyxNQUFNLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDbkMsT0FBTztpQkFDUjtnQkFFRCxNQUFNLEtBQUssR0FBYSxNQUFNLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFN0UsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7b0JBQ3hCLE1BQU0sUUFBUSxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElB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QixDQUFDLENBQUM7UUFDbkQsQ0FBQztLQUFBO0lBRU8sTUFBTSxDQUFPLFlBQVksQ0FBQyxRQUFnQjs7WUFDaEQsTUFBTSxTQUFTLEdBQVcsMEJBQTBCLENBQUM7WUFDckQsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDMUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRDtpQkFBTTtnQkFDTCxJQUFBLDJCQUFZLEVBQUMsMERBQTBELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RixPQUFPLEVBQUUsQ0FBQzthQUNYO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUE5SUQsc0NBOElDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgRGlyZW50LCBwcm9taXNlcyBhcyBmc1Byb21pc2VzIH0gZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGNvbnNvbGVFcnJvciB9IGZyb20gJy4vc2hhcmVkLnV0aWxzJztcbmltcG9ydCB7IFVwbG9hZEJsb2JSZXF1ZXN0IH0gZnJvbSAnLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9ibG9ic2V0X3NlcnZpY2UnO1xuaW1wb3J0ICogYXMgemxpYiBmcm9tICdub2RlOnpsaWInO1xuXG5jb25zdCB7IHJlYWRkaXIsIHN0YXQsIHJlYWRGaWxlIH0gPSBmc1Byb21pc2VzO1xuXG5leHBvcnQgY2xhc3MgRmlsZVByb2Nlc3NvciB7XG4gIHN0YXRpYyBhc3luYyB0cmF2ZXJzZVByb2d1YXJkRm9sZGVyKHByb2d1YXJkUGF0aDogc3RyaW5nLCByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCwgZmlsZUV4dGVuc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2Nlc3NUeHRGaWxlID0gYXN5bmMgKHByb2d1YXJkRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwcm9ndWFyZEZpbGUpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkQ29udGVudCA9IHpsaWIuZ3ppcFN5bmMoY29udGVudCk7XG4gICAgICAgIHJlcXVlc3QuZGF0YSA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWRDb250ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb2xkZXIgaXRzZWxmIGlzIGEgLnR4dCBmaWxlXG4gICAgICBpZiAocHJvZ3VhcmRQYXRoLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGF3YWl0IHByb2Nlc3NUeHRGaWxlKHByb2d1YXJkUGF0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXM6IERpcmVudFtdID0gYXdhaXQgcmVhZGRpcihwcm9ndWFyZFBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4ocHJvZ3VhcmRQYXRoLCBmaWxlLm5hbWUpO1xuXG4gICAgICAgIGlmIChmaWxlLm5hbWUuZW5kc1dpdGgoJy50eHQnKSkge1xuICAgICAgICAgIGF3YWl0IHByb2Nlc3NUeHRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgRmlsZVByb2Nlc3Nvci50cmF2ZXJzZVByb2d1YXJkRm9sZGVyKGZpbGVQYXRoLCByZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlRXJyb3IoYEVycm9yIHRyYXZlcnNpbmcgZGlyZWN0b3J5OiAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdHJhdmVyc2VEc3ltRm9sZGVyKGRzeW1QYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJvY2Vzc0RzeW1Gb2xkZXIgPSBhc3luYyAoZHN5bUZvbGRlclBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBkd2FyZlBhdGggPSBhd2FpdCBGaWxlUHJvY2Vzc29yLmdldER3YXJmUGF0aChkc3ltRm9sZGVyUGF0aCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShkd2FyZlBhdGgpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkQ29udGVudCA9IHpsaWIuZ3ppcFN5bmMoY29udGVudCk7XG4gICAgICAgIHJlcXVlc3QuZGF0YSA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWRDb250ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb2xkZXIgaXRzZWxmIGlzIGEgLmRTWU0gZm9sZGVyXG4gICAgICBpZiAoZHN5bVBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgYXdhaXQgcHJvY2Vzc0RzeW1Gb2xkZXIoZHN5bVBhdGgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVzOiBEaXJlbnRbXSA9IGF3YWl0IHJlYWRkaXIoZHN5bVBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIC8vIFNraXAgLkRTX1N0b3JlIGFuZCBoaWRkZW4gZmlsZXNcbiAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gJy5EU19TdG9yZScgfHwgZmlsZS5uYW1lLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkc3ltUGF0aCwgZmlsZS5uYW1lKTtcblxuICAgICAgICBpZiAoZmlsZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZS5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc0RzeW1Gb2xkZXIoZmlsZVBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBGaWxlUHJvY2Vzc29yLnRyYXZlcnNlRHN5bUZvbGRlcihmaWxlUGF0aCwgcmVxdWVzdCwgZmlsZUV4dGVuc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGVFcnJvcihgRXJyb3IgdHJhdmVyc2luZyBkaXJlY3Rvcnk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB0cmF2ZXJzZShmb2xkZXJQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBzdGF0KGZvbGRlclBhdGgpO1xuXG4gICAgICBpZiAoc3RhdHMuaXNGaWxlKCkgJiYgZm9sZGVyUGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9jZXNzU2luZ2xlRmlsZShmb2xkZXJQYXRoLCByZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9jZXNzRGlyZWN0b3J5KGZvbGRlclBhdGgsIHJlcXVlc3QsIGZpbGVFeHRlbnNpb24pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlRXJyb3IoYEVycm9yIHRyYXZlcnNpbmcgZGlyZWN0b3J5OiAke2Vycm9yfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIHByb2Nlc3NTaW5nbGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFmaWxlUGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBjb25zb2xlRXJyb3IoYEZpbGUgJHtmaWxlUGF0aH0gZG9lcyBub3QgaGF2ZSB0aGUgY29ycmVjdCBleHRlbnNpb246ICR7ZmlsZUV4dGVuc2lvbn1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKTtcblxuICAgICAgY29uc3QgeyBuYW1lIH0gPSBwYXRoLnBhcnNlKGZpbGVQYXRoKTtcblxuICAgICAgY29uc3QgZmlsZURhdGEgPSB7IG5hbWUsIGNvbnRlbnQ6IGNvbnRlbnQudG9TdHJpbmcoJ2Jhc2U2NCcpIH07XG5cbiAgICAgIGNvbnN0IGNvbXByZXNzZWRDb250ZW50ID0gemxpYi5nemlwU3luYyhCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShbZmlsZURhdGFdKSkpO1xuXG4gICAgICByZXF1ZXN0LmRhdGEgPSBuZXcgVWludDhBcnJheShjb21wcmVzc2VkQ29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGVFcnJvcihgRXJyb3IgcHJvY2Vzc2luZyBmaWxlOiAke2Vycm9yfWApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcHJvY2Vzc0RpcmVjdG9yeShmb2xkZXJQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlRGF0YUxpc3Q6IHsgbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfVtdID0gW107XG5cbiAgICBjb25zdCB0cmF2ZXJzZURpcmVjdG9yeSA9IGFzeW5jIChjdXJyZW50UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHJlYWRkaXIoY3VycmVudFBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAgICAgZm9yIChjb25zdCBkaXJlbnQgb2YgZmlsZXMpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oY3VycmVudFBhdGgsIGRpcmVudC5uYW1lKTtcblxuICAgICAgICBpZiAoZGlyZW50LmlzRmlsZSgpICYmIGRpcmVudC5uYW1lLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHBhdGgucGFyc2UoZmlsZVBhdGgpO1xuICAgICAgICAgIGZpbGVEYXRhTGlzdC5wdXNoKHsgbmFtZSwgY29udGVudDogY29udGVudC50b1N0cmluZygnYmFzZTY0JykgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGlyZW50LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICBhd2FpdCB0cmF2ZXJzZURpcmVjdG9yeShmaWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgdHJhdmVyc2VEaXJlY3RvcnkoZm9sZGVyUGF0aCk7XG5cbiAgICBjb25zdCBjb21wcmVzc2VkQ29udGVudCA9IHpsaWIuZ3ppcFN5bmMoQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoZmlsZURhdGFMaXN0KSkpO1xuICAgIHJlcXVlc3QuZGF0YSA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWRDb250ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIGdldER3YXJmUGF0aChkc3ltUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkd2FyZlBhdGg6IHN0cmluZyA9ICdDb250ZW50cy9SZXNvdXJjZXMvRFdBUkYnO1xuICAgIGNvbnN0IHRhcmdldFBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkc3ltUGF0aCwgZHdhcmZQYXRoKTtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRhcmdldFBhdGgpO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBwYXRoLmpvaW4oZHN5bVBhdGgsIGR3YXJmUGF0aCwgZmlsZXNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlRXJyb3IoYEV4cGVjdGVkIGV4YWN0bHkgb25lIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSwgYnV0IGZvdW5kOiAke2ZpbGVzLmxlbmd0aH1gKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wcm9jZXNzb3IudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi91dGlscy9maWxlLXByb2Nlc3Nvci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQkFBb0Q7QUFDcEQsMkNBQTZCO0FBQzdCLGlEQUE4QztBQUU5QyxnREFBa0M7QUFDbEMsOERBQWlDO0FBR2pDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLGFBQVUsQ0FBQztBQUUvQyxNQUFhLGFBQWE7SUFDeEIsTUFBTSxDQUFPLHNCQUFzQixDQUFDLFlBQW9CLEVBQUUsT0FBMEIsRUFBRSxhQUFxQjs7WUFDekcsSUFBSTtnQkFDRixNQUFNLGNBQWMsR0FBRyxDQUFPLFlBQW9CLEVBQUUsRUFBRTtvQkFDcEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzdDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDakQsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDLENBQUEsQ0FBQztnQkFFRiw0Q0FBNEM7Z0JBQzVDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDeEMsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ25DLE9BQU87aUJBQ1I7Z0JBRUQsTUFBTSxLQUFLLEdBQWEsTUFBTSxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBRTdFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO29CQUN4QixNQUFNLFFBQVEsR0FBVyxJQUFJLENBQUMsSUFBSSxD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YUFBYSxVQUFVLGFBQWEsQ0FBQyxDQUFDO1lBQy9GLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxDQUFDO0tBQUE7SUFFTyxNQUFNLENBQU8sWUFBWSxDQUFDLFFBQWdCOztZQUNoRCxNQUFNLFNBQVMsR0FBVywwQkFBMEIsQ0FBQztZQUNyRCxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO2lCQUFNO2dCQUNMLElBQUEsMkJBQVksRUFBQywwREFBMEQsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3ZGLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDO0tBQUE7Q0FDRjtBQTlJRCxzQ0E4SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBEaXJlbnQsIHByb21pc2VzIGFzIGZzUHJvbWlzZXMgfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgY29uc29sZUVycm9yIH0gZnJvbSAnLi9zaGFyZWQudXRpbHMnO1xuaW1wb3J0IHsgVXBsb2FkQmxvYlJlcXVlc3QgfSBmcm9tICcuLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2Jsb2JzZXRfc2VydmljZSc7XG5pbXBvcnQgKiBhcyB6bGliIGZyb20gJ25vZGU6emxpYic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ25vZGU6YXNzZXJ0JztcblxuXG5jb25zdCB7IHJlYWRkaXIsIHN0YXQsIHJlYWRGaWxlIH0gPSBmc1Byb21pc2VzO1xuXG5leHBvcnQgY2xhc3MgRmlsZVByb2Nlc3NvciB7XG4gIHN0YXRpYyBhc3luYyB0cmF2ZXJzZVByb2d1YXJkRm9sZGVyKHByb2d1YXJkUGF0aDogc3RyaW5nLCByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCwgZmlsZUV4dGVuc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2Nlc3NUeHRGaWxlID0gYXN5bmMgKHByb2d1YXJkRmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwcm9ndWFyZEZpbGUpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkQ29udGVudCA9IHpsaWIuZ3ppcFN5bmMoY29udGVudCk7XG4gICAgICAgIHJlcXVlc3QuZGF0YSA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWRDb250ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb2xkZXIgaXRzZWxmIGlzIGEgLnR4dCBmaWxlXG4gICAgICBpZiAocHJvZ3VhcmRQYXRoLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGF3YWl0IHByb2Nlc3NUeHRGaWxlKHByb2d1YXJkUGF0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXM6IERpcmVudFtdID0gYXdhaXQgcmVhZGRpcihwcm9ndWFyZFBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4ocHJvZ3VhcmRQYXRoLCBmaWxlLm5hbWUpO1xuXG4gICAgICAgIGlmIChmaWxlLm5hbWUuZW5kc1dpdGgoJy50eHQnKSkge1xuICAgICAgICAgIGF3YWl0IHByb2Nlc3NUeHRGaWxlKGZpbGVQYXRoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgRmlsZVByb2Nlc3Nvci50cmF2ZXJzZVByb2d1YXJkRm9sZGVyKGZpbGVQYXRoLCByZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlRXJyb3IoYEVycm9yIHRyYXZlcnNpbmcgZGlyZWN0b3J5OiAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdHJhdmVyc2VEc3ltRm9sZGVyKGRzeW1QYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJvY2Vzc0RzeW1Gb2xkZXIgPSBhc3luYyAoZHN5bUZvbGRlclBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBkd2FyZlBhdGggPSBhd2FpdCBGaWxlUHJvY2Vzc29yLmdldER3YXJmUGF0aChkc3ltRm9sZGVyUGF0aCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShkd2FyZlBhdGgpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkQ29udGVudCA9IHpsaWIuZ3ppcFN5bmMoY29udGVudCk7XG4gICAgICAgIHJlcXVlc3QuZGF0YSA9IG5ldyBVaW50OEFycmF5KGNvbXByZXNzZWRDb250ZW50KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb2xkZXIgaXRzZWxmIGlzIGEgLmRTWU0gZm9sZGVyXG4gICAgICBpZiAoZHN5bVBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgYXdhaXQgcHJvY2Vzc0RzeW1Gb2xkZXIoZHN5bVBhdGgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVzOiBEaXJlbnRbXSA9IGF3YWl0IHJlYWRkaXIoZHN5bVBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KTtcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIC8vIFNraXAgLkRTX1N0b3JlIGFuZCBoaWRkZW4gZmlsZXNcbiAgICAgICAgaWYgKGZpbGUubmFtZSA9PT0gJy5EU19TdG9yZScgfHwgZmlsZS5uYW1lLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihkc3ltUGF0aCwgZmlsZS5uYW1lKTtcblxuICAgICAgICBpZiAoZmlsZS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgaWYgKGZpbGUubmFtZS5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc0RzeW1Gb2xkZXIoZmlsZVBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBGaWxlUHJvY2Vzc29yLnRyYXZlcnNlRHN5bUZvbGRlcihmaWxlUGF0aCwgcmVxdWVzdCwgZmlsZUV4dGVuc2lvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGVFcnJvcihgRXJyb3IgdHJhdmVyc2luZyBkaXJlY3Rvcnk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB0cmF2ZXJzZShmb2xkZXJQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXQoZm9sZGVyUGF0aCk7XG5cbiAgICBpZiAoc3RhdHMuaXNGaWxlKCkgJiYgZm9sZGVyUGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvY2Vzc1NpbmdsZUZpbGUoZm9sZGVyUGF0aCwgcmVxdWVzdCwgZmlsZUV4dGVuc2lvbik7XG4gICAgfSBlbHNlIGlmIChzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9jZXNzRGlyZWN0b3J5KGZvbGRlclBhdGgsIHJlcXVlc3QsIGZpbGVFeHRlbnNpb24pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIHByb2Nlc3NTaW5nbGVGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFmaWxlUGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBjb25zb2xlRXJyb3IoYEZpbGUgJHtmaWxlUGF0aH0gZG9lcyBub3QgaGF2ZSB0aGUgY29ycmVjdCBleHRlbnNpb246ICR7ZmlsZUV4dGVuc2lvbn1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKTtcblxuICAgICAgY29uc3QgeyBuYW1lIH0gPSBwYXRoLnBhcnNlKGZpbGVQYXRoKTtcblxuICAgICAgY29uc3QgZmlsZURhdGEgPSB7IG5hbWUsIGNvbnRlbnQ6IGNvbnRlbnQudG9TdHJpbmcoJ2Jhc2U2NCcpIH07XG5cbiAgICAgIGNvbnN0IGNvbXByZXNzZWRDb250ZW50ID0gemxpYi5nemlwU3luYyhCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShbZmlsZURhdGFdKSkpO1xuXG4gICAgICByZXF1ZXN0LmRhdGEgPSBuZXcgVWludDhBcnJheShjb21wcmVzc2VkQ29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGVFcnJvcihgRXJyb3IgcHJvY2Vzc2luZyBmaWxlOiAke2Vycm9yfWApO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcHJvY2Vzc0RpcmVjdG9yeShmb2xkZXJQYXRoOiBzdHJpbmcsIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LCBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlRGF0YUxpc3Q6IHsgbmFtZTogc3RyaW5nOyBzaXplOiBudW1iZXI7IGNvbnRlbnQ6IHN0cmluZyB9W10gPSBbXTtcblxuICAgIGNvbnN0IHRyYXZlcnNlRGlyZWN0b3J5ID0gYXN5bmMgKGN1cnJlbnRQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihjdXJyZW50UGF0aCwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IGRpcmVudCBvZiBmaWxlcykge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihjdXJyZW50UGF0aCwgZGlyZW50Lm5hbWUpO1xuXG4gICAgICAgIGlmIChkaXJlbnQuaXNGaWxlKCkgJiYgZGlyZW50Lm5hbWUuZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICAgIGNvbnN0IHsgbmFtZSB9ID0gcGF0aC5wYXJzZShmaWxlUGF0aCk7XG4gICAgICAgICAgY29uc3Qge3NpemV9ID0gYXdhaXQgc3RhdChmaWxlUGF0aCk7XG4gICAgICAgICAgZmlsZURhdGFMaXN0LnB1c2goeyBuYW1lLCBzaXplLCBjb250ZW50OiBjb250ZW50LnRvU3RyaW5nKCdiYXNlNjQnKSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkaXJlbnQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIGF3YWl0IHRyYXZlcnNlRGlyZWN0b3J5KGZpbGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCB0cmF2ZXJzZURpcmVjdG9yeShmb2xkZXJQYXRoKTtcbiAgICAvLyBBc3NlcnQgdGhhdCBhdCBsZWFzdCBvbmUgZmlsZSB3YXMgZm91bmRcbiAgICBhc3NlcnQoZmlsZURhdGFMaXN0Lmxlbmd0aCA+IDAsIGBObyBmaWxlcyB3aXRoIGV4dGVuc2lvbiAke2ZpbGVFeHRlbnNpb259IGZvdW5kIGluIHRoZSBkaXJlY3Rvcnk6IPCfk4EgJHtmb2xkZXJQYXRofWApO1xuICAgIGNvbnNvbGUubG9nKGBGb3VuZCAke2ZpbGVEYXRhTGlzdC5sZW5ndGh9ICR7ZmlsZUV4dGVuc2lvbn0gZmlsZXMgaW4gJHtmb2xkZXJQYXRofSBkaXJlY3RvcnkuYCk7XG4gICAgZmlsZURhdGFMaXN0LmZvckVhY2goZmlsZSA9PiBjb25zb2xlLmxvZyhg4pu2ICR7ZmlsZS5uYW1lfSwgU2l6ZTogJHtmaWxlLnNpemV9IGJ5dGVzYCkpO1xuICAgIGNvbnN0IGNvbXByZXNzZWRDb250ZW50ID0gemxpYi5nemlwU3luYyhCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShmaWxlRGF0YUxpc3QpKSk7XG4gICAgcmVxdWVzdC5kYXRhID0gbmV3IFVpbnQ4QXJyYXkoY29tcHJlc3NlZENvbnRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgZ2V0RHdhcmZQYXRoKGRzeW1QYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGR3YXJmUGF0aDogc3RyaW5nID0gJ0NvbnRlbnRzL1Jlc291cmNlcy9EV0FSRic7XG4gICAgY29uc3QgdGFyZ2V0UGF0aDogc3RyaW5nID0gcGF0aC5qb2luKGRzeW1QYXRoLCBkd2FyZlBhdGgpO1xuICAgIGNvbnN0IGZpbGVzID0gZnMucmVhZGRpclN5bmModGFyZ2V0UGF0aCk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHBhdGguam9pbihkc3ltUGF0aCwgZHdhcmZQYXRoLCBmaWxlc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGVFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSBvbmUgZmlsZSBpbiB0aGUgZGlyZWN0b3J5LCBidXQgZm91bmQ6ICR7ZmlsZXMubGVuZ3RofWApO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coralogix/rum-cli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.38",
|
|
4
4
|
"description": "coralogix rum cli",
|
|
5
5
|
"bin": {
|
|
6
6
|
"coralogix-rum-cli": "dist/cli/rum-cli.js"
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
"cx-protofetch": "0.1.11",
|
|
29
29
|
"google-proto-files": "^3.0.1",
|
|
30
30
|
"google-protobuf": "^3.19.3",
|
|
31
|
-
"protobufjs": "^7.2.4",
|
|
32
31
|
"grpc-tools": "^1.11.2",
|
|
33
32
|
"prettier": "^2.8.7",
|
|
34
|
-
"
|
|
33
|
+
"protobufjs": "^7.2.4",
|
|
34
|
+
"ts-node": "^10.6.0",
|
|
35
35
|
"ts-proto": "^1.104.0",
|
|
36
36
|
"typescript": "^4.9.5"
|
|
37
37
|
},
|
package/protoset.bin
CHANGED
|
Binary file
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { UploadBlobRequest } from '../../proto-models/com/coralogix/blobset/v2/blobset_service';
|
|
2
2
|
import { GRAY_COLOR, GREEN_COLOR } from '../../consts/consts';
|
|
3
|
-
import { consoleError } from '../../utils/shared.utils';
|
|
4
3
|
import { BaseApi } from '../../api/base/base.api';
|
|
5
4
|
|
|
6
5
|
export abstract class BaseService {
|
|
@@ -22,7 +21,7 @@ export abstract class BaseService {
|
|
|
22
21
|
const request: UploadBlobRequest = UploadBlobRequest.create();
|
|
23
22
|
const api: BaseApi = this.getApi();
|
|
24
23
|
|
|
25
|
-
console.log(GRAY_COLOR, `🚀 Uploading ${this.getLogPrefix()}
|
|
24
|
+
console.log(GRAY_COLOR, `🚀 Uploading ${this.getLogPrefix()}... (${new Date().toUTCString()})`);
|
|
26
25
|
|
|
27
26
|
try {
|
|
28
27
|
await this.getFileProcessorMethod()(folderPath, request, this.getFileExtension());
|
|
@@ -4,6 +4,8 @@ import * as path from 'path';
|
|
|
4
4
|
import { consoleError } from './shared.utils';
|
|
5
5
|
import { UploadBlobRequest } from '../proto-models/com/coralogix/blobset/v2/blobset_service';
|
|
6
6
|
import * as zlib from 'node:zlib';
|
|
7
|
+
import assert from 'node:assert';
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
const { readdir, stat, readFile } = fsPromises;
|
|
9
11
|
|
|
@@ -79,16 +81,12 @@ export class FileProcessor {
|
|
|
79
81
|
}
|
|
80
82
|
|
|
81
83
|
static async traverse(folderPath: string, request: UploadBlobRequest, fileExtension: string): Promise<void> {
|
|
82
|
-
|
|
83
|
-
const stats = await stat(folderPath);
|
|
84
|
+
const stats = await stat(folderPath);
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
} catch (error) {
|
|
91
|
-
consoleError(`Error traversing directory: ${error}`);
|
|
86
|
+
if (stats.isFile() && folderPath.endsWith(fileExtension)) {
|
|
87
|
+
return await this.processSingleFile(folderPath, request, fileExtension);
|
|
88
|
+
} else if (stats.isDirectory()) {
|
|
89
|
+
return await this.processDirectory(folderPath, request, fileExtension);
|
|
92
90
|
}
|
|
93
91
|
}
|
|
94
92
|
|
|
@@ -114,7 +112,7 @@ export class FileProcessor {
|
|
|
114
112
|
}
|
|
115
113
|
|
|
116
114
|
private static async processDirectory(folderPath: string, request: UploadBlobRequest, fileExtension: string): Promise<void> {
|
|
117
|
-
const fileDataList: { name: string; content: string }[] = [];
|
|
115
|
+
const fileDataList: { name: string; size: number; content: string }[] = [];
|
|
118
116
|
|
|
119
117
|
const traverseDirectory = async (currentPath: string): Promise<void> => {
|
|
120
118
|
const files = await readdir(currentPath, { withFileTypes: true });
|
|
@@ -125,7 +123,8 @@ export class FileProcessor {
|
|
|
125
123
|
if (dirent.isFile() && dirent.name.endsWith(fileExtension)) {
|
|
126
124
|
const content = await readFile(filePath);
|
|
127
125
|
const { name } = path.parse(filePath);
|
|
128
|
-
|
|
126
|
+
const {size} = await stat(filePath);
|
|
127
|
+
fileDataList.push({ name, size, content: content.toString('base64') });
|
|
129
128
|
} else if (dirent.isDirectory()) {
|
|
130
129
|
await traverseDirectory(filePath);
|
|
131
130
|
}
|
|
@@ -133,7 +132,10 @@ export class FileProcessor {
|
|
|
133
132
|
};
|
|
134
133
|
|
|
135
134
|
await traverseDirectory(folderPath);
|
|
136
|
-
|
|
135
|
+
// Assert that at least one file was found
|
|
136
|
+
assert(fileDataList.length > 0, `No files with extension ${fileExtension} found in the directory: 📁 ${folderPath}`);
|
|
137
|
+
console.log(`Found ${fileDataList.length} ${fileExtension} files in ${folderPath} directory.`);
|
|
138
|
+
fileDataList.forEach(file => console.log(`⛶ ${file.name}, Size: ${file.size} bytes`));
|
|
137
139
|
const compressedContent = zlib.gzipSync(Buffer.from(JSON.stringify(fileDataList)));
|
|
138
140
|
request.data = new Uint8Array(compressedContent);
|
|
139
141
|
}
|