@coralogix/rum-cli 1.1.28 → 1.1.29

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 (91) hide show
  1. package/api/base/base.api.ts +118 -0
  2. package/api/dsym/dsym.api.ts +62 -0
  3. package/api/proguard/proguard.api.ts +62 -0
  4. package/api/react-native/react-native.api.ts +62 -0
  5. package/api/source-maps/source-maps.api.ts +62 -0
  6. package/cli/commands/dsym/upload-dsym-command.ts +4 -2
  7. package/cli/commands/proguard/upload-proguard-command.ts +4 -2
  8. package/cli/commands/react-native/upload-react-native-source-maps-command.ts +4 -2
  9. package/cli/commands/source-maps/upload-source-maps-command.ts +4 -2
  10. package/cli/rum-cli.ts +12 -12
  11. package/config/config.ts +0 -4
  12. package/dist/api/base/base.api.d.ts +17 -0
  13. package/dist/api/base/base.api.js +70 -0
  14. package/dist/api/dsym/dsym.api.d.ts +12 -0
  15. package/dist/api/dsym/dsym.api.js +51 -0
  16. package/dist/api/proguard/proguard.api.d.ts +12 -0
  17. package/dist/api/proguard/proguard.api.js +51 -0
  18. package/dist/api/react-native/react-native.api.d.ts +12 -0
  19. package/dist/api/react-native/react-native.api.js +51 -0
  20. package/dist/api/source-maps/source-maps.api.d.ts +12 -0
  21. package/dist/api/source-maps/source-maps.api.js +51 -0
  22. package/dist/cli/commands/dsym/upload-dsym-command.js +4 -3
  23. package/dist/cli/commands/proguard/upload-proguard-command.js +4 -3
  24. package/dist/cli/commands/react-native/upload-react-native-source-maps-command.js +4 -3
  25. package/dist/cli/commands/source-maps/upload-source-maps-command.js +4 -3
  26. package/dist/cli/rum-cli.js +13 -16
  27. package/dist/config/config.d.ts +0 -2
  28. package/dist/config/config.js +1 -3
  29. package/dist/{api/client/client-factory.d.ts → grpc-client/grpc-client-factory.d.ts} +81 -81
  30. package/dist/grpc-client/grpc-client-factory.js +31 -0
  31. package/dist/services/base/base.service.d.ts +9 -0
  32. package/dist/services/base/base.service.js +35 -0
  33. package/dist/services/dsym/dsym.service.d.ts +9 -0
  34. package/dist/services/dsym/dsym.service.js +22 -0
  35. package/dist/services/proguard/proguard.service.d.ts +9 -0
  36. package/dist/services/proguard/proguard.service.js +22 -0
  37. package/dist/services/react-native/react-native.service.d.ts +9 -0
  38. package/dist/services/react-native/react-native.service.js +22 -0
  39. package/dist/services/source-maps/source-maps.service.d.ts +9 -0
  40. package/dist/services/source-maps/source-maps.service.js +22 -0
  41. package/dist/utils/file-processor.utils.d.ts +3 -3
  42. package/dist/utils/file-processor.utils.js +14 -193
  43. package/grpc-client/grpc-client-factory.ts +31 -0
  44. package/package.json +1 -1
  45. package/services/base/base.service.ts +38 -0
  46. package/services/dsym/dsym.service.ts +21 -0
  47. package/services/proguard/proguard.service.ts +21 -0
  48. package/services/react-native/react-native.service.ts +21 -0
  49. package/services/source-maps/source-maps.service.ts +21 -0
  50. package/utils/file-processor.utils.ts +13 -195
  51. package/api/client/client-factory.ts +0 -26
  52. package/api/client/request-builder.ts +0 -96
  53. package/api/dsym.api.ts +0 -64
  54. package/api/proguard.api.ts +0 -64
  55. package/api/react-native.api.ts +0 -64
  56. package/api/source-maps.api.ts +0 -64
  57. package/cli/commands/dsym/index.ts +0 -5
  58. package/cli/commands/proguard/index.ts +0 -5
  59. package/cli/commands/react-native/index.ts +0 -5
  60. package/cli/commands/source-maps/index.ts +0 -5
  61. package/dist/api/client/client-factory.js +0 -31
  62. package/dist/api/client/request-builder.d.ts +0 -43
  63. package/dist/api/client/request-builder.js +0 -52
  64. package/dist/api/dsym.api.d.ts +0 -4
  65. package/dist/api/dsym.api.js +0 -52
  66. package/dist/api/proguard.api.d.ts +0 -4
  67. package/dist/api/proguard.api.js +0 -52
  68. package/dist/api/react-native.api.d.ts +0 -4
  69. package/dist/api/react-native.api.js +0 -52
  70. package/dist/api/source-maps.api.d.ts +0 -4
  71. package/dist/api/source-maps.api.js +0 -52
  72. package/dist/cli/commands/dsym/index.d.ts +0 -4
  73. package/dist/cli/commands/dsym/index.js +0 -6
  74. package/dist/cli/commands/proguard/index.d.ts +0 -4
  75. package/dist/cli/commands/proguard/index.js +0 -6
  76. package/dist/cli/commands/react-native/index.d.ts +0 -4
  77. package/dist/cli/commands/react-native/index.js +0 -6
  78. package/dist/cli/commands/source-maps/index.d.ts +0 -4
  79. package/dist/cli/commands/source-maps/index.js +0 -6
  80. package/dist/services/dsym.service.d.ts +0 -3
  81. package/dist/services/dsym.service.js +0 -36
  82. package/dist/services/proguard.service.d.ts +0 -3
  83. package/dist/services/proguard.service.js +0 -36
  84. package/dist/services/react-native.service.d.ts +0 -3
  85. package/dist/services/react-native.service.js +0 -37
  86. package/dist/services/source-maps.service.d.ts +0 -3
  87. package/dist/services/source-maps.service.js +0 -37
  88. package/services/dsym.service.ts +0 -33
  89. package/services/proguard.service.ts +0 -33
  90. package/services/react-native.service.ts +0 -34
  91. package/services/source-maps.service.ts +0 -34
@@ -0,0 +1,118 @@
1
+ import { Client, Metadata } from 'nice-grpc';
2
+ import { BlobSetServiceDefinition, UploadBlobRequest } from '../../proto-models/com/coralogix/blobset/v2/blobset_service';
3
+ import { consoleError, createUploadBlobRequestChunks, validateCompressedFilesSize } from '../../utils/shared.utils';
4
+ import { GrpcClientFactory } from '../../grpc-client/grpc-client-factory';
5
+ import { CreateEntityReleaseRequest, RumSourceMapServiceDefinition } from '../../proto-models/com/coralogix/rum/v2/rum_source_map_service';
6
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
7
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
8
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
9
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
10
+
11
+ export abstract class BaseApi {
12
+ protected abstract getEntityType(): EntityType;
13
+ protected abstract getReleaseEntityType(): ReleaseEntityType;
14
+ protected abstract getMaxCompressedFileSize(): number;
15
+ protected abstract buildReleaseEntityMetadata(
16
+ application: string,
17
+ version: string,
18
+ repoName?: string,
19
+ commitHash?: string,
20
+ orgName?: string,
21
+ ): ReleaseEntityMetadata;
22
+ protected abstract buildEntityMetadata(
23
+ application: string,
24
+ version: string,
25
+ repoName?: string,
26
+ commitHash?: string,
27
+ orgName?: string,
28
+ ): EntityMetadata;
29
+
30
+ private async uploadBlob(
31
+ blobSetClient: Client<typeof BlobSetServiceDefinition>,
32
+ request: UploadBlobRequest,
33
+ entityMetadata: EntityMetadata | undefined,
34
+ metadata: Metadata,
35
+ ): Promise<void> {
36
+ request.entityMetadata = entityMetadata;
37
+ request.entityType = this.getEntityType();
38
+
39
+ const iterableRequest = createUploadBlobRequestChunks(request);
40
+
41
+ await blobSetClient.uploadBlob(iterableRequest, { metadata });
42
+ }
43
+
44
+ private async createEntityRelease(
45
+ rumSourceMapClient: Client<typeof RumSourceMapServiceDefinition>,
46
+ releaseEntityMetadata: ReleaseEntityMetadata | undefined,
47
+ metadata: Metadata,
48
+ ): Promise<void> {
49
+ const request: CreateEntityReleaseRequest = {
50
+ releaseEntityType: this.getReleaseEntityType(),
51
+ releaseEntityMetadata,
52
+ };
53
+
54
+ await rumSourceMapClient.createEntityRelease(request, { metadata });
55
+ }
56
+
57
+ private createGrpcMetadata(privateKey: string): Metadata {
58
+ const metadata: Metadata = new Metadata();
59
+ metadata.set('Authorization', `Bearer ${privateKey}`);
60
+ return metadata;
61
+ }
62
+
63
+ private async checkEntityReleaseExists(
64
+ rumSourceMapClient: Client<typeof RumSourceMapServiceDefinition>,
65
+ application: string,
66
+ version: string,
67
+ metadata: Metadata,
68
+ ): Promise<boolean> {
69
+ const { exists } = await rumSourceMapClient.isEntityReleaseExists(
70
+ { releaseId: version, application, releaseEntityType: this.getReleaseEntityType() },
71
+ { metadata },
72
+ );
73
+ return exists;
74
+ }
75
+
76
+ public async upload(
77
+ request: UploadBlobRequest,
78
+ application: string,
79
+ version: string,
80
+ repoName: string | undefined,
81
+ commitHash: string | undefined,
82
+ orgName: string | undefined,
83
+ env: string,
84
+ privateKey: string,
85
+ ): Promise<void> {
86
+ const metadata: Metadata = this.createGrpcMetadata(privateKey);
87
+ const blobSetClient = GrpcClientFactory.getBlobSetGrpcClient(env, this.getMaxCompressedFileSize());
88
+ const rumSourceMapClient = GrpcClientFactory.getRumSourceMapGrpcClient(env, this.getMaxCompressedFileSize());
89
+
90
+ try {
91
+ validateCompressedFilesSize(request.data.length, this.getMaxCompressedFileSize());
92
+
93
+ const releaseExists: boolean = await this.checkEntityReleaseExists(rumSourceMapClient, application, version, metadata);
94
+
95
+ if (releaseExists) {
96
+ consoleError(`Entity release already exists for releaseId: ${version} and application: ${application}`);
97
+ return;
98
+ }
99
+
100
+ const releaseEntityMetadata: ReleaseEntityMetadata = this.buildReleaseEntityMetadata(
101
+ application,
102
+ version,
103
+ repoName,
104
+ commitHash,
105
+ orgName,
106
+ );
107
+
108
+ const entityMetadata: EntityMetadata = this.buildEntityMetadata(application, version, repoName, commitHash, orgName);
109
+
110
+ await this.uploadBlob(blobSetClient, request, entityMetadata, metadata);
111
+
112
+ await this.createEntityRelease(rumSourceMapClient, releaseEntityMetadata, metadata);
113
+ } catch (error) {
114
+ consoleError(`Failed to upload: ${error}`);
115
+ throw error;
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,62 @@
1
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
2
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
3
+ import config from '../../config/config';
4
+ import { BaseApi } from '../base/base.api';
5
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
6
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
7
+
8
+ export class DsymApi extends BaseApi {
9
+ protected getEntityType(): EntityType {
10
+ return EntityType.ENTITY_TYPE_DSYM;
11
+ }
12
+
13
+ protected getReleaseEntityType(): ReleaseEntityType {
14
+ return ReleaseEntityType.RELEASE_ENTITY_TYPE_DSYM;
15
+ }
16
+
17
+ protected getMaxCompressedFileSize(): number {
18
+ return config.rumApi.dsymMaxCompressedFilesSize;
19
+ }
20
+
21
+ protected buildReleaseEntityMetadata(
22
+ application: string,
23
+ version: string,
24
+ repoName?: string,
25
+ commitHash?: string,
26
+ orgName?: string,
27
+ ): ReleaseEntityMetadata {
28
+ return {
29
+ metadata: {
30
+ $case: 'dsymMetadata',
31
+ dsymMetadata: {
32
+ application,
33
+ releaseId: version,
34
+ repoName: repoName || '',
35
+ commitHash: commitHash || '',
36
+ orgName: orgName || '',
37
+ },
38
+ },
39
+ };
40
+ }
41
+
42
+ protected buildEntityMetadata(
43
+ application: string,
44
+ version: string,
45
+ repoName?: string,
46
+ commitHash?: string,
47
+ orgName?: string,
48
+ ): EntityMetadata {
49
+ return {
50
+ metadata: {
51
+ $case: 'dsymMetadata',
52
+ dsymMetadata: {
53
+ application,
54
+ releaseId: version,
55
+ repoName: repoName || '',
56
+ commitHash: commitHash || '',
57
+ orgName: orgName || '',
58
+ },
59
+ },
60
+ };
61
+ }
62
+ }
@@ -0,0 +1,62 @@
1
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
2
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
3
+ import config from '../../config/config';
4
+ import { BaseApi } from '../base/base.api';
5
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
6
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
7
+
8
+ export class ProguardApi extends BaseApi {
9
+ protected getEntityType(): EntityType {
10
+ return EntityType.ENTITY_TYPE_PROGUARD;
11
+ }
12
+
13
+ protected getReleaseEntityType(): ReleaseEntityType {
14
+ return ReleaseEntityType.RELEASE_ENTITY_TYPE_PROGUARD;
15
+ }
16
+
17
+ protected getMaxCompressedFileSize(): number {
18
+ return config.rumApi.proguardMaxCompressedFilesSize;
19
+ }
20
+
21
+ protected buildReleaseEntityMetadata(
22
+ application: string,
23
+ version: string,
24
+ repoName?: string,
25
+ commitHash?: string,
26
+ orgName?: string,
27
+ ): ReleaseEntityMetadata {
28
+ return {
29
+ metadata: {
30
+ $case: 'proguardMetadata',
31
+ proguardMetadata: {
32
+ application,
33
+ releaseId: version,
34
+ repoName: repoName || '',
35
+ commitHash: commitHash || '',
36
+ orgName: orgName || '',
37
+ },
38
+ },
39
+ };
40
+ }
41
+
42
+ protected buildEntityMetadata(
43
+ application: string,
44
+ version: string,
45
+ repoName?: string,
46
+ commitHash?: string,
47
+ orgName?: string,
48
+ ): EntityMetadata {
49
+ return {
50
+ metadata: {
51
+ $case: 'proguardMetadata',
52
+ proguardMetadata: {
53
+ application,
54
+ releaseId: version,
55
+ repoName: repoName || '',
56
+ commitHash: commitHash || '',
57
+ orgName: orgName || '',
58
+ },
59
+ },
60
+ };
61
+ }
62
+ }
@@ -0,0 +1,62 @@
1
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
2
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
3
+ import config from '../../config/config';
4
+ import { BaseApi } from '../base/base.api';
5
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
6
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
7
+
8
+ export class ReactNativeApi extends BaseApi {
9
+ protected getEntityType(): EntityType {
10
+ return EntityType.ENTITY_TYPE_SOURCE_MAP;
11
+ }
12
+
13
+ protected getReleaseEntityType(): ReleaseEntityType {
14
+ return ReleaseEntityType.RELEASE_ENTITY_TYPE_REACT_NATIVE;
15
+ }
16
+
17
+ protected getMaxCompressedFileSize(): number {
18
+ return config.rumApi.reactNativeMaxCompressedFilesSize;
19
+ }
20
+
21
+ protected buildReleaseEntityMetadata(
22
+ application: string,
23
+ version: string,
24
+ repoName?: string,
25
+ commitHash?: string,
26
+ orgName?: string,
27
+ ): ReleaseEntityMetadata {
28
+ return {
29
+ metadata: {
30
+ $case: 'sourceMapMetadata',
31
+ sourceMapMetadata: {
32
+ application,
33
+ releaseId: version,
34
+ repoName: repoName || '',
35
+ commitHash: commitHash || '',
36
+ orgName: orgName || '',
37
+ },
38
+ },
39
+ };
40
+ }
41
+
42
+ protected buildEntityMetadata(
43
+ application: string,
44
+ version: string,
45
+ repoName?: string,
46
+ commitHash?: string,
47
+ orgName?: string,
48
+ ): EntityMetadata {
49
+ return {
50
+ metadata: {
51
+ $case: 'sourceMapMetadata',
52
+ sourceMapMetadata: {
53
+ application,
54
+ releaseId: version,
55
+ repoName: repoName || '',
56
+ commitHash: commitHash || '',
57
+ orgName: orgName || '',
58
+ },
59
+ },
60
+ };
61
+ }
62
+ }
@@ -0,0 +1,62 @@
1
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
2
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
3
+ import config from '../../config/config';
4
+ import { BaseApi } from '../base/base.api';
5
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
6
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
7
+
8
+ export class SourceMapsApi extends BaseApi {
9
+ protected getEntityType(): EntityType {
10
+ return EntityType.ENTITY_TYPE_SOURCE_MAP;
11
+ }
12
+
13
+ protected getReleaseEntityType(): ReleaseEntityType {
14
+ return ReleaseEntityType.RELEASE_ENTITY_TYPE_SOURCE_MAP;
15
+ }
16
+
17
+ protected getMaxCompressedFileSize(): number {
18
+ return config.rumApi.sourceMapsMaxCompressedFilesSize;
19
+ }
20
+
21
+ protected buildReleaseEntityMetadata(
22
+ application: string,
23
+ version: string,
24
+ repoName?: string,
25
+ commitHash?: string,
26
+ orgName?: string,
27
+ ): ReleaseEntityMetadata {
28
+ return {
29
+ metadata: {
30
+ $case: 'sourceMapMetadata',
31
+ sourceMapMetadata: {
32
+ application,
33
+ releaseId: version,
34
+ repoName: repoName || '',
35
+ commitHash: commitHash || '',
36
+ orgName: orgName || '',
37
+ },
38
+ },
39
+ };
40
+ }
41
+
42
+ protected buildEntityMetadata(
43
+ application: string,
44
+ version: string,
45
+ repoName?: string,
46
+ commitHash?: string,
47
+ orgName?: string,
48
+ ): EntityMetadata {
49
+ return {
50
+ metadata: {
51
+ $case: 'sourceMapMetadata',
52
+ sourceMapMetadata: {
53
+ application,
54
+ releaseId: version,
55
+ repoName: repoName || '',
56
+ commitHash: commitHash || '',
57
+ orgName: orgName || '',
58
+ },
59
+ },
60
+ };
61
+ }
62
+ }
@@ -1,7 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import { validateEnvironment } from '../../validators';
3
3
  import { checkMissingArguments, consoleError } from '../../../utils/shared.utils';
4
- import { DsymService } from '../../../services/dsym.service';
4
+ import { DsymService } from '../../../services/dsym/dsym.service';
5
5
  import { UploadDsymCommandOptions } from '../../../models/dsym-commands.model';
6
6
 
7
7
  export const uploadDsymCommand = () => {
@@ -26,7 +26,9 @@ export const uploadDsymCommand = () => {
26
26
 
27
27
  checkMissingArguments<UploadDsymCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
28
28
 
29
- await DsymService.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
29
+ const service: DsymService = new DsymService();
30
+
31
+ await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
30
32
  } catch (error) {
31
33
  consoleError(error);
32
34
  }
@@ -2,7 +2,7 @@ import { Command } from 'commander';
2
2
  import { validateEnvironment } from '../../validators';
3
3
  import { checkMissingArguments, consoleError } from '../../../utils/shared.utils';
4
4
  import { UploadProguardCommandOptions } from '../../../models/proguard-commands.model';
5
- import { ProguardService } from '../../../services/proguard.service';
5
+ import { ProguardService } from '../../../services/proguard/proguard.service';
6
6
 
7
7
  export const uploadProguardCommand = () => {
8
8
  const uploadCommand = new Command('upload-proguard')
@@ -26,7 +26,9 @@ export const uploadProguardCommand = () => {
26
26
 
27
27
  checkMissingArguments<UploadProguardCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
28
28
 
29
- await ProguardService.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
29
+ const service: ProguardService = new ProguardService();
30
+
31
+ await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
30
32
  } catch (error) {
31
33
  consoleError(error);
32
34
  }
@@ -1,7 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import { validateEnvironment } from '../../validators';
3
3
  import { checkMissingArguments, consoleError } from '../../../utils/shared.utils';
4
- import { ReactNativeService } from '../../../services/react-native.service';
4
+ import { ReactNativeService } from '../../../services/react-native/react-native.service';
5
5
  import { UploadReactNativeSourceMapsCommandOptions } from '../../../models/react-native-commands.model';
6
6
 
7
7
  export const uploadReactNativeSourceMapsCommand = () => {
@@ -32,7 +32,9 @@ export const uploadReactNativeSourceMapsCommand = () => {
32
32
  'env',
33
33
  ]);
34
34
 
35
- await ReactNativeService.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
35
+ const service: ReactNativeService = new ReactNativeService();
36
+
37
+ await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
36
38
  } catch (error) {
37
39
  consoleError(error);
38
40
  }
@@ -1,6 +1,6 @@
1
1
  import { Command } from 'commander';
2
2
  import { validateEnvironment } from '../../validators';
3
- import { SourceMapsService } from '../../../services/source-maps.service';
3
+ import { SourceMapsService } from '../../../services/source-maps/source-maps.service';
4
4
  import { checkMissingArguments, consoleError } from '../../../utils/shared.utils';
5
5
  import { UploadSourceMapsCommandOptions } from '../../../models/source-maps-commands.model';
6
6
 
@@ -26,7 +26,9 @@ export const uploadSourceMapsCommand = () => {
26
26
 
27
27
  checkMissingArguments<UploadSourceMapsCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
28
28
 
29
- await SourceMapsService.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
29
+ const service: SourceMapsService = new SourceMapsService();
30
+
31
+ await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
30
32
  } catch (error) {
31
33
  consoleError(error);
32
34
  }
package/cli/rum-cli.ts CHANGED
@@ -1,31 +1,31 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
- import sourceMapsCommands from './commands/source-maps';
4
- import reactNativeCommands from './commands/react-native';
5
- import dsymCommands from './commands/dsym';
6
- import proguardCommands from './commands/proguard';
3
+ import { uploadSourceMapsCommand } from './commands/source-maps/upload-source-maps-command';
4
+ import { uploadReactNativeSourceMapsCommand } from './commands/react-native/upload-react-native-source-maps-command';
5
+ import { uploadDsymCommand } from './commands/dsym/upload-dsym-command';
6
+ import { uploadProguardCommand } from './commands/proguard/upload-proguard-command';
7
7
 
8
8
  const program: Command = new Command();
9
9
 
10
10
  program.name('coralogix-rum-cli').description('CLI for upload, update, and delete source maps');
11
11
 
12
12
  // Create instances for each command
13
- const uploadSourceMapCommand: Command = sourceMapsCommands.uploadSourceMapsCommand();
13
+ const sourceMapsCommand: Command = uploadSourceMapsCommand();
14
14
 
15
- const uploadReactNativeSourceMapsCommand: Command = reactNativeCommands.uploadReactNativeSourceMapsCommand();
15
+ const reactNativeSourceMapsCommand: Command = uploadReactNativeSourceMapsCommand();
16
16
 
17
- const uploadDsymCommand: Command = dsymCommands.uploadDsymCommand();
17
+ const dsymCommand: Command = uploadDsymCommand();
18
18
 
19
- const uploadProguardCommand: Command = proguardCommands.uploadProguardCommand();
19
+ const proguardCommand: Command = uploadProguardCommand();
20
20
 
21
21
  // Register commands
22
- program.addCommand(uploadSourceMapCommand);
22
+ program.addCommand(sourceMapsCommand);
23
23
 
24
- program.addCommand(uploadReactNativeSourceMapsCommand);
24
+ program.addCommand(reactNativeSourceMapsCommand);
25
25
 
26
- program.addCommand(uploadDsymCommand);
26
+ program.addCommand(dsymCommand);
27
27
 
28
- program.addCommand(uploadProguardCommand);
28
+ program.addCommand(proguardCommand);
29
29
 
30
30
  // Parse command line arguments
31
31
  program.parse(process.argv);
package/config/config.ts CHANGED
@@ -6,8 +6,6 @@ export interface LoggerConfig {
6
6
  }
7
7
 
8
8
  export interface rumApiConfig {
9
- sourceMapsMaxMessageSize: number;
10
- dsymMaxMessageSize: number;
11
9
  keepaliveTimeMs: number;
12
10
  keepaliveTimeoutMs: number;
13
11
  chunkSize: number;
@@ -30,8 +28,6 @@ const config: Config = {
30
28
  rumApi: {
31
29
  keepaliveTimeMs: 240000,
32
30
  keepaliveTimeoutMs: 240000,
33
- sourceMapsMaxMessageSize: 200 * MB, // 200MB(in bytes)
34
- dsymMaxMessageSize: 400 * MB, // 400MB(in bytes)
35
31
  reactNativeMaxCompressedFilesSize: 200 * MB, // 200MB (in bytes)
36
32
  sourceMapsMaxCompressedFilesSize: 200 * MB, // 200MB (in bytes)
37
33
  proguardMaxCompressedFilesSize: 200 * MB, // 200MB (in bytes)
@@ -0,0 +1,17 @@
1
+ import { UploadBlobRequest } from '../../proto-models/com/coralogix/blobset/v2/blobset_service';
2
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
3
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
4
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
5
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
6
+ export declare abstract class BaseApi {
7
+ protected abstract getEntityType(): EntityType;
8
+ protected abstract getReleaseEntityType(): ReleaseEntityType;
9
+ protected abstract getMaxCompressedFileSize(): number;
10
+ protected abstract buildReleaseEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string): ReleaseEntityMetadata;
11
+ protected abstract buildEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string): EntityMetadata;
12
+ private uploadBlob;
13
+ private createEntityRelease;
14
+ private createGrpcMetadata;
15
+ private checkEntityReleaseExists;
16
+ upload(request: UploadBlobRequest, application: string, version: string, repoName: string | undefined, commitHash: string | undefined, orgName: string | undefined, env: string, privateKey: string): Promise<void>;
17
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseApi = void 0;
13
+ const nice_grpc_1 = require("nice-grpc");
14
+ const shared_utils_1 = require("../../utils/shared.utils");
15
+ const grpc_client_factory_1 = require("../../grpc-client/grpc-client-factory");
16
+ class BaseApi {
17
+ uploadBlob(blobSetClient, request, entityMetadata, metadata) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ request.entityMetadata = entityMetadata;
20
+ request.entityType = this.getEntityType();
21
+ const iterableRequest = (0, shared_utils_1.createUploadBlobRequestChunks)(request);
22
+ yield blobSetClient.uploadBlob(iterableRequest, { metadata });
23
+ });
24
+ }
25
+ createEntityRelease(rumSourceMapClient, releaseEntityMetadata, metadata) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const request = {
28
+ releaseEntityType: this.getReleaseEntityType(),
29
+ releaseEntityMetadata,
30
+ };
31
+ yield rumSourceMapClient.createEntityRelease(request, { metadata });
32
+ });
33
+ }
34
+ createGrpcMetadata(privateKey) {
35
+ const metadata = new nice_grpc_1.Metadata();
36
+ metadata.set('Authorization', `Bearer ${privateKey}`);
37
+ return metadata;
38
+ }
39
+ checkEntityReleaseExists(rumSourceMapClient, application, version, metadata) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const { exists } = yield rumSourceMapClient.isEntityReleaseExists({ releaseId: version, application, releaseEntityType: this.getReleaseEntityType() }, { metadata });
42
+ return exists;
43
+ });
44
+ }
45
+ upload(request, application, version, repoName, commitHash, orgName, env, privateKey) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const metadata = this.createGrpcMetadata(privateKey);
48
+ const blobSetClient = grpc_client_factory_1.GrpcClientFactory.getBlobSetGrpcClient(env, this.getMaxCompressedFileSize());
49
+ const rumSourceMapClient = grpc_client_factory_1.GrpcClientFactory.getRumSourceMapGrpcClient(env, this.getMaxCompressedFileSize());
50
+ try {
51
+ (0, shared_utils_1.validateCompressedFilesSize)(request.data.length, this.getMaxCompressedFileSize());
52
+ const releaseExists = yield this.checkEntityReleaseExists(rumSourceMapClient, application, version, metadata);
53
+ if (releaseExists) {
54
+ (0, shared_utils_1.consoleError)(`Entity release already exists for releaseId: ${version} and application: ${application}`);
55
+ return;
56
+ }
57
+ const releaseEntityMetadata = this.buildReleaseEntityMetadata(application, version, repoName, commitHash, orgName);
58
+ const entityMetadata = this.buildEntityMetadata(application, version, repoName, commitHash, orgName);
59
+ yield this.uploadBlob(blobSetClient, request, entityMetadata, metadata);
60
+ yield this.createEntityRelease(rumSourceMapClient, releaseEntityMetadata, metadata);
61
+ }
62
+ catch (error) {
63
+ (0, shared_utils_1.consoleError)(`Failed to upload: ${error}`);
64
+ throw error;
65
+ }
66
+ });
67
+ }
68
+ }
69
+ exports.BaseApi = BaseApi;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYmFzZS9iYXNlLmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBNkM7QUFFN0MsMkRBQW9IO0FBQ3BILCtFQUEwRTtBQU8xRSxNQUFzQixPQUFPO0lBbUJiLFVBQVUsQ0FDdEIsYUFBc0QsRUFDdEQsT0FBMEIsRUFDMUIsY0FBMEMsRUFDMUMsUUFBa0I7O1lBRWxCLE9BQU8sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRTFDLE1BQU0sZUFBZSxHQUFHLElBQUEsNENBQTZCLEVBQUMsT0FBTyxDQUFDLENBQUM7WUFFL0QsTUFBTSxhQUFhLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztLQUFBO0lBRWEsbUJBQW1CLENBQy9CLGtCQUFnRSxFQUNoRSxxQkFBd0QsRUFDeEQsUUFBa0I7O1lBRWxCLE1BQU0sT0FBTyxHQUErQjtnQkFDMUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QyxxQkFBcUI7YUFDdEIsQ0FBQztZQUVGLE1BQU0sa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQUE7SUFFTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUMzQyxNQUFNLFFBQVEsR0FBYSxJQUFJLG9CQUFRLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxVQUFVLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDdEQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVhLHdCQUF3QixDQUNwQyxrQkFBZ0UsRUFDaEUsV0FBbUIsRUFDbkIsT0FBZSxFQUNmLFFBQWtCOztZQUVsQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FDL0QsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxFQUNuRixFQUFFLFFBQVEsRUFBRSxDQUNiLENBQUM7WUFDRixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQUE7SUFFWSxNQUFNLENBQ2pCLE9BQTBCLEVBQzFCLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixRQUE0QixFQUM1QixVQUE4QixFQUM5QixPQUEyQixFQUMzQixHQUFXLEVBQ1gsVUFBa0I7O1lBRWxCLE1BQU0sUUFBUSxHQUFhLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvRCxNQUFNLGFBQWEsR0FBRyx1Q0FBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztZQUNuRyxNQUFNLGtCQUFrQixHQUFHLHVDQUFpQixDQUFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBRTdHLElBQUk7Z0JBQ0YsSUFBQSwwQ0FBMkIsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO2dCQUVsRixNQUFNLGFBQWEsR0FBWSxNQUFNLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUV2SCxJQUFJLGFBQWEsRUFBRTtvQkFDakIsSUFBQSwyQkFBWSxFQUFDLGdEQUFnRCxPQUFPLHFCQUFxQixXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUN4RyxPQUFPO2lCQUNSO2dCQUVELE1BQU0scUJBQXFCLEdBQTBCLElBQUksQ0FBQywwQkFBMEIsQ0FDbEYsV0FBVyxFQUNYLE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sQ0FDUixDQUFDO2dCQUVGLE1BQU0sY0FBYyxHQUFtQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVySCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBRXhFLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3JGO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsSUFBQSwyQkFBWSxFQUFDLHFCQUFxQixLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLEtBQUssQ0FBQzthQUNiO1FBQ0gsQ0FBQztLQUFBO0NBQ0Y7QUEzR0QsMEJBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpZW50LCBNZXRhZGF0YSB9IGZyb20gJ25pY2UtZ3JwYyc7XG5pbXBvcnQgeyBCbG9iU2V0U2VydmljZURlZmluaXRpb24sIFVwbG9hZEJsb2JSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9ibG9ic2V0X3NlcnZpY2UnO1xuaW1wb3J0IHsgY29uc29sZUVycm9yLCBjcmVhdGVVcGxvYWRCbG9iUmVxdWVzdENodW5rcywgdmFsaWRhdGVDb21wcmVzc2VkRmlsZXNTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hhcmVkLnV0aWxzJztcbmltcG9ydCB7IEdycGNDbGllbnRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vZ3JwYy1jbGllbnQvZ3JwYy1jbGllbnQtZmFjdG9yeSc7XG5pbXBvcnQgeyBDcmVhdGVFbnRpdHlSZWxlYXNlUmVxdWVzdCwgUnVtU291cmNlTWFwU2VydmljZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvcnVtX3NvdXJjZV9tYXBfc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9lbnRpdHlfdHlwZSc7XG5pbXBvcnQgeyBSZWxlYXNlRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L3J1bS92Mi9yZWxlYXNlX2VudGl0eV90eXBlJztcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9lbnRpdHlfbWV0YWRhdGEnO1xuaW1wb3J0IHsgUmVsZWFzZUVudGl0eU1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3JlbGVhc2VfZW50aXR5X21ldGFkYXRhJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VBcGkge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RW50aXR5VHlwZSgpOiBFbnRpdHlUeXBlO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UmVsZWFzZUVudGl0eVR5cGUoKTogUmVsZWFzZUVudGl0eVR5cGU7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRNYXhDb21wcmVzc2VkRmlsZVNpemUoKTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRSZWxlYXNlRW50aXR5TWV0YWRhdGEoXG4gICAgYXBwbGljYXRpb246IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgcmVwb05hbWU/OiBzdHJpbmcsXG4gICAgY29tbWl0SGFzaD86IHN0cmluZyxcbiAgICBvcmdOYW1lPzogc3RyaW5nLFxuICApOiBSZWxlYXNlRW50aXR5TWV0YWRhdGE7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEVudGl0eU1ldGFkYXRhKFxuICAgIGFwcGxpY2F0aW9uOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIHJlcG9OYW1lPzogc3RyaW5nLFxuICAgIGNvbW1pdEhhc2g/OiBzdHJpbmcsXG4gICAgb3JnTmFtZT86IHN0cmluZyxcbiAgKTogRW50aXR5TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRCbG9iKFxuICAgIGJsb2JTZXRDbGllbnQ6IENsaWVudDx0eXBlb2YgQmxvYlNldFNlcnZpY2VEZWZpbml0aW9uPixcbiAgICByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCxcbiAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgbWV0YWRhdGE6IE1ldGFkYXRhLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXF1ZXN0LmVudGl0eU1ldGFkYXRhID0gZW50aXR5TWV0YWRhdGE7XG4gICAgcmVxdWVzdC5lbnRpdHlUeXBlID0gdGhpcy5nZXRFbnRpdHlUeXBlKCk7XG5cbiAgICBjb25zdCBpdGVyYWJsZVJlcXVlc3QgPSBjcmVhdGVVcGxvYWRCbG9iUmVxdWVzdENodW5rcyhyZXF1ZXN0KTtcblxuICAgIGF3YWl0IGJsb2JTZXRDbGllbnQudXBsb2FkQmxvYihpdGVyYWJsZVJlcXVlc3QsIHsgbWV0YWRhdGEgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUVudGl0eVJlbGVhc2UoXG4gICAgcnVtU291cmNlTWFwQ2xpZW50OiBDbGllbnQ8dHlwZW9mIFJ1bVNvdXJjZU1hcFNlcnZpY2VEZWZpbml0aW9uPixcbiAgICByZWxlYXNlRW50aXR5TWV0YWRhdGE6IFJlbGVhc2VFbnRpdHlNZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICBtZXRhZGF0YTogTWV0YWRhdGEsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IENyZWF0ZUVudGl0eVJlbGVhc2VSZXF1ZXN0ID0ge1xuICAgICAgcmVsZWFzZUVudGl0eVR5cGU6IHRoaXMuZ2V0UmVsZWFzZUVudGl0eVR5cGUoKSxcbiAgICAgIHJlbGVhc2VFbnRpdHlNZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgYXdhaXQgcnVtU291cmNlTWFwQ2xpZW50LmNyZWF0ZUVudGl0eVJlbGVhc2UocmVxdWVzdCwgeyBtZXRhZGF0YSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlR3JwY01ldGFkYXRhKHByaXZhdGVLZXk6IHN0cmluZyk6IE1ldGFkYXRhIHtcbiAgICBjb25zdCBtZXRhZGF0YTogTWV0YWRhdGEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICBtZXRhZGF0YS5zZXQoJ0F1dGhvcml6YXRpb24nLCBgQmVhcmVyICR7cHJpdmF0ZUtleX1gKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrRW50aXR5UmVsZWFzZUV4aXN0cyhcbiAgICBydW1Tb3VyY2VNYXBDbGllbnQ6IENsaWVudDx0eXBlb2YgUnVtU291cmNlTWFwU2VydmljZURlZmluaXRpb24+LFxuICAgIGFwcGxpY2F0aW9uOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIG1ldGFkYXRhOiBNZXRhZGF0YSxcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBleGlzdHMgfSA9IGF3YWl0IHJ1bVNvdXJjZU1hcENsaWVudC5pc0VudGl0eVJlbGVhc2VFeGlzdHMoXG4gICAgICB7IHJlbGVhc2VJZDogdmVyc2lvbiwgYXBwbGljYXRpb24sIHJlbGVhc2VFbnRpdHlUeXBlOiB0aGlzLmdldFJlbGVhc2VFbnRpdHlUeXBlKCkgfSxcbiAgICAgIHsgbWV0YWRhdGEgfSxcbiAgICApO1xuICAgIHJldHVybiBleGlzdHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBsb2FkKFxuICAgIHJlcXVlc3Q6IFVwbG9hZEJsb2JSZXF1ZXN0LFxuICAgIGFwcGxpY2F0aW9uOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIHJlcG9OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY29tbWl0SGFzaDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIG9yZ05hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBlbnY6IHN0cmluZyxcbiAgICBwcml2YXRlS2V5OiBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHRoaXMuY3JlYXRlR3JwY01ldGFkYXRhKHByaXZhdGVLZXkpO1xuICAgIGNvbnN0IGJsb2JTZXRDbGllbnQgPSBHcnBjQ2xpZW50RmFjdG9yeS5nZXRCbG9iU2V0R3JwY0NsaWVudChlbnYsIHRoaXMuZ2V0TWF4Q29tcHJlc3NlZEZpbGVTaXplKCkpO1xuICAgIGNvbnN0IHJ1bVNvdXJjZU1hcENsaWVudCA9IEdycGNDbGllbnRGYWN0b3J5LmdldFJ1bVNvdXJjZU1hcEdycGNDbGllbnQoZW52LCB0aGlzLmdldE1heENvbXByZXNzZWRGaWxlU2l6ZSgpKTtcblxuICAgIHRyeSB7XG4gICAgICB2YWxpZGF0ZUNvbXByZXNzZWRGaWxlc1NpemUocmVxdWVzdC5kYXRhLmxlbmd0aCwgdGhpcy5nZXRNYXhDb21wcmVzc2VkRmlsZVNpemUoKSk7XG5cbiAgICAgIGNvbnN0IHJlbGVhc2VFeGlzdHM6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNoZWNrRW50aXR5UmVsZWFzZUV4aXN0cyhydW1Tb3VyY2VNYXBDbGllbnQsIGFwcGxpY2F0aW9uLCB2ZXJzaW9uLCBtZXRhZGF0YSk7XG5cbiAgICAgIGlmIChyZWxlYXNlRXhpc3RzKSB7XG4gICAgICAgIGNvbnNvbGVFcnJvcihgRW50aXR5IHJlbGVhc2UgYWxyZWFkeSBleGlzdHMgZm9yIHJlbGVhc2VJZDogJHt2ZXJzaW9ufSBhbmQgYXBwbGljYXRpb246ICR7YXBwbGljYXRpb259YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsZWFzZUVudGl0eU1ldGFkYXRhOiBSZWxlYXNlRW50aXR5TWV0YWRhdGEgPSB0aGlzLmJ1aWxkUmVsZWFzZUVudGl0eU1ldGFkYXRhKFxuICAgICAgICBhcHBsaWNhdGlvbixcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgcmVwb05hbWUsXG4gICAgICAgIGNvbW1pdEhhc2gsXG4gICAgICAgIG9yZ05hbWUsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEgPSB0aGlzLmJ1aWxkRW50aXR5TWV0YWRhdGEoYXBwbGljYXRpb24sIHZlcnNpb24sIHJlcG9OYW1lLCBjb21taXRIYXNoLCBvcmdOYW1lKTtcblxuICAgICAgYXdhaXQgdGhpcy51cGxvYWRCbG9iKGJsb2JTZXRDbGllbnQsIHJlcXVlc3QsIGVudGl0eU1ldGFkYXRhLCBtZXRhZGF0YSk7XG5cbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlRW50aXR5UmVsZWFzZShydW1Tb3VyY2VNYXBDbGllbnQsIHJlbGVhc2VFbnRpdHlNZXRhZGF0YSwgbWV0YWRhdGEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlRXJyb3IoYEZhaWxlZCB0byB1cGxvYWQ6ICR7ZXJyb3J9YCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
2
+ import { ReleaseEntityType } from '../../proto-models/com/coralogix/rum/v2/release_entity_type';
3
+ import { BaseApi } from '../base/base.api';
4
+ import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
5
+ import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
6
+ export declare class DsymApi extends BaseApi {
7
+ protected getEntityType(): EntityType;
8
+ protected getReleaseEntityType(): ReleaseEntityType;
9
+ protected getMaxCompressedFileSize(): number;
10
+ protected buildReleaseEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string): ReleaseEntityMetadata;
11
+ protected buildEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string): EntityMetadata;
12
+ }