@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.
- package/dist/DataAttributeAccessor.d.ts +4 -5
- package/dist/DataAttributeAccessor.d.ts.map +1 -1
- package/dist/DataAttributeAccessor.js +3 -3
- package/dist/DataAttributeAccessor.js.map +1 -1
- package/dist/KddbDocument.d.ts +28 -0
- package/dist/KddbDocument.d.ts.map +1 -1
- package/dist/KddbDocument.js +59 -0
- package/dist/KddbDocument.js.map +1 -1
- package/dist/TransactionContext.d.ts +55 -0
- package/dist/TransactionContext.d.ts.map +1 -0
- package/dist/TransactionContext.js +64 -0
- package/dist/TransactionContext.js.map +1 -0
- package/dist/TransactionDataAttributeAccessor.d.ts +53 -0
- package/dist/TransactionDataAttributeAccessor.d.ts.map +1 -0
- package/dist/TransactionDataAttributeAccessor.js +105 -0
- package/dist/TransactionDataAttributeAccessor.js.map +1 -0
- package/dist/TransactionDataObjectAccessor.d.ts +38 -0
- package/dist/TransactionDataObjectAccessor.d.ts.map +1 -0
- package/dist/TransactionDataObjectAccessor.js +62 -0
- package/dist/TransactionDataObjectAccessor.js.map +1 -0
- package/dist/__tests__/TransactionContext.test.d.ts +2 -0
- package/dist/__tests__/TransactionContext.test.d.ts.map +1 -0
- package/dist/__tests__/TransactionContext.test.js +72 -0
- package/dist/__tests__/TransactionContext.test.js.map +1 -0
- package/dist/__tests__/transaction.integration.test.d.ts +13 -0
- package/dist/__tests__/transaction.integration.test.d.ts.map +1 -0
- package/dist/__tests__/transaction.integration.test.js +380 -0
- package/dist/__tests__/transaction.integration.test.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/kodexa.wasm +0 -0
- package/dist/types/formula.d.ts +1 -1
- package/dist/types/formula.d.ts.map +1 -1
- package/dist/wasm/types.d.ts +32 -14
- package/dist/wasm/types.d.ts.map +1 -1
- package/dist/worker/types.d.ts +61 -0
- package/dist/worker/types.d.ts.map +1 -1
- 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 @@
|
|
|
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
|