@devrev/airsync-sdk 2.0.0-beta.0

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 (180) hide show
  1. package/README.md +31 -0
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +16 -0
  3. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -0
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +9 -0
  5. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -0
  6. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.js +2 -0
  7. package/dist/attachments-streaming/attachments-streaming-pool.js +97 -0
  8. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +2 -0
  9. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +1 -0
  10. package/dist/attachments-streaming/attachments-streaming-pool.test.js +267 -0
  11. package/dist/common/constants.d.ts +25 -0
  12. package/dist/common/constants.d.ts.map +1 -0
  13. package/dist/common/constants.js +58 -0
  14. package/dist/common/control-protocol.d.ts +10 -0
  15. package/dist/common/control-protocol.d.ts.map +1 -0
  16. package/dist/common/control-protocol.js +31 -0
  17. package/dist/common/errors.d.ts +6 -0
  18. package/dist/common/errors.d.ts.map +1 -0
  19. package/dist/common/errors.js +4 -0
  20. package/dist/common/event-type-translation.d.ts +24 -0
  21. package/dist/common/event-type-translation.d.ts.map +1 -0
  22. package/dist/common/event-type-translation.js +117 -0
  23. package/dist/common/helpers.d.ts +41 -0
  24. package/dist/common/helpers.d.ts.map +1 -0
  25. package/dist/common/helpers.js +124 -0
  26. package/dist/common/install-initial-domain-mapping.d.ts +4 -0
  27. package/dist/common/install-initial-domain-mapping.d.ts.map +1 -0
  28. package/dist/common/install-initial-domain-mapping.js +58 -0
  29. package/dist/common/install-initial-domain-mapping.test.d.ts +2 -0
  30. package/dist/common/install-initial-domain-mapping.test.d.ts.map +1 -0
  31. package/dist/common/install-initial-domain-mapping.test.js +207 -0
  32. package/dist/deprecated/adapter/index.d.ts +62 -0
  33. package/dist/deprecated/adapter/index.d.ts.map +1 -0
  34. package/dist/deprecated/adapter/index.js +151 -0
  35. package/dist/deprecated/common/helpers.d.ts +7 -0
  36. package/dist/deprecated/common/helpers.d.ts.map +1 -0
  37. package/dist/deprecated/common/helpers.js +47 -0
  38. package/dist/deprecated/demo-extractor/external_domain_metadata.json +38 -0
  39. package/dist/deprecated/demo-extractor/index.d.ts +18 -0
  40. package/dist/deprecated/demo-extractor/index.d.ts.map +1 -0
  41. package/dist/deprecated/demo-extractor/index.js +161 -0
  42. package/dist/deprecated/http/client.d.ts +22 -0
  43. package/dist/deprecated/http/client.d.ts.map +1 -0
  44. package/dist/deprecated/http/client.js +161 -0
  45. package/dist/deprecated/uploader/index.d.ts +35 -0
  46. package/dist/deprecated/uploader/index.d.ts.map +1 -0
  47. package/dist/deprecated/uploader/index.js +161 -0
  48. package/dist/http/axios-client-internal.d.ts +3 -0
  49. package/dist/http/axios-client-internal.d.ts.map +1 -0
  50. package/dist/http/axios-client-internal.js +66 -0
  51. package/dist/http/axios-client-internal.test.d.ts +2 -0
  52. package/dist/http/axios-client-internal.test.d.ts.map +1 -0
  53. package/dist/http/axios-client-internal.test.js +154 -0
  54. package/dist/http/axios-client.d.ts +27 -0
  55. package/dist/http/axios-client.d.ts.map +1 -0
  56. package/dist/http/axios-client.js +57 -0
  57. package/dist/http/constants.d.ts +4 -0
  58. package/dist/http/constants.d.ts.map +1 -0
  59. package/dist/http/constants.js +6 -0
  60. package/dist/http/index.d.ts +3 -0
  61. package/dist/http/index.d.ts.map +1 -0
  62. package/dist/http/index.js +18 -0
  63. package/dist/http/types.d.ts +17 -0
  64. package/dist/http/types.d.ts.map +1 -0
  65. package/dist/http/types.js +2 -0
  66. package/dist/index.d.ts +14 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +34 -0
  69. package/dist/logger/logger.constants.d.ts +6 -0
  70. package/dist/logger/logger.constants.d.ts.map +1 -0
  71. package/dist/logger/logger.constants.js +13 -0
  72. package/dist/logger/logger.context.d.ts +58 -0
  73. package/dist/logger/logger.context.d.ts.map +1 -0
  74. package/dist/logger/logger.context.js +86 -0
  75. package/dist/logger/logger.d.ts +89 -0
  76. package/dist/logger/logger.d.ts.map +1 -0
  77. package/dist/logger/logger.interfaces.d.ts +43 -0
  78. package/dist/logger/logger.interfaces.d.ts.map +1 -0
  79. package/dist/logger/logger.interfaces.js +9 -0
  80. package/dist/logger/logger.js +196 -0
  81. package/dist/logger/logger.test.d.ts +2 -0
  82. package/dist/logger/logger.test.d.ts.map +1 -0
  83. package/dist/logger/logger.test.js +490 -0
  84. package/dist/mappers/mappers.d.ts +52 -0
  85. package/dist/mappers/mappers.d.ts.map +1 -0
  86. package/dist/mappers/mappers.interface.d.ts +294 -0
  87. package/dist/mappers/mappers.interface.d.ts.map +1 -0
  88. package/dist/mappers/mappers.interface.js +48 -0
  89. package/dist/mappers/mappers.js +83 -0
  90. package/dist/mappers/mappers.test.d.ts +2 -0
  91. package/dist/mappers/mappers.test.d.ts.map +1 -0
  92. package/dist/mappers/mappers.test.js +107 -0
  93. package/dist/multithreading/create-worker.d.ts +5 -0
  94. package/dist/multithreading/create-worker.d.ts.map +1 -0
  95. package/dist/multithreading/create-worker.js +28 -0
  96. package/dist/multithreading/create-worker.test.d.ts +2 -0
  97. package/dist/multithreading/create-worker.test.d.ts.map +1 -0
  98. package/dist/multithreading/create-worker.test.js +89 -0
  99. package/dist/multithreading/process-task.d.ts +3 -0
  100. package/dist/multithreading/process-task.d.ts.map +1 -0
  101. package/dist/multithreading/process-task.js +58 -0
  102. package/dist/multithreading/spawn/spawn.d.ts +30 -0
  103. package/dist/multithreading/spawn/spawn.d.ts.map +1 -0
  104. package/dist/multithreading/spawn/spawn.helpers.d.ts +21 -0
  105. package/dist/multithreading/spawn/spawn.helpers.d.ts.map +1 -0
  106. package/dist/multithreading/spawn/spawn.helpers.js +114 -0
  107. package/dist/multithreading/spawn/spawn.helpers.test.d.ts +2 -0
  108. package/dist/multithreading/spawn/spawn.helpers.test.d.ts.map +1 -0
  109. package/dist/multithreading/spawn/spawn.helpers.test.js +293 -0
  110. package/dist/multithreading/spawn/spawn.js +249 -0
  111. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts +2 -0
  112. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.d.ts.map +1 -0
  113. package/dist/multithreading/worker-adapter/worker-adapter.artifacts.test.js +127 -0
  114. package/dist/multithreading/worker-adapter/worker-adapter.d.ts +91 -0
  115. package/dist/multithreading/worker-adapter/worker-adapter.d.ts.map +1 -0
  116. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts +22 -0
  117. package/dist/multithreading/worker-adapter/worker-adapter.helpers.d.ts.map +1 -0
  118. package/dist/multithreading/worker-adapter/worker-adapter.helpers.js +64 -0
  119. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts +2 -0
  120. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.d.ts.map +1 -0
  121. package/dist/multithreading/worker-adapter/worker-adapter.helpers.test.js +514 -0
  122. package/dist/multithreading/worker-adapter/worker-adapter.js +747 -0
  123. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts +2 -0
  124. package/dist/multithreading/worker-adapter/worker-adapter.test.d.ts.map +1 -0
  125. package/dist/multithreading/worker-adapter/worker-adapter.test.js +483 -0
  126. package/dist/multithreading/worker.d.ts +2 -0
  127. package/dist/multithreading/worker.d.ts.map +1 -0
  128. package/dist/multithreading/worker.js +9 -0
  129. package/dist/repo/repo.d.ts +18 -0
  130. package/dist/repo/repo.d.ts.map +1 -0
  131. package/dist/repo/repo.interfaces.d.ts +46 -0
  132. package/dist/repo/repo.interfaces.d.ts.map +1 -0
  133. package/dist/repo/repo.interfaces.js +2 -0
  134. package/dist/repo/repo.js +75 -0
  135. package/dist/repo/repo.test.d.ts +2 -0
  136. package/dist/repo/repo.test.d.ts.map +1 -0
  137. package/dist/repo/repo.test.js +131 -0
  138. package/dist/state/state.d.ts +30 -0
  139. package/dist/state/state.d.ts.map +1 -0
  140. package/dist/state/state.interfaces.d.ts +51 -0
  141. package/dist/state/state.interfaces.d.ts.map +1 -0
  142. package/dist/state/state.interfaces.js +21 -0
  143. package/dist/state/state.js +166 -0
  144. package/dist/state/state.test.d.ts +2 -0
  145. package/dist/state/state.test.d.ts.map +1 -0
  146. package/dist/state/state.test.js +224 -0
  147. package/dist/types/common.d.ts +50 -0
  148. package/dist/types/common.d.ts.map +1 -0
  149. package/dist/types/common.js +25 -0
  150. package/dist/types/extraction.d.ts +417 -0
  151. package/dist/types/extraction.d.ts.map +1 -0
  152. package/dist/types/extraction.js +170 -0
  153. package/dist/types/extraction.test.d.ts +2 -0
  154. package/dist/types/extraction.test.d.ts.map +1 -0
  155. package/dist/types/extraction.test.js +70 -0
  156. package/dist/types/index.d.ts +9 -0
  157. package/dist/types/index.d.ts.map +1 -0
  158. package/dist/types/index.js +18 -0
  159. package/dist/types/loading.d.ts +147 -0
  160. package/dist/types/loading.d.ts.map +1 -0
  161. package/dist/types/loading.js +48 -0
  162. package/dist/types/workers.d.ts +161 -0
  163. package/dist/types/workers.d.ts.map +1 -0
  164. package/dist/types/workers.js +22 -0
  165. package/dist/uploader/uploader.d.ts +92 -0
  166. package/dist/uploader/uploader.d.ts.map +1 -0
  167. package/dist/uploader/uploader.helpers.d.ts +33 -0
  168. package/dist/uploader/uploader.helpers.d.ts.map +1 -0
  169. package/dist/uploader/uploader.helpers.js +139 -0
  170. package/dist/uploader/uploader.helpers.test.d.ts +2 -0
  171. package/dist/uploader/uploader.helpers.test.d.ts.map +1 -0
  172. package/dist/uploader/uploader.helpers.test.js +267 -0
  173. package/dist/uploader/uploader.interfaces.d.ts +95 -0
  174. package/dist/uploader/uploader.interfaces.d.ts.map +1 -0
  175. package/dist/uploader/uploader.interfaces.js +2 -0
  176. package/dist/uploader/uploader.js +305 -0
  177. package/dist/uploader/uploader.test.d.ts +2 -0
  178. package/dist/uploader/uploader.test.d.ts.map +1 -0
  179. package/dist/uploader/uploader.test.js +589 -0
  180. package/package.json +60 -0
@@ -0,0 +1,305 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Uploader = void 0;
7
+ const form_data_1 = __importDefault(require("form-data"));
8
+ const js_jsonl_1 = require("js-jsonl");
9
+ const axios_client_internal_1 = require("../http/axios-client-internal");
10
+ const constants_1 = require("../common/constants");
11
+ const logger_1 = require("../logger/logger");
12
+ const uploader_helpers_1 = require("./uploader.helpers");
13
+ class Uploader {
14
+ constructor({ event, options }) {
15
+ this.devrevApiEndpoint = event.execution_metadata.devrev_endpoint;
16
+ this.devrevApiToken = event.context.secrets.service_account_token;
17
+ this.requestId = event.payload.event_context.request_id;
18
+ this.isLocalDevelopment = options === null || options === void 0 ? void 0 : options.isLocalDevelopment;
19
+ this.defaultHeaders = {
20
+ Authorization: `Bearer ${this.devrevApiToken}`,
21
+ };
22
+ }
23
+ /**
24
+ * Uploads the fetched objects to the DevRev platform. Fetched objects are compressed to a gzipped jsonl object and uploaded to the platform.
25
+ * @param {string} itemType - The type of the item to be uploaded
26
+ * @param {object[] | object} fetchedObjects - The objects to be uploaded
27
+ * @returns {Promise<UploadResponse>} - The response object containing the artifact information or error information if there was an error
28
+ */
29
+ async upload(itemType, fetchedObjects) {
30
+ if (this.isLocalDevelopment) {
31
+ await (0, uploader_helpers_1.downloadToLocal)(itemType, fetchedObjects);
32
+ }
33
+ // Compress the fetched objects to a gzipped jsonl object
34
+ const { response: file, error: fileError } = (0, uploader_helpers_1.compressGzip)(js_jsonl_1.jsonl.stringify(fetchedObjects));
35
+ if (fileError) {
36
+ return {
37
+ error: new Error('Error while compressing jsonl object. ' + (0, logger_1.serializeError)(fileError)),
38
+ };
39
+ }
40
+ const filename = itemType + '.jsonl.gz';
41
+ const fileType = 'application/x-gzip';
42
+ // Get upload url
43
+ const { error: preparedArtifactError, response: preparedArtifact } = await this.getArtifactUploadUrl(filename, fileType);
44
+ if (preparedArtifactError) {
45
+ return {
46
+ error: new Error('Error while getting artifact upload URL.'),
47
+ };
48
+ }
49
+ // Upload prepared artifact to the given url
50
+ const { error: uploadItemError } = await this.uploadArtifact(preparedArtifact, file);
51
+ if (uploadItemError) {
52
+ return {
53
+ error: new Error('Error while uploading artifact.'),
54
+ };
55
+ }
56
+ // Confirm upload
57
+ const { error: confirmArtifactUploadError } = await this.confirmArtifactUpload(preparedArtifact.artifact_id);
58
+ if (confirmArtifactUploadError) {
59
+ return {
60
+ error: new Error('Error while confirming artifact upload. ' +
61
+ JSON.stringify(confirmArtifactUploadError)),
62
+ };
63
+ }
64
+ // Return the artifact information to the platform
65
+ const artifact = {
66
+ id: preparedArtifact.artifact_id,
67
+ item_type: itemType,
68
+ item_count: Array.isArray(fetchedObjects) ? fetchedObjects.length : 1,
69
+ };
70
+ return { artifact };
71
+ }
72
+ /**
73
+ * Gets the upload URL for an artifact from the DevRev API.
74
+ * @param {string} filename - The name of the file to upload
75
+ * @param {string} fileType - The MIME type of the file
76
+ * @param {number} [fileSize] - Optional file size in bytes
77
+ * @returns {Promise<ArtifactToUpload | void>} The artifact upload information or undefined on error
78
+ */
79
+ async getArtifactUploadUrl(filename, fileType, fileSize) {
80
+ const url = `${this.devrevApiEndpoint}/internal/airdrop.artifacts.upload-url`;
81
+ try {
82
+ const response = await axios_client_internal_1.axiosClient.get(url, {
83
+ headers: Object.assign({}, this.defaultHeaders),
84
+ params: {
85
+ request_id: this.requestId,
86
+ file_type: fileType,
87
+ file_name: (0, uploader_helpers_1.truncateFilename)(filename),
88
+ file_size: fileSize,
89
+ },
90
+ });
91
+ return { response: response.data };
92
+ }
93
+ catch (error) {
94
+ return { error };
95
+ }
96
+ }
97
+ /**
98
+ * Uploads an artifact file to the provided upload URL using multipart form data.
99
+ * @param {ArtifactToUpload} artifact - The artifact upload information containing upload URL and form data
100
+ * @param {Buffer} file - The file buffer to upload
101
+ * @returns {Promise<AxiosResponse | void>} The axios response or undefined on error
102
+ */
103
+ async uploadArtifact(artifact, file) {
104
+ const formData = new form_data_1.default();
105
+ for (const field in artifact.form_data) {
106
+ formData.append(field, artifact.form_data[field]);
107
+ }
108
+ formData.append('file', file);
109
+ try {
110
+ const response = await axios_client_internal_1.axiosClient.post(artifact.upload_url, formData, {
111
+ headers: Object.assign({}, formData.getHeaders()),
112
+ });
113
+ return { response };
114
+ }
115
+ catch (error) {
116
+ return { error };
117
+ }
118
+ }
119
+ /**
120
+ * Streams an artifact file from an axios response to the upload URL.
121
+ * @param {ArtifactToUpload} artifact - The artifact upload information containing upload URL and form data
122
+ * @param {AxiosResponse} fileStream - The axios response stream containing the file data
123
+ * @returns {Promise<AxiosResponse | void>} The axios response or undefined on error
124
+ */
125
+ async streamArtifact(artifact, fileStream) {
126
+ const formData = new form_data_1.default();
127
+ for (const field in artifact.form_data) {
128
+ formData.append(field, artifact.form_data[field]);
129
+ }
130
+ formData.append('file', fileStream.data);
131
+ try {
132
+ const response = await axios_client_internal_1.axiosClient.post(artifact.upload_url, formData, {
133
+ headers: Object.assign(Object.assign({}, formData.getHeaders()), (!fileStream.headers['content-length']
134
+ ? {
135
+ 'Content-Length': constants_1.MAX_DEVREV_ARTIFACT_SIZE,
136
+ }
137
+ : {})),
138
+ // Prevents buffering of the response in the memory
139
+ maxRedirects: 0,
140
+ // Allow 2xx and 3xx (redirects) to be considered successful, 4xx and 5xx will throw errors and be caught in the catch block
141
+ validateStatus: (status) => status >= 200 && status < 400,
142
+ });
143
+ this.destroyStream(fileStream);
144
+ return { response };
145
+ }
146
+ catch (error) {
147
+ this.destroyStream(fileStream);
148
+ return { error };
149
+ }
150
+ }
151
+ /**
152
+ * Confirms that an artifact upload has been completed successfully.
153
+ * @param {string} artifactId - The ID of the artifact to confirm
154
+ * @returns {Promise<AxiosResponse | void>} The axios response or undefined on error
155
+ */
156
+ async confirmArtifactUpload(artifactId) {
157
+ const url = `${this.devrevApiEndpoint}/internal/airdrop.artifacts.confirm-upload`;
158
+ try {
159
+ const response = await axios_client_internal_1.axiosClient.post(url, {
160
+ request_id: this.requestId,
161
+ artifact_id: artifactId,
162
+ }, {
163
+ headers: Object.assign({}, this.defaultHeaders),
164
+ });
165
+ // If response exists and the status is 2xx, return the response
166
+ if ((response === null || response === void 0 ? void 0 : response.status) >= 200 && (response === null || response === void 0 ? void 0 : response.status) < 300) {
167
+ return { response };
168
+ }
169
+ else {
170
+ return {
171
+ error: new Error('Error while confirming artifact upload. ' +
172
+ JSON.stringify(response)),
173
+ };
174
+ }
175
+ }
176
+ catch (error) {
177
+ return { error: (0, logger_1.serializeError)(error) };
178
+ }
179
+ }
180
+ /**
181
+ * Destroys a stream to prevent resource leaks.
182
+ * @param {any} fileStream - The axios response stream to destroy
183
+ */
184
+ destroyStream(fileStream) {
185
+ try {
186
+ if (fileStream && fileStream.data) {
187
+ // For axios response streams, the data property contains the actual stream
188
+ if (typeof fileStream.data.destroy === 'function') {
189
+ fileStream.data.destroy();
190
+ }
191
+ else if (typeof fileStream.data.close === 'function') {
192
+ fileStream.data.close();
193
+ }
194
+ }
195
+ }
196
+ catch (error) {
197
+ console.warn('Error while destroying stream:', (0, logger_1.serializeError)(error));
198
+ }
199
+ }
200
+ /**
201
+ * Retrieves attachment metadata from an artifact by downloading and parsing it.
202
+ * @param {object} param0 - Configuration object
203
+ * @param {string} param0.artifact - The artifact ID to download attachments from
204
+ * @returns {Promise<{attachments?: NormalizedAttachment[], error?: {message: string}}>} The attachments array or error object
205
+ */
206
+ async getAttachmentsFromArtifactId({ artifact, }) {
207
+ // Get the URL of the attachments metadata artifact
208
+ const { response: artifactUrl, error: artifactUrlError } = await this.getArtifactDownloadUrl(artifact);
209
+ if (artifactUrlError) {
210
+ return {
211
+ error: new Error('Error while getting artifact download URL. ' +
212
+ (0, logger_1.serializeError)(artifactUrlError)),
213
+ };
214
+ }
215
+ // Download artifact from the URL
216
+ const { response: gzippedJsonlObject, error: gzippedJsonlObjectError } = await this.downloadArtifact(artifactUrl);
217
+ if (gzippedJsonlObjectError) {
218
+ return {
219
+ error: new Error('Error while downloading gzipped jsonl object.' +
220
+ (0, logger_1.serializeError)(gzippedJsonlObjectError)),
221
+ };
222
+ }
223
+ // Decompress the gzipped jsonl object
224
+ const { response: jsonlObject, error: jsonlObjectError } = (0, uploader_helpers_1.decompressGzip)(gzippedJsonlObject);
225
+ if (jsonlObjectError) {
226
+ return {
227
+ error: new Error('Error while decompressing gzipped jsonl object.' +
228
+ (0, logger_1.serializeError)(jsonlObjectError)),
229
+ };
230
+ }
231
+ // Parse the jsonl object to get the attachment metadata
232
+ const { response: jsonObject, error: jsonObjectError } = (0, uploader_helpers_1.parseJsonl)(jsonlObject);
233
+ if (jsonObjectError) {
234
+ return {
235
+ error: new Error('Error while parsing jsonl object.' + (0, logger_1.serializeError)(jsonObjectError)),
236
+ };
237
+ }
238
+ return { attachments: jsonObject };
239
+ }
240
+ /**
241
+ * Gets the download URL for an artifact from the DevRev API.
242
+ * @param {string} artifactId - The ID of the artifact to download
243
+ * @returns {Promise<string | void>} The download URL or undefined on error
244
+ */
245
+ async getArtifactDownloadUrl(artifactId) {
246
+ const url = `${this.devrevApiEndpoint}/internal/airdrop.artifacts.download-url`;
247
+ try {
248
+ const response = await axios_client_internal_1.axiosClient.get(url, {
249
+ headers: Object.assign({}, this.defaultHeaders),
250
+ params: {
251
+ request_id: this.requestId,
252
+ artifact_id: artifactId,
253
+ },
254
+ });
255
+ return { response: response.data.download_url };
256
+ }
257
+ catch (error) {
258
+ return { error };
259
+ }
260
+ }
261
+ /**
262
+ * Downloads an artifact file from the given URL.
263
+ * @param {string} artifactUrl - The URL to download the artifact from
264
+ * @returns {Promise<Buffer | void>} The artifact file buffer or undefined on error
265
+ */
266
+ async downloadArtifact(artifactUrl) {
267
+ try {
268
+ const response = await axios_client_internal_1.axiosClient.get(artifactUrl, {
269
+ responseType: 'arraybuffer',
270
+ });
271
+ return { response: response.data };
272
+ }
273
+ catch (error) {
274
+ return { error };
275
+ }
276
+ }
277
+ /**
278
+ * Retrieves and parses JSON objects from an artifact by artifact ID.
279
+ * @param {object} param0 - Configuration object
280
+ * @param {string} param0.artifactId - The artifact ID to download and parse
281
+ * @param {boolean} [param0.isGzipped=false] - Whether the artifact is gzipped
282
+ * @returns {Promise<object[] | object | void>} The parsed JSON objects or undefined on error
283
+ */
284
+ async getJsonObjectByArtifactId({ artifactId, isGzipped = false, }) {
285
+ const { response: artifactUrl, error: artifactUrlError } = await this.getArtifactDownloadUrl(artifactId);
286
+ if (artifactUrlError) {
287
+ return { error: artifactUrlError };
288
+ }
289
+ const { response: artifact, error: artifactError } = await this.downloadArtifact(artifactUrl);
290
+ if (artifactError) {
291
+ return { error: artifactError };
292
+ }
293
+ if (isGzipped) {
294
+ const { response: decompressedArtifact, error: decompressedArtifactError, } = (0, uploader_helpers_1.decompressGzip)(artifact);
295
+ if (decompressedArtifactError) {
296
+ return { error: decompressedArtifactError };
297
+ }
298
+ const jsonlObject = Buffer.from(decompressedArtifact).toString('utf-8');
299
+ return { response: js_jsonl_1.jsonl.parse(jsonlObject) };
300
+ }
301
+ const jsonlObject = Buffer.from(artifact).toString('utf-8');
302
+ return { response: js_jsonl_1.jsonl.parse(jsonlObject) };
303
+ }
304
+ }
305
+ exports.Uploader = Uploader;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uploader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploader.test.d.ts","sourceRoot":"","sources":["../../src/uploader/uploader.test.ts"],"names":[],"mappings":""}