@grepr/cli 1.1.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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -0
  3. package/build/dist/commands/base-command.d.ts +13 -0
  4. package/build/dist/commands/base-command.d.ts.map +1 -0
  5. package/build/dist/commands/base-command.js +28 -0
  6. package/build/dist/commands/base-command.js.map +1 -0
  7. package/build/dist/commands/config-command.d.ts +19 -0
  8. package/build/dist/commands/config-command.d.ts.map +1 -0
  9. package/build/dist/commands/config-command.js +108 -0
  10. package/build/dist/commands/config-command.js.map +1 -0
  11. package/build/dist/commands/crud-command.d.ts +117 -0
  12. package/build/dist/commands/crud-command.d.ts.map +1 -0
  13. package/build/dist/commands/crud-command.js +264 -0
  14. package/build/dist/commands/crud-command.js.map +1 -0
  15. package/build/dist/commands/dataset-command.d.ts +45 -0
  16. package/build/dist/commands/dataset-command.d.ts.map +1 -0
  17. package/build/dist/commands/dataset-command.js +139 -0
  18. package/build/dist/commands/dataset-command.js.map +1 -0
  19. package/build/dist/commands/integration-command.d.ts +30 -0
  20. package/build/dist/commands/integration-command.d.ts.map +1 -0
  21. package/build/dist/commands/integration-command.js +80 -0
  22. package/build/dist/commands/integration-command.js.map +1 -0
  23. package/build/dist/commands/job-command.d.ts +92 -0
  24. package/build/dist/commands/job-command.d.ts.map +1 -0
  25. package/build/dist/commands/job-command.js +294 -0
  26. package/build/dist/commands/job-command.js.map +1 -0
  27. package/build/dist/commands/list-command.d.ts +69 -0
  28. package/build/dist/commands/list-command.d.ts.map +1 -0
  29. package/build/dist/commands/list-command.js +130 -0
  30. package/build/dist/commands/list-command.js.map +1 -0
  31. package/build/dist/commands/query-command.d.ts +20 -0
  32. package/build/dist/commands/query-command.d.ts.map +1 -0
  33. package/build/dist/commands/query-command.js +167 -0
  34. package/build/dist/commands/query-command.js.map +1 -0
  35. package/build/dist/grepr.d.ts +3 -0
  36. package/build/dist/grepr.d.ts.map +1 -0
  37. package/build/dist/grepr.js +155 -0
  38. package/build/dist/grepr.js.map +1 -0
  39. package/build/dist/lib/api-client-factory.d.ts +21 -0
  40. package/build/dist/lib/api-client-factory.d.ts.map +1 -0
  41. package/build/dist/lib/api-client-factory.js +23 -0
  42. package/build/dist/lib/api-client-factory.js.map +1 -0
  43. package/build/dist/lib/api-client.d.ts +2 -0
  44. package/build/dist/lib/api-client.d.ts.map +1 -0
  45. package/build/dist/lib/api-client.js +3 -0
  46. package/build/dist/lib/api-client.js.map +1 -0
  47. package/build/dist/lib/auth.d.ts +104 -0
  48. package/build/dist/lib/auth.d.ts.map +1 -0
  49. package/build/dist/lib/auth.js +312 -0
  50. package/build/dist/lib/auth.js.map +1 -0
  51. package/build/dist/lib/command-registry.d.ts +35 -0
  52. package/build/dist/lib/command-registry.d.ts.map +1 -0
  53. package/build/dist/lib/command-registry.js +33 -0
  54. package/build/dist/lib/command-registry.js.map +1 -0
  55. package/build/dist/lib/config.d.ts +40 -0
  56. package/build/dist/lib/config.d.ts.map +1 -0
  57. package/build/dist/lib/config.js +114 -0
  58. package/build/dist/lib/config.js.map +1 -0
  59. package/build/dist/lib/grepr-api-client.d.ts +216 -0
  60. package/build/dist/lib/grepr-api-client.d.ts.map +1 -0
  61. package/build/dist/lib/grepr-api-client.js +424 -0
  62. package/build/dist/lib/grepr-api-client.js.map +1 -0
  63. package/build/dist/lib/heartbeat.d.ts +17 -0
  64. package/build/dist/lib/heartbeat.d.ts.map +1 -0
  65. package/build/dist/lib/heartbeat.js +56 -0
  66. package/build/dist/lib/heartbeat.js.map +1 -0
  67. package/build/dist/lib/json-formatter.d.ts +135 -0
  68. package/build/dist/lib/json-formatter.d.ts.map +1 -0
  69. package/build/dist/lib/json-formatter.js +658 -0
  70. package/build/dist/lib/json-formatter.js.map +1 -0
  71. package/build/dist/lib/parser.d.ts +26 -0
  72. package/build/dist/lib/parser.d.ts.map +1 -0
  73. package/build/dist/lib/parser.js +95 -0
  74. package/build/dist/lib/parser.js.map +1 -0
  75. package/build/dist/lib/streaming-job-executor.d.ts +31 -0
  76. package/build/dist/lib/streaming-job-executor.d.ts.map +1 -0
  77. package/build/dist/lib/streaming-job-executor.js +281 -0
  78. package/build/dist/lib/streaming-job-executor.js.map +1 -0
  79. package/build/dist/lib/time-utils.d.ts +28 -0
  80. package/build/dist/lib/time-utils.d.ts.map +1 -0
  81. package/build/dist/lib/time-utils.js +87 -0
  82. package/build/dist/lib/time-utils.js.map +1 -0
  83. package/build/dist/openapi/openApiTypes.d.ts +10430 -0
  84. package/build/dist/openapi/openApiTypes.d.ts.map +1 -0
  85. package/build/dist/openapi/openApiTypes.js +571 -0
  86. package/build/dist/openapi/openApiTypes.js.map +1 -0
  87. package/build/dist/types.d.ts +168 -0
  88. package/build/dist/types.d.ts.map +1 -0
  89. package/build/dist/types.js +20 -0
  90. package/build/dist/types.js.map +1 -0
  91. package/package.json +68 -0
@@ -0,0 +1,216 @@
1
+ import { paths, PathsV1JobsGetParametersQueryExecution, PathsV1JobsGetParametersQueryProcessing, PathsV1JobsGetParametersQueryState } from '../openapi/openApiTypes.js';
2
+ import { ApiClientConfig } from '../types.js';
3
+ /**
4
+ * Main API client for the Grepr CLI using openapi-fetch.
5
+ * This follows the same patterns as the frontend API client.
6
+ */
7
+ export declare class GreprApiClient {
8
+ private config;
9
+ private client;
10
+ private auth;
11
+ constructor(config: ApiClientConfig);
12
+ /**
13
+ * Get the underlying openapi-fetch client for direct access.
14
+ * This allows for full flexibility while maintaining type safety.
15
+ */
16
+ getClient(): import("openapi-fetch").Client<paths, `${string}/${string}`>;
17
+ listJobs(params?: {
18
+ since?: string;
19
+ execution?: PathsV1JobsGetParametersQueryExecution;
20
+ processing?: PathsV1JobsGetParametersQueryProcessing;
21
+ latest?: boolean;
22
+ state?: PathsV1JobsGetParametersQueryState[];
23
+ name?: string[];
24
+ id?: string[];
25
+ }): Promise<{
26
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadJob"][];
27
+ } | undefined>;
28
+ getJob(id: string, version?: number, resolved?: boolean): Promise<{
29
+ id: string;
30
+ version: number;
31
+ organizationId: string;
32
+ name: string;
33
+ execution: PathsV1JobsGetParametersQueryExecution;
34
+ processing: PathsV1JobsGetParametersQueryProcessing;
35
+ state: PathsV1JobsGetParametersQueryState;
36
+ desiredState: PathsV1JobsGetParametersQueryState;
37
+ jobGraph: import("../openapi/openApiTypes.js").components["schemas"]["GreprJobGraph"];
38
+ tags: {
39
+ [key: string]: string;
40
+ };
41
+ createdAt: string;
42
+ updatedAt: string;
43
+ startedAt?: string;
44
+ endedAt?: string;
45
+ greprVersion?: string;
46
+ teamIds?: string[];
47
+ } | undefined>;
48
+ createAsyncJob(job: any): Promise<{
49
+ id: string;
50
+ version: number;
51
+ organizationId: string;
52
+ name: string;
53
+ execution: PathsV1JobsGetParametersQueryExecution;
54
+ processing: PathsV1JobsGetParametersQueryProcessing;
55
+ state: PathsV1JobsGetParametersQueryState;
56
+ desiredState: PathsV1JobsGetParametersQueryState;
57
+ jobGraph: import("../openapi/openApiTypes.js").components["schemas"]["GreprJobGraph"];
58
+ tags: {
59
+ [key: string]: string;
60
+ };
61
+ createdAt: string;
62
+ updatedAt: string;
63
+ startedAt?: string;
64
+ endedAt?: string;
65
+ greprVersion?: string;
66
+ teamIds?: string[];
67
+ } | undefined>;
68
+ updateJob(id: string, job: any, rollbackEnabled?: boolean): Promise<undefined>;
69
+ deleteJob(id: string): Promise<void>;
70
+ listDatasets(): Promise<{
71
+ id: string;
72
+ name: string;
73
+ organizationId: string;
74
+ integrationId: string;
75
+ teamIds?: string[];
76
+ }[]>;
77
+ getDataset(id: string): Promise<{
78
+ id: string;
79
+ name: string;
80
+ organizationId: string;
81
+ integrationId: string;
82
+ teamIds?: string[];
83
+ } | undefined>;
84
+ createDataset(dataset: any): Promise<{
85
+ id: string;
86
+ name: string;
87
+ organizationId: string;
88
+ integrationId: string;
89
+ teamIds?: string[];
90
+ }>;
91
+ updateDataset(id: string, dataset: any): Promise<{
92
+ id: string;
93
+ name: string;
94
+ organizationId: string;
95
+ integrationId: string;
96
+ teamIds?: string[];
97
+ } | undefined>;
98
+ deleteDataset(id: string, deleteFiles?: boolean): Promise<void>;
99
+ listDatadogIntegrations(): Promise<{
100
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadDatadog"][];
101
+ } | undefined>;
102
+ getDatadogIntegration(id: string): Promise<{
103
+ name: string;
104
+ version: number;
105
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["Datadog"];
106
+ teamIds?: string[];
107
+ id: string;
108
+ organizationId: string;
109
+ jobIds: string[];
110
+ readonly createdAt: string;
111
+ readonly updatedAt: string;
112
+ type: import("../openapi/openApiTypes.js").ReadDatadogType;
113
+ } | undefined>;
114
+ listDataWarehouseIntegrations(): Promise<{
115
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadDataWarehouse"][];
116
+ } | undefined>;
117
+ getDataWarehouseIntegration(id: string): Promise<{
118
+ name: string;
119
+ version: number;
120
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["DataWarehouse"];
121
+ teamIds?: string[];
122
+ id: string;
123
+ organizationId: string;
124
+ jobIds: string[];
125
+ readonly createdAt: string;
126
+ readonly updatedAt: string;
127
+ type: import("../openapi/openApiTypes.js").ReadDataWarehouseType;
128
+ } | undefined>;
129
+ listS3DataWarehouseIntegrations(): Promise<{
130
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadS3DataWarehouse"][];
131
+ } | undefined>;
132
+ getS3DataWarehouseIntegration(id: string): Promise<{
133
+ name: string;
134
+ version: number;
135
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["S3DataWarehouse"];
136
+ teamIds?: string[];
137
+ id: string;
138
+ organizationId: string;
139
+ jobIds: string[];
140
+ readonly createdAt: string;
141
+ readonly updatedAt: string;
142
+ type: import("../openapi/openApiTypes.js").ReadS3DataWarehouseType;
143
+ } | undefined>;
144
+ listNewRelicIntegrations(): Promise<{
145
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadNewRelic"][];
146
+ } | undefined>;
147
+ getNewRelicIntegration(id: string): Promise<{
148
+ name: string;
149
+ version: number;
150
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["NewRelic"];
151
+ teamIds?: string[];
152
+ id: string;
153
+ organizationId: string;
154
+ jobIds: string[];
155
+ readonly createdAt: string;
156
+ readonly updatedAt: string;
157
+ type: import("../openapi/openApiTypes.js").ReadNewRelicType;
158
+ } | undefined>;
159
+ listOtlpIntegrations(): Promise<{
160
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadOtlp"][];
161
+ } | undefined>;
162
+ getOtlpIntegration(id: string): Promise<{
163
+ name: string;
164
+ version: number;
165
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["Otlp"];
166
+ teamIds?: string[];
167
+ id: string;
168
+ organizationId: string;
169
+ jobIds: string[];
170
+ readonly createdAt: string;
171
+ readonly updatedAt: string;
172
+ type: import("../openapi/openApiTypes.js").ReadOtlpType;
173
+ } | undefined>;
174
+ listSplunkIntegrations(): Promise<{
175
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadSplunk"][];
176
+ } | undefined>;
177
+ getSplunkIntegration(id: string): Promise<{
178
+ name: string;
179
+ version: number;
180
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["Splunk"];
181
+ teamIds?: string[];
182
+ id: string;
183
+ organizationId: string;
184
+ jobIds: string[];
185
+ readonly createdAt: string;
186
+ readonly updatedAt: string;
187
+ type: import("../openapi/openApiTypes.js").ReadSplunkType;
188
+ } | undefined>;
189
+ listSumoIntegrations(): Promise<{
190
+ items?: import("../openapi/openApiTypes.js").components["schemas"]["ReadSumo"][];
191
+ } | undefined>;
192
+ getSumoIntegration(id: string): Promise<{
193
+ name: string;
194
+ version: number;
195
+ payload: import("../openapi/openApiTypes.js").components["schemas"]["Sumo"];
196
+ teamIds?: string[];
197
+ id: string;
198
+ organizationId: string;
199
+ jobIds: string[];
200
+ readonly createdAt: string;
201
+ readonly updatedAt: string;
202
+ type: import("../openapi/openApiTypes.js").ReadSumoType;
203
+ } | undefined>;
204
+ getAllIntegrations(): Promise<Array<{
205
+ type: string;
206
+ items: any[];
207
+ }>>;
208
+ getIntegrationById(id: string): Promise<{
209
+ type: string;
210
+ integration: any;
211
+ } | null>;
212
+ sendHeartbeat(heartbeatToken: string): Promise<void>;
213
+ lookupDataset(nameOrId: string): Promise<any>;
214
+ submitSyncJob(jobDefinition: any): Promise<NodeJS.ReadableStream>;
215
+ }
216
+ //# sourceMappingURL=grepr-api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grepr-api-client.d.ts","sourceRoot":"","sources":["../../../src/main/typescript/lib/grepr-api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,424 @@
1
+ // CLI API client using openapi-fetch with the same patterns as the frontend
2
+ import createClient from 'openapi-fetch';
3
+ import { HeaderAuth, GreprAuth } from './auth.js';
4
+ /**
5
+ * Main API client for the Grepr CLI using openapi-fetch.
6
+ * This follows the same patterns as the frontend API client.
7
+ */
8
+ export class GreprApiClient {
9
+ config;
10
+ client;
11
+ auth;
12
+ constructor(config) {
13
+ this.config = config;
14
+ // Create the fetch client with base configuration
15
+ this.client = createClient({
16
+ baseUrl: config.apiBaseUrl,
17
+ });
18
+ // Set up authentication
19
+ if (config.authMethod === 'header') {
20
+ this.auth = new HeaderAuth(config);
21
+ }
22
+ else {
23
+ this.auth = new GreprAuth(config);
24
+ }
25
+ // Add auth middleware
26
+ // noinspection JSUnusedGlobalSymbols
27
+ this.client.use({
28
+ onRequest: async ({ request }) => {
29
+ const headers = await this.auth.getAuthHeaders();
30
+ Object.entries(headers).forEach(([key, value]) => {
31
+ request.headers.set(key, value);
32
+ });
33
+ if (config.debug) {
34
+ console.log('Request:', request.method, request.url);
35
+ console.log('Headers:', Object.fromEntries(request.headers.entries()));
36
+ }
37
+ },
38
+ onResponse: async ({ response }) => {
39
+ if (config.debug) {
40
+ console.log('Response:', response.status, response.url);
41
+ }
42
+ }
43
+ });
44
+ }
45
+ /**
46
+ * Get the underlying openapi-fetch client for direct access.
47
+ * This allows for full flexibility while maintaining type safety.
48
+ */
49
+ getClient() {
50
+ return this.client;
51
+ }
52
+ // Job Management Methods
53
+ async listJobs(params) {
54
+ const { data, error } = await this.client.GET('/v1/jobs', {
55
+ ...(params && {
56
+ params: {
57
+ query: params,
58
+ }
59
+ })
60
+ });
61
+ if (error) {
62
+ throw new Error(`Failed to list jobs: ${JSON.stringify(error)}`);
63
+ }
64
+ return data;
65
+ }
66
+ async getJob(id, version, resolved) {
67
+ const queryParams = {};
68
+ if (version !== undefined)
69
+ queryParams.version = version;
70
+ if (resolved !== undefined)
71
+ queryParams.resolved = resolved;
72
+ const { data, error } = await this.client.GET('/v1/jobs/{id}', {
73
+ params: {
74
+ path: { id },
75
+ ...(Object.keys(queryParams).length > 0 && { query: queryParams })
76
+ },
77
+ });
78
+ if (error) {
79
+ throw new Error(`Failed to get job ${id}: ${JSON.stringify(error)}`);
80
+ }
81
+ return data;
82
+ }
83
+ async createAsyncJob(job) {
84
+ const { data, error } = await this.client.POST('/v1/jobs/async', {
85
+ body: job,
86
+ });
87
+ if (error) {
88
+ throw new Error(`Failed to create job: ${JSON.stringify(error)}`);
89
+ }
90
+ return data;
91
+ }
92
+ async updateJob(id, job, rollbackEnabled = false) {
93
+ const { data, error } = await this.client.PUT('/v1/jobs/{id}', {
94
+ params: {
95
+ path: { id },
96
+ query: { rollbackEnabled },
97
+ },
98
+ body: job,
99
+ });
100
+ if (error) {
101
+ throw new Error(`Failed to update job ${id}: ${JSON.stringify(error)}`);
102
+ }
103
+ return data;
104
+ }
105
+ async deleteJob(id) {
106
+ const { error } = await this.client.DELETE('/v1/jobs/{id}', {
107
+ params: {
108
+ path: { id },
109
+ },
110
+ });
111
+ if (error) {
112
+ throw new Error(`Failed to delete job ${id}: ${JSON.stringify(error)}`);
113
+ }
114
+ }
115
+ // Dataset Management Methods
116
+ async listDatasets() {
117
+ const { data, error } = await this.client.GET('/v1/datasets');
118
+ if (error) {
119
+ throw new Error(`Failed to list datasets: ${JSON.stringify(error)}`);
120
+ }
121
+ return data;
122
+ }
123
+ async getDataset(id) {
124
+ const { data, error } = await this.client.GET('/v1/datasets/{id}', {
125
+ params: {
126
+ path: { id },
127
+ },
128
+ });
129
+ if (error) {
130
+ throw new Error(`Failed to get dataset ${id}: ${JSON.stringify(error)}`);
131
+ }
132
+ return data;
133
+ }
134
+ async createDataset(dataset) {
135
+ const { data, error } = await this.client.POST('/v1/datasets', {
136
+ body: dataset,
137
+ });
138
+ if (error) {
139
+ throw new Error(`Failed to create dataset: ${JSON.stringify(error)}`);
140
+ }
141
+ return data;
142
+ }
143
+ async updateDataset(id, dataset) {
144
+ const { data, error } = await this.client.PUT('/v1/datasets/{id}', {
145
+ params: {
146
+ path: { id },
147
+ },
148
+ body: dataset,
149
+ });
150
+ if (error) {
151
+ throw new Error(`Failed to update dataset ${id}: ${JSON.stringify(error)}`);
152
+ }
153
+ return data;
154
+ }
155
+ async deleteDataset(id, deleteFiles = false) {
156
+ const { error } = await this.client.DELETE('/v1/datasets/{id}', {
157
+ params: {
158
+ path: { id },
159
+ query: { deleteFiles },
160
+ },
161
+ });
162
+ if (error) {
163
+ throw new Error(`Failed to delete dataset ${id}: ${JSON.stringify(error)}`);
164
+ }
165
+ }
166
+ // Integration Management Methods
167
+ // Datadog Integration Methods
168
+ async listDatadogIntegrations() {
169
+ const { data, error } = await this.client.GET('/v1/integrations/datadog');
170
+ if (error) {
171
+ throw new Error(`Failed to list Datadog integrations: ${JSON.stringify(error)}`);
172
+ }
173
+ return data;
174
+ }
175
+ async getDatadogIntegration(id) {
176
+ const { data, error } = await this.client.GET('/v1/integrations/datadog/{id}', {
177
+ params: {
178
+ path: { id },
179
+ },
180
+ });
181
+ if (error) {
182
+ throw new Error(`Failed to get Datadog integration ${id}: ${JSON.stringify(error)}`);
183
+ }
184
+ return data;
185
+ }
186
+ // Data Warehouse Integration Methods
187
+ async listDataWarehouseIntegrations() {
188
+ const { data, error } = await this.client.GET('/v1/integrations/data-warehouse');
189
+ if (error) {
190
+ throw new Error(`Failed to list Data Warehouse integrations: ${JSON.stringify(error)}`);
191
+ }
192
+ return data;
193
+ }
194
+ async getDataWarehouseIntegration(id) {
195
+ const { data, error } = await this.client.GET('/v1/integrations/data-warehouse/{id}', {
196
+ params: {
197
+ path: { id },
198
+ },
199
+ });
200
+ if (error) {
201
+ throw new Error(`Failed to get Data Warehouse integration ${id}: ${JSON.stringify(error)}`);
202
+ }
203
+ return data;
204
+ }
205
+ // S3 Data Warehouse Integration Methods
206
+ async listS3DataWarehouseIntegrations() {
207
+ const { data, error } = await this.client.GET('/v1/integrations/s3-data-warehouse');
208
+ if (error) {
209
+ throw new Error(`Failed to list S3 Data Warehouse integrations: ${JSON.stringify(error)}`);
210
+ }
211
+ return data;
212
+ }
213
+ async getS3DataWarehouseIntegration(id) {
214
+ const { data, error } = await this.client.GET('/v1/integrations/s3-data-warehouse/{id}', {
215
+ params: {
216
+ path: { id },
217
+ },
218
+ });
219
+ if (error) {
220
+ throw new Error(`Failed to get S3 Data Warehouse integration ${id}: ${JSON.stringify(error)}`);
221
+ }
222
+ return data;
223
+ }
224
+ // New Relic Integration Methods
225
+ async listNewRelicIntegrations() {
226
+ const { data, error } = await this.client.GET('/v1/integrations/newrelic');
227
+ if (error) {
228
+ throw new Error(`Failed to list New Relic integrations: ${JSON.stringify(error)}`);
229
+ }
230
+ return data;
231
+ }
232
+ async getNewRelicIntegration(id) {
233
+ const { data, error } = await this.client.GET('/v1/integrations/newrelic/{id}', {
234
+ params: {
235
+ path: { id },
236
+ },
237
+ });
238
+ if (error) {
239
+ throw new Error(`Failed to get New Relic integration ${id}: ${JSON.stringify(error)}`);
240
+ }
241
+ return data;
242
+ }
243
+ // OTLP Integration Methods
244
+ async listOtlpIntegrations() {
245
+ const { data, error } = await this.client.GET('/v1/integrations/otlp');
246
+ if (error) {
247
+ throw new Error(`Failed to list OTLP integrations: ${JSON.stringify(error)}`);
248
+ }
249
+ return data;
250
+ }
251
+ async getOtlpIntegration(id) {
252
+ const { data, error } = await this.client.GET('/v1/integrations/otlp/{id}', {
253
+ params: {
254
+ path: { id },
255
+ },
256
+ });
257
+ if (error) {
258
+ throw new Error(`Failed to get OTLP integration ${id}: ${JSON.stringify(error)}`);
259
+ }
260
+ return data;
261
+ }
262
+ // Splunk Integration Methods
263
+ async listSplunkIntegrations() {
264
+ const { data, error } = await this.client.GET('/v1/integrations/splunk');
265
+ if (error) {
266
+ throw new Error(`Failed to list Splunk integrations: ${JSON.stringify(error)}`);
267
+ }
268
+ return data;
269
+ }
270
+ async getSplunkIntegration(id) {
271
+ const { data, error } = await this.client.GET('/v1/integrations/splunk/{id}', {
272
+ params: {
273
+ path: { id },
274
+ },
275
+ });
276
+ if (error) {
277
+ throw new Error(`Failed to get Splunk integration ${id}: ${JSON.stringify(error)}`);
278
+ }
279
+ return data;
280
+ }
281
+ // Sumo Logic Integration Methods
282
+ async listSumoIntegrations() {
283
+ const { data, error } = await this.client.GET('/v1/integrations/sumo');
284
+ if (error) {
285
+ throw new Error(`Failed to list Sumo Logic integrations: ${JSON.stringify(error)}`);
286
+ }
287
+ return data;
288
+ }
289
+ async getSumoIntegration(id) {
290
+ const { data, error } = await this.client.GET('/v1/integrations/sumo/{id}', {
291
+ params: {
292
+ path: { id },
293
+ },
294
+ });
295
+ if (error) {
296
+ throw new Error(`Failed to get Sumo Logic integration ${id}: ${JSON.stringify(error)}`);
297
+ }
298
+ return data;
299
+ }
300
+ // Helper methods for generic integration operations
301
+ async getAllIntegrations() {
302
+ const integrationTypes = [
303
+ { type: 'datadog', listMethod: this.listDatadogIntegrations.bind(this) },
304
+ { type: 'data-warehouse', listMethod: this.listDataWarehouseIntegrations.bind(this) },
305
+ { type: 's3-data-warehouse', listMethod: this.listS3DataWarehouseIntegrations.bind(this) },
306
+ { type: 'newrelic', listMethod: this.listNewRelicIntegrations.bind(this) },
307
+ { type: 'otlp', listMethod: this.listOtlpIntegrations.bind(this) },
308
+ { type: 'splunk', listMethod: this.listSplunkIntegrations.bind(this) },
309
+ { type: 'sumo', listMethod: this.listSumoIntegrations.bind(this) },
310
+ ];
311
+ const results = [];
312
+ for (const { type, listMethod } of integrationTypes) {
313
+ try {
314
+ const data = await listMethod();
315
+ results.push({ type, items: data?.items || [] });
316
+ }
317
+ catch (error) {
318
+ // Skip types that fail (might not be configured or accessible)
319
+ console.warn(`Warning: Could not list integrations for type "${type}": ${error.message}`);
320
+ }
321
+ }
322
+ return results;
323
+ }
324
+ async getIntegrationById(id) {
325
+ const getMethods = [
326
+ { type: 'datadog', getMethod: this.getDatadogIntegration.bind(this) },
327
+ { type: 'data-warehouse', getMethod: this.getDataWarehouseIntegration.bind(this) },
328
+ { type: 's3-data-warehouse', getMethod: this.getS3DataWarehouseIntegration.bind(this) },
329
+ { type: 'newrelic', getMethod: this.getNewRelicIntegration.bind(this) },
330
+ { type: 'otlp', getMethod: this.getOtlpIntegration.bind(this) },
331
+ { type: 'splunk', getMethod: this.getSplunkIntegration.bind(this) },
332
+ { type: 'sumo', getMethod: this.getSumoIntegration.bind(this) },
333
+ ];
334
+ for (const { type, getMethod } of getMethods) {
335
+ try {
336
+ const integration = await getMethod(id);
337
+ if (integration) {
338
+ return { type, integration };
339
+ }
340
+ }
341
+ catch (error) {
342
+ // Continue trying other types
343
+ if (this.config.debug) {
344
+ console.log(`Info: Integration with ID "${id}" not found in type "${type}". Trying next type.`);
345
+ }
346
+ }
347
+ }
348
+ return null;
349
+ }
350
+ // Legacy methods for backward compatibility
351
+ async sendHeartbeat(heartbeatToken) {
352
+ const { error } = await this.client.POST('/v1/jobs/sync/heartbeat', {
353
+ body: heartbeatToken,
354
+ });
355
+ if (error) {
356
+ throw new Error(`Failed to send heartbeat: ${JSON.stringify(error)}`);
357
+ }
358
+ }
359
+ async lookupDataset(nameOrId) {
360
+ // If the input looks like a dataset ID, try direct lookup first
361
+ if (/^[a-zA-Z0-9_-]+$/.test(nameOrId) && nameOrId.length > 5) {
362
+ try {
363
+ return await this.getDataset(nameOrId);
364
+ }
365
+ catch (error) {
366
+ // If direct lookup fails, fall through to name search
367
+ }
368
+ }
369
+ // Search by name
370
+ const datasets = await this.listDatasets();
371
+ const matchingDataset = datasets.find((dataset) => dataset.name === nameOrId);
372
+ if (!matchingDataset) {
373
+ throw new Error(`Dataset not found: "${nameOrId}". Available datasets: ${datasets.map((d) => d.name).join(', ')}`);
374
+ }
375
+ return matchingDataset;
376
+ }
377
+ // Sync job submission for the existing sync command - using fetch directly due to streaming
378
+ async submitSyncJob(jobDefinition) {
379
+ const baseUrl = this.auth.config.apiBaseUrl;
380
+ const response = await fetch(`${baseUrl}/v1/jobs/sync`, {
381
+ method: 'POST',
382
+ headers: {
383
+ 'Content-Type': 'application/json',
384
+ ...(await this.auth.getAuthHeaders()),
385
+ },
386
+ body: JSON.stringify(jobDefinition),
387
+ });
388
+ if (!response.ok) {
389
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
390
+ }
391
+ if (!response.body) {
392
+ throw new Error('No response body received');
393
+ }
394
+ // Convert Web ReadableStream to Node.js ReadableStream
395
+ const webStream = response.body;
396
+ const { Readable } = await import('stream');
397
+ // Create a Node.js readable stream from the web stream
398
+ const nodeStream = new Readable({
399
+ read() {
400
+ // This will be handled by the async conversion
401
+ }
402
+ });
403
+ // Convert the web stream to node stream manually
404
+ const reader = webStream.getReader();
405
+ const pump = async () => {
406
+ try {
407
+ while (true) {
408
+ const { done, value } = await reader.read();
409
+ if (done) {
410
+ nodeStream.push(null); // End the stream
411
+ break;
412
+ }
413
+ nodeStream.push(Buffer.from(value));
414
+ }
415
+ }
416
+ catch (error) {
417
+ nodeStream.destroy(error);
418
+ }
419
+ };
420
+ pump();
421
+ return nodeStream;
422
+ }
423
+ }
424
+ //# sourceMappingURL=grepr-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grepr-api-client.js","sourceRoot":"","sources":["../../../src/main/typescript/lib/grepr-api-client.ts"],"names":[],"mappings":"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"}