@explorins/pers-sdk 1.6.28 → 1.6.32
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/analytics/models/index.d.ts +5 -45
- package/dist/analytics/models/index.d.ts.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +12 -17
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign.cjs +1 -1
- package/dist/campaign.js +1 -1
- package/dist/chunks/{campaign-service-CWK9I388.cjs → campaign-service-BkZcaxf5.cjs} +27 -26
- package/dist/chunks/campaign-service-BkZcaxf5.cjs.map +1 -0
- package/dist/chunks/{campaign-service-Dd7gMjC9.js → campaign-service-DVkWLB7Y.js} +27 -26
- package/dist/chunks/campaign-service-DVkWLB7Y.js.map +1 -0
- package/dist/chunks/{pers-sdk-BOphq5pm.cjs → pers-sdk-BbflloQE.cjs} +74 -5
- package/dist/chunks/{pers-sdk-BOphq5pm.cjs.map → pers-sdk-BbflloQE.cjs.map} +1 -1
- package/dist/chunks/{pers-sdk-xQqoP4zx.js → pers-sdk-Cb3gtslf.js} +72 -3
- package/dist/chunks/{pers-sdk-xQqoP4zx.js.map → pers-sdk-Cb3gtslf.js.map} +1 -1
- package/dist/chunks/transaction-service-B7h_4Hg3.js +333 -0
- package/dist/chunks/transaction-service-B7h_4Hg3.js.map +1 -0
- package/dist/chunks/transaction-service-CXjTHCFu.cjs +336 -0
- package/dist/chunks/transaction-service-CXjTHCFu.cjs.map +1 -0
- package/dist/core.cjs +3 -3
- package/dist/core.js +3 -3
- package/dist/index.cjs +5 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/managers/analytics-manager.d.ts +1 -1
- package/dist/managers/transaction-manager.d.ts +61 -5
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/package.json +2 -2
- package/dist/transaction/api/transaction-api.d.ts +10 -12
- package/dist/transaction/api/transaction-api.d.ts.map +1 -1
- package/dist/transaction/index.d.ts +0 -1
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction/models/index.d.ts +0 -34
- package/dist/transaction/models/index.d.ts.map +1 -1
- package/dist/transaction/services/transaction-service.d.ts +19 -6
- package/dist/transaction/services/transaction-service.d.ts.map +1 -1
- package/dist/transaction.cjs +4 -346
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.js +2 -341
- package/dist/transaction.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunks/campaign-service-CWK9I388.cjs.map +0 -1
- package/dist/chunks/campaign-service-Dd7gMjC9.js.map +0 -1
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { TransactionRole } from '@explorins/pers-shared';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Platform-Agnostic Transaction API Client (UPDATED FOR NEW RESTful ENDPOINTS)
|
|
5
|
+
*
|
|
6
|
+
* Handles transaction operations using the PERS backend.
|
|
7
|
+
* Uses @explorins/pers-shared DTOs for consistency with backend.
|
|
8
|
+
*
|
|
9
|
+
* MIGRATION NOTES:
|
|
10
|
+
* - All endpoints changed from /transaction to /transactions
|
|
11
|
+
* - Role-based paths removed (no more /auth, /admin, /business in URLs)
|
|
12
|
+
* - New RESTful resource-based structure
|
|
13
|
+
* - Added new client-side transaction flow methods
|
|
14
|
+
* - Enhanced admin query capabilities
|
|
15
|
+
*/
|
|
16
|
+
class TransactionApi {
|
|
17
|
+
constructor(apiClient) {
|
|
18
|
+
this.apiClient = apiClient;
|
|
19
|
+
this.basePath = '/transactions';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get transaction by ID (public endpoint)
|
|
23
|
+
*
|
|
24
|
+
* UPDATED: /transaction/{id} → /transactions/{id}
|
|
25
|
+
*/
|
|
26
|
+
async getTransactionById(transactionId) {
|
|
27
|
+
return this.apiClient.get(`${this.basePath}/${transactionId}`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Unique method to create a transaction
|
|
31
|
+
* @param request
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
34
|
+
async createTransaction(request) {
|
|
35
|
+
return this.apiClient.post(`${this.basePath}`, request);
|
|
36
|
+
// return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);
|
|
37
|
+
}
|
|
38
|
+
// ==========================================
|
|
39
|
+
// AUTHENTICATED USER OPERATIONS
|
|
40
|
+
// ==========================================
|
|
41
|
+
/**
|
|
42
|
+
* AUTH: Get user transaction history with role-based filtering
|
|
43
|
+
*
|
|
44
|
+
* UPDATED: Uses consolidated /transactions/me endpoint with role parameter
|
|
45
|
+
* @param role - Optional role filter (SENDER, RECIPIENT). If undefined, returns all user transactions
|
|
46
|
+
* @param limit - Maximum number of transactions to return (default: 1000)
|
|
47
|
+
*/
|
|
48
|
+
async getUserTransactionHistory(role, limit = 1000) {
|
|
49
|
+
const params = new URLSearchParams({
|
|
50
|
+
limit: limit.toString(),
|
|
51
|
+
timestamp: Date.now().toString()
|
|
52
|
+
});
|
|
53
|
+
// Add role parameter if specified
|
|
54
|
+
if (role === TransactionRole.SENDER) {
|
|
55
|
+
params.set('role', TransactionRole.SENDER);
|
|
56
|
+
}
|
|
57
|
+
else if (role === TransactionRole.RECIPIENT) {
|
|
58
|
+
params.set('role', TransactionRole.RECIPIENT);
|
|
59
|
+
}
|
|
60
|
+
// If no role specified, get all transactions for the user
|
|
61
|
+
const response = await this.apiClient.get(`${this.basePath}/me?${params.toString()}`);
|
|
62
|
+
return [...(response.data || [])];
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* AUTH: Prepare existing transaction for client-side signing
|
|
66
|
+
*
|
|
67
|
+
* NEW ENDPOINT: GET /transactions/{id}/prepare
|
|
68
|
+
*/
|
|
69
|
+
async prepareExistingTransaction(transactionId) {
|
|
70
|
+
return this.apiClient.get(`${this.basePath}/${transactionId}/prepare`);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* AUTH: Submit client-side signed transaction
|
|
74
|
+
*
|
|
75
|
+
* NEW ENDPOINT: POST /transactions/submit
|
|
76
|
+
*/
|
|
77
|
+
async submitSignedTransaction(signedTxData) {
|
|
78
|
+
return this.apiClient.post(`${this.basePath}/submit`, signedTxData);
|
|
79
|
+
}
|
|
80
|
+
// ==========================================
|
|
81
|
+
// BUSINESS OPERATIONS
|
|
82
|
+
// ==========================================
|
|
83
|
+
/**
|
|
84
|
+
* BUSINESS: Create business transaction
|
|
85
|
+
*
|
|
86
|
+
* UPDATED: /transaction/business/transaction → /transactions/business
|
|
87
|
+
*/
|
|
88
|
+
/* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
89
|
+
return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);
|
|
90
|
+
} */
|
|
91
|
+
// ==========================================
|
|
92
|
+
// ADMIN OPERATIONS
|
|
93
|
+
// ==========================================
|
|
94
|
+
/**
|
|
95
|
+
* ADMIN: Create admin transaction
|
|
96
|
+
*
|
|
97
|
+
* UPDATED: /transaction/admin/transaction → /transactions/admin
|
|
98
|
+
*/
|
|
99
|
+
/* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
100
|
+
// return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);
|
|
101
|
+
return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);
|
|
102
|
+
} */
|
|
103
|
+
/**
|
|
104
|
+
* AUTH: Prepare client signed transaction (Create new transaction for signing)
|
|
105
|
+
*
|
|
106
|
+
* UPDATED: /transaction/auth/prepare-signing → /transactions (POST)
|
|
107
|
+
*/
|
|
108
|
+
async prepareClientSignedTransaction(request) {
|
|
109
|
+
return this.apiClient.post(`${this.basePath}`, request);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* ADMIN: Get all tenant transactions
|
|
113
|
+
*
|
|
114
|
+
* UPDATED: /transaction/admin → /transactions
|
|
115
|
+
*/
|
|
116
|
+
async getTenantTransactions(limit = 1000) {
|
|
117
|
+
const params = new URLSearchParams({
|
|
118
|
+
limit: limit.toString()
|
|
119
|
+
});
|
|
120
|
+
const result = await this.apiClient.get(`${this.basePath}?${params.toString()}`);
|
|
121
|
+
// Extract data array from paginated response
|
|
122
|
+
return [...(result.data || [])];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* ADMIN: Get paginated transactions with filtering and sorting
|
|
126
|
+
*
|
|
127
|
+
* UPDATED: /transaction/admin → /transactions (same endpoint, better structure)
|
|
128
|
+
*/
|
|
129
|
+
async getPaginatedTransactions(params) {
|
|
130
|
+
const queryString = this.buildQueryParams(params).toString();
|
|
131
|
+
return this.apiClient.get(`${this.basePath}?${queryString}`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* ADMIN: Export transactions to CSV
|
|
135
|
+
*
|
|
136
|
+
* UPDATED: /transaction/admin/export/csv → /transactions/export/csv
|
|
137
|
+
*/
|
|
138
|
+
async exportTransactionsCSV() {
|
|
139
|
+
return this.apiClient.get(`${this.basePath}/export/csv`, 'blob');
|
|
140
|
+
}
|
|
141
|
+
// ==========================================
|
|
142
|
+
// NEW ADMIN QUERY METHODS
|
|
143
|
+
// ==========================================
|
|
144
|
+
/**
|
|
145
|
+
* ADMIN: Query transactions by sender
|
|
146
|
+
*
|
|
147
|
+
* NEW ENDPOINT: POST /transactions/query-sender
|
|
148
|
+
*/
|
|
149
|
+
/**
|
|
150
|
+
* Query transactions by sender using unified endpoint
|
|
151
|
+
*/
|
|
152
|
+
async queryTransactionsBySender(accountSelector) {
|
|
153
|
+
// Build query parameters safely
|
|
154
|
+
const queryParams = {};
|
|
155
|
+
if (accountSelector.accountId) {
|
|
156
|
+
queryParams['participantId'] = accountSelector.accountId;
|
|
157
|
+
}
|
|
158
|
+
queryParams['role'] = TransactionRole.SENDER.toString();
|
|
159
|
+
const params = new URLSearchParams(queryParams);
|
|
160
|
+
return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Query transactions by recipient using unified endpoint
|
|
164
|
+
*/
|
|
165
|
+
async queryTransactionsByRecipient(accountSelector) {
|
|
166
|
+
// Build query parameters safely
|
|
167
|
+
const queryParams = {};
|
|
168
|
+
if (accountSelector.accountId) {
|
|
169
|
+
queryParams['participantId'] = accountSelector.accountId;
|
|
170
|
+
}
|
|
171
|
+
queryParams['role'] = TransactionRole.RECIPIENT.toString();
|
|
172
|
+
const params = new URLSearchParams(queryParams);
|
|
173
|
+
return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* ADMIN: Get transaction analytics
|
|
177
|
+
*
|
|
178
|
+
* NEW ENDPOINT: POST /transactions/analytics
|
|
179
|
+
*/
|
|
180
|
+
async getTransactionAnalytics(analyticsRequest) {
|
|
181
|
+
return this.apiClient.post(`${this.basePath}/analytics`, analyticsRequest);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Helper to convert DTO object to URLSearchParams
|
|
185
|
+
* Handles nested 'filters' object and arrays correctly.
|
|
186
|
+
*/
|
|
187
|
+
buildQueryParams(params) {
|
|
188
|
+
const query = new URLSearchParams();
|
|
189
|
+
// 1. Handle Root Pagination Fields
|
|
190
|
+
if (params.page !== undefined)
|
|
191
|
+
query.append('page', params.page.toString());
|
|
192
|
+
if (params.limit !== undefined)
|
|
193
|
+
query.append('limit', params.limit.toString());
|
|
194
|
+
if (params.sortBy)
|
|
195
|
+
query.append('sortBy', params.sortBy);
|
|
196
|
+
if (params.sortOrder)
|
|
197
|
+
query.append('sortOrder', params.sortOrder);
|
|
198
|
+
// 2. Handle Nested Filters
|
|
199
|
+
if (params.filters) {
|
|
200
|
+
Object.entries(params.filters).forEach(([key, value]) => {
|
|
201
|
+
// Skip undefined/null values
|
|
202
|
+
if (value === undefined || value === null || value === '')
|
|
203
|
+
return;
|
|
204
|
+
if (Array.isArray(value)) {
|
|
205
|
+
// Handle Arrays: NestJS expects 'status=A&status=B'
|
|
206
|
+
value.forEach((item) => query.append(key, String(item)));
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Handle Single Values: 'search=0x123'
|
|
210
|
+
// NOTE: Backend Controller expects flat query params for filters
|
|
211
|
+
// e.g. ?search=...&status=... NOT ?filters[search]=...
|
|
212
|
+
// This mapping flattens 'filters.search' -> 'search' to match @Query('search') in Controller
|
|
213
|
+
const stringValue = (value instanceof Date) ? value.toISOString() : String(value);
|
|
214
|
+
query.append(key, stringValue);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return query;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Platform-Agnostic Transaction Service
|
|
224
|
+
*
|
|
225
|
+
* Contains transaction business logic and operations that work across platforms.
|
|
226
|
+
* No framework dependencies - pure TypeScript business logic.
|
|
227
|
+
*
|
|
228
|
+
* Focuses only on actual backend capabilities.
|
|
229
|
+
*/
|
|
230
|
+
class TransactionService {
|
|
231
|
+
constructor(transactionApi) {
|
|
232
|
+
this.transactionApi = transactionApi;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get transaction by ID
|
|
236
|
+
*/
|
|
237
|
+
async getTransactionById(transactionId) {
|
|
238
|
+
return this.transactionApi.getTransactionById(transactionId);
|
|
239
|
+
}
|
|
240
|
+
// ==========================================
|
|
241
|
+
// AUTHENTICATED OPERATIONS
|
|
242
|
+
// ==========================================
|
|
243
|
+
/**
|
|
244
|
+
* AUTH: Create authenticated transaction
|
|
245
|
+
*/
|
|
246
|
+
/* async createAuthTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
247
|
+
return this.transactionApi.createAuthTransaction(request);
|
|
248
|
+
} */
|
|
249
|
+
async createTransaction(request) {
|
|
250
|
+
return this.transactionApi.createTransaction(request);
|
|
251
|
+
}
|
|
252
|
+
async submitSignedTransaction(signedTxData) {
|
|
253
|
+
return this.transactionApi.submitSignedTransaction(signedTxData);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* AUTH: Get user transaction history by type
|
|
257
|
+
*/
|
|
258
|
+
async getUserTransactionHistory(role, limit = 1000) {
|
|
259
|
+
return this.transactionApi.getUserTransactionHistory(role, limit);
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* AUTH: Prepare existing transaction for client-side signing
|
|
263
|
+
*/
|
|
264
|
+
async prepareExistingTransaction(transactionId) {
|
|
265
|
+
return this.transactionApi.prepareExistingTransaction(transactionId);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* AUTH: Prepare client signed transaction
|
|
269
|
+
*/
|
|
270
|
+
async prepareClientSignedTransaction(request) {
|
|
271
|
+
return this.transactionApi.prepareClientSignedTransaction(request);
|
|
272
|
+
}
|
|
273
|
+
// ==========================================
|
|
274
|
+
// BUSINESS OPERATIONS
|
|
275
|
+
// ==========================================
|
|
276
|
+
/**
|
|
277
|
+
* BUSINESS: Create business transaction
|
|
278
|
+
*/
|
|
279
|
+
/* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
280
|
+
return this.transactionApi.createBusinessTransaction(request);
|
|
281
|
+
} */
|
|
282
|
+
// ==========================================
|
|
283
|
+
// ADMIN OPERATIONS
|
|
284
|
+
// ==========================================
|
|
285
|
+
/**
|
|
286
|
+
* ADMIN: Create admin transaction
|
|
287
|
+
*/
|
|
288
|
+
/* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
289
|
+
return this.transactionApi.createAdminTransaction(request);
|
|
290
|
+
} */
|
|
291
|
+
/**
|
|
292
|
+
* ADMIN: Get all tenant transactions
|
|
293
|
+
*/
|
|
294
|
+
async getTenantTransactions(limit = 1000) {
|
|
295
|
+
return this.transactionApi.getTenantTransactions(limit);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* ADMIN: Get paginated transactions with filtering and sorting
|
|
299
|
+
*/
|
|
300
|
+
async getPaginatedTransactions(params) {
|
|
301
|
+
return this.transactionApi.getPaginatedTransactions(params);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* ADMIN: Export transactions to CSV
|
|
305
|
+
*/
|
|
306
|
+
async exportTransactionsCSV() {
|
|
307
|
+
return this.transactionApi.exportTransactionsCSV();
|
|
308
|
+
}
|
|
309
|
+
// ==========================================
|
|
310
|
+
// QUERY & ANALYTICS OPERATIONS
|
|
311
|
+
// ==========================================
|
|
312
|
+
/**
|
|
313
|
+
* Query transactions by sender
|
|
314
|
+
*/
|
|
315
|
+
async queryTransactionsBySender(accountSelector) {
|
|
316
|
+
return this.transactionApi.queryTransactionsBySender(accountSelector);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Query transactions by recipient
|
|
320
|
+
*/
|
|
321
|
+
async queryTransactionsByRecipient(accountSelector) {
|
|
322
|
+
return this.transactionApi.queryTransactionsByRecipient(accountSelector);
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* ADMIN: Get transaction analytics
|
|
326
|
+
*/
|
|
327
|
+
async getTransactionAnalytics(analyticsRequest) {
|
|
328
|
+
return this.transactionApi.getTransactionAnalytics(analyticsRequest);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export { TransactionApi as T, TransactionService as a };
|
|
333
|
+
//# sourceMappingURL=transaction-service-B7h_4Hg3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-service-B7h_4Hg3.js","sources":["../../src/transaction/api/transaction-api.ts","../../src/transaction/services/transaction-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var persShared = require('@explorins/pers-shared');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Platform-Agnostic Transaction API Client (UPDATED FOR NEW RESTful ENDPOINTS)
|
|
7
|
+
*
|
|
8
|
+
* Handles transaction operations using the PERS backend.
|
|
9
|
+
* Uses @explorins/pers-shared DTOs for consistency with backend.
|
|
10
|
+
*
|
|
11
|
+
* MIGRATION NOTES:
|
|
12
|
+
* - All endpoints changed from /transaction to /transactions
|
|
13
|
+
* - Role-based paths removed (no more /auth, /admin, /business in URLs)
|
|
14
|
+
* - New RESTful resource-based structure
|
|
15
|
+
* - Added new client-side transaction flow methods
|
|
16
|
+
* - Enhanced admin query capabilities
|
|
17
|
+
*/
|
|
18
|
+
class TransactionApi {
|
|
19
|
+
constructor(apiClient) {
|
|
20
|
+
this.apiClient = apiClient;
|
|
21
|
+
this.basePath = '/transactions';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get transaction by ID (public endpoint)
|
|
25
|
+
*
|
|
26
|
+
* UPDATED: /transaction/{id} → /transactions/{id}
|
|
27
|
+
*/
|
|
28
|
+
async getTransactionById(transactionId) {
|
|
29
|
+
return this.apiClient.get(`${this.basePath}/${transactionId}`);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Unique method to create a transaction
|
|
33
|
+
* @param request
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
async createTransaction(request) {
|
|
37
|
+
return this.apiClient.post(`${this.basePath}`, request);
|
|
38
|
+
// return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);
|
|
39
|
+
}
|
|
40
|
+
// ==========================================
|
|
41
|
+
// AUTHENTICATED USER OPERATIONS
|
|
42
|
+
// ==========================================
|
|
43
|
+
/**
|
|
44
|
+
* AUTH: Get user transaction history with role-based filtering
|
|
45
|
+
*
|
|
46
|
+
* UPDATED: Uses consolidated /transactions/me endpoint with role parameter
|
|
47
|
+
* @param role - Optional role filter (SENDER, RECIPIENT). If undefined, returns all user transactions
|
|
48
|
+
* @param limit - Maximum number of transactions to return (default: 1000)
|
|
49
|
+
*/
|
|
50
|
+
async getUserTransactionHistory(role, limit = 1000) {
|
|
51
|
+
const params = new URLSearchParams({
|
|
52
|
+
limit: limit.toString(),
|
|
53
|
+
timestamp: Date.now().toString()
|
|
54
|
+
});
|
|
55
|
+
// Add role parameter if specified
|
|
56
|
+
if (role === persShared.TransactionRole.SENDER) {
|
|
57
|
+
params.set('role', persShared.TransactionRole.SENDER);
|
|
58
|
+
}
|
|
59
|
+
else if (role === persShared.TransactionRole.RECIPIENT) {
|
|
60
|
+
params.set('role', persShared.TransactionRole.RECIPIENT);
|
|
61
|
+
}
|
|
62
|
+
// If no role specified, get all transactions for the user
|
|
63
|
+
const response = await this.apiClient.get(`${this.basePath}/me?${params.toString()}`);
|
|
64
|
+
return [...(response.data || [])];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* AUTH: Prepare existing transaction for client-side signing
|
|
68
|
+
*
|
|
69
|
+
* NEW ENDPOINT: GET /transactions/{id}/prepare
|
|
70
|
+
*/
|
|
71
|
+
async prepareExistingTransaction(transactionId) {
|
|
72
|
+
return this.apiClient.get(`${this.basePath}/${transactionId}/prepare`);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* AUTH: Submit client-side signed transaction
|
|
76
|
+
*
|
|
77
|
+
* NEW ENDPOINT: POST /transactions/submit
|
|
78
|
+
*/
|
|
79
|
+
async submitSignedTransaction(signedTxData) {
|
|
80
|
+
return this.apiClient.post(`${this.basePath}/submit`, signedTxData);
|
|
81
|
+
}
|
|
82
|
+
// ==========================================
|
|
83
|
+
// BUSINESS OPERATIONS
|
|
84
|
+
// ==========================================
|
|
85
|
+
/**
|
|
86
|
+
* BUSINESS: Create business transaction
|
|
87
|
+
*
|
|
88
|
+
* UPDATED: /transaction/business/transaction → /transactions/business
|
|
89
|
+
*/
|
|
90
|
+
/* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
91
|
+
return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);
|
|
92
|
+
} */
|
|
93
|
+
// ==========================================
|
|
94
|
+
// ADMIN OPERATIONS
|
|
95
|
+
// ==========================================
|
|
96
|
+
/**
|
|
97
|
+
* ADMIN: Create admin transaction
|
|
98
|
+
*
|
|
99
|
+
* UPDATED: /transaction/admin/transaction → /transactions/admin
|
|
100
|
+
*/
|
|
101
|
+
/* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
102
|
+
// return this.apiClient.post<TransactionRequestResponseDTO>(`${this.basePath}`, request);
|
|
103
|
+
return this.apiClient.post<TransactionDTO>(`${this.basePath}/system`, request);
|
|
104
|
+
} */
|
|
105
|
+
/**
|
|
106
|
+
* AUTH: Prepare client signed transaction (Create new transaction for signing)
|
|
107
|
+
*
|
|
108
|
+
* UPDATED: /transaction/auth/prepare-signing → /transactions (POST)
|
|
109
|
+
*/
|
|
110
|
+
async prepareClientSignedTransaction(request) {
|
|
111
|
+
return this.apiClient.post(`${this.basePath}`, request);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* ADMIN: Get all tenant transactions
|
|
115
|
+
*
|
|
116
|
+
* UPDATED: /transaction/admin → /transactions
|
|
117
|
+
*/
|
|
118
|
+
async getTenantTransactions(limit = 1000) {
|
|
119
|
+
const params = new URLSearchParams({
|
|
120
|
+
limit: limit.toString()
|
|
121
|
+
});
|
|
122
|
+
const result = await this.apiClient.get(`${this.basePath}?${params.toString()}`);
|
|
123
|
+
// Extract data array from paginated response
|
|
124
|
+
return [...(result.data || [])];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* ADMIN: Get paginated transactions with filtering and sorting
|
|
128
|
+
*
|
|
129
|
+
* UPDATED: /transaction/admin → /transactions (same endpoint, better structure)
|
|
130
|
+
*/
|
|
131
|
+
async getPaginatedTransactions(params) {
|
|
132
|
+
const queryString = this.buildQueryParams(params).toString();
|
|
133
|
+
return this.apiClient.get(`${this.basePath}?${queryString}`);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* ADMIN: Export transactions to CSV
|
|
137
|
+
*
|
|
138
|
+
* UPDATED: /transaction/admin/export/csv → /transactions/export/csv
|
|
139
|
+
*/
|
|
140
|
+
async exportTransactionsCSV() {
|
|
141
|
+
return this.apiClient.get(`${this.basePath}/export/csv`, 'blob');
|
|
142
|
+
}
|
|
143
|
+
// ==========================================
|
|
144
|
+
// NEW ADMIN QUERY METHODS
|
|
145
|
+
// ==========================================
|
|
146
|
+
/**
|
|
147
|
+
* ADMIN: Query transactions by sender
|
|
148
|
+
*
|
|
149
|
+
* NEW ENDPOINT: POST /transactions/query-sender
|
|
150
|
+
*/
|
|
151
|
+
/**
|
|
152
|
+
* Query transactions by sender using unified endpoint
|
|
153
|
+
*/
|
|
154
|
+
async queryTransactionsBySender(accountSelector) {
|
|
155
|
+
// Build query parameters safely
|
|
156
|
+
const queryParams = {};
|
|
157
|
+
if (accountSelector.accountId) {
|
|
158
|
+
queryParams['participantId'] = accountSelector.accountId;
|
|
159
|
+
}
|
|
160
|
+
queryParams['role'] = persShared.TransactionRole.SENDER.toString();
|
|
161
|
+
const params = new URLSearchParams(queryParams);
|
|
162
|
+
return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Query transactions by recipient using unified endpoint
|
|
166
|
+
*/
|
|
167
|
+
async queryTransactionsByRecipient(accountSelector) {
|
|
168
|
+
// Build query parameters safely
|
|
169
|
+
const queryParams = {};
|
|
170
|
+
if (accountSelector.accountId) {
|
|
171
|
+
queryParams['participantId'] = accountSelector.accountId;
|
|
172
|
+
}
|
|
173
|
+
queryParams['role'] = persShared.TransactionRole.RECIPIENT.toString();
|
|
174
|
+
const params = new URLSearchParams(queryParams);
|
|
175
|
+
return this.apiClient.get(`${this.basePath}?${params.toString()}`).then(response => response); // Extract items from paginated response
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* ADMIN: Get transaction analytics
|
|
179
|
+
*
|
|
180
|
+
* NEW ENDPOINT: POST /transactions/analytics
|
|
181
|
+
*/
|
|
182
|
+
async getTransactionAnalytics(analyticsRequest) {
|
|
183
|
+
return this.apiClient.post(`${this.basePath}/analytics`, analyticsRequest);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Helper to convert DTO object to URLSearchParams
|
|
187
|
+
* Handles nested 'filters' object and arrays correctly.
|
|
188
|
+
*/
|
|
189
|
+
buildQueryParams(params) {
|
|
190
|
+
const query = new URLSearchParams();
|
|
191
|
+
// 1. Handle Root Pagination Fields
|
|
192
|
+
if (params.page !== undefined)
|
|
193
|
+
query.append('page', params.page.toString());
|
|
194
|
+
if (params.limit !== undefined)
|
|
195
|
+
query.append('limit', params.limit.toString());
|
|
196
|
+
if (params.sortBy)
|
|
197
|
+
query.append('sortBy', params.sortBy);
|
|
198
|
+
if (params.sortOrder)
|
|
199
|
+
query.append('sortOrder', params.sortOrder);
|
|
200
|
+
// 2. Handle Nested Filters
|
|
201
|
+
if (params.filters) {
|
|
202
|
+
Object.entries(params.filters).forEach(([key, value]) => {
|
|
203
|
+
// Skip undefined/null values
|
|
204
|
+
if (value === undefined || value === null || value === '')
|
|
205
|
+
return;
|
|
206
|
+
if (Array.isArray(value)) {
|
|
207
|
+
// Handle Arrays: NestJS expects 'status=A&status=B'
|
|
208
|
+
value.forEach((item) => query.append(key, String(item)));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
// Handle Single Values: 'search=0x123'
|
|
212
|
+
// NOTE: Backend Controller expects flat query params for filters
|
|
213
|
+
// e.g. ?search=...&status=... NOT ?filters[search]=...
|
|
214
|
+
// This mapping flattens 'filters.search' -> 'search' to match @Query('search') in Controller
|
|
215
|
+
const stringValue = (value instanceof Date) ? value.toISOString() : String(value);
|
|
216
|
+
query.append(key, stringValue);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
return query;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Platform-Agnostic Transaction Service
|
|
226
|
+
*
|
|
227
|
+
* Contains transaction business logic and operations that work across platforms.
|
|
228
|
+
* No framework dependencies - pure TypeScript business logic.
|
|
229
|
+
*
|
|
230
|
+
* Focuses only on actual backend capabilities.
|
|
231
|
+
*/
|
|
232
|
+
class TransactionService {
|
|
233
|
+
constructor(transactionApi) {
|
|
234
|
+
this.transactionApi = transactionApi;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get transaction by ID
|
|
238
|
+
*/
|
|
239
|
+
async getTransactionById(transactionId) {
|
|
240
|
+
return this.transactionApi.getTransactionById(transactionId);
|
|
241
|
+
}
|
|
242
|
+
// ==========================================
|
|
243
|
+
// AUTHENTICATED OPERATIONS
|
|
244
|
+
// ==========================================
|
|
245
|
+
/**
|
|
246
|
+
* AUTH: Create authenticated transaction
|
|
247
|
+
*/
|
|
248
|
+
/* async createAuthTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
249
|
+
return this.transactionApi.createAuthTransaction(request);
|
|
250
|
+
} */
|
|
251
|
+
async createTransaction(request) {
|
|
252
|
+
return this.transactionApi.createTransaction(request);
|
|
253
|
+
}
|
|
254
|
+
async submitSignedTransaction(signedTxData) {
|
|
255
|
+
return this.transactionApi.submitSignedTransaction(signedTxData);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* AUTH: Get user transaction history by type
|
|
259
|
+
*/
|
|
260
|
+
async getUserTransactionHistory(role, limit = 1000) {
|
|
261
|
+
return this.transactionApi.getUserTransactionHistory(role, limit);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* AUTH: Prepare existing transaction for client-side signing
|
|
265
|
+
*/
|
|
266
|
+
async prepareExistingTransaction(transactionId) {
|
|
267
|
+
return this.transactionApi.prepareExistingTransaction(transactionId);
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* AUTH: Prepare client signed transaction
|
|
271
|
+
*/
|
|
272
|
+
async prepareClientSignedTransaction(request) {
|
|
273
|
+
return this.transactionApi.prepareClientSignedTransaction(request);
|
|
274
|
+
}
|
|
275
|
+
// ==========================================
|
|
276
|
+
// BUSINESS OPERATIONS
|
|
277
|
+
// ==========================================
|
|
278
|
+
/**
|
|
279
|
+
* BUSINESS: Create business transaction
|
|
280
|
+
*/
|
|
281
|
+
/* async createBusinessTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
282
|
+
return this.transactionApi.createBusinessTransaction(request);
|
|
283
|
+
} */
|
|
284
|
+
// ==========================================
|
|
285
|
+
// ADMIN OPERATIONS
|
|
286
|
+
// ==========================================
|
|
287
|
+
/**
|
|
288
|
+
* ADMIN: Create admin transaction
|
|
289
|
+
*/
|
|
290
|
+
/* async createAdminTransaction(request: TransactionRequestDTO): Promise<TransactionRequestResponseDTO> {
|
|
291
|
+
return this.transactionApi.createAdminTransaction(request);
|
|
292
|
+
} */
|
|
293
|
+
/**
|
|
294
|
+
* ADMIN: Get all tenant transactions
|
|
295
|
+
*/
|
|
296
|
+
async getTenantTransactions(limit = 1000) {
|
|
297
|
+
return this.transactionApi.getTenantTransactions(limit);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* ADMIN: Get paginated transactions with filtering and sorting
|
|
301
|
+
*/
|
|
302
|
+
async getPaginatedTransactions(params) {
|
|
303
|
+
return this.transactionApi.getPaginatedTransactions(params);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* ADMIN: Export transactions to CSV
|
|
307
|
+
*/
|
|
308
|
+
async exportTransactionsCSV() {
|
|
309
|
+
return this.transactionApi.exportTransactionsCSV();
|
|
310
|
+
}
|
|
311
|
+
// ==========================================
|
|
312
|
+
// QUERY & ANALYTICS OPERATIONS
|
|
313
|
+
// ==========================================
|
|
314
|
+
/**
|
|
315
|
+
* Query transactions by sender
|
|
316
|
+
*/
|
|
317
|
+
async queryTransactionsBySender(accountSelector) {
|
|
318
|
+
return this.transactionApi.queryTransactionsBySender(accountSelector);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Query transactions by recipient
|
|
322
|
+
*/
|
|
323
|
+
async queryTransactionsByRecipient(accountSelector) {
|
|
324
|
+
return this.transactionApi.queryTransactionsByRecipient(accountSelector);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* ADMIN: Get transaction analytics
|
|
328
|
+
*/
|
|
329
|
+
async getTransactionAnalytics(analyticsRequest) {
|
|
330
|
+
return this.transactionApi.getTransactionAnalytics(analyticsRequest);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
exports.TransactionApi = TransactionApi;
|
|
335
|
+
exports.TransactionService = TransactionService;
|
|
336
|
+
//# sourceMappingURL=transaction-service-CXjTHCFu.cjs.map
|