@artu-ai/compliance-sdk 0.5.4 → 0.6.1

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 (73) hide show
  1. package/dist/errors/validation.d.ts.map +1 -1
  2. package/dist/errors/validation.js +19 -1
  3. package/dist/resources/addresses.d.ts +29 -2
  4. package/dist/resources/addresses.d.ts.map +1 -1
  5. package/dist/resources/addresses.js +65 -4
  6. package/dist/resources/bank-accounts.d.ts +29 -2
  7. package/dist/resources/bank-accounts.d.ts.map +1 -1
  8. package/dist/resources/bank-accounts.js +65 -4
  9. package/dist/resources/clients.d.ts +59 -4
  10. package/dist/resources/clients.d.ts.map +1 -1
  11. package/dist/resources/clients.js +85 -8
  12. package/dist/resources/contact-methods.d.ts +29 -2
  13. package/dist/resources/contact-methods.d.ts.map +1 -1
  14. package/dist/resources/contact-methods.js +65 -4
  15. package/dist/resources/documents.d.ts +24 -19
  16. package/dist/resources/documents.d.ts.map +1 -1
  17. package/dist/resources/documents.js +51 -1
  18. package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts +31 -5
  19. package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts.map +1 -1
  20. package/dist/resources/mex/actividad-vulnerable/avi/clients.js +65 -9
  21. package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts +26 -2
  22. package/dist/resources/mex/actividad-vulnerable/avi/reports.d.ts.map +1 -1
  23. package/dist/resources/mex/actividad-vulnerable/avi/reports.js +58 -4
  24. package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts +26 -2
  25. package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts.map +1 -1
  26. package/dist/resources/mex/actividad-vulnerable/avi/transactions.js +58 -4
  27. package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts +26 -2
  28. package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts.map +1 -1
  29. package/dist/resources/mex/actividad-vulnerable/jys/clients.js +58 -4
  30. package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts +26 -2
  31. package/dist/resources/mex/actividad-vulnerable/jys/reports.d.ts.map +1 -1
  32. package/dist/resources/mex/actividad-vulnerable/jys/reports.js +58 -4
  33. package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts +26 -2
  34. package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts.map +1 -1
  35. package/dist/resources/mex/actividad-vulnerable/jys/transactions.js +58 -4
  36. package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts +26 -2
  37. package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts.map +1 -1
  38. package/dist/resources/mex/actividad-vulnerable/tsc/clients.js +58 -4
  39. package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts +26 -2
  40. package/dist/resources/mex/actividad-vulnerable/tsc/reports.d.ts.map +1 -1
  41. package/dist/resources/mex/actividad-vulnerable/tsc/reports.js +58 -4
  42. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts +26 -2
  43. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts.map +1 -1
  44. package/dist/resources/mex/actividad-vulnerable/tsc/transactions.js +58 -4
  45. package/dist/resources/mex/addresses.d.ts +26 -2
  46. package/dist/resources/mex/addresses.d.ts.map +1 -1
  47. package/dist/resources/mex/addresses.js +66 -5
  48. package/dist/resources/mex/bank-accounts.d.ts +13 -2
  49. package/dist/resources/mex/bank-accounts.d.ts.map +1 -1
  50. package/dist/resources/mex/bank-accounts.js +17 -3
  51. package/dist/resources/mex/clients.d.ts +39 -11
  52. package/dist/resources/mex/clients.d.ts.map +1 -1
  53. package/dist/resources/mex/clients.js +82 -20
  54. package/dist/resources/mex/reports.d.ts +37 -12
  55. package/dist/resources/mex/reports.d.ts.map +1 -1
  56. package/dist/resources/mex/reports.js +71 -21
  57. package/dist/resources/mex/transactions.d.ts +38 -10
  58. package/dist/resources/mex/transactions.d.ts.map +1 -1
  59. package/dist/resources/mex/transactions.js +73 -20
  60. package/dist/resources/reports.d.ts +29 -2
  61. package/dist/resources/reports.d.ts.map +1 -1
  62. package/dist/resources/reports.js +57 -3
  63. package/dist/resources/transactions.d.ts +29 -2
  64. package/dist/resources/transactions.d.ts.map +1 -1
  65. package/dist/resources/transactions.js +57 -3
  66. package/dist/sdk/ComplianceSDK.d.ts.map +1 -1
  67. package/dist/sdk/ComplianceSDK.js +2 -0
  68. package/dist/utils/trpc-client.d.ts +1 -19879
  69. package/dist/utils/trpc-client.d.ts.map +1 -1
  70. package/dist/utils/upload.d.ts +6 -0
  71. package/dist/utils/upload.d.ts.map +1 -1
  72. package/dist/utils/upload.js +2 -1
  73. package/package.json +2 -2
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Manages communication channels (email, phone, etc.) for clients.
5
5
  */
6
- import type { CreateContactMethodInput, UpdateContactMethodInput, ContactMethodType, ContactMethodFilter, ContactMethodSort, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, SyncItem, SyncResult } from "@artu-ai/shared";
6
+ import type { CreateContactMethodInput, UpdateContactMethodInput, UpsertContactMethodInput, ContactMethodType, ContactMethodFilter, ContactMethodSort, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, SyncItem, SyncResult, UpsertResult } from "@artu-ai/shared";
7
7
  import { BaseResource } from "./base";
8
8
  import { ContactMethod, type ContactMethodData } from "../models/ContactMethod";
9
9
  /**
@@ -82,7 +82,11 @@ export declare class ContactMethodsResource extends BaseResource<ContactMethod,
82
82
  /**
83
83
  * Returns an async iterator over all contact methods matching the filter.
84
84
  */
85
- iterate(filter?: ContactMethodFilter): AsyncGenerator<ContactMethod, void, undefined>;
85
+ iterate(options?: {
86
+ filter?: ContactMethodFilter;
87
+ sort?: ContactMethodSort;
88
+ pageSize?: number;
89
+ }): AsyncGenerator<ContactMethod, void, undefined>;
86
90
  /**
87
91
  * Creates multiple contact methods in a single request.
88
92
  *
@@ -115,6 +119,29 @@ export declare class ContactMethodsResource extends BaseResource<ContactMethod,
115
119
  }[], options: {
116
120
  atomic: false;
117
121
  }): Promise<PartialBatchResult<ContactMethod>>;
122
+ /**
123
+ * Creates or updates a contact method by externalId.
124
+ *
125
+ * If a contact method with the given externalId exists, it will be updated.
126
+ * Otherwise, a new contact method will be created.
127
+ *
128
+ * @param data - Contact method upsert data (must include externalId and clientId)
129
+ * @returns The created or updated contact method with action indicator
130
+ */
131
+ upsertByExternalId(data: UpsertContactMethodInput): Promise<UpsertResult<ContactMethod>>;
132
+ /**
133
+ * Creates or updates multiple contact methods by externalId in a single request.
134
+ *
135
+ * @param contacts - Array of contact method upsert data (each must include externalId and clientId)
136
+ * @param options - Batch options (atomic: true by default)
137
+ * @returns Atomic result with data array, or partial result with succeeded/failed
138
+ */
139
+ upsertManyByExternalId(contacts: UpsertContactMethodInput[], options?: {
140
+ atomic?: true;
141
+ }): Promise<AtomicBatchResult<UpsertResult<ContactMethod>>>;
142
+ upsertManyByExternalId(contacts: UpsertContactMethodInput[], options: {
143
+ atomic: false;
144
+ }): Promise<PartialBatchResult<UpsertResult<ContactMethod>>>;
118
145
  /**
119
146
  * Syncs contact methods for a client - handles create, update, and delete in bulk.
120
147
  *
@@ -1 +1 @@
1
- {"version":3,"file":"contact-methods.d.ts","sourceRoot":"","sources":["../../src/resources/contact-methods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contact-methods.d.ts","sourceRoot":"","sources":["../../src/resources/contact-methods.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Manages communication channels (email, phone, etc.) for clients.
5
5
  */
6
6
  import { z } from "zod";
7
- import { createContactMethodInputSchema, updateContactMethodInputSchema, replaceSyncItemSchema, } from "@artu-ai/shared";
7
+ import { createContactMethodInputSchema, updateContactMethodInputSchema, upsertContactMethodInputSchema, replaceSyncItemSchema, } from "@artu-ai/shared";
8
8
  import { BaseResource } from "./base";
9
9
  import { ContactMethod } from "../models/ContactMethod";
10
10
  // ===========================
@@ -120,8 +120,12 @@ export class ContactMethodsResource extends BaseResource {
120
120
  /**
121
121
  * Returns an async iterator over all contact methods matching the filter.
122
122
  */
123
- iterate(filter) {
124
- return this.createIterator({ filter });
123
+ iterate(options) {
124
+ return this.createIterator({
125
+ filter: options?.filter,
126
+ sort: options?.sort,
127
+ pageSize: options?.pageSize,
128
+ });
125
129
  }
126
130
  async createMany(contacts, options = {}) {
127
131
  const atomic = options.atomic ?? true;
@@ -169,8 +173,65 @@ export class ContactMethodsResource extends BaseResource {
169
173
  };
170
174
  }
171
175
  }
176
+ // ─────────────────────────────────────────────────────────────────
177
+ // Upsert Operations
178
+ // ─────────────────────────────────────────────────────────────────
179
+ /**
180
+ * Creates or updates a contact method by externalId.
181
+ *
182
+ * If a contact method with the given externalId exists, it will be updated.
183
+ * Otherwise, a new contact method will be created.
184
+ *
185
+ * @param data - Contact method upsert data (must include externalId and clientId)
186
+ * @returns The created or updated contact method with action indicator
187
+ */
188
+ async upsertByExternalId(data) {
189
+ const validated = this.validate(upsertContactMethodInputSchema, data);
190
+ const response = await this.execute(() => this.trpc.contactMethods.upsertByExternalId.mutate(validated));
191
+ return {
192
+ data: this.instantiate(response.data),
193
+ action: response.action,
194
+ };
195
+ }
196
+ async upsertManyByExternalId(contacts, options = {}) {
197
+ const atomic = options.atomic ?? true;
198
+ const validated = this.validate(z.array(upsertContactMethodInputSchema), contacts);
199
+ const response = await this.execute(() => this.trpc.contactMethods.upsertManyByExternalId.mutate({
200
+ items: validated,
201
+ atomic,
202
+ }));
203
+ if (response.atomic) {
204
+ return {
205
+ atomic: true,
206
+ data: response.data.map((item) => ({
207
+ data: this.instantiate(item.data),
208
+ action: item.action,
209
+ })),
210
+ };
211
+ }
212
+ else {
213
+ return {
214
+ atomic: false,
215
+ succeeded: response.succeeded.map((item) => ({
216
+ index: item.index,
217
+ data: {
218
+ data: this.instantiate(item.data.data),
219
+ action: item.data.action,
220
+ },
221
+ })),
222
+ failed: response.failed,
223
+ };
224
+ }
225
+ }
172
226
  async sync(clientId, items, options) {
173
- const validated = this.validate(z.array(replaceSyncItemSchema(createContactMethodInputSchema, updateContactMethodInputSchema)), items);
227
+ // Inject clientId into create items (items without id) before validation
228
+ const itemsWithClientId = items.map((item) => {
229
+ if (!("id" in item) || !item.id) {
230
+ return { ...item, clientId };
231
+ }
232
+ return item;
233
+ });
234
+ const validated = this.validate(z.array(replaceSyncItemSchema(createContactMethodInputSchema, updateContactMethodInputSchema)), itemsWithClientId);
174
235
  const response = await this.execute(() => this.trpc.contactMethods.sync.mutate({
175
236
  clientId,
176
237
  items: validated,
@@ -4,31 +4,13 @@
4
4
  * CRUD operations for documents. File upload/download operations are handled separately.
5
5
  * All documents are created with pending_upload status.
6
6
  */
7
- import type { PaginatedResponse, DocumentFilter, DocumentSort, CreateDocumentInput, UpdateDocumentInput, ListOptions, ConfirmUploadInput, PresignedUploadUrl, PresignedDownloadUrl } from "@artu-ai/shared";
7
+ import type { PaginatedResponse, DocumentFilter, DocumentSort, CreateDocumentInput, UpdateDocumentInput, UpsertDocumentInput, ListOptions, ConfirmUploadInput, PresignedUploadUrl, PresignedDownloadUrl, AtomicBatchResult, PartialBatchResult, UpsertResult } from "@artu-ai/shared";
8
8
  import { Document, type DocumentData } from "../models/Document";
9
9
  import { BaseResource } from "./base";
10
10
  import { type UploadableFile, type ProgressCallback } from "../utils/upload";
11
11
  export interface BatchOptions {
12
12
  atomic?: boolean;
13
13
  }
14
- export interface AtomicBatchResult<T> {
15
- atomic: true;
16
- data: T[];
17
- }
18
- export interface PartialBatchResult<T> {
19
- atomic: false;
20
- succeeded: {
21
- index: number;
22
- data: T;
23
- }[];
24
- failed: {
25
- index: number;
26
- error: {
27
- code: string;
28
- message: string;
29
- };
30
- }[];
31
- }
32
14
  /**
33
15
  * Result of creating a document.
34
16
  *
@@ -316,6 +298,29 @@ export declare class DocumentsResource extends BaseResource<Document, CreateDocu
316
298
  }[], options: {
317
299
  atomic: false;
318
300
  }): Promise<PartialBatchResult<Document>>;
301
+ /**
302
+ * Creates or updates a document by externalId.
303
+ *
304
+ * If a document with the given externalId exists, it will be updated.
305
+ * Otherwise, a new document will be created.
306
+ *
307
+ * @param data - Document upsert data (must include externalId and clientId)
308
+ * @returns The created or updated document with action indicator
309
+ */
310
+ upsertByExternalId(data: UpsertDocumentInput): Promise<UpsertResult<Document>>;
311
+ /**
312
+ * Creates or updates multiple documents by externalId in a single request.
313
+ *
314
+ * @param documents - Array of document upsert data (each must include externalId and clientId)
315
+ * @param options - Batch options (atomic: true by default)
316
+ * @returns Atomic result with data array, or partial result with succeeded/failed
317
+ */
318
+ upsertManyByExternalId(documents: UpsertDocumentInput[], options?: {
319
+ atomic?: true;
320
+ }): Promise<AtomicBatchResult<UpsertResult<Document>>>;
321
+ upsertManyByExternalId(documents: UpsertDocumentInput[], options: {
322
+ atomic: false;
323
+ }): Promise<PartialBatchResult<UpsertResult<Document>>>;
319
324
  /**
320
325
  * Gets document count for a client
321
326
  *
@@ -1 +1 @@
1
- {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/resources/documents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/resources/documents.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * CRUD operations for documents. File upload/download operations are handled separately.
5
5
  * All documents are created with pending_upload status.
6
6
  */
7
- import { createDocumentInputSchema, updateDocumentInputSchema, confirmUploadInputSchema, } from "@artu-ai/shared";
7
+ import { createDocumentInputSchema, updateDocumentInputSchema, upsertDocumentInputSchema, confirmUploadInputSchema, } from "@artu-ai/shared";
8
8
  import { z } from "zod";
9
9
  import { Document } from "../models/Document";
10
10
  import { BaseResource } from "./base";
@@ -397,6 +397,56 @@ export class DocumentsResource extends BaseResource {
397
397
  }
398
398
  }
399
399
  // ─────────────────────────────────────────────────────────────────
400
+ // Upsert Operations
401
+ // ─────────────────────────────────────────────────────────────────
402
+ /**
403
+ * Creates or updates a document by externalId.
404
+ *
405
+ * If a document with the given externalId exists, it will be updated.
406
+ * Otherwise, a new document will be created.
407
+ *
408
+ * @param data - Document upsert data (must include externalId and clientId)
409
+ * @returns The created or updated document with action indicator
410
+ */
411
+ async upsertByExternalId(data) {
412
+ const validated = this.validate(upsertDocumentInputSchema, data);
413
+ const response = await this.execute(() => this.trpc.documents.upsertByExternalId.mutate(validated));
414
+ return {
415
+ data: this.instantiate(response.data),
416
+ action: response.action,
417
+ };
418
+ }
419
+ async upsertManyByExternalId(documents, options = {}) {
420
+ const atomic = options.atomic ?? true;
421
+ const validated = this.validate(z.array(upsertDocumentInputSchema), documents);
422
+ const response = await this.execute(() => this.trpc.documents.upsertManyByExternalId.mutate({
423
+ items: validated,
424
+ atomic,
425
+ }));
426
+ if (response.atomic) {
427
+ return {
428
+ atomic: true,
429
+ data: response.data.map((item) => ({
430
+ data: this.instantiate(item.data),
431
+ action: item.action,
432
+ })),
433
+ };
434
+ }
435
+ else {
436
+ return {
437
+ atomic: false,
438
+ succeeded: response.succeeded.map((item) => ({
439
+ index: item.index,
440
+ data: {
441
+ data: this.instantiate(item.data.data),
442
+ action: item.data.action,
443
+ },
444
+ })),
445
+ failed: response.failed,
446
+ };
447
+ }
448
+ }
449
+ // ─────────────────────────────────────────────────────────────────
400
450
  // Helpers
401
451
  // ─────────────────────────────────────────────────────────────────
402
452
  /**
@@ -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, 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";
8
+ import type { CreateClientInput, UpdateClientInput, ClientFilter, ClientSort, ListOptions, PaginatedResponse, CreateAVIClientInput, UpdateAVIClientInput, UpsertAVIClientInput, AtomicBatchResult, PartialBatchResult, ClientRelationshipType, LinkedClient as LinkedClientInput, CreateMexAddressInput, UpdateMexAddressInput, CreateContactMethodInput, UpdateContactMethodInput, CreateBankAccountInput, UpdateBankAccountInput, SyncItem, SyncResult, AVIClientFilter, AVIClientSort, UpsertResult } 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";
@@ -78,7 +78,11 @@ export declare class AVIClientsResource extends MexClientsResource<AVIClientSort
78
78
  * Accepts fully flattened AVI filter (MX and AVI fields at root level)
79
79
  * and automatically transforms to nested format before calling the API.
80
80
  */
81
- iterate(filter?: AVIClientFilter): AsyncGenerator<MexAVIClient, void, undefined>;
81
+ iterate(options?: {
82
+ filter?: AVIClientFilter;
83
+ sort?: AVIClientSort;
84
+ pageSize?: number;
85
+ }): AsyncGenerator<MexAVIClient, void, undefined>;
82
86
  /**
83
87
  * Creates multiple AVI clients with flattened input.
84
88
  */
@@ -103,6 +107,26 @@ export declare class AVIClientsResource extends MexClientsResource<AVIClientSort
103
107
  }[], options: {
104
108
  atomic: false;
105
109
  }): Promise<PartialBatchResult<MexAVIClient>>;
110
+ /**
111
+ * Creates or updates an AVI client by externalId.
112
+ *
113
+ * @param data - Client upsert data with AVI fields at root level (must include externalId)
114
+ * @returns The created or updated client with action indicator
115
+ */
116
+ upsertByExternalId(data: UpsertAVIClientInput): Promise<UpsertResult<MexAVIClient>>;
117
+ /**
118
+ * Creates or updates multiple AVI clients by externalId.
119
+ *
120
+ * @param clients - Array of client upsert data (each must include externalId)
121
+ * @param options - Batch options (atomic: true by default)
122
+ * @returns Atomic result with data array, or partial result with succeeded/failed
123
+ */
124
+ upsertManyByExternalId(clients: UpsertAVIClientInput[], options?: {
125
+ atomic?: true;
126
+ }): Promise<AtomicBatchResult<UpsertResult<MexAVIClient>>>;
127
+ upsertManyByExternalId(clients: UpsertAVIClientInput[], options: {
128
+ atomic: false;
129
+ }): Promise<PartialBatchResult<UpsertResult<MexAVIClient>>>;
106
130
  linkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType, metadata?: Record<string, unknown>): Promise<MexAVIClient>;
107
131
  unlinkClient(parentClientId: string, childClientId: string, relationshipType: ClientRelationshipType): Promise<MexAVIClient>;
108
132
  listLinkedClients(parentClientId: string, relationshipType?: ClientRelationshipType): Promise<LinkedClient[]>;
@@ -136,13 +160,15 @@ export declare class AVIClientsResource extends MexClientsResource<AVIClientSort
136
160
  bankAccounts: SyncResult<MexBankAccount>;
137
161
  }>;
138
162
  /**
139
- * Transforms a flattened AVIClientFilter to nested ClientFilter format
140
- * and applies Mexico jurisdiction scoping.
163
+ * Transforms a flattened AVIClientFilter to nested ClientFilter format.
141
164
  *
142
165
  * Extracts AVI-specific fields (username) from root level and nests them
143
166
  * under jurisdictions.MX.actividadVulnerable.AVI.
167
+ *
168
+ * Note: This method only transforms filters, it does not automatically add
169
+ * jurisdiction or activity scoping. Use explicit filters if needed.
144
170
  */
145
- protected applyScopeToFilter(filter?: AVIClientFilter): ClientFilter;
171
+ protected applyScopeToFilter(filter?: AVIClientFilter): ClientFilter | undefined;
146
172
  /**
147
173
  * Transforms a flattened AVIClientSort to nested ClientSort format.
148
174
  *
@@ -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,UAAU,EACV,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,EACf,aAAa,EACd,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,aAAa,CAAC;IAKvE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAW/D;;OAEG;IACG,QAAQ,CACZ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,YAAY,CAAC;IAOxB;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOrE;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAc3E;;;;;;;;;;;;;;;;OAgBG;IACG,IAAI,CACR,OAAO,CAAC,EAAE,WAAW,CAAC,eAAe,EAAE,aAAa,CAAC,GACpD,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAkB3C;;;;;OAKG;IACH,OAAO,CACL,MAAM,CAAC,EAAE,eAAe,GACvB,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;IAShD;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,IAAI,CAAA;KAAE,GAC1B,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACrC,UAAU,CACd,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAmC5C;;OAEG;IACG,UAAU,CACd,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,EAAE,EACrD,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,IAAI,CAAA;KAAE,GAC1B,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACrC,UAAU,CACd,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,EAAE,EACrD,OAAO,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IA4CtC,UAAU,CACd,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,sBAAsB,EACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC;IAYlB,YAAY,CAChB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,sBAAsB,GACvC,OAAO,CAAC,YAAY,CAAC;IAWlB,iBAAiB,CACrB,cAAc,EAAE,MAAM,EACtB,gBAAgB,CAAC,EAAE,sBAAsB,GACxC,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpB,gBAAgB,CACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,iBAAiB,EAAE,GACjC,OAAO,CAAC,YAAY,CAAC;IAgBlB,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,oBAAoB,CAAC;QAC9B,SAAS,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9C,cAAc,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACtD,YAAY,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClD,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;KACrC,EACD,OAAO,EAAE;QAAE,WAAW,EAAE,IAAI,CAAA;KAAE,GAC7B,OAAO,CAAC;QACT,MAAM,EAAE,YAAY,CAAC;QACrB,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QAClC,cAAc,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1C,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;KAC1C,CAAC;IACI,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,oBAAoB,CAAC;QAC9B,SAAS,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9C,cAAc,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACtD,YAAY,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClD,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;KACrC,EACD,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAClC,OAAO,CAAC;QACT,MAAM,EAAE,YAAY,CAAC;QACrB,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;QAClC,cAAc,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1C,YAAY,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;KAC1C,CAAC;IA+CF;;;;;;OAMG;cACgB,kBAAkB,CACnC,MAAM,CAAC,EAAE,eAAe,GACvB,YAAY;IAmCf;;;;OAIG;cACgB,gBAAgB,CACjC,IAAI,CAAC,EAAE,aAAa,GACnB,UAAU,GAAG,SAAS;IAOzB;;OAEG;cACgB,iBAAiB,CAClC,IAAI,EAAE,oBAAoB,GACzB,iBAAiB;IAyBpB;;OAEG;cACgB,uBAAuB,CACxC,IAAI,EAAE,oBAAoB,GACzB,iBAAiB;IA0BpB;;OAEG;cACgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;CAG/D"}
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, transformSort, aviClientFieldMapping, } from "@artu-ai/shared";
9
+ import { CodigoActividad, createAVIClientInputSchema, updateAVIClientInputSchema, upsertAVIClientInputSchema, linkedClientSchema, transformSort, aviClientFieldMapping, } from "@artu-ai/shared";
10
10
  import { MexClientsResource } from "../../clients";
11
11
  import { MexAVIClient, } from "../../../../models";
12
12
  // ===========================
@@ -115,9 +115,14 @@ export class AVIClientsResource extends MexClientsResource {
115
115
  * Accepts fully flattened AVI filter (MX and AVI fields at root level)
116
116
  * and automatically transforms to nested format before calling the API.
117
117
  */
118
- iterate(filter) {
119
- const scopedFilter = this.applyScopeToFilter(filter);
120
- return this.createIterator({ filter: scopedFilter });
118
+ iterate(options) {
119
+ const scopedFilter = this.applyScopeToFilter(options?.filter);
120
+ // Note: sort is passed through - createIterator calls list() which handles transformation
121
+ return this.createIterator({
122
+ filter: scopedFilter,
123
+ sort: options?.sort,
124
+ pageSize: options?.pageSize,
125
+ });
121
126
  }
122
127
  async createMany(clients, options = {}) {
123
128
  const atomic = options.atomic ?? true;
@@ -171,6 +176,55 @@ export class AVIClientsResource extends MexClientsResource {
171
176
  }
172
177
  }
173
178
  // ─────────────────────────────────────────────────────────────────
179
+ // Upsert Operations
180
+ // ─────────────────────────────────────────────────────────────────
181
+ /**
182
+ * Creates or updates an AVI client by externalId.
183
+ *
184
+ * @param data - Client upsert data with AVI fields at root level (must include externalId)
185
+ * @returns The created or updated client with action indicator
186
+ */
187
+ async upsertByExternalId(data) {
188
+ const validated = this.validate(upsertAVIClientInputSchema, data);
189
+ const nestedData = this.transformToNested(validated);
190
+ const response = await this.execute(() => this.trpc.clients.upsertByExternalId.mutate(nestedData));
191
+ return {
192
+ data: this.instantiate(response.data),
193
+ action: response.action,
194
+ };
195
+ }
196
+ async upsertManyByExternalId(clients, options = {}) {
197
+ const atomic = options.atomic ?? true;
198
+ const validated = this.validate(z.array(upsertAVIClientInputSchema), clients);
199
+ const nestedClients = validated.map((c) => this.transformToNested(c));
200
+ const response = await this.execute(() => this.trpc.clients.upsertManyByExternalId.mutate({
201
+ items: nestedClients,
202
+ atomic,
203
+ }));
204
+ if (response.atomic) {
205
+ return {
206
+ atomic: true,
207
+ data: response.data.map((item) => ({
208
+ data: this.instantiate(item.data),
209
+ action: item.action,
210
+ })),
211
+ };
212
+ }
213
+ else {
214
+ return {
215
+ atomic: false,
216
+ succeeded: response.succeeded.map((item) => ({
217
+ index: item.index,
218
+ data: {
219
+ data: this.instantiate(item.data.data),
220
+ action: item.data.action,
221
+ },
222
+ })),
223
+ failed: response.failed,
224
+ };
225
+ }
226
+ }
227
+ // ─────────────────────────────────────────────────────────────────
174
228
  // Client-to-Client Relationship Management (scoped returns)
175
229
  // ─────────────────────────────────────────────────────────────────
176
230
  async linkClient(parentClientId, childClientId, relationshipType, metadata) {
@@ -221,15 +275,17 @@ export class AVIClientsResource extends MexClientsResource {
221
275
  // Protected Helpers
222
276
  // ─────────────────────────────────────────────────────────────────
223
277
  /**
224
- * Transforms a flattened AVIClientFilter to nested ClientFilter format
225
- * and applies Mexico jurisdiction scoping.
278
+ * Transforms a flattened AVIClientFilter to nested ClientFilter format.
226
279
  *
227
280
  * Extracts AVI-specific fields (username) from root level and nests them
228
281
  * under jurisdictions.MX.actividadVulnerable.AVI.
282
+ *
283
+ * Note: This method only transforms filters, it does not automatically add
284
+ * jurisdiction or activity scoping. Use explicit filters if needed.
229
285
  */
230
286
  applyScopeToFilter(filter) {
231
287
  if (!filter) {
232
- return super.applyScopeToFilter(undefined);
288
+ return undefined;
233
289
  }
234
290
  // Extract AVI-specific filter fields
235
291
  const { username, ...mexFilter } = filter;
@@ -237,11 +293,11 @@ export class AVIClientsResource extends MexClientsResource {
237
293
  const nestedFilter = super.applyScopeToFilter(mexFilter);
238
294
  // Only add AVI activity filter if username is provided
239
295
  if (username !== undefined) {
240
- const mexJurisdiction = (nestedFilter.jurisdictions?.MX ?? {});
296
+ const mexJurisdiction = (nestedFilter?.jurisdictions?.MX ?? {});
241
297
  return {
242
298
  ...nestedFilter,
243
299
  jurisdictions: {
244
- ...nestedFilter.jurisdictions,
300
+ ...nestedFilter?.jurisdictions,
245
301
  MX: {
246
302
  ...mexJurisdiction,
247
303
  actividadVulnerable: {
@@ -5,7 +5,7 @@
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, AviReportDefaultsInput, SubmitAVIReportInput } from "@artu-ai/shared";
8
+ import type { CreateReportInput, UpdateReportInput, CreateReportItemInput, UpdateReportItemInput, CreateAVIReportInput, UpdateAVIReportInput, UpsertAVIReportInput, CreateAVIReportItemInput, UpdateAVIReportItemInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, ValidationResult, GenerateResult, SubmissionResult, AviReportDefaultsInput, SubmitAVIReportInput, UpsertResult } from "@artu-ai/shared";
9
9
  import type { AVIReportFilter, AVIReportSort, AVIReportItemFilter, ReportSort, ReportItemFilter, ReportItemSort } from "@artu-ai/shared";
10
10
  import { MexReportsResource } from "../../reports";
11
11
  import { MexAVIReport, MexAVIReportItem, type ReportData, type ReportItemData } from "../../../../models";
@@ -46,7 +46,11 @@ export declare class AVIReportsResource extends MexReportsResource<AVIReportSort
46
46
  *
47
47
  * Accepts flattened AVI filter (future AVI-specific report fields at root level).
48
48
  */
49
- iterate(filter?: AVIReportFilter): AsyncGenerator<MexAVIReport, void, undefined>;
49
+ iterate(options?: {
50
+ filter?: AVIReportFilter;
51
+ sort?: AVIReportSort;
52
+ pageSize?: number;
53
+ }): AsyncGenerator<MexAVIReport, void, undefined>;
50
54
  createMany(reports: CreateAVIReportInput[], options?: {
51
55
  atomic?: true;
52
56
  }): Promise<AtomicBatchResult<MexAVIReport>>;
@@ -65,6 +69,26 @@ export declare class AVIReportsResource extends MexReportsResource<AVIReportSort
65
69
  }[], options: {
66
70
  atomic: false;
67
71
  }): Promise<PartialBatchResult<MexAVIReport>>;
72
+ /**
73
+ * Creates or updates an AVI report by externalId.
74
+ *
75
+ * @param data - Report upsert data with AVI fields at root level (must include externalId)
76
+ * @returns The created or updated report with action indicator
77
+ */
78
+ upsertByExternalId(data: UpsertAVIReportInput): Promise<UpsertResult<MexAVIReport>>;
79
+ /**
80
+ * Creates or updates multiple AVI reports by externalId.
81
+ *
82
+ * @param reports - Array of report upsert data (each must include externalId)
83
+ * @param options - Batch options (atomic: true by default)
84
+ * @returns Atomic result with data array, or partial result with succeeded/failed
85
+ */
86
+ upsertManyByExternalId(reports: UpsertAVIReportInput[], options?: {
87
+ atomic?: true;
88
+ }): Promise<AtomicBatchResult<UpsertResult<MexAVIReport>>>;
89
+ upsertManyByExternalId(reports: UpsertAVIReportInput[], options: {
90
+ atomic: false;
91
+ }): Promise<PartialBatchResult<UpsertResult<MexAVIReport>>>;
68
92
  addItem(reportId: string, data: CreateAVIReportItemInput): Promise<MexAVIReportItem>;
69
93
  getItem(reportId: string, itemId: string): Promise<MexAVIReportItem>;
70
94
  updateItem(reportId: string, itemId: string, data: UpdateAVIReportItemInput): Promise<MexAVIReportItem>;
@@ -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,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,kBAAmB,SAAQ,kBAAkB,CACxD,aAAa,EACb,sBAAsB,CACvB;IAKO,MAAM,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAWzD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO3C,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOrE,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO/D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAc3E;;;;OAIG;IACG,IAAI,CACR,OAAO,CAAC,EAAE,WAAW,CAAC,eAAe,EAAE,aAAa,CAAC,GACpD,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAkB3C;;;;OAIG;IACH,OAAO,CACL,MAAM,CAAC,EAAE,eAAe,GACvB,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC;IAS1C,UAAU,CACd,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,IAAI,CAAA;KAAE,GAC1B,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACrC,UAAU,CACd,OAAO,EAAE,oBAAoB,EAAE,EAC/B,OAAO,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAmCtC,UAAU,CACd,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,EAAE,EACrD,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,IAAI,CAAA;KAAE,GAC1B,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACrC,UAAU,CACd,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAA;KAAE,EAAE,EACrD,OAAO,EAAE;QAAE,MAAM,EAAE,KAAK,CAAA;KAAE,GACzB,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IA4CtC,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAWtB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOpE,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IActB,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,WAAW,CAAC,mBAAmB,EAAE,cAAc,CAAC,GACzD,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAkB/C;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAC9B,MAAM,CAAC,EAAE,mBAAmB,GAC3B,gBAAgB,GAAG,SAAS;IA4BzB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,wBAAwB,EAAE,GAChC,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IAqBxD;;;;;;;;;;;;;;;;OAgBG;IACY,cAAc,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;IAc5B;;;;;;;;;;;;;;;;;OAiBG;IACY,cAAc,CAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,sBAAsB,GAC/B,OAAO,CAAC,cAAc,CAAC;IAc1B;;;;;;;;;;;;;OAaG;IACY,MAAM,CACnB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IA0B5B;;;;OAIG;cACgB,gBAAgB,CACjC,IAAI,CAAC,EAAE,aAAa,GACnB,UAAU,GAAG,SAAS;cAON,iBAAiB,CAClC,IAAI,EAAE,oBAAoB,GACzB,iBAAiB;cAeD,uBAAuB,CACxC,IAAI,EAAE,oBAAoB,GACzB,iBAAiB;cAID,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY;cAI3C,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB;IAI1E,SAAS,CAAC,qBAAqB,CAC7B,IAAI,EAAE,wBAAwB,GAC7B,qBAAqB;IAqBxB,SAAS,CAAC,2BAA2B,CACnC,IAAI,EAAE,wBAAwB,GAC7B,qBAAqB;IAyBxB;;OAEG;IACH,SAAS,CAAC,4BAA4B,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,sBAAsB,GAC/B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE;CAmBhD"}
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/actividad-vulnerable/avi/reports.ts"],"names":[],"mappings":"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"}