@kodexa-ai/document-wasm-ts 8.0.0-develop-21050984255 → 8.0.0-develop-21100704602

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 (40) hide show
  1. package/dist/DataAttributeAccessor.d.ts +4 -5
  2. package/dist/DataAttributeAccessor.d.ts.map +1 -1
  3. package/dist/DataAttributeAccessor.js +3 -3
  4. package/dist/DataAttributeAccessor.js.map +1 -1
  5. package/dist/KddbDocument.d.ts +28 -0
  6. package/dist/KddbDocument.d.ts.map +1 -1
  7. package/dist/KddbDocument.js +59 -0
  8. package/dist/KddbDocument.js.map +1 -1
  9. package/dist/TransactionContext.d.ts +55 -0
  10. package/dist/TransactionContext.d.ts.map +1 -0
  11. package/dist/TransactionContext.js +64 -0
  12. package/dist/TransactionContext.js.map +1 -0
  13. package/dist/TransactionDataAttributeAccessor.d.ts +53 -0
  14. package/dist/TransactionDataAttributeAccessor.d.ts.map +1 -0
  15. package/dist/TransactionDataAttributeAccessor.js +105 -0
  16. package/dist/TransactionDataAttributeAccessor.js.map +1 -0
  17. package/dist/TransactionDataObjectAccessor.d.ts +38 -0
  18. package/dist/TransactionDataObjectAccessor.d.ts.map +1 -0
  19. package/dist/TransactionDataObjectAccessor.js +62 -0
  20. package/dist/TransactionDataObjectAccessor.js.map +1 -0
  21. package/dist/__tests__/TransactionContext.test.d.ts +2 -0
  22. package/dist/__tests__/TransactionContext.test.d.ts.map +1 -0
  23. package/dist/__tests__/TransactionContext.test.js +72 -0
  24. package/dist/__tests__/TransactionContext.test.js.map +1 -0
  25. package/dist/__tests__/transaction.integration.test.d.ts +13 -0
  26. package/dist/__tests__/transaction.integration.test.d.ts.map +1 -0
  27. package/dist/__tests__/transaction.integration.test.js +380 -0
  28. package/dist/__tests__/transaction.integration.test.js.map +1 -0
  29. package/dist/index.d.ts +4 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +4 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/kodexa.wasm +0 -0
  34. package/dist/types/formula.d.ts +1 -1
  35. package/dist/types/formula.d.ts.map +1 -1
  36. package/dist/wasm/types.d.ts +32 -14
  37. package/dist/wasm/types.d.ts.map +1 -1
  38. package/dist/worker/types.d.ts +61 -0
  39. package/dist/worker/types.d.ts.map +1 -1
  40. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * TransactionDataObjectAccessor - Queued version of DataObjectAccessor for transactions
3
+ *
4
+ * This accessor queues data object operations locally instead of executing them immediately.
5
+ * Operations are collected and executed atomically when the transaction is committed.
6
+ *
7
+ * Usage: Within a transaction callback via document.withTransaction()
8
+ */
9
+ import type { DataObject } from './wasm/types';
10
+ import type { DataObjectInput } from './DataObjectAccessor';
11
+ import type { TransactionOperation } from './worker/types';
12
+ /**
13
+ * TransactionDataObjectAccessor - queue data object operations for batch execution
14
+ *
15
+ * This is an internal accessor class used within transaction contexts.
16
+ */
17
+ export declare class TransactionDataObjectAccessor {
18
+ private operations;
19
+ private nextTempId;
20
+ constructor(operations: TransactionOperation[], nextTempId: () => number);
21
+ /**
22
+ * Queue creation of a new data object
23
+ * Returns a provisional object with a temporary ID (negative number)
24
+ *
25
+ * The temporary ID can be used to create related data attributes
26
+ * in the same transaction. The real ID is assigned on commit.
27
+ */
28
+ create(input: DataObjectInput): Promise<DataObject>;
29
+ /**
30
+ * Queue update of an existing data object by ID
31
+ */
32
+ update(id: number, updates: Partial<DataObject>): Promise<DataObject>;
33
+ /**
34
+ * Queue deletion of a data object by ID
35
+ */
36
+ delete(id: number): Promise<boolean>;
37
+ }
38
+ //# sourceMappingURL=TransactionDataObjectAccessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionDataObjectAccessor.d.ts","sourceRoot":"","sources":["../src/TransactionDataObjectAccessor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D;;;;GAIG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,UAAU,CAAe;gBAErB,UAAU,EAAE,oBAAoB,EAAE,EAAE,UAAU,EAAE,MAAM,MAAM;IAKxE;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAezD;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAW3E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAO3C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * TransactionDataObjectAccessor - Queued version of DataObjectAccessor for transactions
3
+ *
4
+ * This accessor queues data object operations locally instead of executing them immediately.
5
+ * Operations are collected and executed atomically when the transaction is committed.
6
+ *
7
+ * Usage: Within a transaction callback via document.withTransaction()
8
+ */
9
+ /**
10
+ * TransactionDataObjectAccessor - queue data object operations for batch execution
11
+ *
12
+ * This is an internal accessor class used within transaction contexts.
13
+ */
14
+ export class TransactionDataObjectAccessor {
15
+ constructor(operations, nextTempId) {
16
+ this.operations = operations;
17
+ this.nextTempId = nextTempId;
18
+ }
19
+ /**
20
+ * Queue creation of a new data object
21
+ * Returns a provisional object with a temporary ID (negative number)
22
+ *
23
+ * The temporary ID can be used to create related data attributes
24
+ * in the same transaction. The real ID is assigned on commit.
25
+ */
26
+ async create(input) {
27
+ const tempId = this.nextTempId();
28
+ this.operations.push({
29
+ type: 'createDataObject',
30
+ input: input,
31
+ tempId,
32
+ });
33
+ // Return provisional object with temp ID
34
+ return {
35
+ id: tempId,
36
+ ...input,
37
+ };
38
+ }
39
+ /**
40
+ * Queue update of an existing data object by ID
41
+ */
42
+ async update(id, updates) {
43
+ this.operations.push({
44
+ type: 'updateDataObject',
45
+ id,
46
+ updates: updates,
47
+ });
48
+ // Return updated object (provisional)
49
+ return { id, ...updates };
50
+ }
51
+ /**
52
+ * Queue deletion of a data object by ID
53
+ */
54
+ async delete(id) {
55
+ this.operations.push({
56
+ type: 'deleteDataObject',
57
+ id,
58
+ });
59
+ return true;
60
+ }
61
+ }
62
+ //# sourceMappingURL=TransactionDataObjectAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionDataObjectAccessor.js","sourceRoot":"","sources":["../src/TransactionDataObjectAccessor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IAIxC,YAAY,UAAkC,EAAE,UAAwB;QACtE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,KAAgC;YACvC,MAAM;SACP,CAAC,CAAC;QAEH,yCAAyC;QACzC,OAAO;YACL,EAAE,EAAE,MAAM;YACV,GAAG,KAAK;SACK,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAA4B;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,kBAAkB;YACxB,EAAE;YACF,OAAO,EAAE,OAAkC;SAC5C,CAAC,CAAC;QAEH,sCAAsC;QACtC,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAgB,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,kBAAkB;YACxB,EAAE;SACH,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TransactionContext.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionContext.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/TransactionContext.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import { TransactionContext } from '../TransactionContext';
2
+ describe('TransactionContext', () => {
3
+ describe('operation queuing', () => {
4
+ it('should start with zero operations', () => {
5
+ const tx = new TransactionContext();
6
+ expect(tx.operationCount).toBe(0);
7
+ });
8
+ it('should queue createDataObject operations', async () => {
9
+ const tx = new TransactionContext();
10
+ const result = await tx.dataObjects.create({ path: '/invoice' });
11
+ expect(tx.operationCount).toBe(1);
12
+ expect(result.id).toBeLessThan(0); // Temp ID is negative
13
+ const ops = tx.getOperations();
14
+ expect(ops[0].type).toBe('createDataObject');
15
+ expect(ops[0].tempId).toBe(result.id);
16
+ });
17
+ it('should queue updateDataObject operations', async () => {
18
+ const tx = new TransactionContext();
19
+ await tx.dataObjects.update(42, { path: '/updated' });
20
+ expect(tx.operationCount).toBe(1);
21
+ const ops = tx.getOperations();
22
+ expect(ops[0].type).toBe('updateDataObject');
23
+ expect(ops[0].id).toBe(42);
24
+ });
25
+ it('should queue deleteDataObject operations', async () => {
26
+ const tx = new TransactionContext();
27
+ await tx.dataObjects.delete(42);
28
+ expect(tx.operationCount).toBe(1);
29
+ const ops = tx.getOperations();
30
+ expect(ops[0].type).toBe('deleteDataObject');
31
+ expect(ops[0].id).toBe(42);
32
+ });
33
+ });
34
+ describe('data attribute operations', () => {
35
+ it('should queue createDataAttribute with real ID', async () => {
36
+ const tx = new TransactionContext();
37
+ await tx.dataAttributes.create(42, { tag: 'amount', decimalValue: 100 });
38
+ const ops = tx.getOperations();
39
+ expect(ops[0].type).toBe('createDataAttribute');
40
+ expect(ops[0].dataObjectId).toBe(42);
41
+ });
42
+ it('should queue createDataAttribute with temp ref', async () => {
43
+ const tx = new TransactionContext();
44
+ const obj = await tx.dataObjects.create({ path: '/invoice' });
45
+ await tx.dataAttributes.create(obj.id, { tag: 'amount' });
46
+ const ops = tx.getOperations();
47
+ expect(ops[1].type).toBe('createDataAttribute');
48
+ expect(ops[1].dataObjectId).toEqual({ $tempId: obj.id });
49
+ });
50
+ it('should queue updateDataAttribute operations', async () => {
51
+ const tx = new TransactionContext();
52
+ await tx.dataAttributes.updateByID(99, { decimalValue: 200 });
53
+ const ops = tx.getOperations();
54
+ expect(ops[0].type).toBe('updateDataAttribute');
55
+ expect(ops[0].id).toBe(99);
56
+ });
57
+ });
58
+ describe('temp ID generation', () => {
59
+ it('should generate unique negative temp IDs', async () => {
60
+ const tx = new TransactionContext();
61
+ const obj1 = await tx.dataObjects.create({ path: '/a' });
62
+ const obj2 = await tx.dataObjects.create({ path: '/b' });
63
+ const attr1 = await tx.dataAttributes.create(obj1.id, { tag: 'x' });
64
+ expect(obj1.id).toBeLessThan(0);
65
+ expect(obj2.id).toBeLessThan(0);
66
+ expect(attr1.id).toBeLessThan(0);
67
+ expect(obj1.id).not.toBe(obj2.id);
68
+ expect(obj1.id).not.toBe(attr1.id);
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=TransactionContext.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionContext.test.js","sourceRoot":"","sources":["../../src/__tests__/TransactionContext.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Integration tests for KddbDocument.transaction() API
3
+ *
4
+ * These tests verify the full transaction workflow through the TypeScript -> WASM -> Go stack.
5
+ * They use mocks for the WASM layer to test the TypeScript transaction logic.
6
+ *
7
+ * The transaction() method provides:
8
+ * 1. Atomicity: All operations succeed or all are rolled back
9
+ * 2. Batching: Multiple operations are sent to WASM in a single call
10
+ * 3. Temp ID resolution: Objects created in a transaction can reference each other via temp IDs
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=transaction.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/transaction.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,380 @@
1
+ /**
2
+ * Integration tests for KddbDocument.transaction() API
3
+ *
4
+ * These tests verify the full transaction workflow through the TypeScript -> WASM -> Go stack.
5
+ * They use mocks for the WASM layer to test the TypeScript transaction logic.
6
+ *
7
+ * The transaction() method provides:
8
+ * 1. Atomicity: All operations succeed or all are rolled back
9
+ * 2. Batching: Multiple operations are sent to WASM in a single call
10
+ * 3. Temp ID resolution: Objects created in a transaction can reference each other via temp IDs
11
+ */
12
+ // Set up global mock functions before importing modules
13
+ const mockExecuteTransaction = jest.fn();
14
+ const mockDocumentGetDataObjects = jest.fn();
15
+ const mockDocumentGetDataAttributesForObject = jest.fn();
16
+ const mockDocumentCreateDataObject = jest.fn();
17
+ const mockDocumentUpdateDataObject = jest.fn();
18
+ const mockDocumentDeleteDataObject = jest.fn();
19
+ const mockWasmFunctions = {
20
+ createDocument: jest.fn(() => 1),
21
+ createDocumentFromText: jest.fn(() => 2),
22
+ createDocumentFromJson: jest.fn(() => 3),
23
+ documentToJson: jest.fn(() => '{}'),
24
+ documentGetRoot: jest.fn(() => null),
25
+ freeDocument: jest.fn(),
26
+ executeTransaction: mockExecuteTransaction,
27
+ documentGetDataObjects: mockDocumentGetDataObjects,
28
+ documentGetDataAttributesForObject: mockDocumentGetDataAttributesForObject,
29
+ documentCreateDataObject: mockDocumentCreateDataObject,
30
+ documentUpdateDataObject: mockDocumentUpdateDataObject,
31
+ documentDeleteDataObject: mockDocumentDeleteDataObject,
32
+ };
33
+ // Apply mock functions to globalThis
34
+ Object.assign(globalThis, mockWasmFunctions);
35
+ // Mock WASM loader
36
+ jest.mock('../wasm/loader', () => ({
37
+ initWasm: jest.fn().mockResolvedValue(undefined),
38
+ isWasmLoaded: jest.fn().mockReturnValue(true),
39
+ cleanupWasm: jest.fn(),
40
+ getWasmInstance: jest.fn().mockResolvedValue({
41
+ exports: {
42
+ memory: { buffer: new ArrayBuffer(1024) },
43
+ }
44
+ }),
45
+ getWasmHelper: jest.fn().mockResolvedValue({
46
+ parseJsonResult: (jsonStr) => {
47
+ if (!jsonStr)
48
+ return null;
49
+ try {
50
+ return JSON.parse(jsonStr);
51
+ }
52
+ catch {
53
+ return null;
54
+ }
55
+ },
56
+ toJson: (obj) => JSON.stringify(obj),
57
+ }),
58
+ }));
59
+ import { KddbDocument } from '../KddbDocument';
60
+ describe('KddbDocument.transaction() integration', () => {
61
+ let doc;
62
+ // Track created objects for verification
63
+ let createdDataObjects = [];
64
+ let createdDataAttributes = new Map();
65
+ beforeEach(async () => {
66
+ jest.clearAllMocks();
67
+ createdDataObjects = [];
68
+ createdDataAttributes = new Map();
69
+ // Setup default mock responses
70
+ mockExecuteTransaction.mockImplementation((docRef, operationsJson) => {
71
+ const operations = JSON.parse(operationsJson);
72
+ const idMappings = {};
73
+ let nextRealId = 100;
74
+ // Process each operation and simulate database effects
75
+ for (const op of operations) {
76
+ if (op.type === 'createDataObject') {
77
+ const realId = nextRealId++;
78
+ idMappings[op.tempId] = realId;
79
+ createdDataObjects.push({
80
+ id: realId,
81
+ ...op.input,
82
+ });
83
+ }
84
+ else if (op.type === 'createDataAttribute') {
85
+ const realId = nextRealId++;
86
+ idMappings[op.tempId] = realId;
87
+ // Resolve dataObjectId if it's a temp ref
88
+ let dataObjectId = op.dataObjectId;
89
+ if (typeof dataObjectId === 'object' && dataObjectId.$tempId) {
90
+ dataObjectId = idMappings[dataObjectId.$tempId];
91
+ }
92
+ const attr = {
93
+ id: realId,
94
+ dataObjectId,
95
+ ...op.input,
96
+ };
97
+ if (!createdDataAttributes.has(dataObjectId)) {
98
+ createdDataAttributes.set(dataObjectId, []);
99
+ }
100
+ createdDataAttributes.get(dataObjectId).push(attr);
101
+ }
102
+ else if (op.type === 'updateDataObject') {
103
+ const obj = createdDataObjects.find(o => o.id === op.id);
104
+ if (obj) {
105
+ Object.assign(obj, op.updates);
106
+ }
107
+ }
108
+ }
109
+ return JSON.stringify({
110
+ success: true,
111
+ idMappings,
112
+ });
113
+ });
114
+ mockDocumentGetDataObjects.mockImplementation(() => {
115
+ return JSON.stringify(createdDataObjects);
116
+ });
117
+ mockDocumentGetDataAttributesForObject.mockImplementation((docRef, objectId) => {
118
+ return JSON.stringify(createdDataAttributes.get(objectId) || []);
119
+ });
120
+ doc = await KddbDocument.create();
121
+ });
122
+ afterEach(() => {
123
+ doc?.dispose();
124
+ });
125
+ it('should commit successful transaction', async () => {
126
+ await doc.transaction(async (tx) => {
127
+ await tx.dataObjects.create({
128
+ path: '/invoice',
129
+ taxonomyRef: 'test/invoice/1.0',
130
+ });
131
+ });
132
+ // Verify executeTransaction was called
133
+ expect(mockExecuteTransaction).toHaveBeenCalledTimes(1);
134
+ const [docRef, opsJson] = mockExecuteTransaction.mock.calls[0];
135
+ expect(docRef).toBe(1);
136
+ const ops = JSON.parse(opsJson);
137
+ expect(ops.length).toBe(1);
138
+ expect(ops[0].type).toBe('createDataObject');
139
+ expect(ops[0].input.path).toBe('/invoice');
140
+ expect(ops[0].input.taxonomyRef).toBe('test/invoice/1.0');
141
+ // Verify object was created (via mocked state)
142
+ const objects = await doc.dataObjects.getAll();
143
+ expect(objects.length).toBe(1);
144
+ expect(objects[0].path).toBe('/invoice');
145
+ });
146
+ it('should rollback on error', async () => {
147
+ // Configure mock to return failure
148
+ mockExecuteTransaction.mockReturnValueOnce(JSON.stringify({
149
+ success: false,
150
+ error: 'Simulated failure',
151
+ }));
152
+ try {
153
+ await doc.transaction(async (tx) => {
154
+ await tx.dataObjects.create({ path: '/invoice' });
155
+ });
156
+ fail('Expected transaction to throw');
157
+ }
158
+ catch (e) {
159
+ expect(e.message).toContain('Simulated failure');
160
+ }
161
+ // Verify nothing was created (mock state wasn't updated due to failure response)
162
+ createdDataObjects = []; // Reset to simulate rollback
163
+ const objects = await doc.dataObjects.getAll();
164
+ expect(objects.length).toBe(0);
165
+ });
166
+ it('should handle callback throwing error', async () => {
167
+ let transactionExecuted = false;
168
+ try {
169
+ await doc.transaction(async (tx) => {
170
+ await tx.dataObjects.create({ path: '/invoice' });
171
+ throw new Error('Simulated callback failure');
172
+ });
173
+ fail('Expected transaction to throw');
174
+ }
175
+ catch (e) {
176
+ expect(e.message).toBe('Simulated callback failure');
177
+ }
178
+ // Transaction should not have been executed since callback threw
179
+ expect(mockExecuteTransaction).not.toHaveBeenCalled();
180
+ });
181
+ it('should handle chained creates with temp refs', async () => {
182
+ await doc.transaction(async (tx) => {
183
+ const invoice = await tx.dataObjects.create({
184
+ path: '/invoice',
185
+ taxonomyRef: 'test/invoice/1.0',
186
+ });
187
+ await tx.dataAttributes.create(invoice.id, {
188
+ tag: 'amount',
189
+ decimalValue: 1500.00,
190
+ });
191
+ });
192
+ // Verify executeTransaction was called with both operations
193
+ expect(mockExecuteTransaction).toHaveBeenCalledTimes(1);
194
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
195
+ const ops = JSON.parse(opsJson);
196
+ expect(ops.length).toBe(2);
197
+ expect(ops[0].type).toBe('createDataObject');
198
+ expect(ops[1].type).toBe('createDataAttribute');
199
+ // Verify temp ref was used
200
+ expect(ops[1].dataObjectId).toEqual({ $tempId: ops[0].tempId });
201
+ // Verify both were created
202
+ const objects = await doc.dataObjects.getAll();
203
+ expect(objects.length).toBe(1);
204
+ const attrs = await doc.dataAttributes.getForDataObject(objects[0].id);
205
+ expect(attrs.length).toBe(1);
206
+ expect(attrs[0].tag).toBe('amount');
207
+ expect(attrs[0].decimalValue).toBe(1500.00);
208
+ });
209
+ it('should handle empty transaction', async () => {
210
+ await doc.transaction(async (tx) => {
211
+ // No operations
212
+ });
213
+ // executeTransaction should NOT be called for empty transactions
214
+ expect(mockExecuteTransaction).not.toHaveBeenCalled();
215
+ // Verify no side effects
216
+ const objects = await doc.dataObjects.getAll();
217
+ expect(objects.length).toBe(0);
218
+ });
219
+ it('should handle multiple operations', async () => {
220
+ // First create some data outside transaction (simulate existing object)
221
+ createdDataObjects.push({
222
+ id: 50,
223
+ path: '/existing',
224
+ });
225
+ await doc.transaction(async (tx) => {
226
+ // Update existing
227
+ await tx.dataObjects.update(50, { path: '/updated' });
228
+ // Create new
229
+ const newObj = await tx.dataObjects.create({ path: '/new' });
230
+ // Create attribute on new object
231
+ await tx.dataAttributes.create(newObj.id, {
232
+ tag: 'status',
233
+ stringValue: 'active',
234
+ });
235
+ });
236
+ // Verify all operations were sent
237
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
238
+ const ops = JSON.parse(opsJson);
239
+ expect(ops.length).toBe(3);
240
+ expect(ops[0].type).toBe('updateDataObject');
241
+ expect(ops[1].type).toBe('createDataObject');
242
+ expect(ops[2].type).toBe('createDataAttribute');
243
+ const objects = await doc.dataObjects.getAll();
244
+ expect(objects.length).toBe(2);
245
+ const updated = objects.find(o => o.id === 50);
246
+ expect(updated?.path).toBe('/updated');
247
+ const newObj = objects.find(o => o.path === '/new');
248
+ expect(newObj).toBeDefined();
249
+ const attrs = await doc.dataAttributes.getForDataObject(newObj.id);
250
+ expect(attrs[0].stringValue).toBe('active');
251
+ });
252
+ it('should handle delete operations', async () => {
253
+ // Create existing data
254
+ createdDataObjects.push({ id: 60, path: '/to-delete' });
255
+ await doc.transaction(async (tx) => {
256
+ await tx.dataObjects.delete(60);
257
+ });
258
+ // Verify delete operation was sent
259
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
260
+ const ops = JSON.parse(opsJson);
261
+ expect(ops.length).toBe(1);
262
+ expect(ops[0].type).toBe('deleteDataObject');
263
+ expect(ops[0].id).toBe(60);
264
+ });
265
+ it('should handle attribute updates', async () => {
266
+ // Setup: existing attribute
267
+ createdDataAttributes.set(70, [{ id: 71, tag: 'amount', decimalValue: 100 }]);
268
+ await doc.transaction(async (tx) => {
269
+ await tx.dataAttributes.updateByID(71, { decimalValue: 200 });
270
+ });
271
+ // Verify update operation was sent
272
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
273
+ const ops = JSON.parse(opsJson);
274
+ expect(ops.length).toBe(1);
275
+ expect(ops[0].type).toBe('updateDataAttribute');
276
+ expect(ops[0].id).toBe(71);
277
+ expect(ops[0].updates.decimalValue).toBe(200);
278
+ });
279
+ it('should handle attribute delete operations', async () => {
280
+ await doc.transaction(async (tx) => {
281
+ await tx.dataAttributes.delete(80);
282
+ });
283
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
284
+ const ops = JSON.parse(opsJson);
285
+ expect(ops.length).toBe(1);
286
+ expect(ops[0].type).toBe('deleteDataAttribute');
287
+ expect(ops[0].id).toBe(80);
288
+ });
289
+ it('should support setValue with type detection', async () => {
290
+ await doc.transaction(async (tx) => {
291
+ await tx.dataAttributes.setValue(90, 'string value');
292
+ await tx.dataAttributes.setValue(91, 123.45);
293
+ await tx.dataAttributes.setValue(92, true);
294
+ });
295
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
296
+ const ops = JSON.parse(opsJson);
297
+ expect(ops.length).toBe(3);
298
+ expect(ops[0].updates.stringValue).toBe('string value');
299
+ expect(ops[1].updates.decimalValue).toBe(123.45);
300
+ expect(ops[2].updates.booleanValue).toBe(true);
301
+ });
302
+ it('should support setConfidence', async () => {
303
+ await doc.transaction(async (tx) => {
304
+ await tx.dataAttributes.setConfidence(95, 0.87);
305
+ });
306
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
307
+ const ops = JSON.parse(opsJson);
308
+ expect(ops.length).toBe(1);
309
+ expect(ops[0].type).toBe('updateDataAttribute');
310
+ expect(ops[0].updates.confidence).toBe(0.87);
311
+ });
312
+ it('should generate unique temp IDs for multiple creates', async () => {
313
+ await doc.transaction(async (tx) => {
314
+ const obj1 = await tx.dataObjects.create({ path: '/a' });
315
+ const obj2 = await tx.dataObjects.create({ path: '/b' });
316
+ const attr1 = await tx.dataAttributes.create(obj1.id, { tag: 'x' });
317
+ const attr2 = await tx.dataAttributes.create(obj2.id, { tag: 'y' });
318
+ // Verify temp IDs are negative and unique
319
+ expect(obj1.id).toBeLessThan(0);
320
+ expect(obj2.id).toBeLessThan(0);
321
+ expect(attr1.id).toBeLessThan(0);
322
+ expect(attr2.id).toBeLessThan(0);
323
+ // All temp IDs should be unique
324
+ const ids = [obj1.id, obj2.id, attr1.id, attr2.id];
325
+ const uniqueIds = new Set(ids);
326
+ expect(uniqueIds.size).toBe(4);
327
+ });
328
+ // Verify all operations were queued
329
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
330
+ const ops = JSON.parse(opsJson);
331
+ expect(ops.length).toBe(4);
332
+ });
333
+ it('should throw when transaction is called on disposed document', async () => {
334
+ doc.dispose();
335
+ await expect(doc.transaction(async () => { })).rejects.toThrow('GoDocument has been disposed');
336
+ });
337
+ it('should handle complex nested object creation', async () => {
338
+ await doc.transaction(async (tx) => {
339
+ // Create parent invoice
340
+ const invoice = await tx.dataObjects.create({
341
+ path: '/invoice',
342
+ taxonomyRef: 'test/invoice/1.0',
343
+ });
344
+ // Create child line items referencing parent
345
+ const lineItem1 = await tx.dataObjects.create({
346
+ path: '/invoice/line_item',
347
+ taxonomyRef: 'test/invoice/1.0',
348
+ parentId: invoice.id, // Note: temp ID is negative
349
+ });
350
+ const lineItem2 = await tx.dataObjects.create({
351
+ path: '/invoice/line_item',
352
+ taxonomyRef: 'test/invoice/1.0',
353
+ parentId: invoice.id,
354
+ });
355
+ // Create attributes on line items
356
+ await tx.dataAttributes.create(lineItem1.id, {
357
+ tag: 'amount',
358
+ decimalValue: 100.00,
359
+ });
360
+ await tx.dataAttributes.create(lineItem2.id, {
361
+ tag: 'amount',
362
+ decimalValue: 200.00,
363
+ });
364
+ });
365
+ // Verify all operations were sent
366
+ const [, opsJson] = mockExecuteTransaction.mock.calls[0];
367
+ const ops = JSON.parse(opsJson);
368
+ expect(ops.length).toBe(5);
369
+ // Verify hierarchical structure
370
+ expect(ops[0].type).toBe('createDataObject'); // invoice
371
+ expect(ops[1].type).toBe('createDataObject'); // line item 1
372
+ expect(ops[2].type).toBe('createDataObject'); // line item 2
373
+ expect(ops[3].type).toBe('createDataAttribute'); // amount 1
374
+ expect(ops[4].type).toBe('createDataAttribute'); // amount 2
375
+ // Line items should reference parent with temp ID
376
+ expect(ops[1].input.parentId).toBe(ops[0].tempId);
377
+ expect(ops[2].input.parentId).toBe(ops[0].tempId);
378
+ });
379
+ });
380
+ //# sourceMappingURL=transaction.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/transaction.integration.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,9 @@ export { DataObjectAccessor } from './DataObjectAccessor';
14
14
  export type { DataObjectInput } from './DataObjectAccessor';
15
15
  export { DataAttributeAccessor } from './DataAttributeAccessor';
16
16
  export type { DataAttributeInput } from './DataAttributeAccessor';
17
+ export { TransactionContext } from './TransactionContext';
18
+ export { TransactionDataObjectAccessor } from './TransactionDataObjectAccessor';
19
+ export { TransactionDataAttributeAccessor } from './TransactionDataAttributeAccessor';
17
20
  export { AuditAccessor } from './AuditAccessor';
18
21
  export { NativeDocumentAccessor } from './NativeDocumentAccessor';
19
22
  export type { NativeDocument, NativeDocumentInput } from './NativeDocumentAccessor';
@@ -70,6 +73,6 @@ export declare class Kodexa {
70
73
  }
71
74
  export { KodexaWorkerDocument } from './worker/KodexaWorkerDocument';
72
75
  export { KodexaWorkerNode } from './worker/KodexaWorkerNode';
73
- export type { WorkerConfig, WorkerNodeData } from './worker/types';
76
+ export type { WorkerConfig, WorkerNodeData, TransactionOperation, TempRef } from './worker/types';
74
77
  export default Kodexa;
75
78
  //# sourceMappingURL=index.d.ts.map