@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.
Files changed (64) hide show
  1. package/lib/OwneraAPI/finp2p-node-api/custodies.d.ts +5 -0
  2. package/lib/OwneraAPI/finp2p-node-api/custodies.js +30 -0
  3. package/lib/OwneraAPI/finp2p-node-api/custodies.js.map +1 -0
  4. package/lib/OwneraAPI/index.js +2 -0
  5. package/lib/OwneraAPI/index.js.map +1 -1
  6. package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.d.ts +1 -0
  7. package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.js +203 -0
  8. package/lib/OwneraAPI/oss-api/__tests__/externalQueryHandler.test.js.map +1 -0
  9. package/lib/OwneraAPI/oss-api/computedValues.d.ts +17 -0
  10. package/lib/OwneraAPI/oss-api/computedValues.js +47 -0
  11. package/lib/OwneraAPI/oss-api/computedValues.js.map +1 -0
  12. package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.d.ts +126 -0
  13. package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.js +245 -0
  14. package/lib/OwneraAPI/oss-api/executeDynamicQueryWithExternal.js.map +1 -0
  15. package/lib/OwneraAPI/oss-api/externalQueryHandler.d.ts +67 -0
  16. package/lib/OwneraAPI/oss-api/externalQueryHandler.js +294 -0
  17. package/lib/OwneraAPI/oss-api/externalQueryHandler.js.map +1 -0
  18. package/lib/OwneraAPI/oss-api/filterUtils.d.ts +19 -0
  19. package/lib/OwneraAPI/oss-api/filterUtils.js +77 -0
  20. package/lib/OwneraAPI/oss-api/filterUtils.js.map +1 -0
  21. package/lib/OwneraAPI/oss-api/index.d.ts +6 -0
  22. package/lib/OwneraAPI/oss-api/index.js +25 -0
  23. package/lib/OwneraAPI/oss-api/index.js.map +1 -0
  24. package/lib/OwneraAPI/oss-api/oss.js +955 -692
  25. package/lib/OwneraAPI/oss-api/oss.js.map +1 -1
  26. package/lib/OwneraAPI/oss-api/queryUtils.d.ts +20 -0
  27. package/lib/OwneraAPI/oss-api/queryUtils.js +259 -0
  28. package/lib/OwneraAPI/oss-api/queryUtils.js.map +1 -0
  29. package/lib/OwneraAPI/oss-api/queryValidation.d.ts +38 -0
  30. package/lib/OwneraAPI/oss-api/queryValidation.js +156 -0
  31. package/lib/OwneraAPI/oss-api/queryValidation.js.map +1 -0
  32. package/lib/core/sdk.d.ts +2 -1
  33. package/lib/core/sdk.js +8 -0
  34. package/lib/core/sdk.js.map +1 -1
  35. package/lib/index.d.ts +1 -0
  36. package/lib/index.js +1 -0
  37. package/lib/index.js.map +1 -1
  38. package/lib/schemas/assets.json +264 -0
  39. package/lib/schemas/index.d.ts +40 -0
  40. package/lib/schemas/index.js +75 -0
  41. package/lib/schemas/index.js.map +1 -0
  42. package/lib/schemas/tests/test-assets-schema-execution.d.ts +1 -0
  43. package/lib/schemas/tests/test-assets-schema-execution.js +261 -0
  44. package/lib/schemas/tests/test-assets-schema-execution.js.map +1 -0
  45. package/lib/schemas/tests/test-transactions-filter.d.ts +1 -0
  46. package/lib/schemas/tests/test-transactions-filter.js +226 -0
  47. package/lib/schemas/tests/test-transactions-filter.js.map +1 -0
  48. package/lib/schemas/tests/test-users-inline-fragments.d.ts +1 -0
  49. package/lib/schemas/tests/test-users-inline-fragments.js +47 -0
  50. package/lib/schemas/tests/test-users-inline-fragments.js.map +1 -0
  51. package/lib/schemas/transactions.json +174 -0
  52. package/lib/schemas/users.json +78 -0
  53. package/lib/types/Core/OwneraAPI.d.ts +2 -1
  54. package/lib/types/Core/sdk.d.ts +37 -0
  55. package/lib/types/Ledgers/Custodies.d.ts +80 -0
  56. package/lib/types/Ledgers/Custodies.js +3 -0
  57. package/lib/types/Ledgers/Custodies.js.map +1 -0
  58. package/lib/types/Ledgers/index.d.ts +1 -0
  59. package/lib/types/Ledgers/index.js +1 -0
  60. package/lib/types/Ledgers/index.js.map +1 -1
  61. package/lib/types/Oss/Oss.d.ts +84 -1
  62. package/lib/types/Oss/OssResponses.d.ts +4 -1
  63. package/lib/types/Oss/OssSchemas.d.ts +11 -0
  64. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { Logger } from '../../types';
3
+ import { Custodies } from '../../types/Ledgers';
4
+ declare const custodies: (connector: AxiosInstance, logger: Logger) => Custodies;
5
+ export default custodies;
@@ -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"}
@@ -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,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;