@mothership/rebill-model-api 0.2.1

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,183 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const rebill_model_client_1 = require("../rebill-model.client");
5
+ (0, vitest_1.describe)('RebillModelClient', () => {
6
+ let client;
7
+ let mockExecuteQuery;
8
+ (0, vitest_1.beforeEach)(() => {
9
+ client = new rebill_model_client_1.RebillModelClient({
10
+ clientId: 'test-client-id',
11
+ clientSecret: 'test-secret',
12
+ warehouseId: 'test-warehouse',
13
+ workspaceUrl: 'https://test.databricks.com',
14
+ });
15
+ // Mock the private _executeQuery method
16
+ mockExecuteQuery = vitest_1.vi.fn();
17
+ client._executeQuery = mockExecuteQuery;
18
+ });
19
+ (0, vitest_1.describe)('getLatestByEdiInboundIds', () => {
20
+ (0, vitest_1.it)('returns empty array for empty input', async () => {
21
+ const result = await client.getLatestByEdiInboundIds([]);
22
+ (0, vitest_1.expect)(result).toEqual([]);
23
+ (0, vitest_1.expect)(mockExecuteQuery).not.toHaveBeenCalled();
24
+ });
25
+ (0, vitest_1.it)('returns latest predictions per EDI ID', async () => {
26
+ const mockRows = [
27
+ {
28
+ edi_invoice_inbound_id: 'edi-1',
29
+ inference_id: 'inf-1',
30
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 1"}',
31
+ processed_at: '2024-01-02T00:00:00Z',
32
+ },
33
+ {
34
+ edi_invoice_inbound_id: 'edi-2',
35
+ inference_id: 'inf-2',
36
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 2"}',
37
+ processed_at: '2024-01-03T00:00:00Z',
38
+ },
39
+ ];
40
+ mockExecuteQuery.mockResolvedValue(mockRows);
41
+ const result = await client.getLatestByEdiInboundIds(['edi-1', 'edi-2']);
42
+ (0, vitest_1.expect)(result).toHaveLength(2);
43
+ (0, vitest_1.expect)(result[0]).toHaveProperty('edi_invoice_inbound_id', 'edi-1');
44
+ (0, vitest_1.expect)(result[1]).toHaveProperty('edi_invoice_inbound_id', 'edi-2');
45
+ (0, vitest_1.expect)(mockExecuteQuery).toHaveBeenCalledWith(vitest_1.expect.stringContaining('ROW_NUMBER() OVER'), ['edi-1', 'edi-2'], 30000);
46
+ });
47
+ (0, vitest_1.it)('returns flattened predictions with rebill_line_items at top level', async () => {
48
+ const mockRows = [
49
+ {
50
+ edi_invoice_inbound_id: 'edi-1',
51
+ inference_id: 'inf-1',
52
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test"}',
53
+ processed_at: '2024-01-01T00:00:00Z',
54
+ },
55
+ ];
56
+ mockExecuteQuery.mockResolvedValue(mockRows);
57
+ const result = await client.getLatestByEdiInboundIds(['edi-1']);
58
+ (0, vitest_1.expect)(result[0]).toHaveProperty('rebill_line_items');
59
+ (0, vitest_1.expect)(result[0]).toHaveProperty('customer_summary');
60
+ (0, vitest_1.expect)(result[0]).not.toHaveProperty('prediction');
61
+ (0, vitest_1.expect)(result[0]).not.toHaveProperty('prediction_json');
62
+ (0, vitest_1.expect)(result[0].customer_summary).toBe('Test');
63
+ });
64
+ (0, vitest_1.it)('filters out IDs not found', async () => {
65
+ const mockRows = [
66
+ {
67
+ edi_invoice_inbound_id: 'edi-1',
68
+ inference_id: 'inf-1',
69
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test"}',
70
+ processed_at: '2024-01-01T00:00:00Z',
71
+ },
72
+ ];
73
+ mockExecuteQuery.mockResolvedValue(mockRows);
74
+ const result = await client.getLatestByEdiInboundIds(['edi-1', 'edi-2']);
75
+ (0, vitest_1.expect)(result).toHaveLength(1);
76
+ (0, vitest_1.expect)(result[0]).toHaveProperty('edi_invoice_inbound_id', 'edi-1');
77
+ });
78
+ (0, vitest_1.it)('respects custom timeoutMs', async () => {
79
+ mockExecuteQuery.mockResolvedValue([]);
80
+ await client.getLatestByEdiInboundIds(['edi-1'], { timeoutMs: 60000 });
81
+ (0, vitest_1.expect)(mockExecuteQuery).toHaveBeenCalledWith(vitest_1.expect.any(String), ['edi-1'], 60000);
82
+ });
83
+ });
84
+ (0, vitest_1.describe)('getByInferenceIds', () => {
85
+ (0, vitest_1.it)('returns empty array for empty input', async () => {
86
+ const result = await client.getByInferenceIds([]);
87
+ (0, vitest_1.expect)(result).toEqual([]);
88
+ (0, vitest_1.expect)(mockExecuteQuery).not.toHaveBeenCalled();
89
+ });
90
+ (0, vitest_1.it)('returns predictions by inference IDs', async () => {
91
+ const mockRows = [
92
+ {
93
+ edi_invoice_inbound_id: 'edi-1',
94
+ inference_id: 'inf-1',
95
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 1"}',
96
+ processed_at: '2024-01-01T00:00:00Z',
97
+ },
98
+ {
99
+ edi_invoice_inbound_id: 'edi-2',
100
+ inference_id: 'inf-2',
101
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 2"}',
102
+ processed_at: '2024-01-02T00:00:00Z',
103
+ },
104
+ ];
105
+ mockExecuteQuery.mockResolvedValue(mockRows);
106
+ const result = await client.getByInferenceIds(['inf-1', 'inf-2']);
107
+ (0, vitest_1.expect)(result).toHaveLength(2);
108
+ (0, vitest_1.expect)(result[0]).toHaveProperty('inference_id', 'inf-1');
109
+ (0, vitest_1.expect)(result[1]).toHaveProperty('inference_id', 'inf-2');
110
+ (0, vitest_1.expect)(mockExecuteQuery).toHaveBeenCalledWith(vitest_1.expect.stringContaining('WHERE inference_id IN'), ['inf-1', 'inf-2'], 30000);
111
+ });
112
+ (0, vitest_1.it)('filters out IDs not found', async () => {
113
+ const mockRows = [
114
+ {
115
+ edi_invoice_inbound_id: 'edi-1',
116
+ inference_id: 'inf-1',
117
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test"}',
118
+ processed_at: '2024-01-01T00:00:00Z',
119
+ },
120
+ ];
121
+ mockExecuteQuery.mockResolvedValue(mockRows);
122
+ const result = await client.getByInferenceIds(['inf-1', 'inf-2']);
123
+ (0, vitest_1.expect)(result).toHaveLength(1);
124
+ (0, vitest_1.expect)(result[0]).toHaveProperty('inference_id', 'inf-1');
125
+ });
126
+ (0, vitest_1.it)('preserves input order', async () => {
127
+ const mockRows = [
128
+ {
129
+ edi_invoice_inbound_id: 'edi-2',
130
+ inference_id: 'inf-2',
131
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 2"}',
132
+ processed_at: '2024-01-02T00:00:00Z',
133
+ },
134
+ {
135
+ edi_invoice_inbound_id: 'edi-1',
136
+ inference_id: 'inf-1',
137
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 1"}',
138
+ processed_at: '2024-01-01T00:00:00Z',
139
+ },
140
+ ];
141
+ mockExecuteQuery.mockResolvedValue(mockRows);
142
+ const result = await client.getByInferenceIds(['inf-1', 'inf-2']);
143
+ (0, vitest_1.expect)(result).toHaveLength(2);
144
+ (0, vitest_1.expect)(result[0]).toHaveProperty('inference_id', 'inf-1');
145
+ (0, vitest_1.expect)(result[1]).toHaveProperty('inference_id', 'inf-2');
146
+ });
147
+ (0, vitest_1.it)('respects custom timeoutMs', async () => {
148
+ mockExecuteQuery.mockResolvedValue([]);
149
+ await client.getByInferenceIds(['inf-1'], { timeoutMs: 60000 });
150
+ (0, vitest_1.expect)(mockExecuteQuery).toHaveBeenCalledWith(vitest_1.expect.any(String), ['inf-1'], 60000);
151
+ });
152
+ });
153
+ (0, vitest_1.describe)('getByEdiInboundIds', () => {
154
+ (0, vitest_1.it)('returns empty array for empty input', async () => {
155
+ const result = await client.getByEdiInboundIds([]);
156
+ (0, vitest_1.expect)(result).toEqual([]);
157
+ (0, vitest_1.expect)(mockExecuteQuery).not.toHaveBeenCalled();
158
+ });
159
+ (0, vitest_1.it)('returns predictions by EDI IDs', async () => {
160
+ const mockRows = [
161
+ {
162
+ edi_invoice_inbound_id: 'edi-1',
163
+ inference_id: 'inf-1',
164
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 1"}',
165
+ processed_at: '2024-01-01T00:00:00Z',
166
+ },
167
+ {
168
+ edi_invoice_inbound_id: 'edi-2',
169
+ inference_id: 'inf-2',
170
+ prediction_json: '{"rebill_line_items":[],"customer_summary":"Test 2"}',
171
+ processed_at: '2024-01-02T00:00:00Z',
172
+ },
173
+ ];
174
+ mockExecuteQuery.mockResolvedValue(mockRows);
175
+ const result = await client.getByEdiInboundIds(['edi-1', 'edi-2']);
176
+ (0, vitest_1.expect)(result).toHaveLength(2);
177
+ (0, vitest_1.expect)(result[0]).toHaveProperty('edi_invoice_inbound_id', 'edi-1');
178
+ (0, vitest_1.expect)(result[1]).toHaveProperty('edi_invoice_inbound_id', 'edi-2');
179
+ (0, vitest_1.expect)(mockExecuteQuery).toHaveBeenCalledWith(vitest_1.expect.stringContaining('WHERE edi_invoice_inbound_id IN'), ['edi-1', 'edi-2'], 30000);
180
+ });
181
+ });
182
+ });
183
+ //# sourceMappingURL=queries.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.unit.test.js","sourceRoot":"","sources":["../../src/__tests__/queries.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/schema.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ (0, vitest_1.describe)('RebillPrediction Schema', () => {
5
+ (0, vitest_1.describe)('RebillLineItem', () => {
6
+ (0, vitest_1.it)('has all required fields', () => {
7
+ const lineItem = {
8
+ amount: 150.5,
9
+ line_item_description: 'Weight difference charge',
10
+ root_cause: 'Shipper provided incorrect weight on BOL',
11
+ supporting_documentation: 'Actual scale ticket vs BOL weight',
12
+ type: 'INCORRECT_WEIGHT',
13
+ };
14
+ (0, vitest_1.expect)(lineItem.type).toBe('INCORRECT_WEIGHT');
15
+ (0, vitest_1.expect)(lineItem.amount).toBe(150.5);
16
+ (0, vitest_1.expect)(lineItem.line_item_description).toBe('Weight difference charge');
17
+ (0, vitest_1.expect)(lineItem.root_cause).toBe('Shipper provided incorrect weight on BOL');
18
+ (0, vitest_1.expect)(lineItem.supporting_documentation).toBe('Actual scale ticket vs BOL weight');
19
+ });
20
+ });
21
+ (0, vitest_1.describe)('RebillPrediction', () => {
22
+ (0, vitest_1.it)('has all required fields including metadata and prediction data', () => {
23
+ const prediction = {
24
+ customer_summary: 'Weight discrepancy and liftgate service required at delivery location.',
25
+ edi_invoice_inbound_id: '12345',
26
+ inference_id: 'abc-123',
27
+ processed_at: new Date('2024-01-01'),
28
+ rebill_line_items: [
29
+ {
30
+ amount: 150.5,
31
+ line_item_description: 'Weight difference charge',
32
+ root_cause: 'Shipper provided incorrect weight on BOL',
33
+ supporting_documentation: 'Actual scale ticket vs BOL weight',
34
+ type: 'INCORRECT_WEIGHT',
35
+ },
36
+ {
37
+ amount: 75.0,
38
+ line_item_description: 'Liftgate service at delivery',
39
+ root_cause: 'Consignee location has no loading dock',
40
+ supporting_documentation: 'Delivery appointment notes and photos',
41
+ type: 'LIFT_GATE_AT_DELIVERY',
42
+ },
43
+ ],
44
+ };
45
+ // Metadata fields
46
+ (0, vitest_1.expect)(prediction.inference_id).toBe('abc-123');
47
+ (0, vitest_1.expect)(prediction.edi_invoice_inbound_id).toBe('12345');
48
+ (0, vitest_1.expect)(prediction.processed_at).toBeInstanceOf(Date);
49
+ // Prediction data fields (flattened)
50
+ (0, vitest_1.expect)(prediction.rebill_line_items).toHaveLength(2);
51
+ (0, vitest_1.expect)(prediction.customer_summary).toBeTruthy();
52
+ (0, vitest_1.expect)(typeof prediction.customer_summary).toBe('string');
53
+ });
54
+ (0, vitest_1.it)('can have empty rebill_line_items array', () => {
55
+ const prediction = {
56
+ customer_summary: 'No rebills identified.',
57
+ edi_invoice_inbound_id: '12345',
58
+ inference_id: 'abc-123',
59
+ processed_at: new Date('2024-01-01'),
60
+ rebill_line_items: [],
61
+ };
62
+ (0, vitest_1.expect)(prediction.rebill_line_items).toHaveLength(0);
63
+ (0, vitest_1.expect)(prediction.customer_summary).toBe('No rebills identified.');
64
+ });
65
+ (0, vitest_1.it)('can calculate total amount from line items', () => {
66
+ const prediction = {
67
+ customer_summary: 'Two rebill items identified.',
68
+ edi_invoice_inbound_id: '12345',
69
+ inference_id: 'abc-123',
70
+ processed_at: new Date('2024-01-01'),
71
+ rebill_line_items: [
72
+ {
73
+ amount: 150.5,
74
+ line_item_description: 'Weight difference',
75
+ root_cause: 'Weight discrepancy',
76
+ supporting_documentation: 'Scale ticket',
77
+ type: 'INCORRECT_WEIGHT',
78
+ },
79
+ {
80
+ amount: 75.0,
81
+ line_item_description: 'Liftgate service',
82
+ root_cause: 'No loading dock',
83
+ supporting_documentation: 'Photos',
84
+ type: 'LIFT_GATE_AT_DELIVERY',
85
+ },
86
+ ],
87
+ };
88
+ const totalAmount = prediction.rebill_line_items.reduce((sum, item) => sum + item.amount, 0);
89
+ (0, vitest_1.expect)(totalAmount).toBe(225.5);
90
+ });
91
+ (0, vitest_1.it)('can extract unique rebill types from line items', () => {
92
+ const prediction = {
93
+ customer_summary: 'Multiple line items.',
94
+ edi_invoice_inbound_id: '12345',
95
+ inference_id: 'abc-123',
96
+ processed_at: new Date('2024-01-01'),
97
+ rebill_line_items: [
98
+ {
99
+ amount: 100.0,
100
+ line_item_description: 'Weight 1',
101
+ root_cause: 'Cause 1',
102
+ supporting_documentation: 'Doc 1',
103
+ type: 'INCORRECT_WEIGHT',
104
+ },
105
+ {
106
+ amount: 50.0,
107
+ line_item_description: 'Weight 2',
108
+ root_cause: 'Cause 2',
109
+ supporting_documentation: 'Doc 2',
110
+ type: 'INCORRECT_WEIGHT',
111
+ },
112
+ {
113
+ amount: 75.0,
114
+ line_item_description: 'Liftgate',
115
+ root_cause: 'Cause 3',
116
+ supporting_documentation: 'Doc 3',
117
+ type: 'LIFT_GATE_AT_DELIVERY',
118
+ },
119
+ ],
120
+ };
121
+ const uniqueTypes = [...new Set(prediction.rebill_line_items.map((item) => item.type))];
122
+ (0, vitest_1.expect)(uniqueTypes).toHaveLength(2);
123
+ (0, vitest_1.expect)(uniqueTypes).toContain('INCORRECT_WEIGHT');
124
+ (0, vitest_1.expect)(uniqueTypes).toContain('LIFT_GATE_AT_DELIVERY');
125
+ });
126
+ });
127
+ (0, vitest_1.describe)('JSON Serialization', () => {
128
+ (0, vitest_1.it)('can parse prediction_json from database and merge with metadata', () => {
129
+ // This simulates what the SDK does internally
130
+ const predictionJson = JSON.stringify({
131
+ customer_summary: 'Weight discrepancy identified.',
132
+ rebill_line_items: [
133
+ {
134
+ amount: 150.5,
135
+ line_item_description: 'Weight difference charge',
136
+ root_cause: 'Shipper provided incorrect weight on BOL',
137
+ supporting_documentation: 'Actual scale ticket vs BOL weight',
138
+ type: 'INCORRECT_WEIGHT',
139
+ },
140
+ ],
141
+ });
142
+ const parsed = JSON.parse(predictionJson);
143
+ const prediction = {
144
+ customer_summary: parsed.customer_summary,
145
+ edi_invoice_inbound_id: '12345',
146
+ inference_id: 'abc-123',
147
+ processed_at: new Date('2024-01-01'),
148
+ rebill_line_items: parsed.rebill_line_items,
149
+ };
150
+ (0, vitest_1.expect)(prediction.rebill_line_items).toHaveLength(1);
151
+ (0, vitest_1.expect)(prediction.rebill_line_items[0].type).toBe('INCORRECT_WEIGHT');
152
+ (0, vitest_1.expect)(prediction.rebill_line_items[0].amount).toBe(150.5);
153
+ (0, vitest_1.expect)(prediction.customer_summary).toBe('Weight discrepancy identified.');
154
+ });
155
+ (0, vitest_1.it)('matches the structure stored in Databricks', () => {
156
+ // This is the actual structure from the Python model (InferenceResponseItem)
157
+ const databricksJson = JSON.stringify({
158
+ customer_summary: 'Detention charges due to extended wait time at pickup.',
159
+ rebill_line_items: [
160
+ {
161
+ amount: 200.0,
162
+ line_item_description: 'Driver waiting time exceeded',
163
+ root_cause: 'Warehouse was not ready for pickup',
164
+ supporting_documentation: 'Driver logs and appointment confirmation',
165
+ type: 'DETENTION',
166
+ },
167
+ ],
168
+ });
169
+ const parsed = JSON.parse(databricksJson);
170
+ // Verify all prediction data fields are present
171
+ (0, vitest_1.expect)(parsed).toHaveProperty('rebill_line_items');
172
+ (0, vitest_1.expect)(parsed).toHaveProperty('customer_summary');
173
+ (0, vitest_1.expect)(Array.isArray(parsed.rebill_line_items)).toBe(true);
174
+ (0, vitest_1.expect)(typeof parsed.customer_summary).toBe('string');
175
+ const lineItem = parsed.rebill_line_items[0];
176
+ (0, vitest_1.expect)(lineItem).toHaveProperty('type');
177
+ (0, vitest_1.expect)(lineItem).toHaveProperty('amount');
178
+ (0, vitest_1.expect)(lineItem).toHaveProperty('line_item_description');
179
+ (0, vitest_1.expect)(lineItem).toHaveProperty('root_cause');
180
+ (0, vitest_1.expect)(lineItem).toHaveProperty('supporting_documentation');
181
+ });
182
+ });
183
+ });
184
+ //# sourceMappingURL=schema.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.unit.test.js","sourceRoot":"","sources":["../../src/__tests__/schema.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.unit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/types.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const types_1 = require("../types");
5
+ (0, vitest_1.describe)('RebillException', () => {
6
+ (0, vitest_1.describe)('constructor', () => {
7
+ (0, vitest_1.it)('sets the error message', () => {
8
+ const error = new types_1.RebillException('Test error message', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
9
+ (0, vitest_1.expect)(error.message).toBe('Test error message');
10
+ });
11
+ (0, vitest_1.it)('sets the error name to RebillException', () => {
12
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
13
+ (0, vitest_1.expect)(error.name).toBe('RebillException');
14
+ });
15
+ (0, vitest_1.it)('sets the code property', () => {
16
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
17
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
18
+ });
19
+ (0, vitest_1.it)('sets the originalError when provided', () => {
20
+ const originalError = new Error('Original error');
21
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED, originalError);
22
+ (0, vitest_1.expect)(error.originalError).toBe(originalError);
23
+ });
24
+ (0, vitest_1.it)('has undefined originalError when not provided', () => {
25
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
26
+ (0, vitest_1.expect)(error.originalError).toBeUndefined();
27
+ });
28
+ (0, vitest_1.it)('has a stack trace', () => {
29
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
30
+ (0, vitest_1.expect)(error.stack).toBeDefined();
31
+ });
32
+ });
33
+ (0, vitest_1.describe)('prototype chain', () => {
34
+ (0, vitest_1.it)('is an instance of RebillException', () => {
35
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
36
+ (0, vitest_1.expect)(error).toBeInstanceOf(types_1.RebillException);
37
+ });
38
+ (0, vitest_1.it)('is an instance of Error', () => {
39
+ const error = new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
40
+ (0, vitest_1.expect)(error).toBeInstanceOf(Error);
41
+ });
42
+ (0, vitest_1.it)('can be caught as an Error', () => {
43
+ (0, vitest_1.expect)(() => {
44
+ throw new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
45
+ }).toThrow(Error);
46
+ });
47
+ (0, vitest_1.it)('can be caught as a RebillException', () => {
48
+ (0, vitest_1.expect)(() => {
49
+ throw new types_1.RebillException('Test error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
50
+ }).toThrow(types_1.RebillException);
51
+ });
52
+ });
53
+ (0, vitest_1.describe)('error codes', () => {
54
+ (0, vitest_1.it)('handles DATABRICKS_CONNECTION_FAILED code', () => {
55
+ const error = new types_1.RebillException('Connection failed', types_1.RebillErrorCode.DATABRICKS_CONNECTION_FAILED);
56
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.DATABRICKS_CONNECTION_FAILED);
57
+ });
58
+ (0, vitest_1.it)('handles SESSION_NOT_INITIALIZED code', () => {
59
+ const error = new types_1.RebillException('Not connected', types_1.RebillErrorCode.SESSION_NOT_INITIALIZED);
60
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.SESSION_NOT_INITIALIZED);
61
+ });
62
+ (0, vitest_1.it)('handles QUERY_EXECUTION_FAILED code', () => {
63
+ const error = new types_1.RebillException('Query failed', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
64
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.QUERY_EXECUTION_FAILED);
65
+ });
66
+ (0, vitest_1.it)('handles QUERY_TIMEOUT code', () => {
67
+ const error = new types_1.RebillException('Query timed out', types_1.RebillErrorCode.QUERY_TIMEOUT);
68
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.QUERY_TIMEOUT);
69
+ });
70
+ (0, vitest_1.it)('handles RESPONSE_PARSE_FAILED code', () => {
71
+ const error = new types_1.RebillException('Parse failed', types_1.RebillErrorCode.RESPONSE_PARSE_FAILED);
72
+ (0, vitest_1.expect)(error.code).toBe(types_1.RebillErrorCode.RESPONSE_PARSE_FAILED);
73
+ });
74
+ });
75
+ (0, vitest_1.describe)('with original error', () => {
76
+ (0, vitest_1.it)('preserves original error message', () => {
77
+ const originalError = new Error('Database connection timeout');
78
+ const error = new types_1.RebillException('Failed to connect to Databricks', types_1.RebillErrorCode.DATABRICKS_CONNECTION_FAILED, originalError);
79
+ (0, vitest_1.expect)(error.originalError?.message).toBe('Database connection timeout');
80
+ });
81
+ (0, vitest_1.it)('preserves original error stack', () => {
82
+ const originalError = new Error('Original error');
83
+ const error = new types_1.RebillException('Wrapper error', types_1.RebillErrorCode.QUERY_EXECUTION_FAILED, originalError);
84
+ (0, vitest_1.expect)(error.originalError?.stack).toBeDefined();
85
+ });
86
+ });
87
+ });
88
+ //# sourceMappingURL=types.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.unit.test.js","sourceRoot":"","sources":["../../src/__tests__/types.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Rebill Model API
3
+ *
4
+ * TypeScript API for querying Rebill model predictions from Databricks
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ export type { RebillModelClientConfig } from './rebill-model.client';
9
+ export { RebillModelClient } from './rebill-model.client';
10
+ export { QueryOptions, RebillErrorCode, RebillException, RebillLineItem, RebillPrediction, } from './types';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGzD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Rebill Model API
4
+ *
5
+ * TypeScript API for querying Rebill model predictions from Databricks
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RebillException = exports.RebillErrorCode = exports.RebillModelClient = void 0;
11
+ // Client
12
+ var rebill_model_client_1 = require("./rebill-model.client");
13
+ Object.defineProperty(exports, "RebillModelClient", { enumerable: true, get: function () { return rebill_model_client_1.RebillModelClient; } });
14
+ // Types
15
+ var types_1 = require("./types");
16
+ Object.defineProperty(exports, "RebillErrorCode", { enumerable: true, get: function () { return types_1.RebillErrorCode; } });
17
+ Object.defineProperty(exports, "RebillException", { enumerable: true, get: function () { return types_1.RebillException; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAGH,SAAS;AACT,6DAAyD;AAAhD,wHAAA,iBAAiB,OAAA;AAE1B,QAAQ;AACR,iCAMgB;AAJd,wGAAA,eAAe,OAAA;AACf,wGAAA,eAAe,OAAA"}