harvester_sdk 1.0.28 → 1.0.30

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 (3) hide show
  1. package/dist/sdk.js +2 -2
  2. package/package.json +1 -1
  3. package/sdk.ts +90 -62
package/dist/sdk.js CHANGED
@@ -127,7 +127,7 @@ class HarvesterSDK {
127
127
  const response = await this.client.get('/data', {
128
128
  params: queryParams,
129
129
  });
130
- return response.data;
130
+ return response.data.data;
131
131
  }
132
132
  /**
133
133
  * Get data by region ID
@@ -208,7 +208,7 @@ class HarvesterSDK {
208
208
  const response = await this.client.get('/data/count', {
209
209
  params: queryParams,
210
210
  });
211
- return response.data.data.count;
211
+ return response.data.data;
212
212
  }
213
213
  /**
214
214
  * Get data aggregated by a field
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harvester_sdk",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "SDK for interacting with the Harvester API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/sdk.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';
2
- import {
3
- RegionType,
4
- GeoType,
5
- DataType,
6
- platformsList,
7
- } from './types';
2
+ import { RegionType, GeoType, DataType, platformsList } from './types';
8
3
 
9
4
  // SDK Configuration
10
5
  export interface HarvesterSDKConfig {
@@ -50,35 +45,35 @@ export interface GetDataParams extends PaginationParams {
50
45
  // Region filters
51
46
  region_id?: string;
52
47
  region_ids?: string[];
53
-
48
+
54
49
  // Time filters
55
50
  time_range?: TimeRange;
56
51
  relative_time?: RelativeTimeRange;
57
-
52
+
58
53
  // Platform filters
59
54
  platform?: Platform;
60
55
  platforms?: Platform[];
61
-
56
+
62
57
  // Source filters
63
58
  source_id?: string;
64
59
  source_ids?: string[];
65
60
  source_group_id?: string;
66
-
61
+
67
62
  // Geo filters
68
63
  data_geo?: string[];
69
64
  source_dominant_geos?: string[];
70
-
65
+
71
66
  // Content filters
72
67
  data_original_type?: string;
73
68
  data_language?: string;
74
69
  data_sentiment?: 'positive' | 'negative' | 'neutral' | 'mixed';
75
-
70
+
76
71
  // Text search
77
72
  search?: string;
78
-
73
+
79
74
  // Processing status
80
75
  processing_status?: 'raw' | 'processed' | 'analyzed' | 'error';
81
-
76
+
82
77
  // Include/exclude fields
83
78
  fields?: string[];
84
79
  exclude_fields?: string[];
@@ -106,20 +101,20 @@ export interface SDKResponse<T> {
106
101
 
107
102
  /**
108
103
  * Harvester SDK - Client for interacting with the Harvester API
109
- *
104
+ *
110
105
  * @example
111
106
  * ```typescript
112
107
  * const harvester = new HarvesterSDK({
113
108
  * baseUrl: 'https://api.harvester.io',
114
109
  * apiKey: 'your-api-key'
115
110
  * });
116
- *
111
+ *
117
112
  * // Get all regions
118
113
  * const regions = await harvester.getRegions();
119
- *
114
+ *
120
115
  * // Get geos by region
121
116
  * const geos = await harvester.getGeosByRegion('region-id');
122
- *
117
+ *
123
118
  * // Get data with filters
124
119
  * const data = await harvester.getData({
125
120
  * region_id: 'region-id',
@@ -149,7 +144,11 @@ export class HarvesterSDK {
149
144
  (response) => response,
150
145
  (error) => {
151
146
  const message = error.response?.data?.message || error.message;
152
- throw new HarvesterSDKError(message, error.response?.status, error.response?.data);
147
+ throw new HarvesterSDKError(
148
+ message,
149
+ error.response?.status,
150
+ error.response?.data
151
+ );
153
152
  }
154
153
  );
155
154
  }
@@ -176,19 +175,24 @@ export class HarvesterSDK {
176
175
 
177
176
  /**
178
177
  * Get all regions
179
- *
178
+ *
180
179
  * @param params - Optional filter and pagination parameters
181
180
  * @returns Paginated list of regions
182
- *
181
+ *
183
182
  * @example
184
183
  * ```typescript
185
184
  * const regions = await harvester.getRegions({ status: 'active' });
186
185
  * ```
187
186
  */
188
- async getRegions(params?: GetRegionsParams): Promise<PaginatedResponse<RegionType>> {
189
- const response = await this.client.get<PaginatedResponse<RegionType>>('/regions', {
190
- params: this.buildQueryParams(params),
191
- });
187
+ async getRegions(
188
+ params?: GetRegionsParams
189
+ ): Promise<PaginatedResponse<RegionType>> {
190
+ const response = await this.client.get<PaginatedResponse<RegionType>>(
191
+ '/regions',
192
+ {
193
+ params: this.buildQueryParams(params),
194
+ }
195
+ );
192
196
  return response.data;
193
197
  }
194
198
 
@@ -198,34 +202,39 @@ export class HarvesterSDK {
198
202
 
199
203
  /**
200
204
  * Get geographies by region ID
201
- *
205
+ *
202
206
  * @param regionId - The region ID
203
207
  * @param params - Optional pagination parameters
204
208
  * @returns Paginated list of geographies in the region
205
- *
209
+ *
206
210
  * @example
207
211
  * ```typescript
208
212
  * const geos = await harvester.getGeosByRegion('region-id', { limit: 50 });
209
213
  * ```
210
214
  */
211
- async getGeosByRegion(regionId: string, params?: PaginationParams): Promise<PaginatedResponse<GeoType>> {
212
- const response = await this.client.get<PaginatedResponse<GeoType>>(`/geo-selections/${regionId}`, {
213
- params: this.buildQueryParams(params),
214
- });
215
+ async getGeosByRegion(
216
+ regionId: string,
217
+ params?: PaginationParams
218
+ ): Promise<PaginatedResponse<GeoType>> {
219
+ const response = await this.client.get<PaginatedResponse<GeoType>>(
220
+ `/geo-selections/${regionId}`,
221
+ {
222
+ params: this.buildQueryParams(params),
223
+ }
224
+ );
215
225
  return response.data;
216
226
  }
217
227
 
218
-
219
228
  // ============================================
220
229
  // DATA
221
230
  // ============================================
222
231
 
223
232
  /**
224
233
  * Get data with filters
225
- *
234
+ *
226
235
  * @param params - Filter and pagination parameters
227
236
  * @returns Paginated list of data items
228
- *
237
+ *
229
238
  * @example
230
239
  * ```typescript
231
240
  * // Get telegram data from a specific region in the last 24 hours
@@ -238,52 +247,64 @@ export class HarvesterSDK {
238
247
  */
239
248
  async getData(params?: GetDataParams): Promise<PaginatedResponse<DataType>> {
240
249
  const queryParams = this.buildDataQueryParams(params);
241
- const response = await this.client.get<PaginatedResponse<DataType>>('/data', {
242
- params: queryParams,
243
- });
244
- return response.data;
250
+ const response = await this.client.get<{data: PaginatedResponse<DataType>}>(
251
+ '/data',
252
+ {
253
+ params: queryParams,
254
+ }
255
+ );
256
+ return response.data.data;
245
257
  }
246
258
 
247
259
  /**
248
260
  * Get data by region ID
249
- *
261
+ *
250
262
  * @param regionId - The region ID
251
263
  * @param params - Optional filter parameters
252
264
  * @returns Paginated list of data items from the region
253
265
  */
254
- async getDataByRegion(regionId: string, params?: Omit<GetDataParams, 'region_id'>): Promise<PaginatedResponse<DataType>> {
266
+ async getDataByRegion(
267
+ regionId: string,
268
+ params?: Omit<GetDataParams, 'region_id'>
269
+ ): Promise<PaginatedResponse<DataType>> {
255
270
  return this.getData({ ...params, region_id: regionId });
256
271
  }
257
272
 
258
273
  /**
259
274
  * Get data by platform
260
- *
275
+ *
261
276
  * @param platform - The platform to filter by
262
277
  * @param params - Optional filter parameters
263
278
  * @returns Paginated list of data items from the platform
264
279
  */
265
- async getDataByPlatform(platform: Platform, params?: Omit<GetDataParams, 'platform'>): Promise<PaginatedResponse<DataType>> {
280
+ async getDataByPlatform(
281
+ platform: Platform,
282
+ params?: Omit<GetDataParams, 'platform'>
283
+ ): Promise<PaginatedResponse<DataType>> {
266
284
  return this.getData({ ...params, platform });
267
285
  }
268
286
 
269
287
  /**
270
288
  * Get data within a time range
271
- *
289
+ *
272
290
  * @param timeRange - The time range (start and end timestamps)
273
291
  * @param params - Optional filter parameters
274
292
  * @returns Paginated list of data items within the time range
275
293
  */
276
- async getDataByTimeRange(timeRange: TimeRange, params?: Omit<GetDataParams, 'time_range'>): Promise<PaginatedResponse<DataType>> {
294
+ async getDataByTimeRange(
295
+ timeRange: TimeRange,
296
+ params?: Omit<GetDataParams, 'time_range'>
297
+ ): Promise<PaginatedResponse<DataType>> {
277
298
  return this.getData({ ...params, time_range: timeRange });
278
299
  }
279
300
 
280
301
  /**
281
302
  * Get data from relative time (e.g., last 24 hours)
282
- *
303
+ *
283
304
  * @param relativeTime - Relative time specification
284
305
  * @param params - Optional filter parameters
285
306
  * @returns Paginated list of data items
286
- *
307
+ *
287
308
  * @example
288
309
  * ```typescript
289
310
  * const data = await harvester.getDataFromRelativeTime(
@@ -292,49 +313,57 @@ export class HarvesterSDK {
292
313
  * );
293
314
  * ```
294
315
  */
295
- async getDataFromRelativeTime(relativeTime: RelativeTimeRange, params?: Omit<GetDataParams, 'relative_time'>): Promise<PaginatedResponse<DataType>> {
316
+ async getDataFromRelativeTime(
317
+ relativeTime: RelativeTimeRange,
318
+ params?: Omit<GetDataParams, 'relative_time'>
319
+ ): Promise<PaginatedResponse<DataType>> {
296
320
  return this.getData({ ...params, relative_time: relativeTime });
297
321
  }
298
322
 
299
323
  /**
300
324
  * Get a single data item by ID
301
- *
325
+ *
302
326
  * @param dataId - The data item ID
303
327
  * @returns The data object
304
328
  */
305
329
  async getDataById(dataId: string): Promise<DataType> {
306
- const response = await this.client.get<SDKResponse<DataType>>(`/data/${dataId}`);
330
+ const response = await this.client.get<SDKResponse<DataType>>(
331
+ `/data/${dataId}`
332
+ );
307
333
  return response.data.data;
308
334
  }
309
335
 
310
336
  /**
311
337
  * Search data by text content
312
- *
338
+ *
313
339
  * @param query - Search query
314
340
  * @param params - Optional filter parameters
315
341
  * @returns Paginated list of matching data items
316
342
  */
317
- async searchData(query: string, params?: GetDataParams): Promise<PaginatedResponse<DataType>> {
343
+ async searchData(
344
+ query: string,
345
+ params?: GetDataParams
346
+ ): Promise<PaginatedResponse<DataType>> {
318
347
  return this.getData({ ...params, search: query });
319
348
  }
320
349
 
321
350
  /**
322
351
  * Get data count by filters (without fetching all data)
323
- *
352
+ *
324
353
  * @param params - Filter parameters
325
354
  * @returns Count of matching data items
326
355
  */
327
356
  async getDataCount(params?: GetDataParams): Promise<number> {
328
357
  const queryParams = this.buildDataQueryParams(params);
329
- const response = await this.client.get<SDKResponse<{ count: number }>>('/data/count', {
358
+ const response = await this.client.get<{ data: number }>('/data/count', {
330
359
  params: queryParams,
331
360
  });
332
- return response.data.data.count;
361
+ return response.data.data;
333
362
  }
334
363
 
335
364
  /**
336
365
  * Get data aggregated by a field
337
- *
366
+ *
338
367
  * @param field - Field to aggregate by (e.g., 'platform', 'source_region_id')
339
368
  * @param params - Optional filter parameters
340
369
  * @returns Aggregation results
@@ -344,10 +373,9 @@ export class HarvesterSDK {
344
373
  params?: GetDataParams
345
374
  ): Promise<{ _id: string; count: number }[]> {
346
375
  const queryParams = this.buildDataQueryParams(params);
347
- const response = await this.client.get<{ data: { _id: string; count: number }[] }>(
348
- `/data/aggregate/${field}`,
349
- { params: queryParams }
350
- );
376
+ const response = await this.client.get<{
377
+ data: { _id: string; count: number }[];
378
+ }>(`/data/aggregate/${field}`, { params: queryParams });
351
379
  return response.data.data;
352
380
  }
353
381
 
@@ -379,7 +407,7 @@ export class HarvesterSDK {
379
407
  */
380
408
  private buildQueryParams(params?: Record<string, any>): Record<string, any> {
381
409
  if (!params) return {};
382
-
410
+
383
411
  const cleaned: Record<string, any> = {};
384
412
  for (const [key, value] of Object.entries(params)) {
385
413
  if (value !== undefined && value !== null) {
@@ -480,10 +508,10 @@ export class HarvesterSDKError extends Error {
480
508
 
481
509
  /**
482
510
  * Create a new Harvester SDK instance
483
- *
511
+ *
484
512
  * @param config - SDK configuration
485
513
  * @returns HarvesterSDK instance
486
- *
514
+ *
487
515
  * @example
488
516
  * ```typescript
489
517
  * const harvester = createHarvesterSDK({