tm1npm 1.2.1 → 1.4.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.
@@ -0,0 +1,383 @@
1
+ /**
2
+ * BulkService - High-performance bulk operations for TM1
3
+ *
4
+ * Provides efficient batch operations, data import/export, and bulk processing
5
+ * capabilities for handling large datasets with optimal performance.
6
+ */
7
+ import { RestService } from './RestService';
8
+ import { CellService } from './CellService';
9
+ import { ViewService } from './ViewService';
10
+ /**
11
+ * Bulk write operation definition
12
+ */
13
+ export interface BulkWriteOperation {
14
+ cubeName: string;
15
+ coordinates: string[];
16
+ value: any;
17
+ }
18
+ /**
19
+ * Bulk read query definition
20
+ */
21
+ export interface BulkReadQuery {
22
+ cubeName: string;
23
+ coordinates: string[];
24
+ }
25
+ /**
26
+ * Bulk update operation definition
27
+ */
28
+ export interface BulkUpdateOperation {
29
+ cubeName: string;
30
+ coordinates: string[];
31
+ value: any;
32
+ increment?: boolean;
33
+ }
34
+ /**
35
+ * Bulk delete operation definition
36
+ */
37
+ export interface BulkDeleteOperation {
38
+ cubeName: string;
39
+ coordinates: string[];
40
+ }
41
+ /**
42
+ * CSV import options
43
+ */
44
+ export interface CSVImportOptions {
45
+ delimiter?: string;
46
+ hasHeader?: boolean;
47
+ encoding?: string;
48
+ batchSize?: number;
49
+ skipErrors?: boolean;
50
+ decimalSeparator?: string;
51
+ thousandSeparator?: string;
52
+ sandbox_name?: string;
53
+ increment?: boolean;
54
+ use_ti?: boolean;
55
+ }
56
+ /**
57
+ * CSV export options
58
+ */
59
+ export interface CSVExportOptions {
60
+ delimiter?: string;
61
+ includeHeader?: boolean;
62
+ encoding?: string;
63
+ decimalSeparator?: string;
64
+ thousandSeparator?: string;
65
+ sandbox_name?: string;
66
+ skip_zeros?: boolean;
67
+ skip_consolidated?: boolean;
68
+ skip_rule_derived?: boolean;
69
+ }
70
+ /**
71
+ * JSON import options
72
+ */
73
+ export interface JSONImportOptions {
74
+ batchSize?: number;
75
+ skipErrors?: boolean;
76
+ sandbox_name?: string;
77
+ increment?: boolean;
78
+ use_ti?: boolean;
79
+ validate?: boolean;
80
+ }
81
+ /**
82
+ * JSON export options
83
+ */
84
+ export interface JSONExportOptions {
85
+ sandbox_name?: string;
86
+ skip_zeros?: boolean;
87
+ skip_consolidated?: boolean;
88
+ skip_rule_derived?: boolean;
89
+ format?: 'compact' | 'full';
90
+ }
91
+ /**
92
+ * Batch operation types
93
+ */
94
+ export type BatchOperationType = 'write' | 'read' | 'update' | 'delete';
95
+ /**
96
+ * Batch operation definition
97
+ */
98
+ export interface BatchOperation {
99
+ type: BatchOperationType;
100
+ cubeName: string;
101
+ coordinates: string[];
102
+ value?: any;
103
+ options?: any;
104
+ }
105
+ /**
106
+ * Batch operation result
107
+ */
108
+ export interface BatchResult {
109
+ success: boolean;
110
+ operation: BatchOperation;
111
+ result?: any;
112
+ error?: string;
113
+ }
114
+ /**
115
+ * Bulk write options
116
+ */
117
+ export interface BulkWriteOptions {
118
+ maxWorkers?: number;
119
+ chunkSize?: number;
120
+ maxRetries?: number;
121
+ retryDelay?: number;
122
+ cancelAtFailure?: boolean;
123
+ sandbox_name?: string;
124
+ increment?: boolean;
125
+ use_ti?: boolean;
126
+ use_blob?: boolean;
127
+ }
128
+ /**
129
+ * Bulk read options
130
+ */
131
+ export interface BulkReadOptions {
132
+ maxWorkers?: number;
133
+ chunkSize?: number;
134
+ sandbox_name?: string;
135
+ use_blob?: boolean;
136
+ }
137
+ /**
138
+ * Transaction state
139
+ */
140
+ export interface TransactionState {
141
+ id: string;
142
+ operations: BatchOperation[];
143
+ status: 'pending' | 'committed' | 'rolled_back';
144
+ createdAt: Date;
145
+ }
146
+ /**
147
+ * BulkService - Comprehensive bulk operations service
148
+ *
149
+ * Provides high-performance batch operations for TM1 data manipulation,
150
+ * import/export capabilities, and transaction management.
151
+ */
152
+ export declare class BulkService {
153
+ private rest;
154
+ private cellService;
155
+ private viewService?;
156
+ private transactions;
157
+ constructor(rest: RestService, cellService: CellService, viewService?: ViewService);
158
+ /**
159
+ * Execute bulk write operations
160
+ *
161
+ * Efficiently writes multiple cells across one or more cubes with optimized batching
162
+ * and parallel processing.
163
+ *
164
+ * @param operations - Array of bulk write operations
165
+ * @param options - Bulk write options for performance tuning
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const operations = [
170
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q1', 'Revenue'], value: 100000 },
171
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q2', 'Revenue'], value: 120000 }
172
+ * ];
173
+ * await bulkService.executeBulkWrite(operations, { chunkSize: 1000 });
174
+ * ```
175
+ */
176
+ executeBulkWrite(operations: BulkWriteOperation[], options?: BulkWriteOptions): Promise<void>;
177
+ /**
178
+ * Execute bulk read operations
179
+ *
180
+ * Efficiently reads multiple cells across one or more cubes with parallel processing.
181
+ *
182
+ * @param queries - Array of bulk read queries
183
+ * @param options - Bulk read options for performance tuning
184
+ * @returns Array of cell values corresponding to queries
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * const queries = [
189
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q1', 'Revenue'] },
190
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q2', 'Revenue'] }
191
+ * ];
192
+ * const values = await bulkService.executeBulkRead(queries);
193
+ * ```
194
+ */
195
+ executeBulkRead(queries: BulkReadQuery[], options?: BulkReadOptions): Promise<any[]>;
196
+ /**
197
+ * Execute bulk update operations
198
+ *
199
+ * Updates multiple cells with support for increment operations.
200
+ *
201
+ * @param updates - Array of bulk update operations
202
+ * @param options - Bulk write options
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * const updates = [
207
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q1', 'Revenue'], value: 10000, increment: true }
208
+ * ];
209
+ * await bulkService.executeBulkUpdate(updates);
210
+ * ```
211
+ */
212
+ executeBulkUpdate(updates: BulkUpdateOperation[], options?: BulkWriteOptions): Promise<void>;
213
+ /**
214
+ * Execute bulk delete operations
215
+ *
216
+ * Clears values from multiple cells (sets to 0 or empty string).
217
+ *
218
+ * @param deletes - Array of bulk delete operations
219
+ * @param options - Bulk write options
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * const deletes = [
224
+ * { cubeName: 'Sales', coordinates: ['2024', 'Q1', 'Revenue'] }
225
+ * ];
226
+ * await bulkService.executeBulkDelete(deletes);
227
+ * ```
228
+ */
229
+ executeBulkDelete(deletes: BulkDeleteOperation[], options?: BulkWriteOptions): Promise<void>;
230
+ /**
231
+ * Import data from CSV
232
+ *
233
+ * Imports data from CSV string into a TM1 cube with configurable parsing options.
234
+ *
235
+ * @param cubeName - Target cube name
236
+ * @param csvData - CSV data as string
237
+ * @param options - CSV import options
238
+ *
239
+ * @example
240
+ * ```typescript
241
+ * const csv = `Year,Quarter,Amount
242
+ * 2024,Q1,100000
243
+ * 2024,Q2,120000`;
244
+ * await bulkService.importDataFromCSV('Sales', csv, { hasHeader: true });
245
+ * ```
246
+ */
247
+ importDataFromCSV(cubeName: string, csvData: string, options?: CSVImportOptions): Promise<void>;
248
+ /**
249
+ * Export data to CSV
250
+ *
251
+ * Exports cube data to CSV format using an MDX query.
252
+ *
253
+ * @param cubeName - Source cube name
254
+ * @param mdx - MDX query to define data selection
255
+ * @param options - CSV export options
256
+ * @returns CSV data as string
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * const mdx = `SELECT {[Year].[2024]} ON 0 FROM [Sales]`;
261
+ * const csv = await bulkService.exportDataToCSV('Sales', mdx, { includeHeader: true });
262
+ * ```
263
+ */
264
+ exportDataToCSV(cubeName: string, mdx: string, options?: CSVExportOptions): Promise<string>;
265
+ /**
266
+ * Import data from JSON
267
+ *
268
+ * Imports data from JSON format into a TM1 cube.
269
+ *
270
+ * @param cubeName - Target cube name
271
+ * @param jsonData - JSON data array
272
+ * @param options - JSON import options
273
+ *
274
+ * @example
275
+ * ```typescript
276
+ * const data = [
277
+ * { coordinates: ['2024', 'Q1', 'Revenue'], value: 100000 },
278
+ * { coordinates: ['2024', 'Q2', 'Revenue'], value: 120000 }
279
+ * ];
280
+ * await bulkService.importDataFromJSON('Sales', data);
281
+ * ```
282
+ */
283
+ importDataFromJSON(cubeName: string, jsonData: any[], options?: JSONImportOptions): Promise<void>;
284
+ /**
285
+ * Export data to JSON
286
+ *
287
+ * Exports cube data to JSON format using an MDX query.
288
+ *
289
+ * @param cubeName - Source cube name
290
+ * @param mdx - MDX query to define data selection
291
+ * @param options - JSON export options
292
+ * @returns Array of JSON objects with coordinates and values
293
+ *
294
+ * @example
295
+ * ```typescript
296
+ * const mdx = `SELECT {[Year].[2024]} ON 0 FROM [Sales]`;
297
+ * const data = await bulkService.exportDataToJSON('Sales', mdx);
298
+ * ```
299
+ */
300
+ exportDataToJSON(cubeName: string, mdx: string, options?: JSONExportOptions): Promise<any[]>;
301
+ /**
302
+ * Execute batch operations
303
+ *
304
+ * Executes a mixed batch of operations (read, write, update, delete) in sequence.
305
+ *
306
+ * @param batch - Array of mixed batch operations
307
+ * @returns Array of batch results
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * const batch = [
312
+ * { type: 'write', cubeName: 'Sales', coordinates: ['2024', 'Q1'], value: 100 },
313
+ * { type: 'read', cubeName: 'Sales', coordinates: ['2024', 'Q1'] }
314
+ * ];
315
+ * const results = await bulkService.executeBatchOperations(batch);
316
+ * ```
317
+ */
318
+ executeBatchOperations(batch: BatchOperation[]): Promise<BatchResult[]>;
319
+ /**
320
+ * Create batch transaction
321
+ *
322
+ * Creates a transaction that can be committed or rolled back.
323
+ *
324
+ * @param operations - Array of operations for the transaction
325
+ * @returns Transaction ID
326
+ *
327
+ * @example
328
+ * ```typescript
329
+ * const txId = await bulkService.createBatchTransaction(operations);
330
+ * try {
331
+ * await bulkService.commitBatchTransaction(txId);
332
+ * } catch (error) {
333
+ * await bulkService.rollbackBatchTransaction(txId);
334
+ * }
335
+ * ```
336
+ */
337
+ createBatchTransaction(operations: BatchOperation[]): Promise<string>;
338
+ /**
339
+ * Commit batch transaction
340
+ *
341
+ * Executes and commits a previously created transaction.
342
+ *
343
+ * @param transactionId - Transaction ID to commit
344
+ */
345
+ commitBatchTransaction(transactionId: string): Promise<void>;
346
+ /**
347
+ * Rollback batch transaction
348
+ *
349
+ * Rolls back a transaction without executing operations.
350
+ *
351
+ * @param transactionId - Transaction ID to rollback
352
+ */
353
+ rollbackBatchTransaction(transactionId: string): Promise<void>;
354
+ /**
355
+ * Group operations by cube name for batch processing
356
+ */
357
+ private groupOperationsByCube;
358
+ /**
359
+ * Group queries by cube name for batch processing
360
+ */
361
+ private groupQueriesByCube;
362
+ /**
363
+ * Split array into chunks
364
+ */
365
+ private chunkArray;
366
+ /**
367
+ * Parse CSV line with delimiter handling
368
+ */
369
+ private parseCSVLine;
370
+ /**
371
+ * Parse value from string (handles numbers and strings)
372
+ */
373
+ private parseValue;
374
+ /**
375
+ * Generate unique transaction ID
376
+ */
377
+ private generateTransactionId;
378
+ /**
379
+ * Sleep helper for retry delays
380
+ */
381
+ private sleep;
382
+ }
383
+ //# sourceMappingURL=BulkService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkService.d.ts","sourceRoot":"","sources":["../../src/services/BulkService.ts"],"names":[],"mappings":"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"}