@coralogix/rum-cli 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +50 -17
  2. package/api/rum-api.ts +50 -51
  3. package/cli/rum-cli.ts +41 -72
  4. package/cli/theme/index.ts +5 -0
  5. package/cli/validators/index.ts +14 -0
  6. package/dist/api/rum-api.d.ts +5 -2
  7. package/dist/api/rum-api.js +41 -36
  8. package/dist/cli/rum-cli.d.ts +1 -2
  9. package/dist/cli/rum-cli.js +24 -45
  10. package/dist/cli/theme/index.d.ts +3 -0
  11. package/dist/cli/theme/index.js +7 -0
  12. package/dist/cli/validators/index.d.ts +1 -0
  13. package/dist/cli/validators/index.js +16 -0
  14. package/dist/model/cli.model.js +1 -3
  15. package/dist/proto-models/com/coralogix/rum/v2/audit_log.js +62 -0
  16. package/dist/proto-models/com/coralogix/rum/v2/chunk.js +330 -0
  17. package/dist/proto-models/com/coralogix/rum/v2/file.js +140 -0
  18. package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +233 -0
  19. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +181 -0
  20. package/dist/proto-models/com/coralogix/rum/v2/source_code_file_mapping.js +277 -0
  21. package/dist/proto-models/google/protobuf/descriptor.js +3612 -0
  22. package/dist/services/source-maps/source-maps.service.d.ts +3 -0
  23. package/dist/services/source-maps/source-maps.service.js +42 -0
  24. package/dist/services/source-maps/utils/traverse-folder.util.d.ts +2 -0
  25. package/dist/services/source-maps/utils/traverse-folder.util.js +42 -0
  26. package/generate-protos.sh +3 -3
  27. package/model/cli.model.ts +0 -2
  28. package/package.json +4 -4
  29. package/services/source-maps/source-maps.service.ts +31 -0
  30. package/{cli → services/source-maps}/utils/traverse-folder.util.ts +2 -2
  31. package/dist/cli/utils/traverse-folder.util.d.ts +0 -2
  32. package/dist/cli/utils/traverse-folder.util.js +0 -42
  33. package/dist/src/app/proto-models/com/coralogix/rum/v2/audit_log.js +0 -62
  34. package/dist/src/app/proto-models/com/coralogix/rum/v2/chunk.js +0 -330
  35. package/dist/src/app/proto-models/com/coralogix/rum/v2/file.js +0 -140
  36. package/dist/src/app/proto-models/com/coralogix/rum/v2/rum_service.js +0 -233
  37. package/dist/src/app/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +0 -181
  38. package/dist/src/app/proto-models/com/coralogix/rum/v2/source_code_file_mapping.js +0 -277
  39. package/dist/src/app/proto-models/google/protobuf/descriptor.js +0 -3612
  40. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/audit_log.d.ts +0 -0
  41. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/chunk.d.ts +0 -0
  42. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/file.d.ts +0 -0
  43. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/rum_service.d.ts +0 -0
  44. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/rum_source_map_service.d.ts +0 -0
  45. /package/dist/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/source_code_file_mapping.d.ts +0 -0
  46. /package/dist/{src/app/proto-models → proto-models}/google/protobuf/descriptor.d.ts +0 -0
  47. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/audit_log.ts +0 -0
  48. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/chunk.ts +0 -0
  49. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/file.ts +0 -0
  50. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/rum_service.ts +0 -0
  51. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/rum_source_map_service.ts +0 -0
  52. /package/{src/app/proto-models → proto-models}/com/coralogix/rum/v2/source_code_file_mapping.ts +0 -0
  53. /package/{src/app/proto-models → proto-models}/google/protobuf/descriptor.ts +0 -0
package/README.md CHANGED
@@ -1,7 +1,13 @@
1
- # Coralogix RUM CLI
1
+ # Official Coralogix RUM CLI
2
2
 
3
3
  The Coralogix RUM CLI is a command-line interface tool that simplifies the process of uploading source maps for your applications to the Coralogix RUM service. This CLI tool provides an easy and efficient way to authenticate with the Coralogix API, specify the application and release information, and traverse a folder to upload the relevant source map files.
4
4
 
5
+ [![npm version](https://img.shields.io/npm/v/@coralogix/browser.svg)](https://www.npmjs.com/package/@coralogix/browser)
6
+
7
+ ## Links
8
+
9
+ - [Coralogix Real User Monitoring](https://coralogix.com/docs/real-user-monitoring/)
10
+
5
11
  ## Installation
6
12
 
7
13
  To install the Coralogix RUM CLI, follow these steps:
@@ -10,9 +16,21 @@ To install the Coralogix RUM CLI, follow these steps:
10
16
  2. Run the following command to install the CLI globally: `npm install -g coralogix-rum-cli`
11
17
  3. Once the installation is complete, you can use the CLI by running the `coralogix-rum-cli` command in your terminal.
12
18
 
13
- ## Usage
19
+ ## Examples
20
+
21
+ Here are some examples of how to use the Coralogix RUM CLI:
22
+
23
+ 1. Upload source maps:
24
+
25
+ - `coralogix-rum-cli upload-source-maps -k <privateKey> -a <application> -r <releaseId> -f <folderPath> -e <env> -c <commitHash> -n <repoName> -o <orgName>`
26
+
27
+ 2. Display help:
14
28
 
15
- The Coralogix RUM CLI supports the following options:
29
+ - `coralogix-rum-cli upload-source-maps --help`
30
+
31
+ ## Uplaod source maps
32
+
33
+ To uplaod source maps support the following options:
16
34
 
17
35
  - `-k, --private-key <privateKey>`: Private key to authenticate with the Coralogix API.
18
36
  - `-a, --application <application>`: Name of the application.
@@ -21,37 +39,52 @@ The Coralogix RUM CLI supports the following options:
21
39
  - `-e, --env <env>`: Your environment.
22
40
  - `-c, --commit-hash <commitHash>`: GitHub commit hash (optional).
23
41
  - `-n, --repo-name <repoName>`: GitHub repository name (optional).
24
- - `-u, --user <user>`: GitHub user name (optional).
42
+ - `-o, --org-name <orgName>`: GitHub organization name (optional).
25
43
  - `-h, --help`: Display help.
26
44
 
27
45
  To use the CLI, execute the following command:
28
46
 
47
+ ## Uploading Source Maps Using a Script
29
48
 
30
- If any of the required arguments are missing, the CLI will display an error message and exit.
49
+ To simplify the process of uploading source maps using the Coralogix RUM CLI, you can create a bash script that automates the task. Follow these steps to set up the script:
31
50
 
32
- ## Examples
51
+ 1. Create a new file named `upload-source-maps.sh` and open it for editing.
33
52
 
34
- Here are some examples of how to use the Coralogix RUM CLI:
53
+ 2. Copy and paste the following script into the file, replacing the placeholder values with your actual information:
35
54
 
36
- 1. Upload source maps:
55
+ ```bash
56
+ #! /usr/bin/env bash
37
57
 
38
- - `coralogix-rum-cli -k <privateKey> -a <application> -r <releaseId> -f <folderPath> -e <env> -c <commitHash> -n <repoName> -u <user>`
58
+ # Replace these values with your actual information
59
+ REPO_NAME="your-repo-name"
60
+ ORG_NAME="your-github-username"
61
+ APPLICATION="your-application-name"
62
+ ENV="your-environment"
63
+ SOURCE_MAPS_PATH="your-source-maps-path"
64
+ PRIVATE_KEY="your-coralogix-private-key"
39
65
 
40
- 2. Display help:
66
+ # Get the commit hash using git rev-parse
67
+ COMMIT_HASH=$(git rev-parse HEAD)
68
+
69
+ # Calculate short hash for release name
70
+ RELEASE_NAME=${COMMIT_HASH:0:8}
41
71
 
42
- - `coralogix-rum-cli -- --help`
72
+ # Run Coralogix RUM CLI to upload source maps
73
+ coralogix-rum-cli upload-source-maps -k "$PRIVATE_KEY" -a "$APPLICATION" -r "$RELEASE_NAME" -f "$SOURCE_MAPS_PATH" -e "$ENV" -c "$COMMIT_HASH" -n "$REPO_NAME" -o "$ORG_NAME"
74
+ ```
75
+
76
+ If any of the required arguments are missing, the CLI will display an error message and exit.
43
77
 
44
78
 
45
79
  Please ensure you provide valid values for the options when using the CLI.
46
80
 
47
- ## Available Environments
81
+ # Available Environments
48
82
 
49
83
  The Coralogix RUM CLI supports the following environments:
50
84
 
51
85
  - AP1
52
86
  - AP2
53
- - STAGING
54
- - PRODUCTION
87
+ - EU1
55
88
  - EU2
56
89
  - US1
57
90
 
@@ -61,13 +94,13 @@ Please use the appropriate environment value when specifying the `-e, --env` opt
61
94
 
62
95
  The following options are optional and relate to GitHub information, providing context for source maps:
63
96
 
64
- - -c, --commit-hash <commitHash>: This option allows you to provide the GitHub commit hash associated with the source maps. Including this hash can help in tracking down issues specific to a particular commit.
97
+ - `-c, --commit-hash <commitHash>`: This option allows you to provide the GitHub commit hash associated with the source maps. Including this hash can help in tracking down issues specific to a particular commit.
65
98
 
66
99
 
67
- - -n, --repo-name <repoName>: By specifying the GitHub repository name, you're indicating the repository where the source code is hosted. This information aids in correlating source maps with the correct repository.
100
+ - `-n, --repo-name <repoName>`: By specifying the GitHub repository name, you're indicating the repository where the source code is hosted. This information aids in correlating source maps with the correct repository.
68
101
 
69
102
 
70
- - -u, --user <user>: This option enables you to input your GitHub user, helping to attribute the source maps to the appropriate user.
103
+ - `-o, --org-name <orgName>`: This option enables you to input your GitHub organization user, helping to attribute the source maps to the appropriate organization user.
71
104
  Providing these GitHub-related options can enhance the accuracy of source map management and issue tracking within Coralogix RUM. However, they are not mandatory and can be omitted if not applicable.
72
105
 
73
106
  ## License
package/api/rum-api.ts CHANGED
@@ -2,79 +2,78 @@ import {Client, createChannel, createClient, Metadata} from 'nice-grpc';
2
2
  import {envToDomain} from "../model/cli.model";
3
3
  import * as pako from 'pako';
4
4
  import config from "../config/config";
5
- import {RED_COLOR} from "../cli/rum-cli";
6
- import {FileMetadata} from "../src/app/proto-models/com/coralogix/rum/v2/file";
5
+ import {RED_COLOR} from "../cli/theme";
6
+ import {FileMetadata} from "../proto-models/com/coralogix/rum/v2/file";
7
7
  import {
8
8
  RumSourceMapServiceDefinition,
9
9
  UploadSourceMapsRequest
10
- } from "../src/app/proto-models/com/coralogix/rum/v2/rum_source_map_service";
10
+ } from "../proto-models/com/coralogix/rum/v2/rum_source_map_service";
11
11
 
12
+ export class RumApi {
13
+ static async uploadSourceMaps(request: UploadSourceMapsRequest, env: string, privateKey: string) {
12
14
 
13
- export const uploadSourceMaps = async (request: UploadSourceMapsRequest, env: string, privateKey: string): Promise<void> => {
15
+ const {maxMessageSize, keepaliveTimeMs, keepaliveTimeoutMs} = config.rumApi;
14
16
 
15
- const {maxMessageSize, keepaliveTimeMs, keepaliveTimeoutMs} = config.rumApi;
17
+ try {
18
+ const channel = createChannel(envToDomain[env], undefined, {
19
+ "grpc.max_receive_message_length": maxMessageSize,
20
+ "grpc.max_send_message_length": maxMessageSize,
21
+ 'grpc.keepalive_time_ms': keepaliveTimeMs,
22
+ 'grpc.keepalive_timeout_ms': keepaliveTimeoutMs,
23
+ });
16
24
 
17
- try {
25
+ const client: Client<typeof RumSourceMapServiceDefinition> = createClient(RumSourceMapServiceDefinition, channel);
18
26
 
19
- const channel = createChannel(envToDomain[env], undefined, {
20
- "grpc.max_receive_message_length": maxMessageSize,
21
- "grpc.max_send_message_length": maxMessageSize,
22
- 'grpc.keepalive_time_ms': keepaliveTimeMs,
23
- 'grpc.keepalive_timeout_ms': keepaliveTimeoutMs,
24
- });
27
+ const {files, releaseId, application, repoName, commitHash, user} = request;
25
28
 
26
- const client: Client<typeof RumSourceMapServiceDefinition> = createClient(RumSourceMapServiceDefinition, channel);
29
+ const compressedFiles: FileMetadata[] = await Promise.all(
30
+ files.map(async (file: FileMetadata) => {
31
+ const compressedChunks = this.compressFileContentChunks(file.content);
27
32
 
28
- const {files, releaseId, application, repoName, commitHash, user} = request;
33
+ const size = compressedChunks.length;
29
34
 
30
- const compressedFiles: FileMetadata[] = await Promise.all(
31
- files.map(async (file: FileMetadata) => {
32
- const compressedChunks = compressFileContentChunks(file.content);
35
+ return {chunkName: file.chunkName, size, content: compressedChunks};
36
+ })
37
+ );
33
38
 
34
- const size = compressedChunks.length;
39
+ const metadata = new Metadata();
35
40
 
36
- return {chunkName: file.chunkName, size, content: compressedChunks};
37
- })
38
- );
41
+ metadata.set('Authorization', `Bearer ${privateKey}`);
39
42
 
40
- const metadata = new Metadata();
43
+ await client.uploadSourceMaps({
44
+ files: compressedFiles,
45
+ releaseId,
46
+ application,
47
+ repoName,
48
+ commitHash,
49
+ user
50
+ }, {metadata});
41
51
 
42
- metadata.set('Authorization', `Bearer ${privateKey}`);
52
+ } catch (error) {
53
+ throw error;
54
+ }
55
+ };
43
56
 
44
- await client.uploadSourceMaps({
45
- files: compressedFiles,
46
- releaseId,
47
- application,
48
- repoName,
49
- commitHash,
50
- user
51
- }, {metadata});
57
+ private static compressFileContentChunks = (fileContent: Uint8Array): Uint8Array => {
58
+ const {chunkSize} = config.rumApi; // 512 KB chunk size
59
+ const deflate = new pako.Deflate();
60
+ const totalChunks = Math.ceil(fileContent.length / chunkSize);
52
61
 
53
- } catch (error) {
54
- throw error;
55
- }
56
- };
62
+ for (let i = 0; i < totalChunks; i++) {
63
+ const start = i * chunkSize;
64
+ const end = start + chunkSize;
65
+ const chunk = fileContent.subarray(start, end);
57
66
 
67
+ const isLastChunk = i === totalChunks - 1;
58
68
 
59
- const compressFileContentChunks = (fileContent: Uint8Array): Uint8Array => {
60
- const {chunkSize} = config.rumApi; // 512 KB chunk size
61
- const deflate = new pako.Deflate();
62
- const totalChunks = Math.ceil(fileContent.length / chunkSize);
69
+ deflate.push(chunk, isLastChunk);
70
+ }
63
71
 
64
- for (let i = 0; i < totalChunks; i++) {
65
- const start = i * chunkSize;
66
- const end = start + chunkSize;
67
- const chunk = fileContent.subarray(start, end);
72
+ const {err, msg, result} = deflate;
68
73
 
69
- const isLastChunk = i === totalChunks - 1;
74
+ if (err) console.error(RED_COLOR, msg);
70
75
 
71
- deflate.push(chunk, isLastChunk);
76
+ return result;
72
77
  }
73
-
74
- const {err, msg, result} = deflate;
75
-
76
- if (err) console.error(RED_COLOR, msg);
77
-
78
- return result;
79
78
  }
80
79
 
package/cli/rum-cli.ts CHANGED
@@ -1,85 +1,54 @@
1
1
  #!/usr/bin/env node
2
2
  import {Command} from 'commander';
3
- import {uploadSourceMaps} from "../api/rum-api";
4
- import {traverseFolder} from "./utils/traverse-folder.util";
5
- import {envToDomain} from "../model/cli.model";
6
- import {UploadSourceMapsRequest} from "../src/app/proto-models/com/coralogix/rum/v2/rum_source_map_service";
3
+ import {SourceMapsService} from "../services/source-maps/source-maps.service";
4
+ import {validateEnvironment} from "./validators";
5
+ import {RED_COLOR} from "./theme";
7
6
 
8
- export const GREEN_COLOR = '\x1b[32m%s\x1b[0m';
9
- export const RED_COLOR = '\x1b[31m%s\x1b[0m';
10
-
11
- const validateEnvironment = (env: string): string => {
12
- const validEnvironments = Object.keys(envToDomain).join(', ');
7
+ const program = new Command();
13
8
 
14
- if (!(env in envToDomain)) {
15
- const errorMessage = `❌ Invalid environment: ${env}. Possible values are: ${validEnvironments}`;
16
- console.error(RED_COLOR, errorMessage);
17
- process.exit(1);
18
- }
9
+ program.name('coralogix-rum-cli').description('cli for upload source maps')
19
10
 
20
- return env;
21
- }
11
+ const uploadCommand = program.command('upload-source-maps');
22
12
 
23
- const program = new Command();
24
-
25
- program
13
+ uploadCommand
26
14
  .option('-k, --private-key <privateKey>', 'Private key to authenticate with the API')
27
15
  .option('-a, --application <application>', 'Name of the application')
28
16
  .option('-r, --release-id <releaseId>', 'ID of the release')
29
17
  .option('-f, --folder-path <folderPath>', 'Path to the folder containing the source maps')
30
18
  .option('-e, --env <env>', 'Your environment', validateEnvironment)
31
- .option('-c, --commit-hash <commitHash>', 'Github commit hash (optional)', undefined)
32
- .option('-n, --repo-name <repoName>', 'Github Repository name (optional)', undefined)
33
- .option('-u, --user <user>', 'Github user name (optional)', undefined)
34
- .option('-h, --help', 'Display help')
35
-
36
- program.parse(process.argv);
37
-
38
- const {privateKey, application, releaseId, folderPath, commitHash, repoName, user, env} = program.opts();
39
-
40
- if (process.argv.includes('--help')) {
41
- program.outputHelp();
42
- process.exit(0);
43
- }
44
-
45
- (async () => {
46
- try {
47
- const missingArgs = [];
48
-
49
- if (!privateKey) missingArgs.push('private-key');
50
-
51
- if (!application) missingArgs.push('application');
52
-
53
- if (!releaseId) missingArgs.push('release-id');
54
-
55
- if (!folderPath) missingArgs.push('folder-path');
56
-
57
- if (!env) missingArgs.push('env');
58
-
59
- if (missingArgs.length > 0) {
60
- const missingArgsList = missingArgs.map(arg => `- ${arg}`).join('\n');
61
- const errorMessage = `❌ Missing required arguments:\n${missingArgsList}\nPlease provide the necessary options`;
62
- console.error(RED_COLOR, errorMessage);
63
- process.exit(1);
19
+ .option('-c, --commit-hash <commitHash>', 'GitHub commit hash (optional)')
20
+ .option('-n, --repo-name <repoName>', 'GitHub Repository name (optional)')
21
+ .option('-o, --org-name <orgName>', 'GitHub user name (optional)')
22
+ .description('Upload source maps')
23
+ .action(async (options) => {
24
+ try {
25
+ if (options.help) {
26
+ program.outputHelp();
27
+ process.exit(0);
28
+ }
29
+
30
+ const {privateKey, application, releaseId, folderPath, commitHash, repoName, orgName, env} = options;
31
+
32
+ const missingArgs = [];
33
+
34
+ if (!privateKey) missingArgs.push('private-key');
35
+ if (!application) missingArgs.push('application');
36
+ if (!releaseId) missingArgs.push('release-id');
37
+ if (!folderPath) missingArgs.push('folder-path');
38
+ if (!env) missingArgs.push('env');
39
+
40
+ if (missingArgs.length > 0) {
41
+ const missingArgsList = missingArgs.map(arg => `- ${arg}`).join('\n');
42
+ const errorMessage = `❌ Missing required arguments:\n${missingArgsList}\nPlease provide the necessary options`;
43
+ console.error(RED_COLOR, errorMessage);
44
+ process.exit(1);
45
+ }
46
+
47
+ await SourceMapsService.upload(application, releaseId, repoName, commitHash, orgName, folderPath, env, privateKey)
48
+ } catch (error) {
49
+ console.error(RED_COLOR, '❌ An error occurred:');
50
+ console.error(RED_COLOR, error);
64
51
  }
52
+ });
65
53
 
66
- const request = UploadSourceMapsRequest.create();
67
-
68
- request.application = application;
69
- request.releaseId = releaseId;
70
- request.repoName = repoName;
71
- request.commitHash = commitHash;
72
- request.user = user;
73
-
74
- await traverseFolder(folderPath, request);
75
-
76
- await uploadSourceMaps(request, env, privateKey);
77
-
78
- console.log(GREEN_COLOR, '✅ Source maps uploaded successfully!');
79
- console.log(GREEN_COLOR, `✅ Total chunk files processed: ${request.files.length}`);
80
- console.log(GREEN_COLOR, '✅ Processing complete.');
81
- } catch (error) {
82
- console.error(RED_COLOR, '❌ An error occurred:');
83
- console.error(RED_COLOR, error);
84
- }
85
- })();
54
+ program.parse(process.argv);
@@ -0,0 +1,5 @@
1
+ export const GREEN_COLOR = '\x1b[32m%s\x1b[0m';
2
+
3
+ export const RED_COLOR = '\x1b[31m%s\x1b[0m';
4
+
5
+ export const GRAY_COLOR = '\x1b[37m%s\x1b[0m';
@@ -0,0 +1,14 @@
1
+ import {envToDomain} from "../../model/cli.model";
2
+ import {RED_COLOR} from "../theme";
3
+
4
+ export const validateEnvironment = (env: string): string => {
5
+ const validEnvironments = Object.keys(envToDomain).join(', ');
6
+
7
+ if (!(env in envToDomain)) {
8
+ const errorMessage = `❌ Invalid environment: ${env}. Possible values are: ${validEnvironments}`;
9
+ console.error(RED_COLOR, errorMessage);
10
+ process.exit(1);
11
+ }
12
+
13
+ return env;
14
+ }
@@ -1,2 +1,5 @@
1
- import { UploadSourceMapsRequest } from "../src/app/proto-models/com/coralogix/rum/v2/rum_source_map_service";
2
- export declare const uploadSourceMaps: (request: UploadSourceMapsRequest, env: string, privateKey: string) => Promise<void>;
1
+ import { UploadSourceMapsRequest } from "../proto-models/com/coralogix/rum/v2/rum_source_map_service";
2
+ export declare class RumApi {
3
+ static uploadSourceMaps(request: UploadSourceMapsRequest, env: string, privateKey: string): Promise<void>;
4
+ private static compressFileContentChunks;
5
+ }
@@ -35,46 +35,51 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.uploadSourceMaps = void 0;
38
+ exports.RumApi = void 0;
39
39
  const nice_grpc_1 = require("nice-grpc");
40
40
  const cli_model_1 = require("../model/cli.model");
41
41
  const pako = __importStar(require("pako"));
42
42
  const config_1 = __importDefault(require("../config/config"));
43
- const rum_cli_1 = require("../cli/rum-cli");
44
- const rum_source_map_service_1 = require("../src/app/proto-models/com/coralogix/rum/v2/rum_source_map_service");
45
- const uploadSourceMaps = (request, env, privateKey) => __awaiter(void 0, void 0, void 0, function* () {
46
- const { maxMessageSize, keepaliveTimeMs, keepaliveTimeoutMs } = config_1.default.rumApi;
47
- try {
48
- const channel = (0, nice_grpc_1.createChannel)(cli_model_1.envToDomain[env], undefined, {
49
- "grpc.max_receive_message_length": maxMessageSize,
50
- "grpc.max_send_message_length": maxMessageSize,
51
- 'grpc.keepalive_time_ms': keepaliveTimeMs,
52
- 'grpc.keepalive_timeout_ms': keepaliveTimeoutMs,
43
+ const theme_1 = require("../cli/theme");
44
+ const rum_source_map_service_1 = require("../proto-models/com/coralogix/rum/v2/rum_source_map_service");
45
+ class RumApi {
46
+ static uploadSourceMaps(request, env, privateKey) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const { maxMessageSize, keepaliveTimeMs, keepaliveTimeoutMs } = config_1.default.rumApi;
49
+ try {
50
+ const channel = (0, nice_grpc_1.createChannel)(cli_model_1.envToDomain[env], undefined, {
51
+ "grpc.max_receive_message_length": maxMessageSize,
52
+ "grpc.max_send_message_length": maxMessageSize,
53
+ 'grpc.keepalive_time_ms': keepaliveTimeMs,
54
+ 'grpc.keepalive_timeout_ms': keepaliveTimeoutMs,
55
+ });
56
+ const client = (0, nice_grpc_1.createClient)(rum_source_map_service_1.RumSourceMapServiceDefinition, channel);
57
+ const { files, releaseId, application, repoName, commitHash, user } = request;
58
+ const compressedFiles = yield Promise.all(files.map((file) => __awaiter(this, void 0, void 0, function* () {
59
+ const compressedChunks = this.compressFileContentChunks(file.content);
60
+ const size = compressedChunks.length;
61
+ return { chunkName: file.chunkName, size, content: compressedChunks };
62
+ })));
63
+ const metadata = new nice_grpc_1.Metadata();
64
+ metadata.set('Authorization', `Bearer ${privateKey}`);
65
+ yield client.uploadSourceMaps({
66
+ files: compressedFiles,
67
+ releaseId,
68
+ application,
69
+ repoName,
70
+ commitHash,
71
+ user
72
+ }, { metadata });
73
+ }
74
+ catch (error) {
75
+ throw error;
76
+ }
53
77
  });
54
- const client = (0, nice_grpc_1.createClient)(rum_source_map_service_1.RumSourceMapServiceDefinition, channel);
55
- const { files, releaseId, application, repoName, commitHash, user } = request;
56
- const compressedFiles = yield Promise.all(files.map((file) => __awaiter(void 0, void 0, void 0, function* () {
57
- const compressedChunks = compressFileContentChunks(file.content);
58
- const size = compressedChunks.length;
59
- return { chunkName: file.chunkName, size, content: compressedChunks };
60
- })));
61
- const metadata = new nice_grpc_1.Metadata();
62
- metadata.set('Authorization', `Bearer ${privateKey}`);
63
- yield client.uploadSourceMaps({
64
- files: compressedFiles,
65
- releaseId,
66
- application,
67
- repoName,
68
- commitHash,
69
- user
70
- }, { metadata });
71
78
  }
72
- catch (error) {
73
- throw error;
74
- }
75
- });
76
- exports.uploadSourceMaps = uploadSourceMaps;
77
- const compressFileContentChunks = (fileContent) => {
79
+ ;
80
+ }
81
+ exports.RumApi = RumApi;
82
+ RumApi.compressFileContentChunks = (fileContent) => {
78
83
  const { chunkSize } = config_1.default.rumApi; // 512 KB chunk size
79
84
  const deflate = new pako.Deflate();
80
85
  const totalChunks = Math.ceil(fileContent.length / chunkSize);
@@ -87,7 +92,7 @@ const compressFileContentChunks = (fileContent) => {
87
92
  }
88
93
  const { err, msg, result } = deflate;
89
94
  if (err)
90
- console.error(rum_cli_1.RED_COLOR, msg);
95
+ console.error(theme_1.RED_COLOR, msg);
91
96
  return result;
92
97
  };
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVtLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2FwaS9ydW0tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXdFO0FBQ3hFLGtEQUErQztBQUMvQywyQ0FBNkI7QUFDN0IsOERBQXNDO0FBQ3RDLDRDQUF5QztBQUV6QyxnSEFHNkU7QUFHdEUsTUFBTSxnQkFBZ0IsR0FBRyxDQUFPLE9BQWdDLEVBQUUsR0FBVyxFQUFFLFVBQWtCLEVBQWlCLEVBQUU7SUFFdkgsTUFBTSxFQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUMsR0FBRyxnQkFBTSxDQUFDLE1BQU0sQ0FBQztJQUU1RSxJQUFJO1FBRUEsTUFBTSxPQUFPLEdBQUcsSUFBQSx5QkFBYSxFQUFDLHVCQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFO1lBQ3ZELGlDQUFpQyxFQUFFLGNBQWM7WUFDakQsOEJBQThCLEVBQUUsY0FBYztZQUM5Qyx3QkFBd0IsRUFBRSxlQUFlO1lBQ3pDLDJCQUEyQixFQUFFLGtCQUFrQjtTQUNsRCxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBaUQsSUFBQSx3QkFBWSxFQUFDLHNEQUE2QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWxILE1BQU0sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxHQUFHLE9BQU8sQ0FBQztRQUU1RSxNQUFNLGVBQWUsR0FBbUIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQU8sSUFBa0IsRUFBRSxFQUFFO1lBQ25DLE1BQU0sZ0JBQWdCLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWpFLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUVyQyxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQSxDQUFDLENBQ0wsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksb0JBQVEsRUFBRSxDQUFDO1FBRWhDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUV0RCxNQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQixLQUFLLEVBQUUsZUFBZTtZQUN0QixTQUFTO1lBQ1QsV0FBVztZQUNYLFFBQVE7WUFDUixVQUFVO1lBQ1YsSUFBSTtTQUNQLEVBQUUsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO0tBRWxCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixNQUFNLEtBQUssQ0FBQztLQUNmO0FBQ0wsQ0FBQyxDQUFBLENBQUM7QUEzQ1csUUFBQSxnQkFBZ0Isb0JBMkMzQjtBQUdGLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxXQUF1QixFQUFjLEVBQUU7SUFDdEUsTUFBTSxFQUFDLFNBQVMsRUFBQyxHQUFHLGdCQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsb0JBQW9CO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUU5RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssV0FBVyxHQUFHLENBQUMsQ0FBQztRQUUxQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztLQUNwQztJQUVELE1BQU0sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBQyxHQUFHLE9BQU8sQ0FBQztJQUVuQyxJQUFJLEdBQUc7UUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdkMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGllbnQsIGNyZWF0ZUNoYW5uZWwsIGNyZWF0ZUNsaWVudCwgTWV0YWRhdGF9IGZyb20gJ25pY2UtZ3JwYyc7XG5pbXBvcnQge2VudlRvRG9tYWlufSBmcm9tIFwiLi4vbW9kZWwvY2xpLm1vZGVsXCI7XG5pbXBvcnQgKiBhcyBwYWtvIGZyb20gJ3Bha28nO1xuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vY29uZmlnL2NvbmZpZ1wiO1xuaW1wb3J0IHtSRURfQ09MT1J9IGZyb20gXCIuLi9jbGkvcnVtLWNsaVwiO1xuaW1wb3J0IHtGaWxlTWV0YWRhdGF9IGZyb20gXCIuLi9zcmMvYXBwL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L3J1bS92Mi9maWxlXCI7XG5pbXBvcnQge1xuICAgIFJ1bVNvdXJjZU1hcFNlcnZpY2VEZWZpbml0aW9uLFxuICAgIFVwbG9hZFNvdXJjZU1hcHNSZXF1ZXN0XG59IGZyb20gXCIuLi9zcmMvYXBwL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L3J1bS92Mi9ydW1fc291cmNlX21hcF9zZXJ2aWNlXCI7XG5cblxuZXhwb3J0IGNvbnN0IHVwbG9hZFNvdXJjZU1hcHMgPSBhc3luYyAocmVxdWVzdDogVXBsb2FkU291cmNlTWFwc1JlcXVlc3QsIGVudjogc3RyaW5nLCBwcml2YXRlS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcblxuICAgIGNvbnN0IHttYXhNZXNzYWdlU2l6ZSwga2VlcGFsaXZlVGltZU1zLCBrZWVwYWxpdmVUaW1lb3V0TXN9ID0gY29uZmlnLnJ1bUFwaTtcblxuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IGNyZWF0ZUNoYW5uZWwoZW52VG9Eb21haW5bZW52XSwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBcImdycGMubWF4X3JlY2VpdmVfbWVzc2FnZV9sZW5ndGhcIjogbWF4TWVzc2FnZVNpemUsXG4gICAgICAgICAgICBcImdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGhcIjogbWF4TWVzc2FnZVNpemUsXG4gICAgICAgICAgICAnZ3JwYy5rZWVwYWxpdmVfdGltZV9tcyc6IGtlZXBhbGl2ZVRpbWVNcyxcbiAgICAgICAgICAgICdncnBjLmtlZXBhbGl2ZV90aW1lb3V0X21zJzoga2VlcGFsaXZlVGltZW91dE1zLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjbGllbnQ6IENsaWVudDx0eXBlb2YgUnVtU291cmNlTWFwU2VydmljZURlZmluaXRpb24+ID0gY3JlYXRlQ2xpZW50KFJ1bVNvdXJjZU1hcFNlcnZpY2VEZWZpbml0aW9uLCBjaGFubmVsKTtcblxuICAgICAgICBjb25zdCB7ZmlsZXMsIHJlbGVhc2VJZCwgYXBwbGljYXRpb24sIHJlcG9OYW1lLCBjb21taXRIYXNoLCB1c2VyfSA9IHJlcXVlc3Q7XG5cbiAgICAgICAgY29uc3QgY29tcHJlc3NlZEZpbGVzOiBGaWxlTWV0YWRhdGFbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlOiBGaWxlTWV0YWRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wcmVzc2VkQ2h1bmtzID0gY29tcHJlc3NGaWxlQ29udGVudENodW5rcyhmaWxlLmNvbnRlbnQpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IGNvbXByZXNzZWRDaHVua3MubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtjaHVua05hbWU6IGZpbGUuY2h1bmtOYW1lLCBzaXplLCBjb250ZW50OiBjb21wcmVzc2VkQ2h1bmtzfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcblxuICAgICAgICBtZXRhZGF0YS5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7cHJpdmF0ZUtleX1gKTtcblxuICAgICAgICBhd2FpdCBjbGllbnQudXBsb2FkU291cmNlTWFwcyh7XG4gICAgICAgICAgICBmaWxlczogY29tcHJlc3NlZEZpbGVzLFxuICAgICAgICAgICAgcmVsZWFzZUlkLFxuICAgICAgICAgICAgYXBwbGljYXRpb24sXG4gICAgICAgICAgICByZXBvTmFtZSxcbiAgICAgICAgICAgIGNvbW1pdEhhc2gsXG4gICAgICAgICAgICB1c2VyXG4gICAgICAgIH0sIHttZXRhZGF0YX0pO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5jb25zdCBjb21wcmVzc0ZpbGVDb250ZW50Q2h1bmtzID0gKGZpbGVDb250ZW50OiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgY29uc3Qge2NodW5rU2l6ZX0gPSBjb25maWcucnVtQXBpOyAvLyA1MTIgS0IgY2h1bmsgc2l6ZVxuICAgIGNvbnN0IGRlZmxhdGUgPSBuZXcgcGFrby5EZWZsYXRlKCk7XG4gICAgY29uc3QgdG90YWxDaHVua3MgPSBNYXRoLmNlaWwoZmlsZUNvbnRlbnQubGVuZ3RoIC8gY2h1bmtTaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3M7IGkrKykge1xuICAgICAgICBjb25zdCBzdGFydCA9IGkgKiBjaHVua1NpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgY2h1bmtTaXplO1xuICAgICAgICBjb25zdCBjaHVuayA9IGZpbGVDb250ZW50LnN1YmFycmF5KHN0YXJ0LCBlbmQpO1xuXG4gICAgICAgIGNvbnN0IGlzTGFzdENodW5rID0gaSA9PT0gdG90YWxDaHVua3MgLSAxO1xuXG4gICAgICAgIGRlZmxhdGUucHVzaChjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgIH1cblxuICAgIGNvbnN0IHtlcnIsIG1zZywgcmVzdWx0fSA9IGRlZmxhdGU7XG5cbiAgICBpZiAoZXJyKSBjb25zb2xlLmVycm9yKFJFRF9DT0xPUiwgbXNnKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVtLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2FwaS9ydW0tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXdFO0FBQ3hFLGtEQUErQztBQUMvQywyQ0FBNkI7QUFDN0IsOERBQXNDO0FBQ3RDLHdDQUF1QztBQUV2Qyx3R0FHcUU7QUFFckUsTUFBYSxNQUFNO0lBQ2YsTUFBTSxDQUFPLGdCQUFnQixDQUFDLE9BQWdDLEVBQUUsR0FBVyxFQUFFLFVBQWtCOztZQUUzRixNQUFNLEVBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBQyxHQUFHLGdCQUFNLENBQUMsTUFBTSxDQUFDO1lBRTVFLElBQUk7Z0JBQ0EsTUFBTSxPQUFPLEdBQUcsSUFBQSx5QkFBYSxFQUFDLHVCQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFO29CQUN2RCxpQ0FBaUMsRUFBRSxjQUFjO29CQUNqRCw4QkFBOEIsRUFBRSxjQUFjO29CQUM5Qyx3QkFBd0IsRUFBRSxlQUFlO29CQUN6QywyQkFBMkIsRUFBRSxrQkFBa0I7aUJBQ2xELENBQUMsQ0FBQztnQkFFSCxNQUFNLE1BQU0sR0FBaUQsSUFBQSx3QkFBWSxFQUFDLHNEQUE2QixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVsSCxNQUFNLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUMsR0FBRyxPQUFPLENBQUM7Z0JBRTVFLE1BQU0sZUFBZSxHQUFtQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3JELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBTyxJQUFrQixFQUFFLEVBQUU7b0JBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFdEUsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO29CQUVyQyxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxDQUFDO2dCQUN4RSxDQUFDLENBQUEsQ0FBQyxDQUNMLENBQUM7Z0JBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBUSxFQUFFLENBQUM7Z0JBRWhDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFdEQsTUFBTSxNQUFNLENBQUMsZ0JBQWdCLENBQUM7b0JBQzFCLEtBQUssRUFBRSxlQUFlO29CQUN0QixTQUFTO29CQUNULFdBQVc7b0JBQ1gsUUFBUTtvQkFDUixVQUFVO29CQUNWLElBQUk7aUJBQ1AsRUFBRSxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUM7YUFFbEI7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDWixNQUFNLEtBQUssQ0FBQzthQUNmO1FBQ0wsQ0FBQztLQUFBO0lBQUEsQ0FBQzs7QUEzQ04sd0JBa0VDO0FBckJrQixnQ0FBeUIsR0FBRyxDQUFDLFdBQXVCLEVBQWMsRUFBRTtJQUMvRSxNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxvQkFBb0I7SUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRTlELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsTUFBTSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFDLEdBQUcsT0FBTyxDQUFDO0lBRW5DLElBQUksR0FBRztRQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUV2QyxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsaWVudCwgY3JlYXRlQ2hhbm5lbCwgY3JlYXRlQ2xpZW50LCBNZXRhZGF0YX0gZnJvbSAnbmljZS1ncnBjJztcbmltcG9ydCB7ZW52VG9Eb21haW59IGZyb20gXCIuLi9tb2RlbC9jbGkubW9kZWxcIjtcbmltcG9ydCAqIGFzIHBha28gZnJvbSAncGFrbyc7XG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi9jb25maWcvY29uZmlnXCI7XG5pbXBvcnQge1JFRF9DT0xPUn0gZnJvbSBcIi4uL2NsaS90aGVtZVwiO1xuaW1wb3J0IHtGaWxlTWV0YWRhdGF9IGZyb20gXCIuLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvZmlsZVwiO1xuaW1wb3J0IHtcbiAgICBSdW1Tb3VyY2VNYXBTZXJ2aWNlRGVmaW5pdGlvbixcbiAgICBVcGxvYWRTb3VyY2VNYXBzUmVxdWVzdFxufSBmcm9tIFwiLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3J1bV9zb3VyY2VfbWFwX3NlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFJ1bUFwaSB7XG4gICAgc3RhdGljIGFzeW5jIHVwbG9hZFNvdXJjZU1hcHMocmVxdWVzdDogVXBsb2FkU291cmNlTWFwc1JlcXVlc3QsIGVudjogc3RyaW5nLCBwcml2YXRlS2V5OiBzdHJpbmcpIHtcblxuICAgICAgICBjb25zdCB7bWF4TWVzc2FnZVNpemUsIGtlZXBhbGl2ZVRpbWVNcywga2VlcGFsaXZlVGltZW91dE1zfSA9IGNvbmZpZy5ydW1BcGk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSBjcmVhdGVDaGFubmVsKGVudlRvRG9tYWluW2Vudl0sIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgICAgIFwiZ3JwYy5tYXhfcmVjZWl2ZV9tZXNzYWdlX2xlbmd0aFwiOiBtYXhNZXNzYWdlU2l6ZSxcbiAgICAgICAgICAgICAgICBcImdycGMubWF4X3NlbmRfbWVzc2FnZV9sZW5ndGhcIjogbWF4TWVzc2FnZVNpemUsXG4gICAgICAgICAgICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVfbXMnOiBrZWVwYWxpdmVUaW1lTXMsXG4gICAgICAgICAgICAgICAgJ2dycGMua2VlcGFsaXZlX3RpbWVvdXRfbXMnOiBrZWVwYWxpdmVUaW1lb3V0TXMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2xpZW50OiBDbGllbnQ8dHlwZW9mIFJ1bVNvdXJjZU1hcFNlcnZpY2VEZWZpbml0aW9uPiA9IGNyZWF0ZUNsaWVudChSdW1Tb3VyY2VNYXBTZXJ2aWNlRGVmaW5pdGlvbiwgY2hhbm5lbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHtmaWxlcywgcmVsZWFzZUlkLCBhcHBsaWNhdGlvbiwgcmVwb05hbWUsIGNvbW1pdEhhc2gsIHVzZXJ9ID0gcmVxdWVzdDtcblxuICAgICAgICAgICAgY29uc3QgY29tcHJlc3NlZEZpbGVzOiBGaWxlTWV0YWRhdGFbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgIGZpbGVzLm1hcChhc3luYyAoZmlsZTogRmlsZU1ldGFkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbXByZXNzZWRDaHVua3MgPSB0aGlzLmNvbXByZXNzRmlsZUNvbnRlbnRDaHVua3MoZmlsZS5jb250ZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplID0gY29tcHJlc3NlZENodW5rcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtjaHVua05hbWU6IGZpbGUuY2h1bmtOYW1lLCBzaXplLCBjb250ZW50OiBjb21wcmVzc2VkQ2h1bmtzfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcblxuICAgICAgICAgICAgbWV0YWRhdGEuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3ByaXZhdGVLZXl9YCk7XG5cbiAgICAgICAgICAgIGF3YWl0IGNsaWVudC51cGxvYWRTb3VyY2VNYXBzKHtcbiAgICAgICAgICAgICAgICBmaWxlczogY29tcHJlc3NlZEZpbGVzLFxuICAgICAgICAgICAgICAgIHJlbGVhc2VJZCxcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbixcbiAgICAgICAgICAgICAgICByZXBvTmFtZSxcbiAgICAgICAgICAgICAgICBjb21taXRIYXNoLFxuICAgICAgICAgICAgICAgIHVzZXJcbiAgICAgICAgICAgIH0sIHttZXRhZGF0YX0pO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjb21wcmVzc0ZpbGVDb250ZW50Q2h1bmtzID0gKGZpbGVDb250ZW50OiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgICAgIGNvbnN0IHtjaHVua1NpemV9ID0gY29uZmlnLnJ1bUFwaTsgLy8gNTEyIEtCIGNodW5rIHNpemVcbiAgICAgICAgY29uc3QgZGVmbGF0ZSA9IG5ldyBwYWtvLkRlZmxhdGUoKTtcbiAgICAgICAgY29uc3QgdG90YWxDaHVua3MgPSBNYXRoLmNlaWwoZmlsZUNvbnRlbnQubGVuZ3RoIC8gY2h1bmtTaXplKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaSAqIGNodW5rU2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgY2h1bmtTaXplO1xuICAgICAgICAgICAgY29uc3QgY2h1bmsgPSBmaWxlQ29udGVudC5zdWJhcnJheShzdGFydCwgZW5kKTtcblxuICAgICAgICAgICAgY29uc3QgaXNMYXN0Q2h1bmsgPSBpID09PSB0b3RhbENodW5rcyAtIDE7XG5cbiAgICAgICAgICAgIGRlZmxhdGUucHVzaChjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2VyciwgbXNnLCByZXN1bHR9ID0gZGVmbGF0ZTtcblxuICAgICAgICBpZiAoZXJyKSBjb25zb2xlLmVycm9yKFJFRF9DT0xPUiwgbXNnKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuIl19
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export declare const GREEN_COLOR = "\u001B[32m%s\u001B[0m";
3
- export declare const RED_COLOR = "\u001B[31m%s\u001B[0m";
2
+ export {};