@coralogix/rum-cli 1.1.22 → 1.1.25

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 (187) hide show
  1. package/README.md +26 -7
  2. package/api/client/client-factory.ts +26 -0
  3. package/api/client/request-builder.ts +122 -0
  4. package/api/dsym.api.ts +61 -0
  5. package/api/react-native.api.ts +67 -0
  6. package/api/{rum-api.ts → source-maps.api.ts} +14 -22
  7. package/cli/commands/dsym/index.ts +5 -0
  8. package/cli/commands/dsym/upload-dsym-command.ts +36 -0
  9. package/cli/commands/react-native/index.ts +5 -0
  10. package/cli/commands/{upload-react-native-source-maps-command.ts → react-native/upload-react-native-source-maps-command.ts} +14 -11
  11. package/cli/commands/{delete-source-maps-command.ts → source-maps/delete-source-maps-command.ts} +7 -9
  12. package/cli/commands/source-maps/index.ts +7 -0
  13. package/cli/commands/{update-source-maps-command.ts → source-maps/update-source-maps-command.ts} +7 -9
  14. package/cli/commands/{upload-source-maps-command.ts → source-maps/upload-source-maps-command.ts} +7 -9
  15. package/cli/rum-cli.ts +15 -6
  16. package/config/config.ts +10 -4
  17. package/consts/consts.ts +2 -0
  18. package/dist/api/client/client-factory.d.ts +355 -0
  19. package/dist/api/client/client-factory.js +31 -0
  20. package/dist/api/client/request-builder.d.ts +33 -0
  21. package/dist/api/client/request-builder.js +58 -0
  22. package/dist/api/dsym.api.d.ts +4 -0
  23. package/dist/api/dsym.api.js +50 -0
  24. package/dist/api/react-native.api.d.ts +4 -0
  25. package/dist/api/react-native.api.js +50 -0
  26. package/dist/api/{rum-api.d.ts → source-maps.api.d.ts} +2 -2
  27. package/dist/api/source-maps.api.js +97 -0
  28. package/dist/cli/commands/dsym/index.d.ts +4 -0
  29. package/dist/cli/commands/dsym/index.js +6 -0
  30. package/dist/cli/commands/dsym/upload-dsym-command.d.ts +2 -0
  31. package/dist/cli/commands/dsym/upload-dsym-command.js +45 -0
  32. package/dist/cli/commands/react-native/index.d.ts +4 -0
  33. package/dist/cli/commands/react-native/index.js +6 -0
  34. package/dist/cli/commands/react-native/upload-react-native-source-maps-command.js +51 -0
  35. package/dist/cli/commands/source-maps/delete-source-maps-command.js +41 -0
  36. package/dist/cli/commands/{index.d.ts → source-maps/index.d.ts} +2 -3
  37. package/dist/cli/commands/source-maps/index.js +8 -0
  38. package/dist/cli/commands/source-maps/update-source-maps-command.js +46 -0
  39. package/dist/cli/commands/source-maps/upload-source-maps-command.js +45 -0
  40. package/dist/cli/rum-cli.js +11 -7
  41. package/dist/config/config.d.ts +5 -2
  42. package/dist/config/config.js +6 -3
  43. package/dist/consts/consts.d.ts +1 -0
  44. package/dist/consts/consts.js +3 -2
  45. package/dist/models/dsym-commands.model.d.ts +11 -0
  46. package/dist/models/dsym-commands.model.js +3 -0
  47. package/dist/models/react-native-commands.model.d.ts +11 -0
  48. package/dist/models/react-native-commands.model.js +3 -0
  49. package/dist/models/{commands.model.d.ts → source-maps-commands.model.d.ts} +3 -3
  50. package/dist/models/source-maps-commands.model.js +3 -0
  51. package/dist/proto-models/com/coralogix/blobset/v2/audit_log.d.ts +24 -0
  52. package/dist/proto-models/com/coralogix/blobset/v2/audit_log.js +69 -0
  53. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.d.ts +111 -0
  54. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.js +36 -0
  55. package/dist/proto-models/com/coralogix/blobset/v2/blobset_service.d.ts +67 -0
  56. package/dist/proto-models/com/coralogix/blobset/v2/blobset_service.js +179 -0
  57. package/dist/proto-models/com/coralogix/blobset/v2/dsym.d.ts +58 -0
  58. package/dist/proto-models/com/coralogix/blobset/v2/dsym.js +336 -0
  59. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.d.ts +78 -0
  60. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.js +464 -0
  61. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.d.ts +9 -0
  62. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.js +52 -0
  63. package/dist/proto-models/com/coralogix/blobset/v2/react_native.d.ts +54 -0
  64. package/dist/proto-models/com/coralogix/blobset/v2/react_native.js +318 -0
  65. package/dist/proto-models/com/coralogix/blobset/v2/s3_metadata.d.ts +30 -0
  66. package/dist/proto-models/com/coralogix/blobset/v2/s3_metadata.js +131 -0
  67. package/dist/proto-models/com/coralogix/rum/v2/analytics.js +9 -1
  68. package/dist/proto-models/com/coralogix/rum/v2/audit_log.js +6 -1
  69. package/dist/proto-models/com/coralogix/rum/v2/chunk.js +9 -1
  70. package/dist/proto-models/com/coralogix/rum/v2/file.js +9 -1
  71. package/dist/proto-models/com/coralogix/rum/v2/hide_errors.d.ts +44 -0
  72. package/dist/proto-models/com/coralogix/rum/v2/hide_errors.js +203 -0
  73. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.d.ts +78 -0
  74. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.js +464 -0
  75. package/dist/proto-models/com/coralogix/rum/v2/release_entity_type.d.ts +9 -0
  76. package/dist/proto-models/com/coralogix/rum/v2/release_entity_type.js +52 -0
  77. package/dist/proto-models/com/coralogix/rum/v2/rum_hide_errors_service.d.ts +198 -0
  78. package/dist/proto-models/com/coralogix/rum/v2/rum_hide_errors_service.js +522 -0
  79. package/dist/proto-models/com/coralogix/rum/v2/rum_react_native_source_map_service.js +6 -1
  80. package/dist/proto-models/com/coralogix/rum/v2/rum_saved_filters_service.d.ts +1 -47
  81. package/dist/proto-models/com/coralogix/rum/v2/rum_saved_filters_service.js +18 -153
  82. package/dist/proto-models/com/coralogix/rum/v2/rum_sdk_versions.d.ts +41 -0
  83. package/dist/proto-models/com/coralogix/rum/v2/rum_sdk_versions.js +225 -0
  84. package/dist/proto-models/com/coralogix/rum/v2/rum_service.d.ts +45 -0
  85. package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +134 -6
  86. package/dist/proto-models/com/coralogix/rum/v2/rum_session_recording_service.js +7 -2
  87. package/dist/proto-models/com/coralogix/rum/v2/rum_settings.d.ts +45 -0
  88. package/dist/proto-models/com/coralogix/rum/v2/rum_settings.js +198 -0
  89. package/dist/proto-models/com/coralogix/rum/v2/rum_settings_service.d.ts +107 -0
  90. package/dist/proto-models/com/coralogix/rum/v2/rum_settings_service.js +219 -0
  91. package/dist/proto-models/com/coralogix/rum/v2/rum_snooze_errors_service.js +6 -1
  92. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.d.ts +92 -0
  93. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +266 -2
  94. package/dist/proto-models/com/coralogix/rum/v2/saved_filter.js +8 -3
  95. package/dist/proto-models/com/coralogix/rum/v2/snooze_errors.js +9 -1
  96. package/dist/proto-models/com/coralogix/rum/v2/source_code_file_mapping.js +6 -1
  97. package/dist/proto-models/com/coralogix/rum/v2/source_map_release.js +9 -1
  98. package/dist/proto-models/com/coralogix/rum/v2/template.js +9 -1
  99. package/dist/proto-models/google/protobuf/descriptor.d.ts +95 -95
  100. package/dist/proto-models/google/protobuf/descriptor.js +184 -176
  101. package/dist/services/{react-native-source-maps.service.d.ts → dsym.service.d.ts} +1 -1
  102. package/dist/services/dsym.service.js +36 -0
  103. package/dist/services/react-native.service.d.ts +3 -0
  104. package/dist/services/react-native.service.js +37 -0
  105. package/dist/services/source-maps.service.js +12 -14
  106. package/dist/utils/file-processor.utils.d.ts +12 -0
  107. package/dist/utils/file-processor.utils.js +196 -0
  108. package/dist/utils/shared.utils.d.ts +9 -0
  109. package/dist/utils/shared.utils.js +62 -0
  110. package/models/dsym-commands.model.ts +11 -0
  111. package/models/react-native-commands.model.ts +11 -0
  112. package/models/{commands.model.ts → source-maps-commands.model.ts} +3 -3
  113. package/package.json +2 -2
  114. package/proto-models/com/coralogix/blobset/v2/audit_log.ts +84 -0
  115. package/proto-models/com/coralogix/blobset/v2/blobset_query_service.ts +36 -0
  116. package/proto-models/com/coralogix/blobset/v2/blobset_service.ts +209 -0
  117. package/proto-models/com/coralogix/blobset/v2/dsym.ts +400 -0
  118. package/proto-models/com/coralogix/blobset/v2/entity_metadata.ts +543 -0
  119. package/proto-models/com/coralogix/blobset/v2/entity_type.ts +50 -0
  120. package/proto-models/com/coralogix/blobset/v2/react_native.ts +367 -0
  121. package/proto-models/com/coralogix/blobset/v2/s3_metadata.ts +154 -0
  122. package/proto-models/com/coralogix/rum/v2/analytics.ts +9 -0
  123. package/proto-models/com/coralogix/rum/v2/audit_log.ts +6 -0
  124. package/proto-models/com/coralogix/rum/v2/chunk.ts +9 -0
  125. package/proto-models/com/coralogix/rum/v2/file.ts +11 -2
  126. package/proto-models/com/coralogix/rum/v2/hide_errors.ts +234 -0
  127. package/proto-models/com/coralogix/rum/v2/release_entity_metadata.ts +543 -0
  128. package/proto-models/com/coralogix/rum/v2/release_entity_type.ts +50 -0
  129. package/proto-models/com/coralogix/rum/v2/rum_hide_errors_service.ts +605 -0
  130. package/proto-models/com/coralogix/rum/v2/rum_react_native_source_map_service.ts +6 -0
  131. package/proto-models/com/coralogix/rum/v2/rum_saved_filters_service.ts +18 -176
  132. package/proto-models/com/coralogix/rum/v2/rum_sdk_versions.ts +263 -0
  133. package/proto-models/com/coralogix/rum/v2/rum_service.ts +152 -4
  134. package/proto-models/com/coralogix/rum/v2/rum_session_recording_service.ts +6 -0
  135. package/proto-models/com/coralogix/rum/v2/rum_settings.ts +215 -0
  136. package/proto-models/com/coralogix/rum/v2/rum_settings_service.ts +266 -0
  137. package/proto-models/com/coralogix/rum/v2/rum_snooze_errors_service.ts +6 -0
  138. package/proto-models/com/coralogix/rum/v2/rum_source_map_service.ts +310 -0
  139. package/proto-models/com/coralogix/rum/v2/saved_filter.ts +8 -2
  140. package/proto-models/com/coralogix/rum/v2/snooze_errors.ts +9 -0
  141. package/proto-models/com/coralogix/rum/v2/source_code_file_mapping.ts +6 -0
  142. package/proto-models/com/coralogix/rum/v2/source_map_release.ts +9 -0
  143. package/proto-models/com/coralogix/rum/v2/template.ts +9 -0
  144. package/proto-models/google/protobuf/descriptor.ts +391 -272
  145. package/protofetch.lock +21 -2
  146. package/protofetch.toml +6 -1
  147. package/protos/com/coralogix/blobset/v2/audit_log.proto +13 -0
  148. package/protos/com/coralogix/blobset/v2/blobset_query_service.proto +12 -0
  149. package/protos/com/coralogix/blobset/v2/blobset_service.proto +18 -0
  150. package/protos/com/coralogix/blobset/v2/dsym.proto +19 -0
  151. package/protos/com/coralogix/blobset/v2/entity_metadata.proto +36 -0
  152. package/protos/com/coralogix/blobset/v2/entity_type.proto +10 -0
  153. package/protos/com/coralogix/blobset/v2/react_native.proto +23 -0
  154. package/protos/com/coralogix/blobset/v2/s3_metadata.proto +14 -0
  155. package/protos/com/coralogix/rum/v2/hide_errors.proto +19 -0
  156. package/protos/com/coralogix/rum/v2/release_entity_metadata.proto +35 -0
  157. package/protos/com/coralogix/rum/v2/release_entity_type.proto +10 -0
  158. package/protos/com/coralogix/rum/v2/rum_hide_errors_service.proto +42 -0
  159. package/protos/com/coralogix/rum/v2/rum_saved_filters_service.proto +1 -12
  160. package/protos/com/coralogix/rum/v2/rum_sdk_versions.proto +16 -0
  161. package/protos/com/coralogix/rum/v2/rum_service.proto +10 -0
  162. package/protos/com/coralogix/rum/v2/rum_settings.proto +26 -0
  163. package/protos/com/coralogix/rum/v2/rum_settings_service.proto +21 -0
  164. package/protos/com/coralogix/rum/v2/rum_source_map_service.proto +19 -0
  165. package/protoset.bin +0 -0
  166. package/services/dsym.service.ts +33 -0
  167. package/services/react-native.service.ts +34 -0
  168. package/services/source-maps.service.ts +12 -14
  169. package/utils/file-processor.utils.ts +176 -0
  170. package/utils/shared.utils.ts +52 -0
  171. package/cli/commands/index.ts +0 -8
  172. package/dist/api/rum-api.js +0 -104
  173. package/dist/cli/commands/delete-source-maps-command.js +0 -43
  174. package/dist/cli/commands/index.js +0 -9
  175. package/dist/cli/commands/update-source-maps-command.js +0 -48
  176. package/dist/cli/commands/upload-react-native-source-maps-command.js +0 -47
  177. package/dist/cli/commands/upload-source-maps-command.js +0 -47
  178. package/dist/models/commands.model.js +0 -3
  179. package/dist/services/react-native-source-maps.service.js +0 -42
  180. package/dist/utils/index.d.ts +0 -6
  181. package/dist/utils/index.js +0 -115
  182. package/services/react-native-source-maps.service.ts +0 -40
  183. package/utils/index.ts +0 -93
  184. /package/dist/cli/commands/{upload-react-native-source-maps-command.d.ts → react-native/upload-react-native-source-maps-command.d.ts} +0 -0
  185. /package/dist/cli/commands/{delete-source-maps-command.d.ts → source-maps/delete-source-maps-command.d.ts} +0 -0
  186. /package/dist/cli/commands/{update-source-maps-command.d.ts → source-maps/update-source-maps-command.d.ts} +0 -0
  187. /package/dist/cli/commands/{upload-source-maps-command.d.ts → source-maps/upload-source-maps-command.d.ts} +0 -0
@@ -0,0 +1,54 @@
1
+ import _m0 from "protobufjs/minimal";
2
+ export declare const protobufPackage = "com.coralogix.blobset.v2";
3
+ export interface Chunk {
4
+ chunk: string;
5
+ content: Uint8Array;
6
+ }
7
+ export interface GetReactNativeSourceMapsChunksRequest {
8
+ application: string;
9
+ releaseId: string;
10
+ chunkNames: string[];
11
+ }
12
+ export interface GetReactNativeSourceMapsChunksResponse {
13
+ application: string;
14
+ releaseId: string;
15
+ chunks: Chunk[];
16
+ commitHash?: string | undefined;
17
+ repoName?: string | undefined;
18
+ user?: string | undefined;
19
+ }
20
+ export declare const Chunk: {
21
+ encode(message: Chunk, writer?: _m0.Writer): _m0.Writer;
22
+ decode(input: _m0.Reader | Uint8Array, length?: number): Chunk;
23
+ fromJSON(object: any): Chunk;
24
+ toJSON(message: Chunk): unknown;
25
+ create(base?: DeepPartial<Chunk>): Chunk;
26
+ fromPartial(object: DeepPartial<Chunk>): Chunk;
27
+ };
28
+ export declare const GetReactNativeSourceMapsChunksRequest: {
29
+ encode(message: GetReactNativeSourceMapsChunksRequest, writer?: _m0.Writer): _m0.Writer;
30
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetReactNativeSourceMapsChunksRequest;
31
+ fromJSON(object: any): GetReactNativeSourceMapsChunksRequest;
32
+ toJSON(message: GetReactNativeSourceMapsChunksRequest): unknown;
33
+ create(base?: DeepPartial<GetReactNativeSourceMapsChunksRequest>): GetReactNativeSourceMapsChunksRequest;
34
+ fromPartial(object: DeepPartial<GetReactNativeSourceMapsChunksRequest>): GetReactNativeSourceMapsChunksRequest;
35
+ };
36
+ export declare const GetReactNativeSourceMapsChunksResponse: {
37
+ encode(message: GetReactNativeSourceMapsChunksResponse, writer?: _m0.Writer): _m0.Writer;
38
+ decode(input: _m0.Reader | Uint8Array, length?: number): GetReactNativeSourceMapsChunksResponse;
39
+ fromJSON(object: any): GetReactNativeSourceMapsChunksResponse;
40
+ toJSON(message: GetReactNativeSourceMapsChunksResponse): unknown;
41
+ create(base?: DeepPartial<GetReactNativeSourceMapsChunksResponse>): GetReactNativeSourceMapsChunksResponse;
42
+ fromPartial(object: DeepPartial<GetReactNativeSourceMapsChunksResponse>): GetReactNativeSourceMapsChunksResponse;
43
+ };
44
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
45
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
46
+ $case: string;
47
+ } ? {
48
+ [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
49
+ } & {
50
+ $case: T["$case"];
51
+ } : T extends {} ? {
52
+ [K in keyof T]?: DeepPartial<T[K]>;
53
+ } : Partial<T>;
54
+ export {};
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v1.181.1
5
+ // protoc v3.19.1
6
+ // source: com/coralogix/blobset/v2/react_native.proto
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.GetReactNativeSourceMapsChunksResponse = exports.GetReactNativeSourceMapsChunksRequest = exports.Chunk = exports.protobufPackage = void 0;
12
+ /* eslint-disable */
13
+ const minimal_1 = __importDefault(require("protobufjs/minimal"));
14
+ exports.protobufPackage = "com.coralogix.blobset.v2";
15
+ function createBaseChunk() {
16
+ return { chunk: "", content: new Uint8Array(0) };
17
+ }
18
+ exports.Chunk = {
19
+ encode(message, writer = minimal_1.default.Writer.create()) {
20
+ if (message.chunk !== "") {
21
+ writer.uint32(10).string(message.chunk);
22
+ }
23
+ if (message.content.length !== 0) {
24
+ writer.uint32(18).bytes(message.content);
25
+ }
26
+ return writer;
27
+ },
28
+ decode(input, length) {
29
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
30
+ let end = length === undefined ? reader.len : reader.pos + length;
31
+ const message = createBaseChunk();
32
+ while (reader.pos < end) {
33
+ const tag = reader.uint32();
34
+ switch (tag >>> 3) {
35
+ case 1:
36
+ if (tag !== 10) {
37
+ break;
38
+ }
39
+ message.chunk = reader.string();
40
+ continue;
41
+ case 2:
42
+ if (tag !== 18) {
43
+ break;
44
+ }
45
+ message.content = reader.bytes();
46
+ continue;
47
+ }
48
+ if ((tag & 7) === 4 || tag === 0) {
49
+ break;
50
+ }
51
+ reader.skipType(tag & 7);
52
+ }
53
+ return message;
54
+ },
55
+ fromJSON(object) {
56
+ return {
57
+ chunk: isSet(object.chunk) ? globalThis.String(object.chunk) : "",
58
+ content: isSet(object.content) ? bytesFromBase64(object.content) : new Uint8Array(0),
59
+ };
60
+ },
61
+ toJSON(message) {
62
+ const obj = {};
63
+ if (message.chunk !== "") {
64
+ obj.chunk = message.chunk;
65
+ }
66
+ if (message.content.length !== 0) {
67
+ obj.content = base64FromBytes(message.content);
68
+ }
69
+ return obj;
70
+ },
71
+ create(base) {
72
+ return exports.Chunk.fromPartial(base !== null && base !== void 0 ? base : {});
73
+ },
74
+ fromPartial(object) {
75
+ var _a, _b;
76
+ const message = createBaseChunk();
77
+ message.chunk = (_a = object.chunk) !== null && _a !== void 0 ? _a : "";
78
+ message.content = (_b = object.content) !== null && _b !== void 0 ? _b : new Uint8Array(0);
79
+ return message;
80
+ },
81
+ };
82
+ function createBaseGetReactNativeSourceMapsChunksRequest() {
83
+ return { application: "", releaseId: "", chunkNames: [] };
84
+ }
85
+ exports.GetReactNativeSourceMapsChunksRequest = {
86
+ encode(message, writer = minimal_1.default.Writer.create()) {
87
+ if (message.application !== "") {
88
+ writer.uint32(10).string(message.application);
89
+ }
90
+ if (message.releaseId !== "") {
91
+ writer.uint32(18).string(message.releaseId);
92
+ }
93
+ for (const v of message.chunkNames) {
94
+ writer.uint32(26).string(v);
95
+ }
96
+ return writer;
97
+ },
98
+ decode(input, length) {
99
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
100
+ let end = length === undefined ? reader.len : reader.pos + length;
101
+ const message = createBaseGetReactNativeSourceMapsChunksRequest();
102
+ while (reader.pos < end) {
103
+ const tag = reader.uint32();
104
+ switch (tag >>> 3) {
105
+ case 1:
106
+ if (tag !== 10) {
107
+ break;
108
+ }
109
+ message.application = reader.string();
110
+ continue;
111
+ case 2:
112
+ if (tag !== 18) {
113
+ break;
114
+ }
115
+ message.releaseId = reader.string();
116
+ continue;
117
+ case 3:
118
+ if (tag !== 26) {
119
+ break;
120
+ }
121
+ message.chunkNames.push(reader.string());
122
+ continue;
123
+ }
124
+ if ((tag & 7) === 4 || tag === 0) {
125
+ break;
126
+ }
127
+ reader.skipType(tag & 7);
128
+ }
129
+ return message;
130
+ },
131
+ fromJSON(object) {
132
+ return {
133
+ application: isSet(object.application) ? globalThis.String(object.application) : "",
134
+ releaseId: isSet(object.releaseId) ? globalThis.String(object.releaseId) : "",
135
+ chunkNames: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.chunkNames)
136
+ ? object.chunkNames.map((e) => globalThis.String(e))
137
+ : [],
138
+ };
139
+ },
140
+ toJSON(message) {
141
+ var _a;
142
+ const obj = {};
143
+ if (message.application !== "") {
144
+ obj.application = message.application;
145
+ }
146
+ if (message.releaseId !== "") {
147
+ obj.releaseId = message.releaseId;
148
+ }
149
+ if ((_a = message.chunkNames) === null || _a === void 0 ? void 0 : _a.length) {
150
+ obj.chunkNames = message.chunkNames;
151
+ }
152
+ return obj;
153
+ },
154
+ create(base) {
155
+ return exports.GetReactNativeSourceMapsChunksRequest.fromPartial(base !== null && base !== void 0 ? base : {});
156
+ },
157
+ fromPartial(object) {
158
+ var _a, _b, _c;
159
+ const message = createBaseGetReactNativeSourceMapsChunksRequest();
160
+ message.application = (_a = object.application) !== null && _a !== void 0 ? _a : "";
161
+ message.releaseId = (_b = object.releaseId) !== null && _b !== void 0 ? _b : "";
162
+ message.chunkNames = ((_c = object.chunkNames) === null || _c === void 0 ? void 0 : _c.map((e) => e)) || [];
163
+ return message;
164
+ },
165
+ };
166
+ function createBaseGetReactNativeSourceMapsChunksResponse() {
167
+ return { application: "", releaseId: "", chunks: [], commitHash: undefined, repoName: undefined, user: undefined };
168
+ }
169
+ exports.GetReactNativeSourceMapsChunksResponse = {
170
+ encode(message, writer = minimal_1.default.Writer.create()) {
171
+ if (message.application !== "") {
172
+ writer.uint32(10).string(message.application);
173
+ }
174
+ if (message.releaseId !== "") {
175
+ writer.uint32(18).string(message.releaseId);
176
+ }
177
+ for (const v of message.chunks) {
178
+ exports.Chunk.encode(v, writer.uint32(26).fork()).ldelim();
179
+ }
180
+ if (message.commitHash !== undefined) {
181
+ writer.uint32(34).string(message.commitHash);
182
+ }
183
+ if (message.repoName !== undefined) {
184
+ writer.uint32(42).string(message.repoName);
185
+ }
186
+ if (message.user !== undefined) {
187
+ writer.uint32(50).string(message.user);
188
+ }
189
+ return writer;
190
+ },
191
+ decode(input, length) {
192
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
193
+ let end = length === undefined ? reader.len : reader.pos + length;
194
+ const message = createBaseGetReactNativeSourceMapsChunksResponse();
195
+ while (reader.pos < end) {
196
+ const tag = reader.uint32();
197
+ switch (tag >>> 3) {
198
+ case 1:
199
+ if (tag !== 10) {
200
+ break;
201
+ }
202
+ message.application = reader.string();
203
+ continue;
204
+ case 2:
205
+ if (tag !== 18) {
206
+ break;
207
+ }
208
+ message.releaseId = reader.string();
209
+ continue;
210
+ case 3:
211
+ if (tag !== 26) {
212
+ break;
213
+ }
214
+ message.chunks.push(exports.Chunk.decode(reader, reader.uint32()));
215
+ continue;
216
+ case 4:
217
+ if (tag !== 34) {
218
+ break;
219
+ }
220
+ message.commitHash = reader.string();
221
+ continue;
222
+ case 5:
223
+ if (tag !== 42) {
224
+ break;
225
+ }
226
+ message.repoName = reader.string();
227
+ continue;
228
+ case 6:
229
+ if (tag !== 50) {
230
+ break;
231
+ }
232
+ message.user = reader.string();
233
+ continue;
234
+ }
235
+ if ((tag & 7) === 4 || tag === 0) {
236
+ break;
237
+ }
238
+ reader.skipType(tag & 7);
239
+ }
240
+ return message;
241
+ },
242
+ fromJSON(object) {
243
+ return {
244
+ application: isSet(object.application) ? globalThis.String(object.application) : "",
245
+ releaseId: isSet(object.releaseId) ? globalThis.String(object.releaseId) : "",
246
+ chunks: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.chunks) ? object.chunks.map((e) => exports.Chunk.fromJSON(e)) : [],
247
+ commitHash: isSet(object.commitHash) ? globalThis.String(object.commitHash) : undefined,
248
+ repoName: isSet(object.repoName) ? globalThis.String(object.repoName) : undefined,
249
+ user: isSet(object.user) ? globalThis.String(object.user) : undefined,
250
+ };
251
+ },
252
+ toJSON(message) {
253
+ var _a;
254
+ const obj = {};
255
+ if (message.application !== "") {
256
+ obj.application = message.application;
257
+ }
258
+ if (message.releaseId !== "") {
259
+ obj.releaseId = message.releaseId;
260
+ }
261
+ if ((_a = message.chunks) === null || _a === void 0 ? void 0 : _a.length) {
262
+ obj.chunks = message.chunks.map((e) => exports.Chunk.toJSON(e));
263
+ }
264
+ if (message.commitHash !== undefined) {
265
+ obj.commitHash = message.commitHash;
266
+ }
267
+ if (message.repoName !== undefined) {
268
+ obj.repoName = message.repoName;
269
+ }
270
+ if (message.user !== undefined) {
271
+ obj.user = message.user;
272
+ }
273
+ return obj;
274
+ },
275
+ create(base) {
276
+ return exports.GetReactNativeSourceMapsChunksResponse.fromPartial(base !== null && base !== void 0 ? base : {});
277
+ },
278
+ fromPartial(object) {
279
+ var _a, _b, _c, _d, _e, _f;
280
+ const message = createBaseGetReactNativeSourceMapsChunksResponse();
281
+ message.application = (_a = object.application) !== null && _a !== void 0 ? _a : "";
282
+ message.releaseId = (_b = object.releaseId) !== null && _b !== void 0 ? _b : "";
283
+ message.chunks = ((_c = object.chunks) === null || _c === void 0 ? void 0 : _c.map((e) => exports.Chunk.fromPartial(e))) || [];
284
+ message.commitHash = (_d = object.commitHash) !== null && _d !== void 0 ? _d : undefined;
285
+ message.repoName = (_e = object.repoName) !== null && _e !== void 0 ? _e : undefined;
286
+ message.user = (_f = object.user) !== null && _f !== void 0 ? _f : undefined;
287
+ return message;
288
+ },
289
+ };
290
+ function bytesFromBase64(b64) {
291
+ if (globalThis.Buffer) {
292
+ return Uint8Array.from(globalThis.Buffer.from(b64, "base64"));
293
+ }
294
+ else {
295
+ const bin = globalThis.atob(b64);
296
+ const arr = new Uint8Array(bin.length);
297
+ for (let i = 0; i < bin.length; ++i) {
298
+ arr[i] = bin.charCodeAt(i);
299
+ }
300
+ return arr;
301
+ }
302
+ }
303
+ function base64FromBytes(arr) {
304
+ if (globalThis.Buffer) {
305
+ return globalThis.Buffer.from(arr).toString("base64");
306
+ }
307
+ else {
308
+ const bin = [];
309
+ arr.forEach((byte) => {
310
+ bin.push(globalThis.String.fromCharCode(byte));
311
+ });
312
+ return globalThis.btoa(bin.join(""));
313
+ }
314
+ }
315
+ function isSet(value) {
316
+ return value !== null && value !== undefined;
317
+ }
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RfbmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvYmxvYnNldC92Mi9yZWFjdF9uYXRpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLGlDQUFpQztBQUNqQyxzREFBc0Q7Ozs7OztBQUV0RCxvQkFBb0I7QUFDcEIsaUVBQXFDO0FBRXhCLFFBQUEsZUFBZSxHQUFHLDBCQUEwQixDQUFDO0FBc0IxRCxTQUFTLGVBQWU7SUFDdEIsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVZLFFBQUEsS0FBSyxHQUFHO0lBQ25CLE1BQU0sQ0FBQyxPQUFjLEVBQUUsU0FBcUIsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQzdELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUE4QixFQUFFLE1BQWU7UUFDcEQsTUFBTSxNQUFNLEdBQUcsS0FBSyxZQUFZLGlCQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFHLENBQUMsTUFBTSxDQUFD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Q0FBQyxDQUFDO0tBQ3ZEO1NBQU07UUFDTCxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7UUFDekIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDdEM7QUFDSCxDQUFDO0FBV0QsU0FBUyxLQUFLLENBQUMsS0FBVTtJQUN2QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBnZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi10c19wcm90by4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vICAgcHJvdG9jLWdlbi10c19wcm90byAgdjEuMTgxLjFcbi8vICAgcHJvdG9jICAgICAgICAgICAgICAgdjMuMTkuMVxuLy8gc291cmNlOiBjb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvcmVhY3RfbmF0aXZlLnByb3RvXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ibG9ic2V0LnYyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmsge1xuICBjaHVuazogc3RyaW5nO1xuICBjb250ZW50OiBVaW50OEFycmF5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1JlcXVlc3Qge1xuICBhcHBsaWNhdGlvbjogc3RyaW5nO1xuICByZWxlYXNlSWQ6IHN0cmluZztcbiAgY2h1bmtOYW1lczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2Uge1xuICBhcHBsaWNhdGlvbjogc3RyaW5nO1xuICByZWxlYXNlSWQ6IHN0cmluZztcbiAgY2h1bmtzOiBDaHVua1tdO1xuICBjb21taXRIYXNoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZXBvTmFtZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXNlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUNodW5rKCk6IENodW5rIHtcbiAgcmV0dXJuIHsgY2h1bms6IFwiXCIsIGNvbnRlbnQ6IG5ldyBVaW50OEFycmF5KDApIH07XG59XG5cbmV4cG9ydCBjb25zdCBDaHVuayA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IENodW5rLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UuY2h1bmsgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLmNodW5rKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29udGVudC5sZW5ndGggIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLmJ5dGVzKG1lc3NhZ2UuY29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogQ2h1bmsge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlQ2h1bmsoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmNodW5rID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29udGVudCA9IHJlYWRlci5ieXRlcygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogQ2h1bmsge1xuICAgIHJldHVybiB7XG4gICAgICBjaHVuazogaXNTZXQob2JqZWN0LmNodW5rKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5jaHVuaykgOiBcIlwiLFxuICAgICAgY29udGVudDogaXNTZXQob2JqZWN0LmNvbnRlbnQpID8gYnl0ZXNGcm9tQmFzZTY0KG9iamVjdC5jb250ZW50KSA6IG5ldyBVaW50OEFycmF5KDApLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IENodW5rKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5jaHVuayAhPT0gXCJcIikge1xuICAgICAgb2JqLmNodW5rID0gbWVzc2FnZS5jaHVuaztcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY29udGVudC5sZW5ndGggIT09IDApIHtcbiAgICAgIG9iai5jb250ZW50ID0gYmFzZTY0RnJvbUJ5dGVzKG1lc3NhZ2UuY29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxDaHVuaz4pOiBDaHVuayB7XG4gICAgcmV0dXJuIENodW5rLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPENodW5rPik6IENodW5rIHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUNodW5rKCk7XG4gICAgbWVzc2FnZS5jaHVuayA9IG9iamVjdC5jaHVuayA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY29udGVudCA9IG9iamVjdC5jb250ZW50ID8/IG5ldyBVaW50OEFycmF5KDApO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZUdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1JlcXVlc3QoKTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVxdWVzdCB7XG4gIHJldHVybiB7IGFwcGxpY2F0aW9uOiBcIlwiLCByZWxlYXNlSWQ6IFwiXCIsIGNodW5rTmFtZXM6IFtdIH07XG59XG5cbmV4cG9ydCBjb25zdCBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0ID0ge1xuICBlbmNvZGUobWVzc2FnZTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVxdWVzdCwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5hcHBsaWNhdGlvbik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnJlbGVhc2VJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxOCkuc3RyaW5nKG1lc3NhZ2UucmVsZWFzZUlkKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2UuY2h1bmtOYW1lcykge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKHYhKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0IHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZUdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1JlcXVlc3QoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY2h1bmtOYW1lcy5wdXNoKHJlYWRlci5zdHJpbmcoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwbGljYXRpb246IGlzU2V0KG9iamVjdC5hcHBsaWNhdGlvbikgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuYXBwbGljYXRpb24pIDogXCJcIixcbiAgICAgIHJlbGVhc2VJZDogaXNTZXQob2JqZWN0LnJlbGVhc2VJZCkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVsZWFzZUlkKSA6IFwiXCIsXG4gICAgICBjaHVua05hbWVzOiBnbG9iYWxUaGlzLkFycmF5LmlzQXJyYXkob2JqZWN0Py5jaHVua05hbWVzKVxuICAgICAgICA/IG9iamVjdC5jaHVua05hbWVzLm1hcCgoZTogYW55KSA9PiBnbG9iYWxUaGlzLlN0cmluZyhlKSlcbiAgICAgICAgOiBbXSxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0KTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgb2JqLmFwcGxpY2F0aW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvbjtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVsZWFzZUlkICE9PSBcIlwiKSB7XG4gICAgICBvYmoucmVsZWFzZUlkID0gbWVzc2FnZS5yZWxlYXNlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNodW5rTmFtZXM/Lmxlbmd0aCkge1xuICAgICAgb2JqLmNodW5rTmFtZXMgPSBtZXNzYWdlLmNodW5rTmFtZXM7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0Pik6IEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1JlcXVlc3Qge1xuICAgIHJldHVybiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0LmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1JlcXVlc3Q+KTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVxdWVzdCB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXF1ZXN0KCk7XG4gICAgbWVzc2FnZS5hcHBsaWNhdGlvbiA9IG9iamVjdC5hcHBsaWNhdGlvbiA/PyBcIlwiO1xuICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gb2JqZWN0LnJlbGVhc2VJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY2h1bmtOYW1lcyA9IG9iamVjdC5jaHVua05hbWVzPy5tYXAoKGUpID0+IGUpIHx8IFtdO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZUdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1Jlc3BvbnNlKCk6IEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1Jlc3BvbnNlIHtcbiAgcmV0dXJuIHsgYXBwbGljYXRpb246IFwiXCIsIHJlbGVhc2VJZDogXCJcIiwgY2h1bmtzOiBbXSwgY29tbWl0SGFzaDogdW5kZWZpbmVkLCByZXBvTmFtZTogdW5kZWZpbmVkLCB1c2VyOiB1bmRlZmluZWQgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1Jlc3BvbnNlID0ge1xuICBlbmNvZGUobWVzc2FnZTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2UsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuYXBwbGljYXRpb24pO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZWxlYXNlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLnJlbGVhc2VJZCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdiBvZiBtZXNzYWdlLmNodW5rcykge1xuICAgICAgQ2h1bmsuZW5jb2RlKHYhLCB3cml0ZXIudWludDMyKDI2KS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21taXRIYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMzQpLnN0cmluZyhtZXNzYWdlLmNvbW1pdEhhc2gpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZXBvTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQyKS5zdHJpbmcobWVzc2FnZS5yZXBvTmFtZSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVzZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig1MCkuc3RyaW5nKG1lc3NhZ2UudXNlcik7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2Uge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2UoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVsZWFzZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY2h1bmtzLnB1c2goQ2h1bmsuZGVjb2RlKHJlYWRlciwgcmVhZGVyLnVpbnQzMigpKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAodGFnICE9PSAzNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jb21taXRIYXNoID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucmVwb05hbWUgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBpZiAodGFnICE9PSA1MCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS51c2VyID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBsaWNhdGlvbjogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbikgOiBcIlwiLFxuICAgICAgcmVsZWFzZUlkOiBpc1NldChvYmplY3QucmVsZWFzZUlkKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5yZWxlYXNlSWQpIDogXCJcIixcbiAgICAgIGNodW5rczogZ2xvYmFsVGhpcy5BcnJheS5pc0FycmF5KG9iamVjdD8uY2h1bmtzKSA/IG9iamVjdC5jaHVua3MubWFwKChlOiBhbnkpID0+IENodW5rLmZyb21KU09OKGUpKSA6IFtdLFxuICAgICAgY29tbWl0SGFzaDogaXNTZXQob2JqZWN0LmNvbW1pdEhhc2gpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmNvbW1pdEhhc2gpIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb05hbWU6IGlzU2V0KG9iamVjdC5yZXBvTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucmVwb05hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgdXNlcjogaXNTZXQob2JqZWN0LnVzZXIpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnVzZXIpIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IEdldFJlYWN0TmF0aXZlU291cmNlTWFwc0NodW5rc1Jlc3BvbnNlKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbiAhPT0gXCJcIikge1xuICAgICAgb2JqLmFwcGxpY2F0aW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvbjtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucmVsZWFzZUlkICE9PSBcIlwiKSB7XG4gICAgICBvYmoucmVsZWFzZUlkID0gbWVzc2FnZS5yZWxlYXNlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNodW5rcz8ubGVuZ3RoKSB7XG4gICAgICBvYmouY2h1bmtzID0gbWVzc2FnZS5jaHVua3MubWFwKChlKSA9PiBDaHVuay50b0pTT04oZSkpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21taXRIYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5jb21taXRIYXNoID0gbWVzc2FnZS5jb21taXRIYXNoO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5yZXBvTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoucmVwb05hbWUgPSBtZXNzYWdlLnJlcG9OYW1lO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS51c2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai51c2VyID0gbWVzc2FnZS51c2VyO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8R2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2U+KTogR2V0UmVhY3ROYXRpdmVTb3VyY2VNYXBzQ2h1bmtzUmVzcG9uc2Uge1xuICAgIHJldHVybiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXNwb25zZS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXNwb25zZT4pOiBHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXNwb25zZSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VHZXRSZWFjdE5hdGl2ZVNvdXJjZU1hcHNDaHVua3NSZXNwb25zZSgpO1xuICAgIG1lc3NhZ2UuYXBwbGljYXRpb24gPSBvYmplY3QuYXBwbGljYXRpb24gPz8gXCJcIjtcbiAgICBtZXNzYWdlLnJlbGVhc2VJZCA9IG9iamVjdC5yZWxlYXNlSWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLmNodW5rcyA9IG9iamVjdC5jaHVua3M/Lm1hcCgoZSkgPT4gQ2h1bmsuZnJvbVBhcnRpYWwoZSkpIHx8IFtdO1xuICAgIG1lc3NhZ2UuY29tbWl0SGFzaCA9IG9iamVjdC5jb21taXRIYXNoID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnJlcG9OYW1lID0gb2JqZWN0LnJlcG9OYW1lID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnVzZXIgPSBvYmplY3QudXNlciA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBieXRlc0Zyb21CYXNlNjQoYjY0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgaWYgKChnbG9iYWxUaGlzIGFzIGFueSkuQnVmZmVyKSB7XG4gICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShnbG9iYWxUaGlzLkJ1ZmZlci5mcm9tKGI2NCwgXCJiYXNlNjRcIikpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJpbiA9IGdsb2JhbFRoaXMuYXRvYihiNjQpO1xuICAgIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KGJpbi5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmluLmxlbmd0aDsgKytpKSB7XG4gICAgICBhcnJbaV0gPSBiaW4uY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRGcm9tQnl0ZXMoYXJyOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgaWYgKChnbG9iYWxUaGlzIGFzIGFueSkuQnVmZmVyKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuQnVmZmVyLmZyb20oYXJyKS50b1N0cmluZyhcImJhc2U2NFwiKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBiaW46IHN0cmluZ1tdID0gW107XG4gICAgYXJyLmZvckVhY2goKGJ5dGUpID0+IHtcbiAgICAgIGJpbi5wdXNoKGdsb2JhbFRoaXMuU3RyaW5nLmZyb21DaGFyQ29kZShieXRlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMuYnRvYShiaW4uam9pbihcIlwiKSk7XG4gIH1cbn1cblxudHlwZSBCdWlsdGluID0gRGF0ZSB8IEZ1bmN0aW9uIHwgVWludDhBcnJheSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW4gPyBUXG4gIDogVCBleHRlbmRzIGdsb2JhbFRoaXMuQXJyYXk8aW5mZXIgVT4gPyBnbG9iYWxUaGlzLkFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGlzU2V0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import _m0 from "protobufjs/minimal";
2
+ import { EntityMetadata } from "./entity_metadata";
3
+ import { EntityType } from "./entity_type";
4
+ export declare const protobufPackage = "com.coralogix.blobset.v2";
5
+ export interface S3Metadata {
6
+ bucket: string;
7
+ key: string;
8
+ companyId: string;
9
+ entityMetadata: EntityMetadata | undefined;
10
+ entityType: EntityType;
11
+ }
12
+ export declare const S3Metadata: {
13
+ encode(message: S3Metadata, writer?: _m0.Writer): _m0.Writer;
14
+ decode(input: _m0.Reader | Uint8Array, length?: number): S3Metadata;
15
+ fromJSON(object: any): S3Metadata;
16
+ toJSON(message: S3Metadata): unknown;
17
+ create(base?: DeepPartial<S3Metadata>): S3Metadata;
18
+ fromPartial(object: DeepPartial<S3Metadata>): S3Metadata;
19
+ };
20
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
21
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
22
+ $case: string;
23
+ } ? {
24
+ [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]>;
25
+ } & {
26
+ $case: T["$case"];
27
+ } : T extends {} ? {
28
+ [K in keyof T]?: DeepPartial<T[K]>;
29
+ } : Partial<T>;
30
+ export {};
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v1.181.1
5
+ // protoc v3.19.1
6
+ // source: com/coralogix/blobset/v2/s3_metadata.proto
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.S3Metadata = exports.protobufPackage = void 0;
12
+ /* eslint-disable */
13
+ const minimal_1 = __importDefault(require("protobufjs/minimal"));
14
+ const entity_metadata_1 = require("./entity_metadata");
15
+ const entity_type_1 = require("./entity_type");
16
+ exports.protobufPackage = "com.coralogix.blobset.v2";
17
+ function createBaseS3Metadata() {
18
+ return { bucket: "", key: "", companyId: "", entityMetadata: undefined, entityType: 0 };
19
+ }
20
+ exports.S3Metadata = {
21
+ encode(message, writer = minimal_1.default.Writer.create()) {
22
+ if (message.bucket !== "") {
23
+ writer.uint32(10).string(message.bucket);
24
+ }
25
+ if (message.key !== "") {
26
+ writer.uint32(18).string(message.key);
27
+ }
28
+ if (message.companyId !== "") {
29
+ writer.uint32(26).string(message.companyId);
30
+ }
31
+ if (message.entityMetadata !== undefined) {
32
+ entity_metadata_1.EntityMetadata.encode(message.entityMetadata, writer.uint32(34).fork()).ldelim();
33
+ }
34
+ if (message.entityType !== 0) {
35
+ writer.uint32(40).int32(message.entityType);
36
+ }
37
+ return writer;
38
+ },
39
+ decode(input, length) {
40
+ const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
41
+ let end = length === undefined ? reader.len : reader.pos + length;
42
+ const message = createBaseS3Metadata();
43
+ while (reader.pos < end) {
44
+ const tag = reader.uint32();
45
+ switch (tag >>> 3) {
46
+ case 1:
47
+ if (tag !== 10) {
48
+ break;
49
+ }
50
+ message.bucket = reader.string();
51
+ continue;
52
+ case 2:
53
+ if (tag !== 18) {
54
+ break;
55
+ }
56
+ message.key = reader.string();
57
+ continue;
58
+ case 3:
59
+ if (tag !== 26) {
60
+ break;
61
+ }
62
+ message.companyId = reader.string();
63
+ continue;
64
+ case 4:
65
+ if (tag !== 34) {
66
+ break;
67
+ }
68
+ message.entityMetadata = entity_metadata_1.EntityMetadata.decode(reader, reader.uint32());
69
+ continue;
70
+ case 5:
71
+ if (tag !== 40) {
72
+ break;
73
+ }
74
+ message.entityType = reader.int32();
75
+ continue;
76
+ }
77
+ if ((tag & 7) === 4 || tag === 0) {
78
+ break;
79
+ }
80
+ reader.skipType(tag & 7);
81
+ }
82
+ return message;
83
+ },
84
+ fromJSON(object) {
85
+ return {
86
+ bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : "",
87
+ key: isSet(object.key) ? globalThis.String(object.key) : "",
88
+ companyId: isSet(object.companyId) ? globalThis.String(object.companyId) : "",
89
+ entityMetadata: isSet(object.entityMetadata) ? entity_metadata_1.EntityMetadata.fromJSON(object.entityMetadata) : undefined,
90
+ entityType: isSet(object.entityType) ? (0, entity_type_1.entityTypeFromJSON)(object.entityType) : 0,
91
+ };
92
+ },
93
+ toJSON(message) {
94
+ const obj = {};
95
+ if (message.bucket !== "") {
96
+ obj.bucket = message.bucket;
97
+ }
98
+ if (message.key !== "") {
99
+ obj.key = message.key;
100
+ }
101
+ if (message.companyId !== "") {
102
+ obj.companyId = message.companyId;
103
+ }
104
+ if (message.entityMetadata !== undefined) {
105
+ obj.entityMetadata = entity_metadata_1.EntityMetadata.toJSON(message.entityMetadata);
106
+ }
107
+ if (message.entityType !== 0) {
108
+ obj.entityType = (0, entity_type_1.entityTypeToJSON)(message.entityType);
109
+ }
110
+ return obj;
111
+ },
112
+ create(base) {
113
+ return exports.S3Metadata.fromPartial(base !== null && base !== void 0 ? base : {});
114
+ },
115
+ fromPartial(object) {
116
+ var _a, _b, _c, _d;
117
+ const message = createBaseS3Metadata();
118
+ message.bucket = (_a = object.bucket) !== null && _a !== void 0 ? _a : "";
119
+ message.key = (_b = object.key) !== null && _b !== void 0 ? _b : "";
120
+ message.companyId = (_c = object.companyId) !== null && _c !== void 0 ? _c : "";
121
+ message.entityMetadata = (object.entityMetadata !== undefined && object.entityMetadata !== null)
122
+ ? entity_metadata_1.EntityMetadata.fromPartial(object.entityMetadata)
123
+ : undefined;
124
+ message.entityType = (_d = object.entityType) !== null && _d !== void 0 ? _d : 0;
125
+ return message;
126
+ },
127
+ };
128
+ function isSet(value) {
129
+ return value !== null && value !== undefined;
130
+ }
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczNfbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ibG9ic2V0L3YyL3MzX21ldGFkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxzREFBc0Q7QUFDdEQsWUFBWTtBQUNaLGtDQUFrQztBQUNsQyxpQ0FBaUM7QUFDakMscURBQXFEOzs7Ozs7QUFFckQsb0JBQW9CO0FBQ3BCLGlFQUFxQztBQUNyQyx1REFBbUQ7QUFDbkQsK0NBQWlGO0FBRXBFLFFBQUEsZUFBZSxHQUFHLDBCQUEwQixDQUFDO0FBVTFELFNBQVMsb0JBQW9CO0lBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUMxRixDQUFDO0FBRVksUUFBQSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxDQUFDLE9BQW1CLEVBQUUsU0FBcUIsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2xFLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUU7WUFDekIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRTtZQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssRUFBRSxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENB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ZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi10c19wcm90by4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vICAgcHJvdG9jLWdlbi10c19wcm90byAgdjEuMTgxLjFcbi8vICAgcHJvdG9jICAgICAgICAgICAgICAgdjMuMTkuMVxuLy8gc291cmNlOiBjb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvczNfbWV0YWRhdGEucHJvdG9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBfbTAgZnJvbSBcInByb3RvYnVmanMvbWluaW1hbFwiO1xuaW1wb3J0IHsgRW50aXR5TWV0YWRhdGEgfSBmcm9tIFwiLi9lbnRpdHlfbWV0YWRhdGFcIjtcbmltcG9ydCB7IEVudGl0eVR5cGUsIGVudGl0eVR5cGVGcm9tSlNPTiwgZW50aXR5VHlwZVRvSlNPTiB9IGZyb20gXCIuL2VudGl0eV90eXBlXCI7XG5cbmV4cG9ydCBjb25zdCBwcm90b2J1ZlBhY2thZ2UgPSBcImNvbS5jb3JhbG9naXguYmxvYnNldC52MlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFMzTWV0YWRhdGEge1xuICBidWNrZXQ6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG4gIGNvbXBhbnlJZDogc3RyaW5nO1xuICBlbnRpdHlNZXRhZGF0YTogRW50aXR5TWV0YWRhdGEgfCB1bmRlZmluZWQ7XG4gIGVudGl0eVR5cGU6IEVudGl0eVR5cGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VTM01ldGFkYXRhKCk6IFMzTWV0YWRhdGEge1xuICByZXR1cm4geyBidWNrZXQ6IFwiXCIsIGtleTogXCJcIiwgY29tcGFueUlkOiBcIlwiLCBlbnRpdHlNZXRhZGF0YTogdW5kZWZpbmVkLCBlbnRpdHlUeXBlOiAwIH07XG59XG5cbmV4cG9ydCBjb25zdCBTM01ldGFkYXRhID0ge1xuICBlbmNvZGUobWVzc2FnZTogUzNNZXRhZGF0YSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmJ1Y2tldCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UuYnVja2V0KTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uua2V5ICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcobWVzc2FnZS5rZXkpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLmNvbXBhbnlJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVudGl0eU1ldGFkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIEVudGl0eU1ldGFkYXRhLmVuY29kZShtZXNzYWdlLmVudGl0eU1ldGFkYXRhLCB3cml0ZXIudWludDMyKDM0KS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lbnRpdHlUeXBlICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDQwKS5pbnQzMihtZXNzYWdlLmVudGl0eVR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFMzTWV0YWRhdGEge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUzNNZXRhZGF0YSgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuYnVja2V0ID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uua2V5ID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tcGFueUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZW50aXR5TWV0YWRhdGEgPSBFbnRpdHlNZXRhZGF0YS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZW50aXR5VHlwZSA9IHJlYWRlci5pbnQzMigpIGFzIGFueTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFMzTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBidWNrZXQ6IGlzU2V0KG9iamVjdC5idWNrZXQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmJ1Y2tldCkgOiBcIlwiLFxuICAgICAga2V5OiBpc1NldChvYmplY3Qua2V5KSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5rZXkpIDogXCJcIixcbiAgICAgIGNvbXBhbnlJZDogaXNTZXQob2JqZWN0LmNvbXBhbnlJZCkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuY29tcGFueUlkKSA6IFwiXCIsXG4gICAgICBlbnRpdHlNZXRhZGF0YTogaXNTZXQob2JqZWN0LmVudGl0eU1ldGFkYXRhKSA/IEVudGl0eU1ldGFkYXRhLmZyb21KU09OKG9iamVjdC5lbnRpdHlNZXRhZGF0YSkgOiB1bmRlZmluZWQsXG4gICAgICBlbnRpdHlUeXBlOiBpc1NldChvYmplY3QuZW50aXR5VHlwZSkgPyBlbnRpdHlUeXBlRnJvbUpTT04ob2JqZWN0LmVudGl0eVR5cGUpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBTM01ldGFkYXRhKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5idWNrZXQgIT09IFwiXCIpIHtcbiAgICAgIG9iai5idWNrZXQgPSBtZXNzYWdlLmJ1Y2tldDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2Uua2V5ICE9PSBcIlwiKSB7XG4gICAgICBvYmoua2V5ID0gbWVzc2FnZS5rZXk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNvbXBhbnlJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLmNvbXBhbnlJZCA9IG1lc3NhZ2UuY29tcGFueUlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lbnRpdHlNZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouZW50aXR5TWV0YWRhdGEgPSBFbnRpdHlNZXRhZGF0YS50b0pTT04obWVzc2FnZS5lbnRpdHlNZXRhZGF0YSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVudGl0eVR5cGUgIT09IDApIHtcbiAgICAgIG9iai5lbnRpdHlUeXBlID0gZW50aXR5VHlwZVRvSlNPTihtZXNzYWdlLmVudGl0eVR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG4gIGNyZWF0ZShiYXNlPzogRGVlcFBhcnRpYWw8UzNNZXRhZGF0YT4pOiBTM01ldGFkYXRhIHtcbiAgICByZXR1cm4gUzNNZXRhZGF0YS5mcm9tUGFydGlhbChiYXNlID8/IHt9KTtcbiAgfSxcbiAgZnJvbVBhcnRpYWwob2JqZWN0OiBEZWVwUGFydGlhbDxTM01ldGFkYXRhPik6IFMzTWV0YWRhdGEge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlUzNNZXRhZGF0YSgpO1xuICAgIG1lc3NhZ2UuYnVja2V0ID0gb2JqZWN0LmJ1Y2tldCA/PyBcIlwiO1xuICAgIG1lc3NhZ2Uua2V5ID0gb2JqZWN0LmtleSA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY29tcGFueUlkID0gb2JqZWN0LmNvbXBhbnlJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuZW50aXR5TWV0YWRhdGEgPSAob2JqZWN0LmVudGl0eU1ldGFkYXRhICE9PSB1bmRlZmluZWQgJiYgb2JqZWN0LmVudGl0eU1ldGFkYXRhICE9PSBudWxsKVxuICAgICAgPyBFbnRpdHlNZXRhZGF0YS5mcm9tUGFydGlhbChvYmplY3QuZW50aXR5TWV0YWRhdGEpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLmVudGl0eVR5cGUgPSBvYmplY3QuZW50aXR5VHlwZSA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxudHlwZSBCdWlsdGluID0gRGF0ZSB8IEZ1bmN0aW9uIHwgVWludDhBcnJheSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW4gPyBUXG4gIDogVCBleHRlbmRzIGdsb2JhbFRoaXMuQXJyYXk8aW5mZXIgVT4gPyBnbG9iYWxUaGlzLkFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGlzU2V0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=