@coralogix/rum-cli 1.1.38 → 1.1.43
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 +2 -0
- package/api/base/base.api.ts +48 -56
- package/api/dsym/dsym.api.ts +8 -0
- package/api/proguard/proguard.api.ts +8 -0
- package/api/react-native/react-native.api.ts +8 -0
- package/api/source-maps/source-maps.api.ts +8 -0
- package/cli/commands/dsym/upload-dsym-command.ts +4 -2
- package/cli/commands/proguard/upload-proguard-command.ts +4 -2
- package/cli/commands/react-native/upload-react-native-source-maps-command.ts +4 -2
- package/cli/commands/source-maps/upload-source-maps-command.ts +4 -2
- package/consts/consts.ts +1 -0
- package/dist/api/base/base.api.d.ts +10 -9
- package/dist/api/base/base.api.js +20 -34
- package/dist/api/dsym/dsym.api.d.ts +2 -2
- package/dist/api/dsym/dsym.api.js +7 -3
- package/dist/api/proguard/proguard.api.d.ts +2 -2
- package/dist/api/proguard/proguard.api.js +7 -3
- package/dist/api/react-native/react-native.api.d.ts +2 -2
- package/dist/api/react-native/react-native.api.js +7 -3
- package/dist/api/source-maps/source-maps.api.d.ts +2 -2
- package/dist/api/source-maps/source-maps.api.js +7 -3
- package/dist/cli/commands/dsym/upload-dsym-command.js +5 -3
- package/dist/cli/commands/proguard/upload-proguard-command.js +5 -3
- package/dist/cli/commands/react-native/upload-react-native-source-maps-command.js +5 -3
- package/dist/cli/commands/source-maps/upload-source-maps-command.js +5 -3
- package/dist/consts/consts.js +3 -2
- package/dist/grpc-client/grpc-client-factory.d.ts +158 -0
- package/dist/models/dsym-commands.model.d.ts +2 -0
- package/dist/models/dsym-commands.model.js +1 -1
- package/dist/models/proguard-commands.model.d.ts +2 -0
- package/dist/models/proguard-commands.model.js +1 -1
- package/dist/models/react-native-commands.model.d.ts +2 -0
- package/dist/models/react-native-commands.model.js +1 -1
- package/dist/models/source-maps-commands.model.d.ts +2 -0
- package/dist/models/source-maps-commands.model.js +1 -1
- package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.d.ts +150 -0
- package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.js +29 -1
- package/dist/proto-models/com/coralogix/blobset/v2/case_file.d.ts +36 -0
- package/dist/proto-models/com/coralogix/blobset/v2/case_file.js +161 -0
- package/dist/proto-models/com/coralogix/blobset/v2/dsym.d.ts +1 -0
- package/dist/proto-models/com/coralogix/blobset/v2/dsym.js +33 -3
- package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.d.ts +47 -0
- package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.js +375 -11
- package/dist/proto-models/com/coralogix/blobset/v2/entity_type.d.ts +3 -1
- package/dist/proto-models/com/coralogix/blobset/v2/entity_type.js +13 -1
- package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.d.ts +36 -0
- package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.js +161 -0
- package/dist/proto-models/com/coralogix/blobset/v2/proguard.d.ts +68 -0
- package/dist/proto-models/com/coralogix/blobset/v2/proguard.js +400 -0
- package/dist/proto-models/com/coralogix/rum/v2/ai_assist.d.ts +89 -0
- package/dist/proto-models/com/coralogix/rum/v2/ai_assist.js +290 -0
- package/dist/proto-models/com/coralogix/rum/v2/application_releases.d.ts +38 -0
- package/dist/proto-models/com/coralogix/rum/v2/application_releases.js +180 -0
- package/dist/proto-models/com/coralogix/rum/v2/merge_error.d.ts +38 -0
- package/dist/proto-models/com/coralogix/rum/v2/merge_error.js +171 -0
- package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.d.ts +19 -0
- package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.js +225 -10
- package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.d.ts +197 -0
- package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.js +478 -0
- package/dist/proto-models/com/coralogix/rum/v2/rum_service.d.ts +107 -0
- package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +385 -2
- package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.d.ts +94 -1
- package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +300 -2
- package/dist/proto-models/com/coralogix/rum/v2/saved_filter.d.ts +5 -1
- package/dist/proto-models/com/coralogix/rum/v2/saved_filter.js +25 -1
- package/dist/proto-models/com/coralogix/rum/v2/template.d.ts +2 -0
- package/dist/proto-models/com/coralogix/rum/v2/template.js +31 -3
- package/dist/proto-models/google/protobuf/struct.d.ts +127 -0
- package/dist/proto-models/google/protobuf/struct.js +476 -0
- package/dist/services/base/base.service.d.ts +1 -1
- package/dist/services/base/base.service.js +7 -5
- package/dist/utils/upload-mode.utils.d.ts +12 -0
- package/dist/utils/upload-mode.utils.js +26 -0
- package/dist/utils/version-context.utils.d.ts +20 -0
- package/dist/utils/version-context.utils.js +71 -0
- package/models/dsym-commands.model.ts +2 -0
- package/models/proguard-commands.model.ts +2 -0
- package/models/react-native-commands.model.ts +2 -0
- package/models/source-maps-commands.model.ts +2 -0
- package/package.json +2 -2
- package/protofetch.lock +4 -4
- package/protofetch.toml +2 -2
- package/services/base/base.service.ts +7 -3
- package/utils/upload-mode.utils.ts +30 -0
- package/utils/version-context.utils.ts +95 -0
- package/proto-models/com/coralogix/blobset/v2/audit_log.ts +0 -84
- package/proto-models/com/coralogix/blobset/v2/blobset_query_service.ts +0 -36
- package/proto-models/com/coralogix/blobset/v2/blobset_service.ts +0 -209
- package/proto-models/com/coralogix/blobset/v2/dsym.ts +0 -400
- package/proto-models/com/coralogix/blobset/v2/entity_metadata.ts +0 -540
- package/proto-models/com/coralogix/blobset/v2/entity_type.ts +0 -56
- package/proto-models/com/coralogix/blobset/v2/s3_metadata.ts +0 -154
- package/proto-models/com/coralogix/blobset/v2/source_map.ts +0 -418
- package/proto-models/com/coralogix/rum/v2/analytics.ts +0 -924
- package/proto-models/com/coralogix/rum/v2/audit_log.ts +0 -84
- package/proto-models/com/coralogix/rum/v2/chunk.ts +0 -399
- package/proto-models/com/coralogix/rum/v2/file.ts +0 -159
- package/proto-models/com/coralogix/rum/v2/hide_errors.ts +0 -234
- package/proto-models/com/coralogix/rum/v2/release_entity_metadata.ts +0 -699
- package/proto-models/com/coralogix/rum/v2/release_entity_type.ts +0 -56
- package/proto-models/com/coralogix/rum/v2/rum_hide_errors_service.ts +0 -605
- package/proto-models/com/coralogix/rum/v2/rum_react_native_source_map_service.ts +0 -229
- package/proto-models/com/coralogix/rum/v2/rum_saved_filters_service.ts +0 -1679
- package/proto-models/com/coralogix/rum/v2/rum_sdk_versions.ts +0 -279
- package/proto-models/com/coralogix/rum/v2/rum_service.ts +0 -2158
- package/proto-models/com/coralogix/rum/v2/rum_session_recording_service.ts +0 -16
- package/proto-models/com/coralogix/rum/v2/rum_settings.ts +0 -215
- package/proto-models/com/coralogix/rum/v2/rum_settings_service.ts +0 -283
- package/proto-models/com/coralogix/rum/v2/rum_source_map_service.ts +0 -905
- package/proto-models/com/coralogix/rum/v2/saved_filter.ts +0 -307
- package/proto-models/com/coralogix/rum/v2/source_code_file_mapping.ts +0 -358
- package/proto-models/com/coralogix/rum/v2/source_map_release.ts +0 -301
- package/proto-models/com/coralogix/rum/v2/template.ts +0 -588
- package/proto-models/google/protobuf/descriptor.ts +0 -4921
- package/protos/com/coralogix/blobset/v2/audit_log.proto +0 -13
- package/protos/com/coralogix/blobset/v2/blobset_query_service.proto +0 -12
- package/protos/com/coralogix/blobset/v2/blobset_service.proto +0 -18
- package/protos/com/coralogix/blobset/v2/dsym.proto +0 -19
- package/protos/com/coralogix/blobset/v2/entity_metadata.proto +0 -35
- package/protos/com/coralogix/blobset/v2/entity_type.proto +0 -11
- package/protos/com/coralogix/blobset/v2/s3_metadata.proto +0 -14
- package/protos/com/coralogix/blobset/v2/source_map.proto +0 -30
- package/protos/com/coralogix/rum/v2/analytics.proto +0 -57
- package/protos/com/coralogix/rum/v2/audit_log.proto +0 -13
- package/protos/com/coralogix/rum/v2/chunk.proto +0 -24
- package/protos/com/coralogix/rum/v2/file.proto +0 -8
- package/protos/com/coralogix/rum/v2/hide_errors.proto +0 -19
- package/protos/com/coralogix/rum/v2/release_entity_metadata.proto +0 -44
- package/protos/com/coralogix/rum/v2/release_entity_type.proto +0 -11
- package/protos/com/coralogix/rum/v2/rum_hide_errors_service.proto +0 -42
- package/protos/com/coralogix/rum/v2/rum_react_native_source_map_service.proto +0 -19
- package/protos/com/coralogix/rum/v2/rum_saved_filters_service.proto +0 -117
- package/protos/com/coralogix/rum/v2/rum_sdk_versions.proto +0 -17
- package/protos/com/coralogix/rum/v2/rum_service.proto +0 -144
- package/protos/com/coralogix/rum/v2/rum_session_recording_service.proto +0 -4
- package/protos/com/coralogix/rum/v2/rum_settings.proto +0 -26
- package/protos/com/coralogix/rum/v2/rum_settings_service.proto +0 -23
- package/protos/com/coralogix/rum/v2/rum_source_map_service.proto +0 -58
- package/protos/com/coralogix/rum/v2/saved_filter.proto +0 -28
- package/protos/com/coralogix/rum/v2/source_code_file_mapping.proto +0 -16
- package/protos/com/coralogix/rum/v2/source_map_release.proto +0 -18
- package/protos/com/coralogix/rum/v2/template.proto +0 -40
- package/protoset.bin +0 -0
package/README.md
CHANGED
|
@@ -68,6 +68,8 @@ 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
|
+
- `--override`: Override existing source maps (optional).
|
|
72
|
+
- `--merge`: Merge with existing source maps, allowing multiple uploads to the same version (optional).
|
|
71
73
|
- `-h, --help`: Display help.
|
|
72
74
|
|
|
73
75
|
## Environments
|
package/api/base/base.api.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Client,
|
|
1
|
+
import { Client, Metadata } from 'nice-grpc';
|
|
2
2
|
import { BlobSetServiceDefinition, UploadBlobRequest } from '../../proto-models/com/coralogix/blobset/v2/blobset_service';
|
|
3
|
-
import {
|
|
3
|
+
import { createUploadBlobRequestChunks, validateCompressedFilesSize } from '../../utils/shared.utils';
|
|
4
4
|
import { GrpcClientFactory } from '../../grpc-client/grpc-client-factory';
|
|
5
5
|
import { CreateEntityReleaseRequest, RumSourceMapServiceDefinition } from '../../proto-models/com/coralogix/rum/v2/rum_source_map_service';
|
|
6
6
|
import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
|
|
7
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
8
|
import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
|
|
9
|
+
import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
|
|
10
|
+
import { getVersionContext } from '../../utils/version-context.utils';
|
|
10
11
|
|
|
11
12
|
export abstract class BaseApi {
|
|
12
13
|
protected abstract getEntityType(): EntityType;
|
|
@@ -18,6 +19,8 @@ export abstract class BaseApi {
|
|
|
18
19
|
repoName?: string,
|
|
19
20
|
commitHash?: string,
|
|
20
21
|
orgName?: string,
|
|
22
|
+
internalVersion?: number,
|
|
23
|
+
mergedVersions?: number[],
|
|
21
24
|
): ReleaseEntityMetadata;
|
|
22
25
|
protected abstract buildEntityMetadata(
|
|
23
26
|
application: string,
|
|
@@ -25,9 +28,11 @@ export abstract class BaseApi {
|
|
|
25
28
|
repoName?: string,
|
|
26
29
|
commitHash?: string,
|
|
27
30
|
orgName?: string,
|
|
31
|
+
internalVersion?: number,
|
|
32
|
+
mergedVersions?: number[],
|
|
28
33
|
): EntityMetadata;
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
protected async uploadBlob(
|
|
31
36
|
blobSetClient: Client<typeof BlobSetServiceDefinition>,
|
|
32
37
|
request: UploadBlobRequest,
|
|
33
38
|
entityMetadata: EntityMetadata | undefined,
|
|
@@ -41,8 +46,8 @@ export abstract class BaseApi {
|
|
|
41
46
|
await blobSetClient.uploadBlob(iterableRequest, { metadata });
|
|
42
47
|
}
|
|
43
48
|
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
protected async createEntityRelease(
|
|
50
|
+
rumClient: Client<typeof RumSourceMapServiceDefinition>,
|
|
46
51
|
releaseEntityMetadata: ReleaseEntityMetadata | undefined,
|
|
47
52
|
metadata: Metadata,
|
|
48
53
|
): Promise<void> {
|
|
@@ -51,37 +56,15 @@ export abstract class BaseApi {
|
|
|
51
56
|
releaseEntityMetadata,
|
|
52
57
|
};
|
|
53
58
|
|
|
54
|
-
await
|
|
59
|
+
await rumClient.createEntityRelease(request, { metadata });
|
|
55
60
|
}
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
protected createGrpcMetadata(privateKey: string): Metadata {
|
|
58
63
|
const metadata: Metadata = new Metadata();
|
|
59
64
|
metadata.set('Authorization', `Bearer ${privateKey}`);
|
|
60
65
|
return metadata;
|
|
61
66
|
}
|
|
62
67
|
|
|
63
|
-
private async checkEntityReleaseExists(
|
|
64
|
-
rumSourceMapClient: Client<typeof RumSourceMapServiceDefinition>,
|
|
65
|
-
application: string,
|
|
66
|
-
version: string,
|
|
67
|
-
metadata: Metadata,
|
|
68
|
-
): Promise<boolean> {
|
|
69
|
-
try {
|
|
70
|
-
const { exists } = await rumSourceMapClient.isEntityReleaseExists(
|
|
71
|
-
{ releaseId: version, application, releaseEntityType: this.getReleaseEntityType() },
|
|
72
|
-
{ metadata },
|
|
73
|
-
);
|
|
74
|
-
return exists;
|
|
75
|
-
} catch (error) {
|
|
76
|
-
if (error instanceof ClientError && error.code === Status.PERMISSION_DENIED) {
|
|
77
|
-
throw new Error(
|
|
78
|
-
`Permission denied while checking entity release. Verify that your private key is correct. Details: ${error.message}`,
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
throw error;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
68
|
public async upload(
|
|
86
69
|
request: UploadBlobRequest,
|
|
87
70
|
application: string,
|
|
@@ -91,35 +74,44 @@ export abstract class BaseApi {
|
|
|
91
74
|
orgName: string | undefined,
|
|
92
75
|
env: string,
|
|
93
76
|
privateKey: string,
|
|
77
|
+
override = false,
|
|
78
|
+
merge = false,
|
|
94
79
|
): Promise<void> {
|
|
95
|
-
const
|
|
80
|
+
const grpcMetadata: Metadata = this.createGrpcMetadata(privateKey);
|
|
96
81
|
const blobSetClient = GrpcClientFactory.getBlobSetGrpcClient(env, this.getMaxCompressedFileSize());
|
|
97
|
-
const
|
|
82
|
+
const rumClient = GrpcClientFactory.getRumSourceMapGrpcClient(env, this.getMaxCompressedFileSize());
|
|
98
83
|
|
|
99
|
-
|
|
100
|
-
validateCompressedFilesSize(request.data.length, this.getMaxCompressedFileSize());
|
|
84
|
+
validateCompressedFilesSize(request.data.length, this.getMaxCompressedFileSize());
|
|
101
85
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
86
|
+
const { internalVersion, mergedVersions } = await getVersionContext({
|
|
87
|
+
client: rumClient,
|
|
88
|
+
application,
|
|
89
|
+
version,
|
|
90
|
+
releaseEntityType: this.getReleaseEntityType(),
|
|
91
|
+
metadata: grpcMetadata,
|
|
92
|
+
flags: { override, merge },
|
|
93
|
+
});
|
|
94
|
+
const releaseEntityMetadata: ReleaseEntityMetadata = this.buildReleaseEntityMetadata(
|
|
95
|
+
application,
|
|
96
|
+
version,
|
|
97
|
+
repoName,
|
|
98
|
+
commitHash,
|
|
99
|
+
orgName,
|
|
100
|
+
internalVersion,
|
|
101
|
+
mergedVersions,
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
const entityMetadata: EntityMetadata = this.buildEntityMetadata(
|
|
105
|
+
application,
|
|
106
|
+
version,
|
|
107
|
+
repoName,
|
|
108
|
+
commitHash,
|
|
109
|
+
orgName,
|
|
110
|
+
internalVersion,
|
|
111
|
+
mergedVersions,
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
await this.uploadBlob(blobSetClient, request, entityMetadata, grpcMetadata);
|
|
115
|
+
await this.createEntityRelease(rumClient, releaseEntityMetadata, grpcMetadata);
|
|
124
116
|
}
|
|
125
117
|
}
|
package/api/dsym/dsym.api.ts
CHANGED
|
@@ -24,6 +24,8 @@ export class DsymApi extends BaseApi {
|
|
|
24
24
|
repoName?: string,
|
|
25
25
|
commitHash?: string,
|
|
26
26
|
orgName?: string,
|
|
27
|
+
internalVersion?: number,
|
|
28
|
+
mergedVersions?: number[],
|
|
27
29
|
): ReleaseEntityMetadata {
|
|
28
30
|
return {
|
|
29
31
|
metadata: {
|
|
@@ -34,6 +36,8 @@ export class DsymApi extends BaseApi {
|
|
|
34
36
|
repoName: repoName || '',
|
|
35
37
|
commitHash: commitHash || '',
|
|
36
38
|
orgName: orgName || '',
|
|
39
|
+
internalVersion: internalVersion ?? 0,
|
|
40
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
37
41
|
},
|
|
38
42
|
},
|
|
39
43
|
};
|
|
@@ -45,6 +49,8 @@ export class DsymApi extends BaseApi {
|
|
|
45
49
|
repoName?: string,
|
|
46
50
|
commitHash?: string,
|
|
47
51
|
orgName?: string,
|
|
52
|
+
internalVersion?: number,
|
|
53
|
+
mergedVersions?: number[],
|
|
48
54
|
): EntityMetadata {
|
|
49
55
|
return {
|
|
50
56
|
metadata: {
|
|
@@ -55,6 +61,8 @@ export class DsymApi extends BaseApi {
|
|
|
55
61
|
repoName: repoName || '',
|
|
56
62
|
commitHash: commitHash || '',
|
|
57
63
|
orgName: orgName || '',
|
|
64
|
+
internalVersion: internalVersion ?? 0,
|
|
65
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
58
66
|
},
|
|
59
67
|
},
|
|
60
68
|
};
|
|
@@ -24,6 +24,8 @@ export class ProguardApi extends BaseApi {
|
|
|
24
24
|
repoName?: string,
|
|
25
25
|
commitHash?: string,
|
|
26
26
|
orgName?: string,
|
|
27
|
+
internalVersion?: number,
|
|
28
|
+
mergedVersions?: number[],
|
|
27
29
|
): ReleaseEntityMetadata {
|
|
28
30
|
return {
|
|
29
31
|
metadata: {
|
|
@@ -34,6 +36,8 @@ export class ProguardApi extends BaseApi {
|
|
|
34
36
|
repoName: repoName || '',
|
|
35
37
|
commitHash: commitHash || '',
|
|
36
38
|
orgName: orgName || '',
|
|
39
|
+
internalVersion: internalVersion ?? 0,
|
|
40
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
37
41
|
},
|
|
38
42
|
},
|
|
39
43
|
};
|
|
@@ -45,6 +49,8 @@ export class ProguardApi extends BaseApi {
|
|
|
45
49
|
repoName?: string,
|
|
46
50
|
commitHash?: string,
|
|
47
51
|
orgName?: string,
|
|
52
|
+
internalVersion?: number,
|
|
53
|
+
mergedVersions?: number[],
|
|
48
54
|
): EntityMetadata {
|
|
49
55
|
return {
|
|
50
56
|
metadata: {
|
|
@@ -55,6 +61,8 @@ export class ProguardApi extends BaseApi {
|
|
|
55
61
|
repoName: repoName || '',
|
|
56
62
|
commitHash: commitHash || '',
|
|
57
63
|
orgName: orgName || '',
|
|
64
|
+
internalVersion: internalVersion ?? 0,
|
|
65
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
58
66
|
},
|
|
59
67
|
},
|
|
60
68
|
};
|
|
@@ -24,6 +24,8 @@ export class ReactNativeApi extends BaseApi {
|
|
|
24
24
|
repoName?: string,
|
|
25
25
|
commitHash?: string,
|
|
26
26
|
orgName?: string,
|
|
27
|
+
internalVersion?: number,
|
|
28
|
+
mergedVersions?: number[],
|
|
27
29
|
): ReleaseEntityMetadata {
|
|
28
30
|
return {
|
|
29
31
|
metadata: {
|
|
@@ -34,6 +36,8 @@ export class ReactNativeApi extends BaseApi {
|
|
|
34
36
|
repoName: repoName || '',
|
|
35
37
|
commitHash: commitHash || '',
|
|
36
38
|
orgName: orgName || '',
|
|
39
|
+
internalVersion: internalVersion ?? 0,
|
|
40
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
37
41
|
},
|
|
38
42
|
},
|
|
39
43
|
};
|
|
@@ -45,6 +49,8 @@ export class ReactNativeApi extends BaseApi {
|
|
|
45
49
|
repoName?: string,
|
|
46
50
|
commitHash?: string,
|
|
47
51
|
orgName?: string,
|
|
52
|
+
internalVersion?: number,
|
|
53
|
+
mergedVersions?: number[],
|
|
48
54
|
): EntityMetadata {
|
|
49
55
|
return {
|
|
50
56
|
metadata: {
|
|
@@ -55,6 +61,8 @@ export class ReactNativeApi extends BaseApi {
|
|
|
55
61
|
repoName: repoName || '',
|
|
56
62
|
commitHash: commitHash || '',
|
|
57
63
|
orgName: orgName || '',
|
|
64
|
+
internalVersion: internalVersion ?? 0,
|
|
65
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
58
66
|
},
|
|
59
67
|
},
|
|
60
68
|
};
|
|
@@ -24,6 +24,8 @@ export class SourceMapsApi extends BaseApi {
|
|
|
24
24
|
repoName?: string,
|
|
25
25
|
commitHash?: string,
|
|
26
26
|
orgName?: string,
|
|
27
|
+
internalVersion?: number,
|
|
28
|
+
mergedVersions?: number[],
|
|
27
29
|
): ReleaseEntityMetadata {
|
|
28
30
|
return {
|
|
29
31
|
metadata: {
|
|
@@ -34,6 +36,8 @@ export class SourceMapsApi extends BaseApi {
|
|
|
34
36
|
repoName: repoName || '',
|
|
35
37
|
commitHash: commitHash || '',
|
|
36
38
|
orgName: orgName || '',
|
|
39
|
+
internalVersion: internalVersion ?? 0,
|
|
40
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
37
41
|
},
|
|
38
42
|
},
|
|
39
43
|
};
|
|
@@ -45,6 +49,8 @@ export class SourceMapsApi extends BaseApi {
|
|
|
45
49
|
repoName?: string,
|
|
46
50
|
commitHash?: string,
|
|
47
51
|
orgName?: string,
|
|
52
|
+
internalVersion?: number,
|
|
53
|
+
mergedVersions?: number[],
|
|
48
54
|
): EntityMetadata {
|
|
49
55
|
return {
|
|
50
56
|
metadata: {
|
|
@@ -55,6 +61,8 @@ export class SourceMapsApi extends BaseApi {
|
|
|
55
61
|
repoName: repoName || '',
|
|
56
62
|
commitHash: commitHash || '',
|
|
57
63
|
orgName: orgName || '',
|
|
64
|
+
internalVersion: internalVersion ?? 0,
|
|
65
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
58
66
|
},
|
|
59
67
|
},
|
|
60
68
|
};
|
|
@@ -14,6 +14,8 @@ export const uploadDsymCommand = () => {
|
|
|
14
14
|
.option('-c, --commit-hash <commitHash>', 'GitHub commit hash (optional)')
|
|
15
15
|
.option('-n, --repo-name <repoName>', 'GitHub Repository name (optional)')
|
|
16
16
|
.option('-o, --org-name <orgName>', 'GitHub user name (optional)')
|
|
17
|
+
.option('--override', 'Override existing dsym (optional)')
|
|
18
|
+
.option('--merge', 'Merge with existing dsym (optional)')
|
|
17
19
|
.description('Upload Dsym')
|
|
18
20
|
.action(async (options: UploadDsymCommandOptions) => {
|
|
19
21
|
try {
|
|
@@ -22,13 +24,13 @@ export const uploadDsymCommand = () => {
|
|
|
22
24
|
process.exit(0);
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env } = options;
|
|
27
|
+
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env, override, merge } = options;
|
|
26
28
|
|
|
27
29
|
checkMissingArguments<UploadDsymCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
|
|
28
30
|
|
|
29
31
|
const service: DsymService = new DsymService();
|
|
30
32
|
|
|
31
|
-
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
|
|
33
|
+
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey, override, merge);
|
|
32
34
|
} catch (error) {
|
|
33
35
|
consoleError(error);
|
|
34
36
|
}
|
|
@@ -14,6 +14,8 @@ export const uploadProguardCommand = () => {
|
|
|
14
14
|
.option('-c, --commit-hash <commitHash>', 'GitHub commit hash (optional)')
|
|
15
15
|
.option('-n, --repo-name <repoName>', 'GitHub Repository name (optional)')
|
|
16
16
|
.option('-o, --org-name <orgName>', 'GitHub user name (optional)')
|
|
17
|
+
.option('--override', 'Override existing proguard mapping (optional)')
|
|
18
|
+
.option('--merge', 'Merge with existing proguard mapping (optional)')
|
|
17
19
|
.description('Upload Proguard mapping file')
|
|
18
20
|
.action(async (options: UploadProguardCommandOptions) => {
|
|
19
21
|
try {
|
|
@@ -22,13 +24,13 @@ export const uploadProguardCommand = () => {
|
|
|
22
24
|
process.exit(0);
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env } = options;
|
|
27
|
+
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env, override, merge } = options;
|
|
26
28
|
|
|
27
29
|
checkMissingArguments<UploadProguardCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
|
|
28
30
|
|
|
29
31
|
const service: ProguardService = new ProguardService();
|
|
30
32
|
|
|
31
|
-
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
|
|
33
|
+
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey, override, merge);
|
|
32
34
|
} catch (error) {
|
|
33
35
|
consoleError(error);
|
|
34
36
|
}
|
|
@@ -14,6 +14,8 @@ export const uploadReactNativeSourceMapsCommand = () => {
|
|
|
14
14
|
.option('-c, --commit-hash <commitHash>', 'GitHub commit hash (optional)')
|
|
15
15
|
.option('-n, --repo-name <repoName>', 'GitHub Repository name (optional)')
|
|
16
16
|
.option('-o, --org-name <orgName>', 'GitHub user name (optional)')
|
|
17
|
+
.option('--override', 'Override existing source maps (optional)')
|
|
18
|
+
.option('--merge', 'Merge with existing source maps (optional)')
|
|
17
19
|
.description('Upload react native source maps')
|
|
18
20
|
.action(async (options: UploadReactNativeSourceMapsCommandOptions) => {
|
|
19
21
|
try {
|
|
@@ -22,7 +24,7 @@ export const uploadReactNativeSourceMapsCommand = () => {
|
|
|
22
24
|
process.exit(0);
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env } = options;
|
|
27
|
+
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env, override, merge } = options;
|
|
26
28
|
|
|
27
29
|
checkMissingArguments<UploadReactNativeSourceMapsCommandOptions>(options, [
|
|
28
30
|
'privateKey',
|
|
@@ -34,7 +36,7 @@ export const uploadReactNativeSourceMapsCommand = () => {
|
|
|
34
36
|
|
|
35
37
|
const service: ReactNativeService = new ReactNativeService();
|
|
36
38
|
|
|
37
|
-
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
|
|
39
|
+
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey, override, merge);
|
|
38
40
|
} catch (error) {
|
|
39
41
|
consoleError(error);
|
|
40
42
|
}
|
|
@@ -14,6 +14,8 @@ export const uploadSourceMapsCommand = () => {
|
|
|
14
14
|
.option('-c, --commit-hash <commitHash>', 'GitHub commit hash (optional)')
|
|
15
15
|
.option('-n, --repo-name <repoName>', 'GitHub Repository name (optional)')
|
|
16
16
|
.option('-o, --org-name <orgName>', 'GitHub user name (optional)')
|
|
17
|
+
.option('--override', 'Override existing source maps (optional)')
|
|
18
|
+
.option('--merge', 'Merge with existing source maps (optional)')
|
|
17
19
|
.description('Update source maps')
|
|
18
20
|
.action(async (options: UploadSourceMapsCommandOptions) => {
|
|
19
21
|
try {
|
|
@@ -22,13 +24,13 @@ export const uploadSourceMapsCommand = () => {
|
|
|
22
24
|
process.exit(0);
|
|
23
25
|
}
|
|
24
26
|
|
|
25
|
-
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env } = options;
|
|
27
|
+
const { privateKey, application, version, folderPath, commitHash, repoName, orgName, env, override, merge } = options;
|
|
26
28
|
|
|
27
29
|
checkMissingArguments<UploadSourceMapsCommandOptions>(options, ['privateKey', 'application', 'version', 'folderPath', 'env']);
|
|
28
30
|
|
|
29
31
|
const service: SourceMapsService = new SourceMapsService();
|
|
30
32
|
|
|
31
|
-
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey);
|
|
33
|
+
await service.upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey, override, merge);
|
|
32
34
|
} catch (error) {
|
|
33
35
|
consoleError(error);
|
|
34
36
|
}
|
package/consts/consts.ts
CHANGED
|
@@ -16,4 +16,5 @@ export const envToDomain: Record<string, string> = {
|
|
|
16
16
|
AP1: 'https://ng-api-grpc.app.coralogix.in:443', // ap-south-1 (Mumbai)
|
|
17
17
|
AP2: 'https://ng-api-grpc.coralogixsg.com:443', // ap-southeast-1 (Singapore)
|
|
18
18
|
AP3: 'https://ng-api-grpc.ap3.coralogix.com:443', // ap-southeast-3 (Jakarta)
|
|
19
|
+
STG: 'https://ng-api-grpc.app.staging.coralogix.net:443',
|
|
19
20
|
};
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Client, Metadata } from 'nice-grpc';
|
|
2
|
+
import { BlobSetServiceDefinition, UploadBlobRequest } from '../../proto-models/com/coralogix/blobset/v2/blobset_service';
|
|
3
|
+
import { RumSourceMapServiceDefinition } from '../../proto-models/com/coralogix/rum/v2/rum_source_map_service';
|
|
2
4
|
import { EntityType } from '../../proto-models/com/coralogix/blobset/v2/entity_type';
|
|
3
5
|
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
6
|
import { ReleaseEntityMetadata } from '../../proto-models/com/coralogix/rum/v2/release_entity_metadata';
|
|
7
|
+
import { EntityMetadata } from '../../proto-models/com/coralogix/blobset/v2/entity_metadata';
|
|
6
8
|
export declare abstract class BaseApi {
|
|
7
9
|
protected abstract getEntityType(): EntityType;
|
|
8
10
|
protected abstract getReleaseEntityType(): ReleaseEntityType;
|
|
9
11
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
upload(request: UploadBlobRequest, application: string, version: string, repoName: string | undefined, commitHash: string | undefined, orgName: string | undefined, env: string, privateKey: string): Promise<void>;
|
|
12
|
+
protected abstract buildReleaseEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string, internalVersion?: number, mergedVersions?: number[]): ReleaseEntityMetadata;
|
|
13
|
+
protected abstract buildEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string, internalVersion?: number, mergedVersions?: number[]): EntityMetadata;
|
|
14
|
+
protected uploadBlob(blobSetClient: Client<typeof BlobSetServiceDefinition>, request: UploadBlobRequest, entityMetadata: EntityMetadata | undefined, metadata: Metadata): Promise<void>;
|
|
15
|
+
protected createEntityRelease(rumClient: Client<typeof RumSourceMapServiceDefinition>, releaseEntityMetadata: ReleaseEntityMetadata | undefined, metadata: Metadata): Promise<void>;
|
|
16
|
+
protected createGrpcMetadata(privateKey: string): Metadata;
|
|
17
|
+
upload(request: UploadBlobRequest, application: string, version: string, repoName: string | undefined, commitHash: string | undefined, orgName: string | undefined, env: string, privateKey: string, override?: boolean, merge?: boolean): Promise<void>;
|
|
17
18
|
}
|
|
@@ -13,6 +13,7 @@ exports.BaseApi = void 0;
|
|
|
13
13
|
const nice_grpc_1 = require("nice-grpc");
|
|
14
14
|
const shared_utils_1 = require("../../utils/shared.utils");
|
|
15
15
|
const grpc_client_factory_1 = require("../../grpc-client/grpc-client-factory");
|
|
16
|
+
const version_context_utils_1 = require("../../utils/version-context.utils");
|
|
16
17
|
class BaseApi {
|
|
17
18
|
uploadBlob(blobSetClient, request, entityMetadata, metadata) {
|
|
18
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -22,13 +23,13 @@ class BaseApi {
|
|
|
22
23
|
yield blobSetClient.uploadBlob(iterableRequest, { metadata });
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
|
-
createEntityRelease(
|
|
26
|
+
createEntityRelease(rumClient, releaseEntityMetadata, metadata) {
|
|
26
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
28
|
const request = {
|
|
28
29
|
releaseEntityType: this.getReleaseEntityType(),
|
|
29
30
|
releaseEntityMetadata,
|
|
30
31
|
};
|
|
31
|
-
yield
|
|
32
|
+
yield rumClient.createEntityRelease(request, { metadata });
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
createGrpcMetadata(privateKey) {
|
|
@@ -36,41 +37,26 @@ class BaseApi {
|
|
|
36
37
|
metadata.set('Authorization', `Bearer ${privateKey}`);
|
|
37
38
|
return metadata;
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
+
upload(request, application, version, repoName, commitHash, orgName, env, privateKey, override = false, merge = false) {
|
|
40
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
|
|
42
|
-
const { exists } = yield rumSourceMapClient.isEntityReleaseExists({ releaseId: version, application, releaseEntityType: this.getReleaseEntityType() }, { metadata });
|
|
43
|
-
return exists;
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
if (error instanceof nice_grpc_1.ClientError && error.code === nice_grpc_1.Status.PERMISSION_DENIED) {
|
|
47
|
-
throw new Error(`Permission denied while checking entity release. Verify that your private key is correct. Details: ${error.message}`);
|
|
48
|
-
}
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
upload(request, application, version, repoName, commitHash, orgName, env, privateKey) {
|
|
54
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
const metadata = this.createGrpcMetadata(privateKey);
|
|
42
|
+
const grpcMetadata = this.createGrpcMetadata(privateKey);
|
|
56
43
|
const blobSetClient = grpc_client_factory_1.GrpcClientFactory.getBlobSetGrpcClient(env, this.getMaxCompressedFileSize());
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
44
|
+
const rumClient = grpc_client_factory_1.GrpcClientFactory.getRumSourceMapGrpcClient(env, this.getMaxCompressedFileSize());
|
|
45
|
+
(0, shared_utils_1.validateCompressedFilesSize)(request.data.length, this.getMaxCompressedFileSize());
|
|
46
|
+
const { internalVersion, mergedVersions } = yield (0, version_context_utils_1.getVersionContext)({
|
|
47
|
+
client: rumClient,
|
|
48
|
+
application,
|
|
49
|
+
version,
|
|
50
|
+
releaseEntityType: this.getReleaseEntityType(),
|
|
51
|
+
metadata: grpcMetadata,
|
|
52
|
+
flags: { override, merge },
|
|
53
|
+
});
|
|
54
|
+
const releaseEntityMetadata = this.buildReleaseEntityMetadata(application, version, repoName, commitHash, orgName, internalVersion, mergedVersions);
|
|
55
|
+
const entityMetadata = this.buildEntityMetadata(application, version, repoName, commitHash, orgName, internalVersion, mergedVersions);
|
|
56
|
+
yield this.uploadBlob(blobSetClient, request, entityMetadata, grpcMetadata);
|
|
57
|
+
yield this.createEntityRelease(rumClient, releaseEntityMetadata, grpcMetadata);
|
|
72
58
|
});
|
|
73
59
|
}
|
|
74
60
|
}
|
|
75
61
|
exports.BaseApi = BaseApi;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYmFzZS9iYXNlLmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBNkM7QUFFN0MsMkRBQXNHO0FBQ3RHLCtFQUEwRTtBQU0xRSw2RUFBc0U7QUFFdEUsTUFBc0IsT0FBTztJQXVCWCxVQUFVLENBQ3hCLGFBQXNELEVBQ3RELE9BQTBCLEVBQzFCLGNBQTBDLEVBQzFDLFFBQWtCOztZQUVsQixPQUFPLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztZQUN4QyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUUxQyxNQUFNLGVBQWUsR0FBRyxJQUFBLDRDQUE2QixFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRS9ELE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7S0FBQTtJQUVlLG1CQUFtQixDQUNqQyxTQUF1RCxFQUN2RCxxQkFBd0QsRUFDeEQsUUFBa0I7O1lBRWxCLE1BQU0sT0FBTyxHQUErQjtnQkFDMUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM5QyxxQkFBcUI7YUFDdEIsQ0FBQztZQUVGLE1BQU0sU0FBUyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUFBO0lBRVMsa0JBQWtCLENBQUMsVUFBa0I7UUFDN0MsTUFBTSxRQUFRLEdBQWEsSUFBSSxvQkFBUSxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFWSxNQUFNLENBQ2pCLE9BQTBCLEVBQzFCLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixRQUE0QixFQUM1QixVQUE4QixFQUM5QixPQUEyQixFQUMzQixHQUFXLEVBQ1gsVUFBa0IsRUFDbEIsUUFBUSxHQUFHLEtBQUssRUFDaEIsS0FBSyxHQUFHLEtBQUs7O1lBRWIsTUFBTSxZQUFZLEdBQWEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sYUFBYSxHQUFHLHVDQUFpQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBQ25HLE1BQU0sU0FBUyxHQUFHLHVDQUFpQixDQUFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO1lBRXBHLElBQUEsMENBQTJCLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQztZQUVsRixNQUFNLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSx5Q0FBaUIsRUFBQztnQkFDbEUsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFdBQVc7Z0JBQ1gsT0FBTztnQkFDUCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlDLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2FBQzNCLENBQUMsQ0FBQztZQUNILE1BQU0scUJBQXFCLEdBQTBCLElBQUksQ0FBQywwQkFBMEIsQ0FDbEYsV0FBVyxFQUNYLE9BQU8sRUFDUCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE9BQU8sRUFDUCxlQUFlLEVBQ2YsY0FBYyxDQUNmLENBQUM7WUFFRixNQUFNLGNBQWMsR0FBbUIsSUFBSSxDQUFDLG1CQUFtQixDQUM3RCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLGVBQWUsRUFDZixjQUFjLENBQ2YsQ0FBQztZQUVGLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM1RSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDakYsQ0FBQztLQUFBO0NBQ0Y7QUF6R0QsMEJBeUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpZW50LCBNZXRhZGF0YSB9IGZyb20gJ25pY2UtZ3JwYyc7XG5pbXBvcnQgeyBCbG9iU2V0U2VydmljZURlZmluaXRpb24sIFVwbG9hZEJsb2JSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9ibG9ic2V0X3NlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlVXBsb2FkQmxvYlJlcXVlc3RDaHVua3MsIHZhbGlkYXRlQ29tcHJlc3NlZEZpbGVzU2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NoYXJlZC51dGlscyc7XG5pbXBvcnQgeyBHcnBjQ2xpZW50RmFjdG9yeSB9IGZyb20gJy4uLy4uL2dycGMtY2xpZW50L2dycGMtY2xpZW50LWZhY3RvcnknO1xuaW1wb3J0IHsgQ3JlYXRlRW50aXR5UmVsZWFzZVJlcXVlc3QsIFJ1bVNvdXJjZU1hcFNlcnZpY2VEZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3J1bV9zb3VyY2VfbWFwX3NlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5VHlwZSB9IGZyb20gJy4uLy4uL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvZW50aXR5X3R5cGUnO1xuaW1wb3J0IHsgUmVsZWFzZUVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvcmVsZWFzZV9lbnRpdHlfdHlwZSc7XG5pbXBvcnQgeyBSZWxlYXNlRW50aXR5TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvcmVsZWFzZV9lbnRpdHlfbWV0YWRhdGEnO1xuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2VudGl0eV9tZXRhZGF0YSc7XG5pbXBvcnQgeyBnZXRWZXJzaW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3ZlcnNpb24tY29udGV4dC51dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXBpIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFJlbGVhc2VFbnRpdHlUeXBlKCk6IFJlbGVhc2VFbnRpdHlUeXBlO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TWF4Q29tcHJlc3NlZEZpbGVTaXplKCk6IG51bWJlcjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkUmVsZWFzZUVudGl0eU1ldGFkYXRhKFxuICAgIGFwcGxpY2F0aW9uOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIHJlcG9OYW1lPzogc3RyaW5nLFxuICAgIGNvbW1pdEhhc2g/OiBzdHJpbmcsXG4gICAgb3JnTmFtZT86IHN0cmluZyxcbiAgICBpbnRlcm5hbFZlcnNpb24/OiBudW1iZXIsXG4gICAgbWVyZ2VkVmVyc2lvbnM/OiBudW1iZXJbXSxcbiAgKTogUmVsZWFzZUVudGl0eU1ldGFkYXRhO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRFbnRpdHlNZXRhZGF0YShcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICByZXBvTmFtZT86IHN0cmluZyxcbiAgICBjb21taXRIYXNoPzogc3RyaW5nLFxuICAgIG9yZ05hbWU/OiBzdHJpbmcsXG4gICAgaW50ZXJuYWxWZXJzaW9uPzogbnVtYmVyLFxuICAgIG1lcmdlZFZlcnNpb25zPzogbnVtYmVyW10sXG4gICk6IEVudGl0eU1ldGFkYXRhO1xuXG4gIHByb3RlY3RlZCBhc3luYyB1cGxvYWRCbG9iKFxuICAgIGJsb2JTZXRDbGllbnQ6IENsaWVudDx0eXBlb2YgQmxvYlNldFNlcnZpY2VEZWZpbml0aW9uPixcbiAgICByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCxcbiAgICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgbWV0YWRhdGE6IE1ldGFkYXRhLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXF1ZXN0LmVudGl0eU1ldGFkYXRhID0gZW50aXR5TWV0YWRhdGE7XG4gICAgcmVxdWVzdC5lbnRpdHlUeXBlID0gdGhpcy5nZXRFbnRpdHlUeXBlKCk7XG5cbiAgICBjb25zdCBpdGVyYWJsZVJlcXVlc3QgPSBjcmVhdGVVcGxvYWRCbG9iUmVxdWVzdENodW5rcyhyZXF1ZXN0KTtcblxuICAgIGF3YWl0IGJsb2JTZXRDbGllbnQudXBsb2FkQmxvYihpdGVyYWJsZVJlcXVlc3QsIHsgbWV0YWRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlRW50aXR5UmVsZWFzZShcbiAgICBydW1DbGllbnQ6IENsaWVudDx0eXBlb2YgUnVtU291cmNlTWFwU2VydmljZURlZmluaXRpb24+LFxuICAgIHJlbGVhc2VFbnRpdHlNZXRhZGF0YTogUmVsZWFzZUVudGl0eU1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIG1ldGFkYXRhOiBNZXRhZGF0YSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVxdWVzdDogQ3JlYXRlRW50aXR5UmVsZWFzZVJlcXVlc3QgPSB7XG4gICAgICByZWxlYXNlRW50aXR5VHlwZTogdGhpcy5nZXRSZWxlYXNlRW50aXR5VHlwZSgpLFxuICAgICAgcmVsZWFzZUVudGl0eU1ldGFkYXRhLFxuICAgIH07XG5cbiAgICBhd2FpdCBydW1DbGllbnQuY3JlYXRlRW50aXR5UmVsZWFzZShyZXF1ZXN0LCB7IG1ldGFkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUdycGNNZXRhZGF0YShwcml2YXRlS2V5OiBzdHJpbmcpOiBNZXRhZGF0YSB7XG4gICAgY29uc3QgbWV0YWRhdGE6IE1ldGFkYXRhID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgbWV0YWRhdGEuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3ByaXZhdGVLZXl9YCk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwbG9hZChcbiAgICByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCxcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICByZXBvTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbW1pdEhhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBvcmdOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgZW52OiBzdHJpbmcsXG4gICAgcHJpdmF0ZUtleTogc3RyaW5nLFxuICAgIG92ZXJyaWRlID0gZmFsc2UsXG4gICAgbWVyZ2UgPSBmYWxzZSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZ3JwY01ldGFkYXRhOiBNZXRhZGF0YSA9IHRoaXMuY3JlYXRlR3JwY01ldGFkYXRhKHByaXZhdGVLZXkpO1xuICAgIGNvbnN0IGJsb2JTZXRDbGllbnQgPSBHcnBjQ2xpZW50RmFjdG9yeS5nZXRCbG9iU2V0R3JwY0NsaWVudChlbnYsIHRoaXMuZ2V0TWF4Q29tcHJlc3NlZEZpbGVTaXplKCkpO1xuICAgIGNvbnN0IHJ1bUNsaWVudCA9IEdycGNDbGllbnRGYWN0b3J5LmdldFJ1bVNvdXJjZU1hcEdycGNDbGllbnQoZW52LCB0aGlzLmdldE1heENvbXByZXNzZWRGaWxlU2l6ZSgpKTtcblxuICAgIHZhbGlkYXRlQ29tcHJlc3NlZEZpbGVzU2l6ZShyZXF1ZXN0LmRhdGEubGVuZ3RoLCB0aGlzLmdldE1heENvbXByZXNzZWRGaWxlU2l6ZSgpKTtcblxuICAgIGNvbnN0IHsgaW50ZXJuYWxWZXJzaW9uLCBtZXJnZWRWZXJzaW9ucyB9ID0gYXdhaXQgZ2V0VmVyc2lvbkNvbnRleHQoe1xuICAgICAgY2xpZW50OiBydW1DbGllbnQsXG4gICAgICBhcHBsaWNhdGlvbixcbiAgICAgIHZlcnNpb24sXG4gICAgICByZWxlYXNlRW50aXR5VHlwZTogdGhpcy5nZXRSZWxlYXNlRW50aXR5VHlwZSgpLFxuICAgICAgbWV0YWRhdGE6IGdycGNNZXRhZGF0YSxcbiAgICAgIGZsYWdzOiB7IG92ZXJyaWRlLCBtZXJnZSB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHJlbGVhc2VFbnRpdHlNZXRhZGF0YTogUmVsZWFzZUVudGl0eU1ldGFkYXRhID0gdGhpcy5idWlsZFJlbGVhc2VFbnRpdHlNZXRhZGF0YShcbiAgICAgIGFwcGxpY2F0aW9uLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgY29tbWl0SGFzaCxcbiAgICAgIG9yZ05hbWUsXG4gICAgICBpbnRlcm5hbFZlcnNpb24sXG4gICAgICBtZXJnZWRWZXJzaW9ucyxcbiAgICApO1xuXG4gICAgY29uc3QgZW50aXR5TWV0YWRhdGE6IEVudGl0eU1ldGFkYXRhID0gdGhpcy5idWlsZEVudGl0eU1ldGFkYXRhKFxuICAgICAgYXBwbGljYXRpb24sXG4gICAgICB2ZXJzaW9uLFxuICAgICAgcmVwb05hbWUsXG4gICAgICBjb21taXRIYXNoLFxuICAgICAgb3JnTmFtZSxcbiAgICAgIGludGVybmFsVmVyc2lvbixcbiAgICAgIG1lcmdlZFZlcnNpb25zLFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLnVwbG9hZEJsb2IoYmxvYlNldENsaWVudCwgcmVxdWVzdCwgZW50aXR5TWV0YWRhdGEsIGdycGNNZXRhZGF0YSk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVFbnRpdHlSZWxlYXNlKHJ1bUNsaWVudCwgcmVsZWFzZUVudGl0eU1ldGFkYXRhLCBncnBjTWV0YWRhdGEpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,6 @@ export declare class DsymApi extends BaseApi {
|
|
|
7
7
|
protected getEntityType(): EntityType;
|
|
8
8
|
protected getReleaseEntityType(): ReleaseEntityType;
|
|
9
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;
|
|
10
|
+
protected buildReleaseEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string, internalVersion?: number, mergedVersions?: number[]): ReleaseEntityMetadata;
|
|
11
|
+
protected buildEntityMetadata(application: string, version: string, repoName?: string, commitHash?: string, orgName?: string, internalVersion?: number, mergedVersions?: number[]): EntityMetadata;
|
|
12
12
|
}
|
|
@@ -18,7 +18,7 @@ class DsymApi extends base_api_1.BaseApi {
|
|
|
18
18
|
getMaxCompressedFileSize() {
|
|
19
19
|
return config_1.default.rumApi.dsymMaxCompressedFilesSize;
|
|
20
20
|
}
|
|
21
|
-
buildReleaseEntityMetadata(application, version, repoName, commitHash, orgName) {
|
|
21
|
+
buildReleaseEntityMetadata(application, version, repoName, commitHash, orgName, internalVersion, mergedVersions) {
|
|
22
22
|
return {
|
|
23
23
|
metadata: {
|
|
24
24
|
$case: 'dsymMetadata',
|
|
@@ -28,11 +28,13 @@ class DsymApi extends base_api_1.BaseApi {
|
|
|
28
28
|
repoName: repoName || '',
|
|
29
29
|
commitHash: commitHash || '',
|
|
30
30
|
orgName: orgName || '',
|
|
31
|
+
internalVersion: internalVersion !== null && internalVersion !== void 0 ? internalVersion : 0,
|
|
32
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
31
33
|
},
|
|
32
34
|
},
|
|
33
35
|
};
|
|
34
36
|
}
|
|
35
|
-
buildEntityMetadata(application, version, repoName, commitHash, orgName) {
|
|
37
|
+
buildEntityMetadata(application, version, repoName, commitHash, orgName, internalVersion, mergedVersions) {
|
|
36
38
|
return {
|
|
37
39
|
metadata: {
|
|
38
40
|
$case: 'dsymMetadata',
|
|
@@ -42,10 +44,12 @@ class DsymApi extends base_api_1.BaseApi {
|
|
|
42
44
|
repoName: repoName || '',
|
|
43
45
|
commitHash: commitHash || '',
|
|
44
46
|
orgName: orgName || '',
|
|
47
|
+
internalVersion: internalVersion !== null && internalVersion !== void 0 ? internalVersion : 0,
|
|
48
|
+
mergedVersions: mergedVersions ? { versions: mergedVersions } : undefined,
|
|
45
49
|
},
|
|
46
50
|
},
|
|
47
51
|
};
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
exports.DsymApi = DsymApi;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHN5bS5hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvZHN5bS9kc3ltLmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5RkFBcUY7QUFDckYscUdBQWdHO0FBQ2hHLGlFQUF5QztBQUN6QywrQ0FBMkM7QUFJM0MsTUFBYSxPQUFRLFNBQVEsa0JBQU87SUFDeEIsYUFBYTtRQUNyQixPQUFPLHdCQUFVLENBQUMsZ0JBQWdCLENBQUM7SUFDckMsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixPQUFPLHVDQUFpQixDQUFDLHdCQUF3QixDQUFDO0lBQ3BELENBQUM7SUFFUyx3QkFBd0I7UUFDaEMsT0FBTyxnQkFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQztJQUNsRCxDQUFDO0lBRVMsMEJBQTBCLENBQ2xDLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixRQUFpQixFQUNqQixVQUFtQixFQUNuQixPQUFnQixFQUNoQixlQUF3QixFQUN4QixjQUF5QjtRQUV6QixPQUFPO1lBQ0wsUUFBUSxFQUFFO2dCQUNSLEtBQUssRUFBRSxjQUFjO2dCQUNyQixZQUFZLEVBQUU7b0JBQ1osV0FBVztvQkFDWCxTQUFTLEVBQUUsT0FBTztvQkFDbEIsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFO29CQUN4QixVQUFVLEVBQUUsVUFBVSxJQUFJLEVBQUU7b0JBQzVCLE9BQU8sRUFBRSxPQUFPLElBQUksRUFBRTtvQkFDdEIsZUFBZSxFQUFFLGVBQWUsYUFBZixlQUFlLGNBQWYsZUFBZSxHQUFJLENBQUM7b0JBQ3JDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUMxRTthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUyxtQkFBbUIsQ0FDM0IsV0FBbUIsRUFDbkIsT0FBZSxFQUNmLFFBQWlCLEVBQ2pCLFVBQW1CLEVBQ25CLE9BQWdCLEVBQ2hCLGVBQXdCLEVBQ3hCLGNBQXlCO1FBRXpCLE9BQU87WUFDTCxRQUFRLEVBQUU7Z0JBQ1IsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLFlBQVksRUFBRTtvQkFDWixXQUFXO29CQUNYLFNBQVMsRUFBRSxPQUFPO29CQUNsQixRQUFRLEVBQUUsUUFBUSxJQUFJLEVBQUU7b0JBQ3hCLFVBQVUsRUFBRSxVQUFVLElBQUksRUFBRTtvQkFDNUIsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO29CQUN0QixlQUFlLEVBQUUsZUFBZSxhQUFmLGVBQWUsY0FBZixlQUFlLEdBQUksQ0FBQztvQkFDckMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQzFFO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOURELDBCQThEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eVR5cGUgfSBmcm9tICcuLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL2VudGl0eV90eXBlJztcbmltcG9ydCB7IFJlbGVhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3JlbGVhc2VfZW50aXR5X3R5cGUnO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi8uLi9jb25maWcvY29uZmlnJztcbmltcG9ydCB7IEJhc2VBcGkgfSBmcm9tICcuLi9iYXNlL2Jhc2UuYXBpJztcbmltcG9ydCB7IFJlbGVhc2VFbnRpdHlNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L3J1bS92Mi9yZWxlYXNlX2VudGl0eV9tZXRhZGF0YSc7XG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvZW50aXR5X21ldGFkYXRhJztcblxuZXhwb3J0IGNsYXNzIERzeW1BcGkgZXh0ZW5kcyBCYXNlQXBpIHtcbiAgcHJvdGVjdGVkIGdldEVudGl0eVR5cGUoKTogRW50aXR5VHlwZSB7XG4gICAgcmV0dXJuIEVudGl0eVR5cGUuRU5USVRZX1RZUEVfRFNZTTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRSZWxlYXNlRW50aXR5VHlwZSgpOiBSZWxlYXNlRW50aXR5VHlwZSB7XG4gICAgcmV0dXJuIFJlbGVhc2VFbnRpdHlUeXBlLlJFTEVBU0VfRU5USVRZX1RZUEVfRFNZTTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRNYXhDb21wcmVzc2VkRmlsZVNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gY29uZmlnLnJ1bUFwaS5kc3ltTWF4Q29tcHJlc3NlZEZpbGVzU2l6ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlbGVhc2VFbnRpdHlNZXRhZGF0YShcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICByZXBvTmFtZT86IHN0cmluZyxcbiAgICBjb21taXRIYXNoPzogc3RyaW5nLFxuICAgIG9yZ05hbWU/OiBzdHJpbmcsXG4gICAgaW50ZXJuYWxWZXJzaW9uPzogbnVtYmVyLFxuICAgIG1lcmdlZFZlcnNpb25zPzogbnVtYmVyW10sXG4gICk6IFJlbGVhc2VFbnRpdHlNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICRjYXNlOiAnZHN5bU1ldGFkYXRhJyxcbiAgICAgICAgZHN5bU1ldGFkYXRhOiB7XG4gICAgICAgICAgYXBwbGljYXRpb24sXG4gICAgICAgICAgcmVsZWFzZUlkOiB2ZXJzaW9uLFxuICAgICAgICAgIHJlcG9OYW1lOiByZXBvTmFtZSB8fCAnJyxcbiAgICAgICAgICBjb21taXRIYXNoOiBjb21taXRIYXNoIHx8ICcnLFxuICAgICAgICAgIG9yZ05hbWU6IG9yZ05hbWUgfHwgJycsXG4gICAgICAgICAgaW50ZXJuYWxWZXJzaW9uOiBpbnRlcm5hbFZlcnNpb24gPz8gMCxcbiAgICAgICAgICBtZXJnZWRWZXJzaW9uczogbWVyZ2VkVmVyc2lvbnMgPyB7IHZlcnNpb25zOiBtZXJnZWRWZXJzaW9ucyB9IDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRW50aXR5TWV0YWRhdGEoXG4gICAgYXBwbGljYXRpb246IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgcmVwb05hbWU/OiBzdHJpbmcsXG4gICAgY29tbWl0SGFzaD86IHN0cmluZyxcbiAgICBvcmdOYW1lPzogc3RyaW5nLFxuICAgIGludGVybmFsVmVyc2lvbj86IG51bWJlcixcbiAgICBtZXJnZWRWZXJzaW9ucz86IG51bWJlcltdLFxuICApOiBFbnRpdHlNZXRhZGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICRjYXNlOiAnZHN5bU1ldGFkYXRhJyxcbiAgICAgICAgZHN5bU1ldGFkYXRhOiB7XG4gICAgICAgICAgYXBwbGljYXRpb24sXG4gICAgICAgICAgcmVsZWFzZUlkOiB2ZXJzaW9uLFxuICAgICAgICAgIHJlcG9OYW1lOiByZXBvTmFtZSB8fCAnJyxcbiAgICAgICAgICBjb21taXRIYXNoOiBjb21taXRIYXNoIHx8ICcnLFxuICAgICAgICAgIG9yZ05hbWU6IG9yZ05hbWUgfHwgJycsXG4gICAgICAgICAgaW50ZXJuYWxWZXJzaW9uOiBpbnRlcm5hbFZlcnNpb24gPz8gMCxcbiAgICAgICAgICBtZXJnZWRWZXJzaW9uczogbWVyZ2VkVmVyc2lvbnMgPyB7IHZlcnNpb25zOiBtZXJnZWRWZXJzaW9ucyB9IDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|