@owneraio/finp2p-sdk-js 0.27.11 → 0.27.13
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/lib/OwneraAPI/finp2p-node-api/custodies.d.ts +5 -0
- package/lib/OwneraAPI/finp2p-node-api/custodies.js +30 -0
- package/lib/OwneraAPI/finp2p-node-api/custodies.js.map +1 -0
- package/lib/OwneraAPI/index.js +2 -0
- package/lib/OwneraAPI/index.js.map +1 -1
- package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.d.ts +1 -0
- package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.js +203 -0
- package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.js.map +1 -0
- package/lib/OwneraAPI/oss-api/computedValues.d.ts +17 -0
- package/lib/OwneraAPI/oss-api/computedValues.js +47 -0
- package/lib/OwneraAPI/oss-api/computedValues.js.map +1 -0
- package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.d.ts +126 -0
- package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.js +245 -0
- package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.js.map +1 -0
- package/lib/OwneraAPI/oss-api/externalQueryHandler.d.ts +67 -0
- package/lib/OwneraAPI/oss-api/externalQueryHandler.js +294 -0
- package/lib/OwneraAPI/oss-api/externalQueryHandler.js.map +1 -0
- package/lib/OwneraAPI/oss-api/filterUtils.d.ts +19 -0
- package/lib/OwneraAPI/oss-api/filterUtils.js +77 -0
- package/lib/OwneraAPI/oss-api/filterUtils.js.map +1 -0
- package/lib/OwneraAPI/oss-api/index.d.ts +6 -0
- package/lib/OwneraAPI/oss-api/index.js +25 -0
- package/lib/OwneraAPI/oss-api/index.js.map +1 -0
- package/lib/OwneraAPI/oss-api/oss.js +955 -692
- package/lib/OwneraAPI/oss-api/oss.js.map +1 -1
- package/lib/OwneraAPI/oss-api/queryUtils.d.ts +20 -0
- package/lib/OwneraAPI/oss-api/queryUtils.js +259 -0
- package/lib/OwneraAPI/oss-api/queryUtils.js.map +1 -0
- package/lib/OwneraAPI/oss-api/queryValidation.d.ts +38 -0
- package/lib/OwneraAPI/oss-api/queryValidation.js +156 -0
- package/lib/OwneraAPI/oss-api/queryValidation.js.map +1 -0
- package/lib/core/sdk.d.ts +2 -1
- package/lib/core/sdk.js +8 -0
- package/lib/core/sdk.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/schemas/assets.json +264 -0
- package/lib/schemas/index.d.ts +40 -0
- package/lib/schemas/index.js +75 -0
- package/lib/schemas/index.js.map +1 -0
- package/lib/schemas/tests/test-assets-schema-execution.d.ts +1 -0
- package/lib/schemas/tests/test-assets-schema-execution.js +261 -0
- package/lib/schemas/tests/test-assets-schema-execution.js.map +1 -0
- package/lib/schemas/tests/test-transactions-filter.d.ts +1 -0
- package/lib/schemas/tests/test-transactions-filter.js +226 -0
- package/lib/schemas/tests/test-transactions-filter.js.map +1 -0
- package/lib/schemas/tests/test-users-inline-fragments.d.ts +1 -0
- package/lib/schemas/tests/test-users-inline-fragments.js +47 -0
- package/lib/schemas/tests/test-users-inline-fragments.js.map +1 -0
- package/lib/schemas/transactions.json +174 -0
- package/lib/schemas/users.json +78 -0
- package/lib/types/Core/OwneraAPI.d.ts +2 -1
- package/lib/types/Core/sdk.d.ts +37 -0
- package/lib/types/Ledgers/Custodies.d.ts +80 -0
- package/lib/types/Ledgers/Custodies.js +3 -0
- package/lib/types/Ledgers/Custodies.js.map +1 -0
- package/lib/types/Ledgers/index.d.ts +1 -0
- package/lib/types/Ledgers/index.js +1 -0
- package/lib/types/Ledgers/index.js.map +1 -1
- package/lib/types/Oss/Oss.d.ts +84 -1
- package/lib/types/Oss/OssResponses.d.ts +4 -1
- package/lib/types/Oss/OssSchemas.d.ts +11 -0
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("../utils");
|
|
4
|
+
const custodies = (connector, logger) => ({
|
|
5
|
+
/**
|
|
6
|
+
* Bind a new custody provider
|
|
7
|
+
*
|
|
8
|
+
* @param request - The bind custody request
|
|
9
|
+
* @param options - Optional request options
|
|
10
|
+
* @returns Promise<CustodyProvider>
|
|
11
|
+
*/
|
|
12
|
+
bind(request, options) {
|
|
13
|
+
logger.debug('BindCustody: POST /custody/bind', request);
|
|
14
|
+
return (0, utils_1.apiPost)('/custody/bind', request, connector, logger, options);
|
|
15
|
+
},
|
|
16
|
+
/**
|
|
17
|
+
* Update an existing custody provider binding
|
|
18
|
+
*
|
|
19
|
+
* @param name - The name of the custody provider to update
|
|
20
|
+
* @param request - The update request
|
|
21
|
+
* @param options - Optional request options
|
|
22
|
+
* @returns Promise<CustodyProvider>
|
|
23
|
+
*/
|
|
24
|
+
update(name, request, options) {
|
|
25
|
+
logger.debug(`UpdateCustody: PATCH /custody/${name}/update`, request);
|
|
26
|
+
return (0, utils_1.apiPatch)(`/custody/${encodeURIComponent(name)}/update`, request, connector, logger, options);
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
exports.default = custodies;
|
|
30
|
+
//# sourceMappingURL=custodies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custodies.js","sourceRoot":"","sources":["../../../src/OwneraAPI/finp2p-node-api/custodies.ts"],"names":[],"mappings":";;AAIA,oCAA6C;AAE7C,MAAM,SAAS,GAAG,CAAC,SAAwB,EAAE,MAAc,EAAa,EAAE,CAAC,CAAC;IAC1E;;;;;;OAMG;IACH,IAAI,CAAC,OAA2B,EAAE,OAAwB;QACxD,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,IAAA,eAAO,EAAsC,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5G,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAY,EAAE,OAAoC,EAAE,OAAwB;QACjF,MAAM,CAAC,KAAK,CAAC,iCAAiC,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,IAAA,gBAAQ,EACb,YAAY,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAC7C,OAAO,EACP,SAAS,EACT,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,kBAAe,SAAS,CAAC"}
|
package/lib/OwneraAPI/index.js
CHANGED
|
@@ -49,6 +49,7 @@ const payments_1 = __importDefault(require("./finp2p-node-api/payments"));
|
|
|
49
49
|
const operations_1 = __importDefault(require("./finp2p-node-api/operations"));
|
|
50
50
|
const messages_1 = __importDefault(require("./finp2p-node-api/messages"));
|
|
51
51
|
const ledgers_1 = __importDefault(require("./finp2p-node-api/ledgers"));
|
|
52
|
+
const custodies_1 = __importDefault(require("./finp2p-node-api/custodies"));
|
|
52
53
|
const policies_1 = __importDefault(require("./finp2p-node-api/policies"));
|
|
53
54
|
const pinningConfig_1 = __importStar(require("./finp2p-node-api/pinningConfig"));
|
|
54
55
|
exports.default = (options) => {
|
|
@@ -97,6 +98,7 @@ exports.default = (options) => {
|
|
|
97
98
|
operations: (0, operations_1.default)(apiConnector, logger),
|
|
98
99
|
messages: (0, messages_1.default)(apiConnector, logger),
|
|
99
100
|
ledgers: (0, ledgers_1.default)(apiConnector, logger),
|
|
101
|
+
custodies: (0, custodies_1.default)(apiConnector, logger),
|
|
100
102
|
policies: (0, policies_1.default)(apiConnector, logger),
|
|
101
103
|
getPinningConfig: (0, pinningConfig_1.default)(gqlClient, logger),
|
|
102
104
|
createPinningConfig: (0, pinningConfig_1.createPinningConfig)(apiConnector, logger),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/OwneraAPI/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/OwneraAPI/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// Test for external query handler utilities
|
|
4
|
+
const externalQueryHandler_1 = require("../externalQueryHandler");
|
|
5
|
+
const queryValidation_1 = require("../queryValidation");
|
|
6
|
+
describe('External Query Handler', () => {
|
|
7
|
+
// Mock query config
|
|
8
|
+
const mockAssetsConfig = {
|
|
9
|
+
name: 'Assets',
|
|
10
|
+
graphqlType: 'assets',
|
|
11
|
+
columns: [
|
|
12
|
+
{
|
|
13
|
+
apiField: 'id',
|
|
14
|
+
header: 'id',
|
|
15
|
+
path: 'id',
|
|
16
|
+
graphqlPath: 'id',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
apiField: 'name',
|
|
20
|
+
header: 'name',
|
|
21
|
+
path: 'name',
|
|
22
|
+
graphqlPath: 'name',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
apiField: 'issuer_id',
|
|
26
|
+
header: 'issuer_id',
|
|
27
|
+
path: 'issuerId',
|
|
28
|
+
graphqlPath: 'issuerId',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
apiField: 'country_of_issue',
|
|
32
|
+
header: 'country_of_issue',
|
|
33
|
+
dataSource: 'external',
|
|
34
|
+
externalQuery: {
|
|
35
|
+
graphqlType: 'users',
|
|
36
|
+
relationshipKey: 'issuer_id',
|
|
37
|
+
relationshipPath: 'issuerId',
|
|
38
|
+
filterFieldName: 'id',
|
|
39
|
+
idField: 'userId',
|
|
40
|
+
certificateType: 'individual_info',
|
|
41
|
+
path: 'address.country',
|
|
42
|
+
graphqlPath: 'id certificates { nodes { type data } }',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
apiField: 'issuer_name',
|
|
47
|
+
header: 'issuer_name',
|
|
48
|
+
dataSource: 'external',
|
|
49
|
+
externalQuery: {
|
|
50
|
+
graphqlType: 'users',
|
|
51
|
+
relationshipKey: 'issuer_id',
|
|
52
|
+
relationshipPath: 'issuerId',
|
|
53
|
+
filterFieldName: 'id',
|
|
54
|
+
idField: 'userId',
|
|
55
|
+
path: 'name',
|
|
56
|
+
graphqlPath: 'name',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
const selectedFields = ['id', 'name', 'issuer_id', 'country_of_issue', 'issuer_name'];
|
|
62
|
+
describe('identifyExternalQueries', () => {
|
|
63
|
+
it('should identify external queries and group them correctly', () => {
|
|
64
|
+
const externalQueries = (0, externalQueryHandler_1.identifyExternalQueries)(mockAssetsConfig, selectedFields);
|
|
65
|
+
expect(externalQueries.size).toBe(1);
|
|
66
|
+
// QueryKey is now "graphqlType:relationshipKey:filterFieldName"
|
|
67
|
+
const queryKey = 'users:issuer_id:id';
|
|
68
|
+
const usersQuery = externalQueries.get(queryKey);
|
|
69
|
+
expect(usersQuery).toBeDefined();
|
|
70
|
+
expect(usersQuery.fields.length).toBe(2);
|
|
71
|
+
expect(usersQuery.graphqlType).toBe('users');
|
|
72
|
+
expect(usersQuery.relationshipKey).toBe('issuer_id');
|
|
73
|
+
expect(usersQuery.filterFieldName).toBe('id');
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('getValueFromPath', () => {
|
|
77
|
+
const testObject = {
|
|
78
|
+
name: 'John Doe',
|
|
79
|
+
certificates: {
|
|
80
|
+
nodes: [
|
|
81
|
+
{ type: 'kyc', data: { verified: true } },
|
|
82
|
+
{ type: 'individual_info', data: { country: 'USA', state: 'CA' } },
|
|
83
|
+
{ type: 'tax', data: { id: '123' } },
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
it('should extract values from nested array paths', () => {
|
|
88
|
+
const countryValue = (0, externalQueryHandler_1.getValueFromPath)(testObject, 'certificates.nodes[i].data.country');
|
|
89
|
+
expect(Array.isArray(countryValue)).toBe(true);
|
|
90
|
+
expect(countryValue).toContain('USA');
|
|
91
|
+
});
|
|
92
|
+
it('should extract simple field values', () => {
|
|
93
|
+
const nameValue = (0, externalQueryHandler_1.getValueFromPath)(testObject, 'name');
|
|
94
|
+
expect(nameValue).toBe('John Doe');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe('mergeExternalData', () => {
|
|
98
|
+
const mainData = [
|
|
99
|
+
{ id: 'asset-1', name: 'Asset One', issuerId: 'user-1' },
|
|
100
|
+
{ id: 'asset-2', name: 'Asset Two', issuerId: 'user-2' },
|
|
101
|
+
{ id: 'asset-3', name: 'Asset Three', issuerId: 'user-1' },
|
|
102
|
+
];
|
|
103
|
+
const externalResults = [
|
|
104
|
+
{
|
|
105
|
+
graphqlType: 'users',
|
|
106
|
+
queryKey: 'users:issuer_id:id',
|
|
107
|
+
data: [
|
|
108
|
+
{
|
|
109
|
+
userId: 'user-1',
|
|
110
|
+
name: 'Issuer One',
|
|
111
|
+
certificates: {
|
|
112
|
+
nodes: [{ type: 'individual_info', data: '{"address":{"country":"USA"}}' }],
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
userId: 'user-2',
|
|
117
|
+
name: 'Issuer Two',
|
|
118
|
+
certificates: {
|
|
119
|
+
nodes: [{ type: 'individual_info', data: '{"address":{"country":"UK"}}' }],
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
const mockLogger = {
|
|
126
|
+
debug: jest.fn(),
|
|
127
|
+
info: jest.fn(),
|
|
128
|
+
warn: jest.fn(),
|
|
129
|
+
error: jest.fn(),
|
|
130
|
+
};
|
|
131
|
+
it('should merge external data into main results correctly', () => {
|
|
132
|
+
const externalQueries = (0, externalQueryHandler_1.identifyExternalQueries)(mockAssetsConfig, selectedFields);
|
|
133
|
+
const enrichedData = (0, externalQueryHandler_1.mergeExternalData)(mainData, externalResults, externalQueries, mockAssetsConfig, selectedFields, mockLogger);
|
|
134
|
+
expect(enrichedData).toHaveLength(3);
|
|
135
|
+
// Check Asset One
|
|
136
|
+
expect(enrichedData[0].country_of_issue).toBe('USA');
|
|
137
|
+
expect(enrichedData[0].issuer_name).toBe('Issuer One');
|
|
138
|
+
// Check Asset Two
|
|
139
|
+
expect(enrichedData[1].country_of_issue).toBe('UK');
|
|
140
|
+
expect(enrichedData[1].issuer_name).toBe('Issuer Two');
|
|
141
|
+
// Check Asset Three (should also have Issuer One data)
|
|
142
|
+
expect(enrichedData[2].country_of_issue).toBe('USA');
|
|
143
|
+
expect(enrichedData[2].issuer_name).toBe('Issuer One');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe('validateExternalQueryConfig', () => {
|
|
147
|
+
it('should validate a correct configuration', () => {
|
|
148
|
+
expect(() => (0, externalQueryHandler_1.validateExternalQueryConfig)(mockAssetsConfig)).not.toThrow();
|
|
149
|
+
});
|
|
150
|
+
it('should throw error for missing externalQuery', () => {
|
|
151
|
+
const invalidConfig = {
|
|
152
|
+
name: 'Invalid',
|
|
153
|
+
graphqlType: 'invalid',
|
|
154
|
+
columns: [
|
|
155
|
+
{
|
|
156
|
+
apiField: 'bad_field',
|
|
157
|
+
header: 'bad_field',
|
|
158
|
+
dataSource: 'external',
|
|
159
|
+
// Missing externalQuery
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
expect(() => (0, externalQueryHandler_1.validateExternalQueryConfig)(invalidConfig)).toThrow();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('Query Validation', () => {
|
|
168
|
+
describe('validateSelectedFields', () => {
|
|
169
|
+
it('should detect GraphQL syntax in field names', () => {
|
|
170
|
+
const invalidFields = ['id', 'certificates', '{', 'nodes', '}'];
|
|
171
|
+
expect(() => (0, queryValidation_1.validateSelectedFields)(invalidFields)).toThrow(/GraphQL syntax/);
|
|
172
|
+
expect(() => (0, queryValidation_1.validateSelectedFields)(invalidFields)).toThrow(/graphqlPath/);
|
|
173
|
+
});
|
|
174
|
+
it('should pass for valid field names', () => {
|
|
175
|
+
const validFields = ['id', 'name', 'issuer_id', 'country_of_issue'];
|
|
176
|
+
expect(() => (0, queryValidation_1.validateSelectedFields)(validFields)).not.toThrow();
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
describe('validateFieldsExistInConfig', () => {
|
|
180
|
+
const mockConfig = {
|
|
181
|
+
name: 'Test',
|
|
182
|
+
graphqlType: 'testType',
|
|
183
|
+
columns: [
|
|
184
|
+
{ apiField: 'id', header: 'id', path: 'id', graphqlPath: 'id' },
|
|
185
|
+
{ apiField: 'name', header: 'name', path: 'name', graphqlPath: 'name' },
|
|
186
|
+
],
|
|
187
|
+
};
|
|
188
|
+
it('should detect GraphQL tokens in invalid fields', () => {
|
|
189
|
+
const invalidFields = ['id', 'nodes', 'data', '{'];
|
|
190
|
+
expect(() => (0, queryValidation_1.validateFieldsExistInConfig)(invalidFields, mockConfig)).toThrow(/GraphQL path tokens/);
|
|
191
|
+
expect(() => (0, queryValidation_1.validateFieldsExistInConfig)(invalidFields, mockConfig)).toThrow(/apiField names/);
|
|
192
|
+
});
|
|
193
|
+
it('should provide helpful message for regular invalid fields', () => {
|
|
194
|
+
const invalidFields = ['id', 'unknown_field'];
|
|
195
|
+
expect(() => (0, queryValidation_1.validateFieldsExistInConfig)(invalidFields, mockConfig)).toThrow(/Available fields/);
|
|
196
|
+
});
|
|
197
|
+
it('should pass for valid fields', () => {
|
|
198
|
+
const validFields = ['id', 'name'];
|
|
199
|
+
expect(() => (0, queryValidation_1.validateFieldsExistInConfig)(validFields, mockConfig)).not.toThrow();
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
//# sourceMappingURL=externalQueryHandler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalQueryHandler.test.js","sourceRoot":"","sources":["../../../../src/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ComputedValueType } from '../../types/Oss/Oss';
|
|
2
|
+
/**
|
|
3
|
+
* Computes a runtime value based on the ComputedValueType
|
|
4
|
+
* @param computedValue - The type of computed value to generate
|
|
5
|
+
* @returns The computed value
|
|
6
|
+
*/
|
|
7
|
+
export declare function computeRuntimeValue(computedValue: ComputedValueType | string): any;
|
|
8
|
+
/**
|
|
9
|
+
* Applies computed values to a data row based on column configuration
|
|
10
|
+
* @param row - The data row to populate
|
|
11
|
+
* @param columns - Array of column configurations
|
|
12
|
+
* @returns The row with computed values populated
|
|
13
|
+
*/
|
|
14
|
+
export declare function applyComputedValues(row: Record<string, any>, columns: Array<{
|
|
15
|
+
apiField: string;
|
|
16
|
+
computedValue?: string;
|
|
17
|
+
}>): Record<string, any>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeRuntimeValue = computeRuntimeValue;
|
|
4
|
+
exports.applyComputedValues = applyComputedValues;
|
|
5
|
+
/**
|
|
6
|
+
* Computes a runtime value based on the ComputedValueType
|
|
7
|
+
* @param computedValue - The type of computed value to generate
|
|
8
|
+
* @returns The computed value
|
|
9
|
+
*/
|
|
10
|
+
function computeRuntimeValue(computedValue) {
|
|
11
|
+
switch (computedValue) {
|
|
12
|
+
case 'currentTimestamp':
|
|
13
|
+
// Returns milliseconds since epoch
|
|
14
|
+
return Date.now();
|
|
15
|
+
case 'currentDate':
|
|
16
|
+
// Returns ISO 8601 date string (e.g., "2025-01-15T10:30:45.123Z")
|
|
17
|
+
return new Date().toISOString();
|
|
18
|
+
case 'currentDateLocal':
|
|
19
|
+
// Returns localized date string
|
|
20
|
+
return new Date().toLocaleString();
|
|
21
|
+
case 'currentUnixTime':
|
|
22
|
+
// Returns seconds since epoch
|
|
23
|
+
return Math.floor(Date.now() / 1000);
|
|
24
|
+
default:
|
|
25
|
+
// For custom computed values, return undefined
|
|
26
|
+
// This allows for future extensibility
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Applies computed values to a data row based on column configuration
|
|
32
|
+
* @param row - The data row to populate
|
|
33
|
+
* @param columns - Array of column configurations
|
|
34
|
+
* @returns The row with computed values populated
|
|
35
|
+
*/
|
|
36
|
+
function applyComputedValues(row, columns) {
|
|
37
|
+
columns.forEach((col) => {
|
|
38
|
+
if (col.computedValue) {
|
|
39
|
+
const value = computeRuntimeValue(col.computedValue);
|
|
40
|
+
if (value !== undefined) {
|
|
41
|
+
row[col.apiField] = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return row;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=computedValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computedValues.js","sourceRoot":"","sources":["../../../src/OwneraAPI/oss-api/computedValues.ts"],"names":[],"mappings":";;AAOA,kDAuBC;AAQD,kDAaC;AAjDD;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,aAAyC;IAC3E,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,kBAAkB;YACrB,mCAAmC;YACnC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAEpB,KAAK,aAAa;YAChB,kEAAkE;YAClE,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAElC,KAAK,kBAAkB;YACrB,gCAAgC;YAChC,OAAO,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;QAErC,KAAK,iBAAiB;YACpB,8BAA8B;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEvC;YACE,+CAA+C;YAC/C,uCAAuC;YACvC,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,GAAwB,EACxB,OAA4D;IAE5D,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { QueryConfig } from '../../types/Oss/Oss';
|
|
2
|
+
import { PaginateInput } from '../../types/Oss';
|
|
3
|
+
import { Logger } from '../../types/Core';
|
|
4
|
+
/**
|
|
5
|
+
* Options for executing dynamic query with external data
|
|
6
|
+
*/
|
|
7
|
+
export interface ExecuteDynamicQueryWithExternalOptions {
|
|
8
|
+
queryConfig: QueryConfig;
|
|
9
|
+
selectedFields: string[];
|
|
10
|
+
filter?: Record<string, any>;
|
|
11
|
+
paginate?: PaginateInput;
|
|
12
|
+
relationshipKey?: string;
|
|
13
|
+
fetchExternalData?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* External data fetcher function type
|
|
17
|
+
* This function should execute the external query and return the results
|
|
18
|
+
*
|
|
19
|
+
* @param graphqlType - The GraphQL type to query (e.g., 'users', 'assets')
|
|
20
|
+
* @param filterFieldName - The field name to use for filtering (e.g., 'id', 'assetIds')
|
|
21
|
+
* @param filterIds - Array of IDs to filter by
|
|
22
|
+
* @param fields - Array of field configurations from the external query definition.
|
|
23
|
+
* IMPORTANT: The `graphqlPath` in these fields describes the GraphQL structure
|
|
24
|
+
* for extracting values AFTER fetching, not the fields to query.
|
|
25
|
+
* Use `apiField` to identify which values to extract, and `path` for extraction logic.
|
|
26
|
+
*
|
|
27
|
+
* @returns Promise resolving to array of fetched records
|
|
28
|
+
*
|
|
29
|
+
* @example Standard implementation using hardcoded methods
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const fetcher = async (graphqlType, filterFieldName, filterIds, fields) => {
|
|
32
|
+
* if (graphqlType === 'users') {
|
|
33
|
+
* const result = await api.oss.getUsers({
|
|
34
|
+
* filter: { [filterFieldName]: filterIds }
|
|
35
|
+
* });
|
|
36
|
+
* return result.data;
|
|
37
|
+
* }
|
|
38
|
+
* // ... handle other types
|
|
39
|
+
* };
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Custom implementation using executeDynamicQuery
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const fetcher = async (graphqlType, filterFieldName, filterIds, fields) => {
|
|
45
|
+
* if (graphqlType === 'users') {
|
|
46
|
+
* const usersSchema = getUsersSchema(); // Get proper QueryConfig for users
|
|
47
|
+
* // Use schema's apiField names, NOT the graphqlPath strings from fields parameter
|
|
48
|
+
* const result = await api.query.executeDynamicQuery({
|
|
49
|
+
* queryConfig: usersSchema,
|
|
50
|
+
* selectedFields: ['user_id', 'account_fin_id'], // Use actual field names from schema
|
|
51
|
+
* filter: { [filterFieldName]: filterIds }
|
|
52
|
+
* });
|
|
53
|
+
* return result.data;
|
|
54
|
+
* }
|
|
55
|
+
* };
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export type ExternalDataFetcher = (graphqlType: string, filterFieldName: string, filterIds: string[], fields: {
|
|
59
|
+
apiField: string;
|
|
60
|
+
path: string;
|
|
61
|
+
graphqlPath: string;
|
|
62
|
+
certificateType?: string;
|
|
63
|
+
staticFilters?: Record<string, any>;
|
|
64
|
+
intentFilterKey?: string;
|
|
65
|
+
}[], intentIds?: string[]) => Promise<any[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Executes a dynamic query and automatically fetches and merges external data
|
|
68
|
+
*
|
|
69
|
+
* @param executeDynamicQuery - The base executeDynamicQuery function
|
|
70
|
+
* @param externalDataFetcher - Function to fetch external data
|
|
71
|
+
* @param options - Query options
|
|
72
|
+
* @param logger - Logger instance
|
|
73
|
+
* @returns Query results with external data merged
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const result = await executeDynamicQueryWithExternal(
|
|
78
|
+
* api.query.executeDynamicQuery,
|
|
79
|
+
* async (graphqlType, filterIds) => {
|
|
80
|
+
* if (graphqlType === 'users') {
|
|
81
|
+
* const usersResult = await api.oss.getUsers({
|
|
82
|
+
* filter: { id: filterIds }
|
|
83
|
+
* });
|
|
84
|
+
* return usersResult.data;
|
|
85
|
+
* }
|
|
86
|
+
* return [];
|
|
87
|
+
* },
|
|
88
|
+
* {
|
|
89
|
+
* queryConfig: assetsSchema,
|
|
90
|
+
* selectedFields: ['id', 'name', 'country_of_issue'],
|
|
91
|
+
* relationshipKey: 'issuer_id',
|
|
92
|
+
* },
|
|
93
|
+
* logger
|
|
94
|
+
* );
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function executeDynamicQueryWithExternal(executeDynamicQuery: (request: {
|
|
98
|
+
queryConfig: QueryConfig;
|
|
99
|
+
selectedFields: string[];
|
|
100
|
+
filter?: Record<string, any>;
|
|
101
|
+
paginate?: PaginateInput;
|
|
102
|
+
}) => Promise<{
|
|
103
|
+
data: any[];
|
|
104
|
+
pageInfo?: any;
|
|
105
|
+
}>, externalDataFetcher: ExternalDataFetcher, options: ExecuteDynamicQueryWithExternalOptions, logger?: Logger): Promise<{
|
|
106
|
+
data: any[];
|
|
107
|
+
pageInfo?: any;
|
|
108
|
+
externalQueriesExecuted?: string[];
|
|
109
|
+
}>;
|
|
110
|
+
/**
|
|
111
|
+
* Creates a simplified external data fetcher for common use cases
|
|
112
|
+
* @param api - The OwneraAPI instance
|
|
113
|
+
* @returns External data fetcher function
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* const fetcher = createStandardExternalDataFetcher(api);
|
|
118
|
+
* const result = await executeDynamicQueryWithExternal(
|
|
119
|
+
* api.query.executeDynamicQuery,
|
|
120
|
+
* fetcher,
|
|
121
|
+
* options,
|
|
122
|
+
* logger
|
|
123
|
+
* );
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export declare function createStandardExternalDataFetcher(api: any): ExternalDataFetcher;
|