@campfire-interactive/cfi-ai-hub-client 2.0.2 → 2.0.4

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 (81) hide show
  1. package/dist/ai.d.ts +26 -0
  2. package/dist/ai.d.ts.map +1 -0
  3. package/dist/ai.js +66 -0
  4. package/dist/ai.js.map +1 -0
  5. package/dist/bom.d.ts +12 -0
  6. package/dist/bom.d.ts.map +1 -0
  7. package/dist/bom.js +64 -0
  8. package/dist/bom.js.map +1 -0
  9. package/dist/cache.d.ts +11 -0
  10. package/dist/cache.d.ts.map +1 -0
  11. package/dist/cache.js +37 -0
  12. package/dist/cache.js.map +1 -0
  13. package/dist/client.d.ts +31 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +51 -0
  16. package/dist/client.js.map +1 -0
  17. package/dist/conversations.d.ts +28 -0
  18. package/dist/conversations.d.ts.map +1 -0
  19. package/dist/conversations.js +74 -0
  20. package/dist/conversations.js.map +1 -0
  21. package/dist/documents.d.ts +18 -0
  22. package/dist/documents.d.ts.map +1 -0
  23. package/dist/documents.js +28 -0
  24. package/dist/documents.js.map +1 -0
  25. package/dist/errors.d.ts +26 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +55 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/forecast.d.ts +61 -0
  30. package/dist/forecast.d.ts.map +1 -0
  31. package/dist/forecast.js +164 -0
  32. package/dist/forecast.js.map +1 -0
  33. package/dist/http.d.ts +42 -0
  34. package/dist/http.d.ts.map +1 -0
  35. package/dist/http.js +214 -0
  36. package/dist/http.js.map +1 -0
  37. package/dist/index.d.ts +21 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +49 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/jobs.d.ts +33 -0
  42. package/dist/jobs.d.ts.map +1 -0
  43. package/dist/jobs.js +79 -0
  44. package/dist/jobs.js.map +1 -0
  45. package/dist/macro.d.ts +35 -0
  46. package/dist/macro.d.ts.map +1 -0
  47. package/dist/macro.js +64 -0
  48. package/dist/macro.js.map +1 -0
  49. package/dist/mock.d.ts +107 -0
  50. package/dist/mock.d.ts.map +1 -0
  51. package/dist/mock.js +497 -0
  52. package/dist/mock.js.map +1 -0
  53. package/dist/multipart.d.ts +4 -0
  54. package/dist/multipart.d.ts.map +1 -0
  55. package/dist/multipart.js +21 -0
  56. package/dist/multipart.js.map +1 -0
  57. package/dist/omsf.d.ts +22 -0
  58. package/dist/omsf.d.ts.map +1 -0
  59. package/dist/omsf.js +67 -0
  60. package/dist/omsf.js.map +1 -0
  61. package/dist/prompts.d.ts +24 -0
  62. package/dist/prompts.d.ts.map +1 -0
  63. package/dist/prompts.js +71 -0
  64. package/dist/prompts.js.map +1 -0
  65. package/dist/rag.d.ts +18 -0
  66. package/dist/rag.d.ts.map +1 -0
  67. package/dist/rag.js +39 -0
  68. package/dist/rag.js.map +1 -0
  69. package/dist/tracker.d.ts +15 -0
  70. package/dist/tracker.d.ts.map +1 -0
  71. package/dist/tracker.js +74 -0
  72. package/dist/tracker.js.map +1 -0
  73. package/dist/types.d.ts +716 -0
  74. package/dist/types.d.ts.map +1 -0
  75. package/dist/types.js +18 -0
  76. package/dist/types.js.map +1 -0
  77. package/dist/vendor.d.ts +8 -0
  78. package/dist/vendor.d.ts.map +1 -0
  79. package/dist/vendor.js +18 -0
  80. package/dist/vendor.js.map +1 -0
  81. package/package.json +35 -35
package/dist/mock.js ADDED
@@ -0,0 +1,497 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MockCfiAiHubClient = void 0;
4
+ const errors_1 = require("./errors");
5
+ const types_1 = require("./types");
6
+ function buildStore(seed) {
7
+ return {
8
+ chatResponses: [...(seed?.chatResponses ?? [])],
9
+ bomSearchResults: [...(seed?.bomSearchResults ?? [])],
10
+ progressEntries: new Map(Object.entries(seed?.progressEntries ?? {})),
11
+ cache: new Map(Object.entries(seed?.cache ?? {})),
12
+ forecastResponses: [...(seed?.forecastResponses ?? [])],
13
+ macroData: new Map(Object.entries(seed?.macroData ?? {})),
14
+ };
15
+ }
16
+ function nowIso() {
17
+ return new Date().toISOString();
18
+ }
19
+ /** Build a fake weekly timeline: `historyWeeks` actuals + `horizonWeeks` forecast points. */
20
+ function mockTimeline(seriesId, historyWeeks, horizonWeeks) {
21
+ const points = [];
22
+ const base = new Date('2024-01-01');
23
+ for (let i = 0; i < historyWeeks; i++) {
24
+ const d = new Date(base);
25
+ d.setDate(base.getDate() + i * 7);
26
+ points.push({
27
+ week: d.toISOString().slice(0, 10),
28
+ value: 1000 + Math.round(Math.random() * 200),
29
+ is_forecast: false,
30
+ });
31
+ }
32
+ const lastActual = new Date(base);
33
+ lastActual.setDate(base.getDate() + (historyWeeks - 1) * 7);
34
+ for (let i = 1; i <= horizonWeeks; i++) {
35
+ const d = new Date(lastActual);
36
+ d.setDate(lastActual.getDate() + i * 7);
37
+ const value = 1100 + Math.round(Math.random() * 300);
38
+ points.push({
39
+ week: d.toISOString().slice(0, 10),
40
+ value,
41
+ is_forecast: true,
42
+ lo_80: Math.round(value * 0.88),
43
+ hi_80: Math.round(value * 1.12),
44
+ lo_95: Math.round(value * 0.82),
45
+ hi_95: Math.round(value * 1.18),
46
+ });
47
+ }
48
+ return points;
49
+ }
50
+ function mockForecastResponse(request) {
51
+ const models = request.models?.length ? request.models : ['chronos'];
52
+ const h = request.forecast_horizon_weeks ?? 52;
53
+ const n = request.weekly_data.length;
54
+ const cutoff = request.weekly_data.at(-1)?.week ?? nowIso().slice(0, 10);
55
+ const results = models.map((model) => ({
56
+ model: model,
57
+ timeline: mockTimeline(request.series_id, n, h),
58
+ accuracy_wmape: null,
59
+ accuracy_pct: null,
60
+ covariates_used: false,
61
+ error: null,
62
+ error_id: null,
63
+ }));
64
+ const autoSelected = !request.models?.length;
65
+ return {
66
+ series_id: request.series_id,
67
+ forecast_horizon_weeks: h,
68
+ cutoff_date: cutoff,
69
+ results,
70
+ model_selection: autoSelected
71
+ ? { winner: 'chronos', validation_wmape: { chronos: 8.1 }, validation_weeks: Math.max(4, Math.floor(n / 4)) }
72
+ : null,
73
+ };
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // Resource mocks
77
+ // ---------------------------------------------------------------------------
78
+ class MockAiResource {
79
+ store;
80
+ constructor(store) {
81
+ this.store = store;
82
+ }
83
+ async chat(input) {
84
+ return (this.store.chatResponses.shift() ?? {
85
+ response: `mock-response to: ${input.message}`,
86
+ model: 'mock-model',
87
+ tokens_used: input.message.length,
88
+ });
89
+ }
90
+ async embeddings(input) {
91
+ const model = input.model ?? 'text-embedding-3-small';
92
+ return {
93
+ embedding: Array.from({ length: 8 }, () => Math.random()),
94
+ model,
95
+ dimensions: 8,
96
+ };
97
+ }
98
+ async sentiment(input) {
99
+ return { sentiment: 'neutral', score: 0, reasoning: `mock analysis of: ${input.text}` };
100
+ }
101
+ async summarize(input) {
102
+ const summary = input.text.slice(0, input.max_length ?? 200);
103
+ return {
104
+ summary,
105
+ original_length: input.text.split(/\s+/).length,
106
+ summary_length: summary.split(/\s+/).length,
107
+ };
108
+ }
109
+ }
110
+ class MockBomResource {
111
+ store;
112
+ constructor(store) {
113
+ this.store = store;
114
+ }
115
+ async processFile(_file, _options = {}) {
116
+ return {
117
+ success: true,
118
+ progress_id: crypto.randomUUID(),
119
+ message: 'Mock BOM processing started',
120
+ };
121
+ }
122
+ async search(input) {
123
+ const limit = input.limit ?? 10;
124
+ const results = this.store.bomSearchResults.slice(0, limit);
125
+ return {
126
+ success: true,
127
+ results,
128
+ query: input.query,
129
+ total_results: results.length,
130
+ };
131
+ }
132
+ async storeAttributes(_input) {
133
+ return { success: true, message: 'Mock attributes stored', item_created: true };
134
+ }
135
+ async seedVectorDbFromFile(_file, _options = {}) {
136
+ return {
137
+ success: true,
138
+ progress_id: crypto.randomUUID(),
139
+ message: 'Mock BOM seed started',
140
+ };
141
+ }
142
+ async seedVectorDbFromJson(_input, _callbackUrl) {
143
+ return {
144
+ success: true,
145
+ progress_id: crypto.randomUUID(),
146
+ message: 'Mock BOM JSON seed started',
147
+ };
148
+ }
149
+ }
150
+ class MockOmsfResource {
151
+ async analyzeData() {
152
+ return {
153
+ status: 'success',
154
+ session_id: `mock-thread-${crypto.randomUUID()}`,
155
+ insights: 'mock insights',
156
+ images: [],
157
+ };
158
+ }
159
+ async followUp(input) {
160
+ return {
161
+ status: 'success',
162
+ session_id: input.session_id,
163
+ response: `mock answer to: ${input.prompt}`,
164
+ images: [],
165
+ };
166
+ }
167
+ async detectColumns() {
168
+ return {
169
+ columns: [],
170
+ auto_detected: {},
171
+ month_columns: [],
172
+ month_mapping: {},
173
+ grouping_columns: {},
174
+ };
175
+ }
176
+ async compare(_fileOld, _fileNew, _config) {
177
+ return {
178
+ merged_data: [],
179
+ data_quality: {},
180
+ timeframe: {},
181
+ statistics: {},
182
+ };
183
+ }
184
+ async dashboard() {
185
+ return { dashboard_data: {} };
186
+ }
187
+ async health() {
188
+ return {
189
+ api: 'healthy',
190
+ llm_available: true,
191
+ llm_provider: 'mock',
192
+ code_interpreter: 'enabled',
193
+ };
194
+ }
195
+ }
196
+ class MockVendorResource {
197
+ async compareVendorFiles(_input) {
198
+ return {
199
+ success: true,
200
+ progress_id: crypto.randomUUID(),
201
+ message: 'Mock vendor comparison started',
202
+ };
203
+ }
204
+ }
205
+ class MockTrackerResource {
206
+ store;
207
+ constructor(store) {
208
+ this.store = store;
209
+ }
210
+ async get(progressId) {
211
+ const entry = this.store.progressEntries.get(progressId);
212
+ if (!entry)
213
+ throw new errors_1.NotFoundError(`Progress ${progressId} not found`);
214
+ return entry;
215
+ }
216
+ async abort(progressId, input = {}) {
217
+ const entry = this.store.progressEntries.get(progressId);
218
+ if (!entry)
219
+ throw new errors_1.NotFoundError(`Progress ${progressId} not found`);
220
+ const status = input.message
221
+ ? types_1.ProgressStatus.ABORT_WITH_MESSAGE
222
+ : types_1.ProgressStatus.ABORT;
223
+ this.store.progressEntries.set(progressId, {
224
+ ...entry,
225
+ status,
226
+ message: input.message ?? 'Operation aborted',
227
+ updated_at: nowIso(),
228
+ });
229
+ return { success: true, message: `Progress entry ${progressId} aborted successfully` };
230
+ }
231
+ async delete(progressId) {
232
+ if (!this.store.progressEntries.delete(progressId)) {
233
+ throw new errors_1.NotFoundError(`Progress ${progressId} not found`);
234
+ }
235
+ return { success: true, message: `Progress entry ${progressId} deleted successfully` };
236
+ }
237
+ async pollProgress(progressId, _options = {}) {
238
+ return this.get(progressId);
239
+ }
240
+ }
241
+ class MockCacheResource {
242
+ store;
243
+ constructor(store) {
244
+ this.store = store;
245
+ }
246
+ async get(key) {
247
+ if (!this.store.cache.has(key))
248
+ throw new errors_1.NotFoundError('Key not found');
249
+ return { key, value: this.store.cache.get(key) };
250
+ }
251
+ async set(key, input) {
252
+ this.store.cache.set(key, input.value);
253
+ return { key, status: 'success' };
254
+ }
255
+ async delete(key) {
256
+ const deleted = this.store.cache.delete(key);
257
+ return { key, deleted };
258
+ }
259
+ async invalidateToken() {
260
+ return { status: 'success', message: 'Service token invalidated' };
261
+ }
262
+ }
263
+ class MockForecastResource {
264
+ store;
265
+ constructor(store) {
266
+ this.store = store;
267
+ }
268
+ async predict(request) {
269
+ return this.store.forecastResponses.shift() ?? mockForecastResponse(request);
270
+ }
271
+ async predictAsync(request) {
272
+ const progressId = crypto.randomUUID();
273
+ const data = this.store.forecastResponses.shift() ?? mockForecastResponse(request);
274
+ this.store.progressEntries.set(progressId, {
275
+ success: true,
276
+ progress_id: progressId,
277
+ status: types_1.ProgressStatus.DONE,
278
+ message: 'Forecast complete',
279
+ percentage: 100,
280
+ created_at: nowIso(),
281
+ updated_at: nowIso(),
282
+ data,
283
+ });
284
+ return {
285
+ progress_id: progressId,
286
+ progress_url: `/forecast/jobs/${progressId}`,
287
+ series_id: request.series_id,
288
+ message: 'Forecast job started',
289
+ };
290
+ }
291
+ async predictBatch(request) {
292
+ const progressId = crypto.randomUUID();
293
+ const results = request.series.map((req) => this.store.forecastResponses.shift() ?? mockForecastResponse(req));
294
+ const batchResult = {
295
+ total: request.series.length,
296
+ completed: request.series.length,
297
+ failed: 0,
298
+ results,
299
+ errors: [],
300
+ };
301
+ this.store.progressEntries.set(progressId, {
302
+ success: true,
303
+ progress_id: progressId,
304
+ status: types_1.ProgressStatus.DONE,
305
+ message: `Batch complete: ${request.series.length} succeeded, 0 failed`,
306
+ percentage: 100,
307
+ created_at: nowIso(),
308
+ updated_at: nowIso(),
309
+ data: batchResult,
310
+ });
311
+ return {
312
+ progress_id: progressId,
313
+ progress_url: `/forecast/jobs/${progressId}`,
314
+ total_series: request.series.length,
315
+ message: 'Batch forecast job started',
316
+ };
317
+ }
318
+ async getJob(progressId) {
319
+ const entry = this.store.progressEntries.get(progressId);
320
+ if (!entry)
321
+ throw new errors_1.NotFoundError(`Forecast job ${progressId} not found`);
322
+ return entry;
323
+ }
324
+ async getBatchJob(progressId) {
325
+ const entry = this.store.progressEntries.get(progressId);
326
+ if (!entry)
327
+ throw new errors_1.NotFoundError(`Forecast job ${progressId} not found`);
328
+ return entry;
329
+ }
330
+ async pollJob(progressId, _options = {}) {
331
+ return this.getJob(progressId);
332
+ }
333
+ async pollBatchJob(progressId, _options = {}) {
334
+ return this.getBatchJob(progressId);
335
+ }
336
+ async predictAsyncAndWait(request, _options = {}) {
337
+ return this.predict(request);
338
+ }
339
+ async predictBatchAndWait(request, _options = {}) {
340
+ const results = request.series.map((req) => this.store.forecastResponses.shift() ?? mockForecastResponse(req));
341
+ return {
342
+ total: request.series.length,
343
+ completed: request.series.length,
344
+ failed: 0,
345
+ results,
346
+ errors: [],
347
+ };
348
+ }
349
+ async health() {
350
+ return {
351
+ status: 'ok',
352
+ models_enabled: ['timesfm', 'chronos', 'moirai'],
353
+ device: 'cpu',
354
+ model_load_status: { timesfm: true, chronos: true, moirai: true },
355
+ checkpoints: {
356
+ timesfm: 'google/timesfm-2.5-200m-pytorch',
357
+ chronos: 'amazon/chronos-2',
358
+ moirai: 'Salesforce/moirai-2.0-R-small',
359
+ },
360
+ };
361
+ }
362
+ }
363
+ class MockMacroResource {
364
+ store;
365
+ constructor(store) {
366
+ this.store = store;
367
+ }
368
+ async listTypes() {
369
+ return {
370
+ types: [
371
+ { key: 'fed_funds_rate', label: 'Federal Funds Rate', description: 'US Federal Reserve target rate', unit: '%', latest_month: null, last_updated_at: null },
372
+ { key: 'unemployment_rate', label: 'Unemployment Rate', description: 'US civilian unemployment rate', unit: '%', latest_month: null, last_updated_at: null },
373
+ { key: 'consumer_satisfaction_index', label: 'Consumer Satisfaction Index', description: 'US consumer satisfaction composite', unit: 'index', latest_month: null, last_updated_at: null },
374
+ ],
375
+ };
376
+ }
377
+ async upsert(request) {
378
+ const existing = this.store.macroData.get(request.indicator) ?? [];
379
+ const existingMonths = new Set(existing.map((d) => d.month));
380
+ let inserted = 0;
381
+ let updated = 0;
382
+ let skipped = 0;
383
+ const deduped = new Map();
384
+ for (const point of request.data) {
385
+ const month = point.month.slice(0, 7) + '-01';
386
+ deduped.set(month, { month, value: point.value });
387
+ }
388
+ const rows = [...existing];
389
+ for (const [month, point] of deduped) {
390
+ const idx = rows.findIndex((r) => r.month === month);
391
+ if (idx >= 0) {
392
+ if (rows[idx].value === point.value) {
393
+ skipped++;
394
+ }
395
+ else {
396
+ rows[idx] = { ...rows[idx], value: point.value, updated_at: nowIso() };
397
+ updated++;
398
+ }
399
+ }
400
+ else {
401
+ rows.push({
402
+ indicator: request.indicator,
403
+ month,
404
+ value: point.value,
405
+ source: request.source ?? null,
406
+ created_at: nowIso(),
407
+ updated_at: nowIso(),
408
+ });
409
+ inserted++;
410
+ }
411
+ }
412
+ rows.sort((a, b) => a.month.localeCompare(b.month));
413
+ this.store.macroData.set(request.indicator, rows);
414
+ return {
415
+ indicator: request.indicator,
416
+ total_submitted: request.data.length,
417
+ inserted,
418
+ updated,
419
+ skipped,
420
+ };
421
+ }
422
+ async query(indicator, options = {}) {
423
+ let data = this.store.macroData.get(indicator) ?? [];
424
+ if (options.start_month) {
425
+ const start = options.start_month.slice(0, 7);
426
+ data = data.filter((d) => d.month.slice(0, 7) >= start);
427
+ }
428
+ if (options.end_month) {
429
+ const end = options.end_month.slice(0, 7);
430
+ data = data.filter((d) => d.month.slice(0, 7) <= end);
431
+ }
432
+ return { indicator, total: data.length, data };
433
+ }
434
+ async deleteMonth(indicator, month) {
435
+ const normalised = month.slice(0, 7) + '-01';
436
+ const existing = this.store.macroData.get(indicator) ?? [];
437
+ const next = existing.filter((d) => d.month !== normalised);
438
+ if (next.length === existing.length) {
439
+ throw new errors_1.NotFoundError(`No record for indicator='${indicator}', month='${normalised}'`);
440
+ }
441
+ this.store.macroData.set(indicator, next);
442
+ }
443
+ }
444
+ // ---------------------------------------------------------------------------
445
+ // Public mock client
446
+ // ---------------------------------------------------------------------------
447
+ class MockCfiAiHubClient {
448
+ ai;
449
+ bom;
450
+ omsf;
451
+ vendor;
452
+ tracker;
453
+ cache;
454
+ forecast;
455
+ macro;
456
+ store;
457
+ seed;
458
+ constructor(seed) {
459
+ this.seed = seed;
460
+ this.store = buildStore(seed);
461
+ this.ai = new MockAiResource(this.store);
462
+ this.bom = new MockBomResource(this.store);
463
+ this.omsf = new MockOmsfResource();
464
+ this.vendor = new MockVendorResource();
465
+ this.tracker = new MockTrackerResource(this.store);
466
+ this.cache = new MockCacheResource(this.store);
467
+ this.forecast = new MockForecastResource(this.store);
468
+ this.macro = new MockMacroResource(this.store);
469
+ }
470
+ reset() {
471
+ const fresh = buildStore(this.seed);
472
+ this.store.chatResponses.splice(0, this.store.chatResponses.length, ...fresh.chatResponses);
473
+ this.store.bomSearchResults.splice(0, this.store.bomSearchResults.length, ...fresh.bomSearchResults);
474
+ this.store.forecastResponses.splice(0, this.store.forecastResponses.length, ...fresh.forecastResponses);
475
+ this.store.progressEntries.clear();
476
+ for (const [k, v] of fresh.progressEntries)
477
+ this.store.progressEntries.set(k, v);
478
+ this.store.cache.clear();
479
+ for (const [k, v] of fresh.cache)
480
+ this.store.cache.set(k, v);
481
+ this.store.macroData.clear();
482
+ for (const [k, v] of fresh.macroData)
483
+ this.store.macroData.set(k, v);
484
+ }
485
+ getStore() {
486
+ return {
487
+ chatResponses: [...this.store.chatResponses],
488
+ bomSearchResults: [...this.store.bomSearchResults],
489
+ forecastResponses: [...this.store.forecastResponses],
490
+ progressEntries: Object.fromEntries(this.store.progressEntries),
491
+ cache: Object.fromEntries(this.store.cache),
492
+ macroData: Object.fromEntries(this.store.macroData),
493
+ };
494
+ }
495
+ }
496
+ exports.MockCfiAiHubClient = MockCfiAiHubClient;
497
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { FileInput } from './types';
2
+ export declare function appendFile(form: FormData, field: string, file: FileInput): void;
3
+ export declare function appendIfDefined(form: FormData, field: string, value: unknown): void;
4
+ //# sourceMappingURL=multipart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.d.ts","sourceRoot":"","sources":["../src/multipart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAU/E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGnF"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendFile = appendFile;
4
+ exports.appendIfDefined = appendIfDefined;
5
+ function appendFile(form, field, file) {
6
+ if (typeof File !== 'undefined' && file instanceof File) {
7
+ form.append(field, file, file.name);
8
+ return;
9
+ }
10
+ if (file instanceof Blob) {
11
+ form.append(field, file);
12
+ return;
13
+ }
14
+ form.append(field, file.blob, file.filename);
15
+ }
16
+ function appendIfDefined(form, field, value) {
17
+ if (value === undefined || value === null)
18
+ return;
19
+ form.append(field, typeof value === 'boolean' ? (value ? 'true' : 'false') : String(value));
20
+ }
21
+ //# sourceMappingURL=multipart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multipart.js","sourceRoot":"","sources":["../src/multipart.ts"],"names":[],"mappings":";;AAEA,gCAUC;AAED,0CAGC;AAfD,SAAgB,UAAU,CAAC,IAAc,EAAE,KAAa,EAAE,IAAe;IACvE,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IACD,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,eAAe,CAAC,IAAc,EAAE,KAAa,EAAE,KAAc;IAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO;IAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,CAAC"}
package/dist/omsf.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import type { HttpTransport } from './http';
2
+ import type { ColumnDetectionResponse, FileComparisonConfig, FileComparisonResponse, FileInput, FollowUpRequest, FollowUpResponse, OmsfHealthResponse, VolumeAnalyzeResponse, VolumeDashboardResponse } from './types';
3
+ export interface VolumeAnalyzeOptions {
4
+ file1Dimensions?: number;
5
+ file2Dimensions?: number;
6
+ }
7
+ export interface VolumeDashboardInput {
8
+ monthMapping: Record<string, string>;
9
+ groupingConfig: Record<string, unknown>;
10
+ yearsRange?: number[];
11
+ }
12
+ export declare class OmsfResource {
13
+ private readonly http;
14
+ constructor(http: HttpTransport);
15
+ analyzeData(file1: FileInput, file2: FileInput, options?: VolumeAnalyzeOptions): Promise<VolumeAnalyzeResponse>;
16
+ followUp(input: FollowUpRequest): Promise<FollowUpResponse>;
17
+ detectColumns(file: FileInput): Promise<ColumnDetectionResponse>;
18
+ compare(fileOld: FileInput, fileNew: FileInput, config: FileComparisonConfig): Promise<FileComparisonResponse>;
19
+ dashboard(file: FileInput, input: VolumeDashboardInput): Promise<VolumeDashboardResponse>;
20
+ health(): Promise<OmsfHealthResponse>;
21
+ }
22
+ //# sourceMappingURL=omsf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omsf.d.ts","sourceRoot":"","sources":["../src/omsf.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAE1C,WAAW,CACf,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,qBAAqB,CAAC;IAa3B,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQ3D,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAShE,OAAO,CACX,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IAY5B,SAAS,CACb,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;IAe7B,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAM5C"}
package/dist/omsf.js ADDED
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OmsfResource = void 0;
4
+ const multipart_1 = require("./multipart");
5
+ class OmsfResource {
6
+ http;
7
+ constructor(http) {
8
+ this.http = http;
9
+ }
10
+ async analyzeData(file1, file2, options = {}) {
11
+ const form = new FormData();
12
+ (0, multipart_1.appendFile)(form, 'file1', file1);
13
+ (0, multipart_1.appendFile)(form, 'file2', file2);
14
+ form.append('file1_dimensions', String(options.file1Dimensions ?? 0));
15
+ form.append('file2_dimensions', String(options.file2Dimensions ?? 0));
16
+ return this.http.requestMultipart({
17
+ path: '/omsf/volume/analyze-data',
18
+ body: form,
19
+ });
20
+ }
21
+ async followUp(input) {
22
+ return this.http.request({
23
+ method: 'POST',
24
+ path: '/omsf/volume/follow-up',
25
+ body: input,
26
+ });
27
+ }
28
+ async detectColumns(file) {
29
+ const form = new FormData();
30
+ (0, multipart_1.appendFile)(form, 'file', file);
31
+ return this.http.requestMultipart({
32
+ path: '/omsf/volume/detect-columns',
33
+ body: form,
34
+ });
35
+ }
36
+ async compare(fileOld, fileNew, config) {
37
+ const form = new FormData();
38
+ (0, multipart_1.appendFile)(form, 'file_old', fileOld);
39
+ (0, multipart_1.appendFile)(form, 'file_new', fileNew);
40
+ form.append('config', JSON.stringify(config));
41
+ return this.http.requestMultipart({
42
+ path: '/omsf/volume/compare',
43
+ body: form,
44
+ });
45
+ }
46
+ async dashboard(file, input) {
47
+ const form = new FormData();
48
+ (0, multipart_1.appendFile)(form, 'file', file);
49
+ form.append('month_mapping', JSON.stringify(input.monthMapping));
50
+ form.append('grouping_config', JSON.stringify(input.groupingConfig));
51
+ if (input.yearsRange !== undefined) {
52
+ form.append('years_range', JSON.stringify(input.yearsRange));
53
+ }
54
+ return this.http.requestMultipart({
55
+ path: '/omsf/volume/dashboard',
56
+ body: form,
57
+ });
58
+ }
59
+ async health() {
60
+ return this.http.request({
61
+ method: 'GET',
62
+ path: '/omsf/health',
63
+ });
64
+ }
65
+ }
66
+ exports.OmsfResource = OmsfResource;
67
+ //# sourceMappingURL=omsf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omsf.js","sourceRoot":"","sources":["../src/omsf.ts"],"names":[],"mappings":"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"}