@artu-ai/compliance-sdk 0.2.0 → 0.3.0
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/models/Client.d.ts.map +1 -1
- package/dist/models/Client.js +21 -3
- package/dist/models/ReportItem.d.ts +2 -2
- package/dist/models/ReportItem.d.ts.map +1 -1
- package/dist/models/ReportItem.js +4 -4
- package/dist/models/mex/MexReportItem.js +1 -1
- package/dist/models/mex/actividad-vulnerable/MexActividadVulnerableReportItem.js +1 -1
- package/dist/models/mex/actividad-vulnerable/avi/MexAVIReportItem.js +1 -1
- package/dist/models/mex/actividad-vulnerable/jys/MexJYSReportItem.js +1 -1
- package/dist/models/mex/actividad-vulnerable/tsc/MexTSCReportItem.js +1 -1
- package/dist/resources/addresses.d.ts +3 -3
- package/dist/resources/addresses.d.ts.map +1 -1
- package/dist/resources/bank-accounts.d.ts +3 -3
- package/dist/resources/bank-accounts.d.ts.map +1 -1
- package/dist/resources/base.d.ts +7 -6
- package/dist/resources/base.d.ts.map +1 -1
- package/dist/resources/base.js +3 -0
- package/dist/resources/clients.d.ts +3 -3
- package/dist/resources/clients.d.ts.map +1 -1
- package/dist/resources/contact-methods.d.ts +3 -3
- package/dist/resources/contact-methods.d.ts.map +1 -1
- package/dist/resources/documents.d.ts +94 -7
- package/dist/resources/documents.d.ts.map +1 -1
- package/dist/resources/documents.js +107 -0
- package/dist/resources/index.d.ts +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts +9 -3
- package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/clients.js +14 -1
- package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts +39 -21
- package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/reports.js +88 -20
- package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts +9 -3
- package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/transactions.js +14 -1
- package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts +10 -3
- package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/clients.js +14 -1
- package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts +33 -11
- package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/reports.js +82 -10
- package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts +10 -3
- package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/transactions.js +14 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts +10 -3
- package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/clients.js +14 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts +33 -11
- package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/reports.js +82 -10
- package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts +10 -3
- package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/transactions.js +14 -1
- package/dist/resources/mex/addresses.d.ts +11 -3
- package/dist/resources/mex/addresses.d.ts.map +1 -1
- package/dist/resources/mex/addresses.js +16 -1
- package/dist/resources/mex/bank-accounts.d.ts +11 -3
- package/dist/resources/mex/bank-accounts.d.ts.map +1 -1
- package/dist/resources/mex/bank-accounts.js +16 -0
- package/dist/resources/mex/clients.d.ts +12 -3
- package/dist/resources/mex/clients.d.ts.map +1 -1
- package/dist/resources/mex/clients.js +17 -1
- package/dist/resources/mex/reports.d.ts +41 -19
- package/dist/resources/mex/reports.d.ts.map +1 -1
- package/dist/resources/mex/reports.js +55 -19
- package/dist/resources/mex/transactions.d.ts +11 -3
- package/dist/resources/mex/transactions.d.ts.map +1 -1
- package/dist/resources/mex/transactions.js +16 -1
- package/dist/resources/reports.d.ts +33 -39
- package/dist/resources/reports.d.ts.map +1 -1
- package/dist/resources/reports.js +34 -36
- package/dist/resources/transactions.d.ts +3 -3
- package/dist/resources/transactions.d.ts.map +1 -1
- package/dist/sdk/ComplianceSDK.d.ts +2 -0
- package/dist/sdk/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/ComplianceSDK.js +17 -9
- package/dist/sdk/mex/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/avi/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/avi/types.d.ts +2 -2
- package/dist/sdk/mex/actividad-vulnerable/avi/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/avi/types.js +1 -0
- package/dist/sdk/mex/actividad-vulnerable/jys/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/jys/types.d.ts +2 -2
- package/dist/sdk/mex/actividad-vulnerable/jys/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/jys/types.js +1 -0
- package/dist/sdk/mex/actividad-vulnerable/tsc/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/tsc/types.d.ts +2 -2
- package/dist/sdk/mex/actividad-vulnerable/tsc/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/tsc/types.js +1 -0
- package/dist/sdk/mex/types.d.ts +2 -2
- package/dist/sdk/mex/types.d.ts.map +1 -1
- package/dist/sdk/types.d.ts +24 -1
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/utils/environment.d.ts +24 -0
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/environment.js +38 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/session.d.ts +20 -2
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +9 -1
- package/dist/utils/trpc-client.d.ts +370 -200
- package/dist/utils/trpc-client.d.ts.map +1 -1
- package/dist/utils/trpc-client.js +2 -1
- package/dist/utils/upload.d.ts +81 -0
- package/dist/utils/upload.d.ts.map +1 -0
- package/dist/utils/upload.js +261 -0
- package/package.json +9 -8
- package/src/models/Client.ts +23 -3
- package/src/models/ReportItem.ts +4 -4
- package/src/models/mex/MexReportItem.ts +1 -1
- package/src/models/mex/actividad-vulnerable/MexActividadVulnerableReportItem.ts +1 -1
- package/src/models/mex/actividad-vulnerable/avi/MexAVIReportItem.ts +1 -1
- package/src/models/mex/actividad-vulnerable/jys/MexJYSReportItem.ts +1 -1
- package/src/models/mex/actividad-vulnerable/tsc/MexTSCReportItem.ts +1 -1
- package/src/resources/addresses.ts +8 -4
- package/src/resources/bank-accounts.ts +8 -4
- package/src/resources/base.ts +9 -4
- package/src/resources/clients.ts +10 -4
- package/src/resources/contact-methods.ts +4 -2
- package/src/resources/documents.ts +185 -5
- package/src/resources/index.ts +6 -1
- package/src/resources/mex/actividad-vulnerable/avi/clients.ts +30 -8
- package/src/resources/mex/actividad-vulnerable/avi/reports.ts +122 -26
- package/src/resources/mex/actividad-vulnerable/avi/transactions.ts +20 -2
- package/src/resources/mex/actividad-vulnerable/jys/clients.ts +20 -2
- package/src/resources/mex/actividad-vulnerable/jys/reports.ts +118 -16
- package/src/resources/mex/actividad-vulnerable/jys/transactions.ts +20 -2
- package/src/resources/mex/actividad-vulnerable/tsc/clients.ts +20 -2
- package/src/resources/mex/actividad-vulnerable/tsc/reports.ts +118 -16
- package/src/resources/mex/actividad-vulnerable/tsc/transactions.ts +20 -2
- package/src/resources/mex/addresses.ts +24 -2
- package/src/resources/mex/bank-accounts.ts +26 -2
- package/src/resources/mex/clients.ts +25 -2
- package/src/resources/mex/reports.ts +94 -26
- package/src/resources/mex/transactions.ts +24 -2
- package/src/resources/reports.ts +65 -43
- package/src/resources/transactions.ts +8 -4
- package/src/sdk/ComplianceSDK.ts +23 -8
- package/src/sdk/mex/ComplianceSDK.ts +7 -0
- package/src/sdk/mex/actividad-vulnerable/avi/ComplianceSDK.ts +4 -0
- package/src/sdk/mex/actividad-vulnerable/avi/types.ts +22 -8
- package/src/sdk/mex/actividad-vulnerable/jys/ComplianceSDK.ts +3 -0
- package/src/sdk/mex/actividad-vulnerable/jys/types.ts +22 -8
- package/src/sdk/mex/actividad-vulnerable/tsc/ComplianceSDK.ts +3 -0
- package/src/sdk/mex/actividad-vulnerable/tsc/types.ts +22 -8
- package/src/sdk/mex/types.ts +6 -2
- package/src/sdk/types.ts +31 -2
- package/src/utils/environment.ts +42 -0
- package/src/utils/index.ts +19 -0
- package/src/utils/session.ts +33 -3
- package/src/utils/trpc-client.ts +10 -1
- package/src/utils/upload.ts +388 -0
|
@@ -8,6 +8,8 @@ import { createDocumentInputSchema, updateDocumentInputSchema, confirmUploadInpu
|
|
|
8
8
|
import { z } from "zod";
|
|
9
9
|
import { Document } from "../models/Document";
|
|
10
10
|
import { BaseResource } from "./base";
|
|
11
|
+
import { uploadToS3, normalizeFile, validateFileSize, } from "../utils/upload";
|
|
12
|
+
import { UploadError } from "../errors/upload";
|
|
11
13
|
// ─────────────────────────────────────────────────────────────────
|
|
12
14
|
// Resource
|
|
13
15
|
// ─────────────────────────────────────────────────────────────────
|
|
@@ -106,6 +108,111 @@ export class DocumentsResource extends BaseResource {
|
|
|
106
108
|
const response = await this.execute(() => this.trpc.documents.confirmUpload.mutate(validated));
|
|
107
109
|
return this.instantiate(response);
|
|
108
110
|
}
|
|
111
|
+
// ─────────────────────────────────────────────────────────────────
|
|
112
|
+
// Upload (High-Level Helper)
|
|
113
|
+
// ─────────────────────────────────────────────────────────────────
|
|
114
|
+
/**
|
|
115
|
+
* Uploads a file and creates a document in one operation.
|
|
116
|
+
*
|
|
117
|
+
* This is a convenience method that combines:
|
|
118
|
+
* 1. Creating a document record with presigned URL
|
|
119
|
+
* 2. Uploading the file directly to storage
|
|
120
|
+
* 3. Confirming the upload
|
|
121
|
+
*
|
|
122
|
+
* For more control over the upload process, use `create()`, manual upload,
|
|
123
|
+
* and `confirmUpload()` separately.
|
|
124
|
+
*
|
|
125
|
+
* @param file - The file to upload (File, Blob, or UploadableFile)
|
|
126
|
+
* @param data - Document metadata (clientId, jurisdiction, type, etc.)
|
|
127
|
+
* @param options - Upload options (progress callback, abort signal, timeout)
|
|
128
|
+
* @returns The created and uploaded document
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Simple upload
|
|
133
|
+
* const document = await sdk.documents.upload(file, {
|
|
134
|
+
* clientId: "client-123",
|
|
135
|
+
* jurisdiction: "MX",
|
|
136
|
+
* type: "ine_front",
|
|
137
|
+
* });
|
|
138
|
+
*
|
|
139
|
+
* // With progress tracking
|
|
140
|
+
* const document = await sdk.documents.upload(file, {
|
|
141
|
+
* clientId: "client-123",
|
|
142
|
+
* jurisdiction: "MX",
|
|
143
|
+
* type: "ine_front",
|
|
144
|
+
* }, {
|
|
145
|
+
* onProgress: (progress) => {
|
|
146
|
+
* console.log(`Upload: ${Math.round(progress * 100)}%`);
|
|
147
|
+
* },
|
|
148
|
+
* });
|
|
149
|
+
*
|
|
150
|
+
* // With abort support
|
|
151
|
+
* const controller = new AbortController();
|
|
152
|
+
* const uploadPromise = sdk.documents.upload(file, data, {
|
|
153
|
+
* signal: controller.signal,
|
|
154
|
+
* });
|
|
155
|
+
*
|
|
156
|
+
* // Cancel the upload
|
|
157
|
+
* controller.abort();
|
|
158
|
+
* ```
|
|
159
|
+
*
|
|
160
|
+
* @throws {FileTooLargeError} If file exceeds 25 MB limit
|
|
161
|
+
* @throws {UploadError} If upload fails at any stage
|
|
162
|
+
* @throws {UploadAbortedError} If upload is cancelled via AbortSignal
|
|
163
|
+
* @throws {UploadTimeoutError} If upload times out
|
|
164
|
+
*/
|
|
165
|
+
async upload(file, data, options = {}) {
|
|
166
|
+
const { onProgress, signal, timeout } = options;
|
|
167
|
+
// Normalize file input
|
|
168
|
+
const normalizedFile = normalizeFile(file);
|
|
169
|
+
// Validate file size before starting
|
|
170
|
+
validateFileSize(normalizedFile.size);
|
|
171
|
+
// Check if already aborted
|
|
172
|
+
if (signal?.aborted) {
|
|
173
|
+
throw new UploadError("Upload was aborted before starting", "request");
|
|
174
|
+
}
|
|
175
|
+
// Determine content type (use provided or infer from file)
|
|
176
|
+
const contentType = data.contentType || normalizedFile.type;
|
|
177
|
+
if (!contentType || contentType === "application/octet-stream") {
|
|
178
|
+
throw new UploadError("Could not determine file content type. Please provide contentType explicitly.", "request");
|
|
179
|
+
}
|
|
180
|
+
// Validate content type is allowed
|
|
181
|
+
const allowedTypes = [
|
|
182
|
+
"image/jpeg",
|
|
183
|
+
"image/png",
|
|
184
|
+
"image/webp",
|
|
185
|
+
"application/pdf",
|
|
186
|
+
];
|
|
187
|
+
if (!allowedTypes.includes(contentType)) {
|
|
188
|
+
throw new UploadError(`Invalid file type: ${contentType}. Allowed types: ${allowedTypes.join(", ")}`, "request");
|
|
189
|
+
}
|
|
190
|
+
// Step 1: Create document and get presigned URL
|
|
191
|
+
const createInput = {
|
|
192
|
+
...data,
|
|
193
|
+
contentType: contentType,
|
|
194
|
+
};
|
|
195
|
+
const { document, upload } = await this.create(createInput);
|
|
196
|
+
// upload should always be present when contentType is provided
|
|
197
|
+
if (!upload) {
|
|
198
|
+
throw new UploadError("Server did not return upload URL. This should not happen.", "request");
|
|
199
|
+
}
|
|
200
|
+
// Step 2: Upload file to S3
|
|
201
|
+
// Note: If upload fails, the document remains in pending_upload status
|
|
202
|
+
// and will be cleaned up by the orphan document cleanup job
|
|
203
|
+
await uploadToS3(normalizedFile, upload, {
|
|
204
|
+
onProgress,
|
|
205
|
+
signal,
|
|
206
|
+
timeout,
|
|
207
|
+
});
|
|
208
|
+
// Step 3: Confirm upload
|
|
209
|
+
return this.confirmUpload({
|
|
210
|
+
id: document.id,
|
|
211
|
+
filename: normalizedFile.name,
|
|
212
|
+
contentType,
|
|
213
|
+
size: normalizedFile.size,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
109
216
|
/**
|
|
110
217
|
* Gets a presigned URL for downloading/viewing a document.
|
|
111
218
|
*
|
|
@@ -18,6 +18,6 @@ export { ReportsResource, type ReportFilter, type ReportItemFilter, type AddItem
|
|
|
18
18
|
export { AddressesResource } from "./addresses";
|
|
19
19
|
export { ContactMethodsResource } from "./contact-methods";
|
|
20
20
|
export { BankAccountsResource } from "./bank-accounts";
|
|
21
|
-
export { DocumentsResource, type CreateDocumentResult } from "./documents";
|
|
21
|
+
export { DocumentsResource, type CreateDocumentResult, type UploadDocumentInput, type UploadOptions, } from "./documents";
|
|
22
22
|
export * from "./mex";
|
|
23
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,QAAQ,CAAC;AAG7E,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAGrB,cAAc,OAAO,CAAC"}
|
package/dist/resources/index.js
CHANGED
|
@@ -20,6 +20,6 @@ export { ReportsResource, } from "./reports";
|
|
|
20
20
|
export { AddressesResource } from "./addresses";
|
|
21
21
|
export { ContactMethodsResource } from "./contact-methods";
|
|
22
22
|
export { BankAccountsResource } from "./bank-accounts";
|
|
23
|
-
export { DocumentsResource } from "./documents";
|
|
23
|
+
export { DocumentsResource, } from "./documents";
|
|
24
24
|
// Mexico-scoped resources
|
|
25
25
|
export * from "./mex";
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - Accepts flattened CreateAVIClientInput (AVI fields at root level)
|
|
6
6
|
* - Returns MexAVIClient models
|
|
7
7
|
*/
|
|
8
|
-
import type { CreateClientInput, UpdateClientInput, ClientFilter, ListOptions, PaginatedResponse, CreateAVIClientInput, UpdateAVIClientInput, AtomicBatchResult, PartialBatchResult, ClientRelationshipType, LinkedClient as LinkedClientInput, CreateMexAddressInput, UpdateMexAddressInput, CreateContactMethodInput, UpdateContactMethodInput, CreateBankAccountInput, UpdateBankAccountInput, SyncItem, SyncResult, AVIClientFilter } from "@artu-ai/shared";
|
|
8
|
+
import type { CreateClientInput, UpdateClientInput, ClientFilter, ClientSort, ListOptions, PaginatedResponse, CreateAVIClientInput, UpdateAVIClientInput, AtomicBatchResult, PartialBatchResult, ClientRelationshipType, LinkedClient as LinkedClientInput, CreateMexAddressInput, UpdateMexAddressInput, CreateContactMethodInput, UpdateContactMethodInput, CreateBankAccountInput, UpdateBankAccountInput, SyncItem, SyncResult, AVIClientFilter, AVIClientSort } from "@artu-ai/shared";
|
|
9
9
|
import { MexClientsResource } from "../../clients";
|
|
10
10
|
import { type ClientIncludeMap } from "../../../clients";
|
|
11
11
|
import { MexAVIClient, MexAddress, MexBankAccount, ContactMethod, LinkedClient, type ClientData } from "../../../../models";
|
|
@@ -37,7 +37,7 @@ import { MexAVIClient, MexAddress, MexBankAccount, ContactMethod, LinkedClient,
|
|
|
37
37
|
* console.log(client.username);
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
export declare class AVIClientsResource extends MexClientsResource {
|
|
40
|
+
export declare class AVIClientsResource extends MexClientsResource<AVIClientSort> {
|
|
41
41
|
/**
|
|
42
42
|
* Creates a new AVI client with fully flattened input.
|
|
43
43
|
*/
|
|
@@ -71,7 +71,7 @@ export declare class AVIClientsResource extends MexClientsResource {
|
|
|
71
71
|
* });
|
|
72
72
|
* ```
|
|
73
73
|
*/
|
|
74
|
-
list(options?: ListOptions<AVIClientFilter>): Promise<PaginatedResponse<MexAVIClient>>;
|
|
74
|
+
list(options?: ListOptions<AVIClientFilter, AVIClientSort>): Promise<PaginatedResponse<MexAVIClient>>;
|
|
75
75
|
/**
|
|
76
76
|
* Iterates over AVI clients.
|
|
77
77
|
*
|
|
@@ -143,6 +143,12 @@ export declare class AVIClientsResource extends MexClientsResource {
|
|
|
143
143
|
* under jurisdictions.MX.actividadVulnerable.AVI.
|
|
144
144
|
*/
|
|
145
145
|
protected applyScopeToFilter(filter?: AVIClientFilter): ClientFilter;
|
|
146
|
+
/**
|
|
147
|
+
* Transforms a flattened AVIClientSort to nested ClientSort format.
|
|
148
|
+
*
|
|
149
|
+
* Maps flattened field names (username, rfc, curp) to their full API paths.
|
|
150
|
+
*/
|
|
151
|
+
protected applyScopeToSort(sort?: AVIClientSort): ClientSort | undefined;
|
|
146
152
|
/**
|
|
147
153
|
* Transforms flattened AVI input to nested API format.
|
|
148
154
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/clients.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EAGpB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,IAAI,iBAAiB,EACjC,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,QAAQ,EACR,UAAU,EAEV,eAAe,
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/clients.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Returns MexAVIClient models
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import { CodigoActividad, createAVIClientInputSchema, updateAVIClientInputSchema, linkedClientSchema, } from "@artu-ai/shared";
|
|
9
|
+
import { CodigoActividad, createAVIClientInputSchema, updateAVIClientInputSchema, linkedClientSchema, transformSort, aviClientFieldMapping, } from "@artu-ai/shared";
|
|
10
10
|
import { MexClientsResource } from "../../clients";
|
|
11
11
|
import { MexAVIClient, } from "../../../../models";
|
|
12
12
|
// ===========================
|
|
@@ -98,9 +98,11 @@ export class AVIClientsResource extends MexClientsResource {
|
|
|
98
98
|
*/
|
|
99
99
|
async list(options) {
|
|
100
100
|
const scopedFilter = this.applyScopeToFilter(options?.filter);
|
|
101
|
+
const scopedSort = this.applyScopeToSort(options?.sort);
|
|
101
102
|
const response = await this.execute(() => this.trpc.clients.list.query({
|
|
102
103
|
...options,
|
|
103
104
|
filter: scopedFilter,
|
|
105
|
+
sort: scopedSort,
|
|
104
106
|
}));
|
|
105
107
|
return {
|
|
106
108
|
data: response.data.map((c) => this.instantiate(c)),
|
|
@@ -251,6 +253,17 @@ export class AVIClientsResource extends MexClientsResource {
|
|
|
251
253
|
}
|
|
252
254
|
return nestedFilter;
|
|
253
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Transforms a flattened AVIClientSort to nested ClientSort format.
|
|
258
|
+
*
|
|
259
|
+
* Maps flattened field names (username, rfc, curp) to their full API paths.
|
|
260
|
+
*/
|
|
261
|
+
applyScopeToSort(sort) {
|
|
262
|
+
if (!sort || sort.length === 0) {
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
265
|
+
return transformSort(sort, aviClientFieldMapping);
|
|
266
|
+
}
|
|
254
267
|
/**
|
|
255
268
|
* Transforms flattened AVI input to nested API format.
|
|
256
269
|
*/
|
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
* - Accepts flattened CreateAVIReportInput (AVI fields at root level)
|
|
6
6
|
* - Returns MexAVIReport models
|
|
7
7
|
*/
|
|
8
|
-
import type { CreateReportInput, UpdateReportInput, CreateReportItemInput, UpdateReportItemInput, CreateAVIReportInput, UpdateAVIReportInput, CreateAVIReportItemInput, UpdateAVIReportItemInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, ValidationResult, GenerateResult, SubmissionResult,
|
|
9
|
-
import type { AVIReportFilter } from "@artu-ai/shared";
|
|
8
|
+
import type { CreateReportInput, UpdateReportInput, CreateReportItemInput, UpdateReportItemInput, CreateAVIReportInput, UpdateAVIReportInput, CreateAVIReportItemInput, UpdateAVIReportItemInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, ValidationResult, GenerateResult, SubmissionResult, AviReportDefaultsInput, SubmitAVIReportInput } from "@artu-ai/shared";
|
|
9
|
+
import type { AVIReportFilter, AVIReportSort, AVIReportItemFilter, ReportSort, ReportItemFilter, ReportItemSort } from "@artu-ai/shared";
|
|
10
10
|
import { MexReportsResource } from "../../reports";
|
|
11
|
-
import { type ReportItemFilter } from "../../../reports";
|
|
12
11
|
import { MexAVIReport, MexAVIReportItem, type ReportData, type ReportItemData } from "../../../../models";
|
|
13
12
|
/**
|
|
14
13
|
* AVI (Activos Virtuales) scoped reports resource.
|
|
@@ -30,7 +29,7 @@ import { MexAVIReport, MexAVIReportItem, type ReportData, type ReportItemData }
|
|
|
30
29
|
* console.log(report.mesReportado);
|
|
31
30
|
* ```
|
|
32
31
|
*/
|
|
33
|
-
export declare class AVIReportsResource extends MexReportsResource {
|
|
32
|
+
export declare class AVIReportsResource extends MexReportsResource<AVIReportSort, AviReportDefaultsInput> {
|
|
34
33
|
create(data: CreateAVIReportInput): Promise<MexAVIReport>;
|
|
35
34
|
retrieve(id: string): Promise<MexAVIReport>;
|
|
36
35
|
retrieveByMetadata(key: string, value: string): Promise<MexAVIReport>;
|
|
@@ -41,7 +40,7 @@ export declare class AVIReportsResource extends MexReportsResource {
|
|
|
41
40
|
*
|
|
42
41
|
* Accepts flattened AVI filter (future AVI-specific report fields at root level).
|
|
43
42
|
*/
|
|
44
|
-
list(options?: ListOptions<AVIReportFilter>): Promise<PaginatedResponse<MexAVIReport>>;
|
|
43
|
+
list(options?: ListOptions<AVIReportFilter, AVIReportSort>): Promise<PaginatedResponse<MexAVIReport>>;
|
|
45
44
|
/**
|
|
46
45
|
* Iterates over AVI reports.
|
|
47
46
|
*
|
|
@@ -69,7 +68,11 @@ export declare class AVIReportsResource extends MexReportsResource {
|
|
|
69
68
|
addItem(reportId: string, data: CreateAVIReportItemInput): Promise<MexAVIReportItem>;
|
|
70
69
|
getItem(reportId: string, itemId: string): Promise<MexAVIReportItem>;
|
|
71
70
|
updateItem(reportId: string, itemId: string, data: UpdateAVIReportItemInput): Promise<MexAVIReportItem>;
|
|
72
|
-
listItems(reportId: string, options?: ListOptions<
|
|
71
|
+
listItems(reportId: string, options?: ListOptions<AVIReportItemFilter, ReportItemSort>): Promise<PaginatedResponse<MexAVIReportItem>>;
|
|
72
|
+
/**
|
|
73
|
+
* Transforms a flattened AVIReportItemFilter to nested ReportItemFilter format.
|
|
74
|
+
*/
|
|
75
|
+
protected applyScopeToItemFilter(filter?: AVIReportItemFilter): ReportItemFilter | undefined;
|
|
73
76
|
addItems(reportId: string, items: CreateAVIReportItemInput[]): Promise<{
|
|
74
77
|
added: number;
|
|
75
78
|
items: MexAVIReportItem[];
|
|
@@ -77,38 +80,40 @@ export declare class AVIReportsResource extends MexReportsResource {
|
|
|
77
80
|
/**
|
|
78
81
|
* Validates an AVI report.
|
|
79
82
|
*
|
|
80
|
-
* Uses AVI-scoped validation input (jurisdiction and activity
|
|
83
|
+
* Uses AVI-scoped validation input (jurisdiction and activity are implicit).
|
|
84
|
+
*
|
|
85
|
+
* @param reportId - The report ID to validate
|
|
86
|
+
* @param defaults - AVI report defaults including rfc, platformDomain, alertType, etc.
|
|
81
87
|
*
|
|
82
88
|
* @example
|
|
83
89
|
* ```typescript
|
|
84
|
-
* const result = await aviSdk.reports.validateReport({
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* platformDomain: "https://example.com",
|
|
89
|
-
* },
|
|
90
|
+
* const result = await aviSdk.reports.validateReport(report.id, {
|
|
91
|
+
* rfc: "ABC200101XXX",
|
|
92
|
+
* platformDomain: "https://example.com",
|
|
93
|
+
* alertType: "100",
|
|
90
94
|
* });
|
|
91
95
|
* ```
|
|
92
96
|
*/
|
|
93
|
-
validateReport(
|
|
97
|
+
validateReport(reportId: string, defaults: AviReportDefaultsInput): Promise<ValidationResult>;
|
|
94
98
|
/**
|
|
95
99
|
* Generates XML for an AVI report.
|
|
96
100
|
*
|
|
97
101
|
* Uses the same input as validateReport.
|
|
98
102
|
*
|
|
103
|
+
* @param reportId - The report ID to generate XML for
|
|
104
|
+
* @param defaults - AVI report defaults including rfc, platformDomain, alertType, etc.
|
|
105
|
+
*
|
|
99
106
|
* @example
|
|
100
107
|
* ```typescript
|
|
101
|
-
* const result = await aviSdk.reports.generateReport({
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* platformDomain: "https://example.com",
|
|
106
|
-
* },
|
|
108
|
+
* const result = await aviSdk.reports.generateReport(report.id, {
|
|
109
|
+
* rfc: "ABC200101XXX",
|
|
110
|
+
* platformDomain: "https://example.com",
|
|
111
|
+
* alertType: "100",
|
|
107
112
|
* });
|
|
108
113
|
* console.log(result.xml);
|
|
109
114
|
* ```
|
|
110
115
|
*/
|
|
111
|
-
generateReport(
|
|
116
|
+
generateReport(reportId: string, defaults: AviReportDefaultsInput): Promise<GenerateResult>;
|
|
112
117
|
/**
|
|
113
118
|
* Submits a validated AVI report.
|
|
114
119
|
*
|
|
@@ -124,11 +129,24 @@ export declare class AVIReportsResource extends MexReportsResource {
|
|
|
124
129
|
* ```
|
|
125
130
|
*/
|
|
126
131
|
submit(input: SubmitAVIReportInput): Promise<SubmissionResult>;
|
|
132
|
+
/**
|
|
133
|
+
* Transforms a flattened AVIReportSort to nested ReportSort format.
|
|
134
|
+
*
|
|
135
|
+
* Maps flattened field names to their full API paths.
|
|
136
|
+
*/
|
|
137
|
+
protected applyScopeToSort(sort?: AVIReportSort): ReportSort | undefined;
|
|
127
138
|
protected transformToNested(data: CreateAVIReportInput): CreateReportInput;
|
|
128
139
|
protected transformUpdateToNested(data: UpdateAVIReportInput): UpdateReportInput;
|
|
129
140
|
protected instantiate(data: ReportData): MexAVIReport;
|
|
130
141
|
protected instantiateItem(data: ReportItemData): MexAVIReportItem;
|
|
131
142
|
protected transformItemToNested(data: CreateAVIReportItemInput): CreateReportItemInput;
|
|
132
143
|
protected transformItemUpdateToNested(data: UpdateAVIReportItemInput): UpdateReportItemInput;
|
|
144
|
+
/**
|
|
145
|
+
* Transforms AVI defaults to nested API format for validate/generate.
|
|
146
|
+
*/
|
|
147
|
+
protected transformAviDefaultsToNested(reportId: string, defaults: AviReportDefaultsInput): {
|
|
148
|
+
reportId: string;
|
|
149
|
+
jurisdictions: unknown;
|
|
150
|
+
};
|
|
133
151
|
}
|
|
134
152
|
//# sourceMappingURL=reports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/reports.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/reports.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Returns MexAVIReport models
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import { CodigoActividad, createAVIReportInputSchema, updateAVIReportInputSchema, createAVIReportItemInputSchema, updateAVIReportItemInputSchema,
|
|
9
|
+
import { CodigoActividad, createAVIReportInputSchema, updateAVIReportInputSchema, createAVIReportItemInputSchema, updateAVIReportItemInputSchema, aviDefaultsInputSchema, submitAVIReportInputSchema, transformSort, aviReportFieldMapping, } from "@artu-ai/shared";
|
|
10
10
|
import { MexReportsResource } from "../../reports";
|
|
11
11
|
import { MexAVIReport, MexAVIReportItem, } from "../../../../models";
|
|
12
12
|
// ===========================
|
|
@@ -70,9 +70,11 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
70
70
|
*/
|
|
71
71
|
async list(options) {
|
|
72
72
|
const scopedFilter = this.applyScopeToFilter(options?.filter);
|
|
73
|
+
const scopedSort = this.applyScopeToSort(options?.sort);
|
|
73
74
|
const response = await this.execute(() => this.trpc.reports.list.query({
|
|
74
75
|
...options,
|
|
75
76
|
filter: scopedFilter,
|
|
77
|
+
sort: scopedSort,
|
|
76
78
|
}));
|
|
77
79
|
return {
|
|
78
80
|
data: response.data.map((r) => this.instantiate(r)),
|
|
@@ -163,15 +165,46 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
163
165
|
return this.instantiateItem(response);
|
|
164
166
|
}
|
|
165
167
|
async listItems(reportId, options) {
|
|
168
|
+
// Transform flattened AVI filter to nested format
|
|
169
|
+
const scopedFilter = this.applyScopeToItemFilter(options?.filter);
|
|
166
170
|
const response = await this.execute(() => this.trpc.reports.listItems.query({
|
|
167
171
|
reportId,
|
|
168
172
|
...options,
|
|
173
|
+
filter: scopedFilter,
|
|
169
174
|
}));
|
|
170
175
|
return {
|
|
171
176
|
data: response.data.map((i) => this.instantiateItem(i)),
|
|
172
177
|
pagination: response.pagination,
|
|
173
178
|
};
|
|
174
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Transforms a flattened AVIReportItemFilter to nested ReportItemFilter format.
|
|
182
|
+
*/
|
|
183
|
+
applyScopeToItemFilter(filter) {
|
|
184
|
+
if (!filter)
|
|
185
|
+
return undefined;
|
|
186
|
+
const { alertType, alertDescription, ...baseFields } = filter;
|
|
187
|
+
// If no AVI-specific fields, return base filter as-is
|
|
188
|
+
if (alertType === undefined && alertDescription === undefined) {
|
|
189
|
+
return baseFields;
|
|
190
|
+
}
|
|
191
|
+
// Build nested filter structure
|
|
192
|
+
const aviFilter = {};
|
|
193
|
+
if (alertType !== undefined)
|
|
194
|
+
aviFilter.alertType = alertType;
|
|
195
|
+
if (alertDescription !== undefined)
|
|
196
|
+
aviFilter.alertDescription = alertDescription;
|
|
197
|
+
return {
|
|
198
|
+
...baseFields,
|
|
199
|
+
jurisdictions: {
|
|
200
|
+
MX: {
|
|
201
|
+
actividadVulnerable: {
|
|
202
|
+
AVI: aviFilter,
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
}
|
|
175
208
|
async addItems(reportId, items) {
|
|
176
209
|
const validated = this.validate(z.array(createAVIReportItemInputSchema), items);
|
|
177
210
|
const nestedItems = validated.map((i) => this.transformItemToNested(i));
|
|
@@ -187,22 +220,24 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
187
220
|
/**
|
|
188
221
|
* Validates an AVI report.
|
|
189
222
|
*
|
|
190
|
-
* Uses AVI-scoped validation input (jurisdiction and activity
|
|
223
|
+
* Uses AVI-scoped validation input (jurisdiction and activity are implicit).
|
|
224
|
+
*
|
|
225
|
+
* @param reportId - The report ID to validate
|
|
226
|
+
* @param defaults - AVI report defaults including rfc, platformDomain, alertType, etc.
|
|
191
227
|
*
|
|
192
228
|
* @example
|
|
193
229
|
* ```typescript
|
|
194
|
-
* const result = await aviSdk.reports.validateReport({
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* platformDomain: "https://example.com",
|
|
199
|
-
* },
|
|
230
|
+
* const result = await aviSdk.reports.validateReport(report.id, {
|
|
231
|
+
* rfc: "ABC200101XXX",
|
|
232
|
+
* platformDomain: "https://example.com",
|
|
233
|
+
* alertType: "100",
|
|
200
234
|
* });
|
|
201
235
|
* ```
|
|
202
236
|
*/
|
|
203
|
-
async validateReport(
|
|
204
|
-
const validated = this.validate(
|
|
205
|
-
|
|
237
|
+
async validateReport(reportId, defaults) {
|
|
238
|
+
const validated = this.validate(aviDefaultsInputSchema, defaults);
|
|
239
|
+
const nestedInput = this.transformAviDefaultsToNested(reportId, validated);
|
|
240
|
+
return this.execute(() => this.trpc.reports.validate.mutate(nestedInput));
|
|
206
241
|
}
|
|
207
242
|
// ─────────────────────────────────────────────────────────────────
|
|
208
243
|
// Generation
|
|
@@ -212,21 +247,23 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
212
247
|
*
|
|
213
248
|
* Uses the same input as validateReport.
|
|
214
249
|
*
|
|
250
|
+
* @param reportId - The report ID to generate XML for
|
|
251
|
+
* @param defaults - AVI report defaults including rfc, platformDomain, alertType, etc.
|
|
252
|
+
*
|
|
215
253
|
* @example
|
|
216
254
|
* ```typescript
|
|
217
|
-
* const result = await aviSdk.reports.generateReport({
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* platformDomain: "https://example.com",
|
|
222
|
-
* },
|
|
255
|
+
* const result = await aviSdk.reports.generateReport(report.id, {
|
|
256
|
+
* rfc: "ABC200101XXX",
|
|
257
|
+
* platformDomain: "https://example.com",
|
|
258
|
+
* alertType: "100",
|
|
223
259
|
* });
|
|
224
260
|
* console.log(result.xml);
|
|
225
261
|
* ```
|
|
226
262
|
*/
|
|
227
|
-
async generateReport(
|
|
228
|
-
const validated = this.validate(
|
|
229
|
-
|
|
263
|
+
async generateReport(reportId, defaults) {
|
|
264
|
+
const validated = this.validate(aviDefaultsInputSchema, defaults);
|
|
265
|
+
const nestedInput = this.transformAviDefaultsToNested(reportId, validated);
|
|
266
|
+
return this.execute(() => this.trpc.reports.generate.mutate(nestedInput));
|
|
230
267
|
}
|
|
231
268
|
// ─────────────────────────────────────────────────────────────────
|
|
232
269
|
// Submission
|
|
@@ -265,6 +302,17 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
265
302
|
// ─────────────────────────────────────────────────────────────────
|
|
266
303
|
// Protected Helpers
|
|
267
304
|
// ─────────────────────────────────────────────────────────────────
|
|
305
|
+
/**
|
|
306
|
+
* Transforms a flattened AVIReportSort to nested ReportSort format.
|
|
307
|
+
*
|
|
308
|
+
* Maps flattened field names to their full API paths.
|
|
309
|
+
*/
|
|
310
|
+
applyScopeToSort(sort) {
|
|
311
|
+
if (!sort || sort.length === 0) {
|
|
312
|
+
return undefined;
|
|
313
|
+
}
|
|
314
|
+
return transformSort(sort, aviReportFieldMapping);
|
|
315
|
+
}
|
|
268
316
|
transformToNested(data) {
|
|
269
317
|
const { mesReportado, ...baseFields } = data;
|
|
270
318
|
return {
|
|
@@ -330,4 +378,24 @@ export class AVIReportsResource extends MexReportsResource {
|
|
|
330
378
|
},
|
|
331
379
|
};
|
|
332
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* Transforms AVI defaults to nested API format for validate/generate.
|
|
383
|
+
*/
|
|
384
|
+
transformAviDefaultsToNested(reportId, defaults) {
|
|
385
|
+
const { rfc, collegiateEntityCode, exempt, priority, ...aviFields } = defaults;
|
|
386
|
+
return {
|
|
387
|
+
reportId,
|
|
388
|
+
jurisdictions: {
|
|
389
|
+
MX: {
|
|
390
|
+
actividadVulnerable: {
|
|
391
|
+
rfc,
|
|
392
|
+
collegiateEntityCode,
|
|
393
|
+
exempt,
|
|
394
|
+
priority,
|
|
395
|
+
[CodigoActividad.AVI]: aviFields,
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
333
401
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* - Accepts flattened CreateAVITransactionInput (AVI fields at root level)
|
|
6
6
|
* - Returns MexAVITransaction models
|
|
7
7
|
*/
|
|
8
|
-
import type { CreateTransactionInput, UpdateTransactionInput, ListOptions, PaginatedResponse, CreateAVITransactionInput, UpdateAVITransactionInput, AtomicBatchResult, PartialBatchResult, RelatedClient, AVITransactionFilter } from "@artu-ai/shared";
|
|
8
|
+
import type { CreateTransactionInput, UpdateTransactionInput, TransactionSort, ListOptions, PaginatedResponse, CreateAVITransactionInput, UpdateAVITransactionInput, AtomicBatchResult, PartialBatchResult, RelatedClient, AVITransactionFilter, AVITransactionSort } from "@artu-ai/shared";
|
|
9
9
|
import { ClientRole } from "@artu-ai/shared";
|
|
10
10
|
import { MexTransactionsResource } from "../../transactions";
|
|
11
11
|
import { MexAVITransaction, type TransactionData } from "../../../../models";
|
|
@@ -34,7 +34,7 @@ import { MexAVITransaction, type TransactionData } from "../../../../models";
|
|
|
34
34
|
* console.log(txn.operationType);
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
|
-
export declare class AVITransactionsResource extends MexTransactionsResource {
|
|
37
|
+
export declare class AVITransactionsResource extends MexTransactionsResource<AVITransactionSort> {
|
|
38
38
|
create(data: CreateAVITransactionInput): Promise<MexAVITransaction>;
|
|
39
39
|
retrieve(id: string): Promise<MexAVITransaction>;
|
|
40
40
|
retrieveByMetadata(key: string, value: string): Promise<MexAVITransaction>;
|
|
@@ -44,7 +44,7 @@ export declare class AVITransactionsResource extends MexTransactionsResource {
|
|
|
44
44
|
*
|
|
45
45
|
* Accepts flattened AVI filter (future AVI-specific transaction fields at root level).
|
|
46
46
|
*/
|
|
47
|
-
list(options?: ListOptions<AVITransactionFilter>): Promise<PaginatedResponse<MexAVITransaction>>;
|
|
47
|
+
list(options?: ListOptions<AVITransactionFilter, AVITransactionSort>): Promise<PaginatedResponse<MexAVITransaction>>;
|
|
48
48
|
/**
|
|
49
49
|
* Iterates over AVI transactions.
|
|
50
50
|
*
|
|
@@ -76,6 +76,12 @@ export declare class AVITransactionsResource extends MexTransactionsResource {
|
|
|
76
76
|
}[], options: {
|
|
77
77
|
atomic: false;
|
|
78
78
|
}): Promise<PartialBatchResult<MexAVITransaction>>;
|
|
79
|
+
/**
|
|
80
|
+
* Transforms a flattened AVITransactionSort to nested TransactionSort format.
|
|
81
|
+
*
|
|
82
|
+
* Maps flattened field names to their full API paths.
|
|
83
|
+
*/
|
|
84
|
+
protected applyScopeToSort(sort?: AVITransactionSort): TransactionSort | undefined;
|
|
79
85
|
protected transformToNested(data: CreateAVITransactionInput): CreateTransactionInput;
|
|
80
86
|
protected transformUpdateToNested(data: UpdateAVITransactionInput): UpdateTransactionInput;
|
|
81
87
|
protected instantiate(data: TransactionData): MexAVITransaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/transactions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/transactions.ts"],"names":[],"mappings":"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"}
|