@artu-ai/compliance-sdk 0.9.0 → 0.9.2
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/errors/api.d.ts.map +1 -1
- package/dist/errors/base.d.ts.map +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/upload.d.ts.map +1 -1
- package/dist/errors/validation.d.ts.map +1 -1
- package/dist/exports/base.d.ts.map +1 -1
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/mexico/actividad-vulnerable/avi.d.ts.map +1 -1
- package/dist/exports/mexico/actividad-vulnerable/jys.d.ts.map +1 -1
- package/dist/exports/mexico/actividad-vulnerable/mjr.d.ts.map +1 -1
- package/dist/exports/mexico/actividad-vulnerable/tsc.d.ts.map +1 -1
- package/dist/exports/mexico/cnbv/transmisor.d.ts +211 -0
- package/dist/exports/mexico/cnbv/transmisor.d.ts.map +1 -0
- package/dist/exports/mexico/cnbv/transmisor.js +100 -0
- package/dist/exports/mexico/index.d.ts +1 -0
- package/dist/exports/mexico/index.d.ts.map +1 -1
- package/dist/exports/mexico/index.js +4 -0
- package/dist/models/Address.d.ts.map +1 -1
- package/dist/models/Alert.d.ts.map +1 -1
- package/dist/models/AlertItem.d.ts.map +1 -1
- package/dist/models/BankAccount.d.ts.map +1 -1
- package/dist/models/Client.d.ts +11 -1
- package/dist/models/Client.d.ts.map +1 -1
- package/dist/models/Client.js +14 -0
- package/dist/models/ContactMethod.d.ts.map +1 -1
- package/dist/models/Document.d.ts.map +1 -1
- package/dist/models/LinkedClient.d.ts.map +1 -1
- package/dist/models/Transaction.d.ts.map +1 -1
- package/dist/models/base.d.ts.map +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +3 -0
- package/dist/models/mex/MexAddress.d.ts.map +1 -1
- package/dist/models/mex/MexAlert.d.ts.map +1 -1
- package/dist/models/mex/MexAlertItem.d.ts.map +1 -1
- package/dist/models/mex/MexBankAccount.d.ts.map +1 -1
- package/dist/models/mex/MexClient.d.ts +8 -0
- package/dist/models/mex/MexClient.d.ts.map +1 -1
- package/dist/models/mex/MexClient.js +18 -0
- package/dist/models/mex/MexDocument.d.ts.map +1 -1
- package/dist/models/mex/MexTransaction.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/MexActividadVulnerableAlert.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/MexActividadVulnerableAlertItem.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/MexActividadVulnerableClient.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/MexActividadVulnerableTransaction.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/avi/MexAVIAlert.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/avi/MexAVIAlertItem.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/avi/MexAVIClient.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/avi/MexAVITransaction.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/index.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/jys/MexJYSAlert.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/jys/MexJYSAlertItem.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/jys/MexJYSClient.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/jys/MexJYSTransaction.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/mjr/MexMJRAlert.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/mjr/MexMJRAlertItem.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/mjr/MexMJRClient.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/mjr/MexMJRTransaction.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/tsc/MexTSCAlert.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/tsc/MexTSCAlertItem.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/tsc/MexTSCClient.d.ts.map +1 -1
- package/dist/models/mex/actividad-vulnerable/tsc/MexTSCTransaction.d.ts.map +1 -1
- package/dist/models/mex/cnbv/index.d.ts +5 -0
- package/dist/models/mex/cnbv/index.d.ts.map +1 -0
- package/dist/models/mex/cnbv/index.js +4 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlert.d.ts +79 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlert.d.ts.map +1 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlert.js +95 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlertItem.d.ts +55 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlertItem.d.ts.map +1 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorAlertItem.js +63 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorClient.d.ts +50 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorClient.d.ts.map +1 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorClient.js +71 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorTransaction.d.ts +50 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorTransaction.d.ts.map +1 -0
- package/dist/models/mex/cnbv/transmisor/MexTransmisorTransaction.js +70 -0
- package/dist/models/mex/cnbv/transmisor/index.d.ts +8 -0
- package/dist/models/mex/cnbv/transmisor/index.d.ts.map +1 -0
- package/dist/models/mex/cnbv/transmisor/index.js +7 -0
- package/dist/models/mex/index.d.ts +1 -0
- package/dist/models/mex/index.d.ts.map +1 -1
- package/dist/models/mex/index.js +2 -0
- package/dist/models/types.d.ts.map +1 -1
- package/dist/namespaces/mexico/actividad-vulnerable/avi/index.d.ts.map +1 -1
- package/dist/namespaces/mexico/actividad-vulnerable/index.d.ts.map +1 -1
- package/dist/namespaces/mexico/actividad-vulnerable/jys/index.d.ts.map +1 -1
- package/dist/namespaces/mexico/actividad-vulnerable/tsc/index.d.ts.map +1 -1
- package/dist/namespaces/mexico/cnbv/index.d.ts +151 -0
- package/dist/namespaces/mexico/cnbv/index.d.ts.map +1 -0
- package/dist/namespaces/mexico/cnbv/index.js +24 -0
- package/dist/namespaces/mexico/cnbv/transmisor/index.d.ts +220 -0
- package/dist/namespaces/mexico/cnbv/transmisor/index.d.ts.map +1 -0
- package/dist/namespaces/mexico/cnbv/transmisor/index.js +40 -0
- package/dist/namespaces/mexico/index.d.ts +233 -1
- package/dist/namespaces/mexico/index.d.ts.map +1 -1
- package/dist/namespaces/mexico/index.js +7 -1
- package/dist/resources/addresses.d.ts.map +1 -1
- package/dist/resources/alerts.d.ts.map +1 -1
- package/dist/resources/bank-accounts.d.ts.map +1 -1
- package/dist/resources/base.d.ts +9 -1
- package/dist/resources/base.d.ts.map +1 -1
- package/dist/resources/base.js +13 -1
- package/dist/resources/clients.d.ts.map +1 -1
- package/dist/resources/contact-methods.d.ts.map +1 -1
- package/dist/resources/documents.d.ts.map +1 -1
- package/dist/resources/exchange-rates.d.ts.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/alerts.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/avi/transactions.js +8 -1
- package/dist/resources/mex/actividad-vulnerable/jys/alerts.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/jys/transactions.js +8 -1
- package/dist/resources/mex/actividad-vulnerable/mjr/alerts.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/mjr/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/mjr/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/mjr/transactions.js +8 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/alerts.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/clients.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/transactions.d.ts.map +1 -1
- package/dist/resources/mex/actividad-vulnerable/tsc/transactions.js +8 -1
- package/dist/resources/mex/addresses.d.ts.map +1 -1
- package/dist/resources/mex/alerts.d.ts.map +1 -1
- package/dist/resources/mex/bank-accounts.d.ts.map +1 -1
- package/dist/resources/mex/clients.d.ts.map +1 -1
- package/dist/resources/mex/cnbv/index.d.ts +5 -0
- package/dist/resources/mex/cnbv/index.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/index.js +4 -0
- package/dist/resources/mex/cnbv/transmisor/addresses.d.ts +88 -0
- package/dist/resources/mex/cnbv/transmisor/addresses.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/transmisor/addresses.js +232 -0
- package/dist/resources/mex/cnbv/transmisor/alerts.d.ts +72 -0
- package/dist/resources/mex/cnbv/transmisor/alerts.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/transmisor/alerts.js +364 -0
- package/dist/resources/mex/cnbv/transmisor/clients.d.ts +135 -0
- package/dist/resources/mex/cnbv/transmisor/clients.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/transmisor/clients.js +259 -0
- package/dist/resources/mex/cnbv/transmisor/index.d.ts +8 -0
- package/dist/resources/mex/cnbv/transmisor/index.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/transmisor/index.js +7 -0
- package/dist/resources/mex/cnbv/transmisor/transactions.d.ts +56 -0
- package/dist/resources/mex/cnbv/transmisor/transactions.d.ts.map +1 -0
- package/dist/resources/mex/cnbv/transmisor/transactions.js +241 -0
- package/dist/resources/mex/ebr.d.ts.map +1 -1
- package/dist/resources/mex/index.d.ts +1 -0
- package/dist/resources/mex/index.d.ts.map +1 -1
- package/dist/resources/mex/index.js +2 -0
- package/dist/resources/mex/transactions.d.ts.map +1 -1
- package/dist/resources/transactions.d.ts.map +1 -1
- package/dist/sdk/ComplianceSDK.d.ts +12 -2
- package/dist/sdk/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/ComplianceSDK.js +16 -2
- package/dist/sdk/base.d.ts.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/mex/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/ComplianceSDK.js +2 -2
- package/dist/sdk/mex/actividad-vulnerable/avi/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/avi/index.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/avi/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/index.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/jys/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/jys/index.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/jys/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/mjr/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/mjr/index.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/mjr/types.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/tsc/ComplianceSDK.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/tsc/index.d.ts.map +1 -1
- package/dist/sdk/mex/actividad-vulnerable/tsc/types.d.ts.map +1 -1
- package/dist/sdk/mex/cnbv/index.d.ts +11 -0
- package/dist/sdk/mex/cnbv/index.d.ts.map +1 -0
- package/dist/sdk/mex/cnbv/index.js +19 -0
- package/dist/sdk/mex/cnbv/transmisor/ComplianceSDK.d.ts +46 -0
- package/dist/sdk/mex/cnbv/transmisor/ComplianceSDK.d.ts.map +1 -0
- package/dist/sdk/mex/cnbv/transmisor/ComplianceSDK.js +39 -0
- package/dist/sdk/mex/cnbv/transmisor/index.d.ts +8 -0
- package/dist/sdk/mex/cnbv/transmisor/index.d.ts.map +1 -0
- package/dist/sdk/mex/cnbv/transmisor/index.js +9 -0
- package/dist/sdk/mex/cnbv/transmisor/types.d.ts +36 -0
- package/dist/sdk/mex/cnbv/transmisor/types.d.ts.map +1 -0
- package/dist/sdk/mex/cnbv/transmisor/types.js +20 -0
- package/dist/sdk/mex/index.d.ts +2 -1
- package/dist/sdk/mex/index.d.ts.map +1 -1
- package/dist/sdk/mex/index.js +6 -1
- package/dist/sdk/mex/types.d.ts +9 -2
- package/dist/sdk/mex/types.d.ts.map +1 -1
- package/dist/sdk/resource-registry.d.ts +1 -1
- package/dist/sdk/resource-registry.d.ts.map +1 -1
- package/dist/sdk/resource-registry.js +9 -6
- package/dist/sdk/sdk-registry.d.ts.map +1 -1
- package/dist/sdk/types.d.ts +11 -4
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/types.js +8 -3
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/filters.d.ts.map +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/pagination.d.ts.map +1 -1
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/trpc-client.d.ts.map +1 -1
- package/dist/utils/upload.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transmisor (CNBV Money Transmitters) Addresses Resource
|
|
3
|
+
*
|
|
4
|
+
* Extends MexAddressesResource with Transmisor-specific behavior:
|
|
5
|
+
* - Accepts flattened CreateTransmisorAddressInput (localidad at root level)
|
|
6
|
+
* - Nests localidad into jurisdictions.MX.cnbv.TRANSMISOR
|
|
7
|
+
*/
|
|
8
|
+
import { createTransmisorAddressInputSchema, replaceSyncItemSchema, updateTransmisorAddressInputSchema, upsertTransmisorAddressInputSchema, } from "@artu-ai/shared";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { MexAddressesResource } from "../../addresses";
|
|
11
|
+
// ===========================
|
|
12
|
+
// TransmisorAddressesResource
|
|
13
|
+
// ===========================
|
|
14
|
+
/**
|
|
15
|
+
* Transmisor (CNBV Money Transmitters) scoped addresses resource.
|
|
16
|
+
*
|
|
17
|
+
* Extends MexAddressesResource with Transmisor-specific address fields
|
|
18
|
+
* (localidad) that are nested into jurisdictions.MX.cnbv.TRANSMISOR.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const sdk = new ComplianceSDK({
|
|
23
|
+
* apiKey,
|
|
24
|
+
* environment: "test",
|
|
25
|
+
* jurisdiction: "MX",
|
|
26
|
+
* cnbv: "TRANSMISOR",
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* const address = await sdk.addresses.create({
|
|
30
|
+
* clientId: "client_123",
|
|
31
|
+
* street: "Paseo de la Reforma",
|
|
32
|
+
* exteriorNumber: "222",
|
|
33
|
+
* neighborhood: "Juárez",
|
|
34
|
+
* city: "Ciudad de México",
|
|
35
|
+
* state: "CDMX",
|
|
36
|
+
* postalCode: "06600",
|
|
37
|
+
* country: "MX",
|
|
38
|
+
* localidad: "00901003",
|
|
39
|
+
* type: "home",
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class TransmisorAddressesResource extends MexAddressesResource {
|
|
44
|
+
// ─────────────────────────────────────────────────────────────────
|
|
45
|
+
// CRUD Operations
|
|
46
|
+
// ─────────────────────────────────────────────────────────────────
|
|
47
|
+
async create(data) {
|
|
48
|
+
const validated = this.validate(createTransmisorAddressInputSchema, data);
|
|
49
|
+
const nestedData = this.transformToNested(validated);
|
|
50
|
+
const response = await this.execute(() => this.trpc.addresses.create.mutate(nestedData));
|
|
51
|
+
return this.instantiate(response);
|
|
52
|
+
}
|
|
53
|
+
async update(id, data) {
|
|
54
|
+
const validated = this.validate(updateTransmisorAddressInputSchema, data);
|
|
55
|
+
const nestedData = this.transformUpdateToNested(validated);
|
|
56
|
+
const response = await this.execute(() => this.trpc.addresses.update.mutate({ id, data: nestedData }));
|
|
57
|
+
return this.instantiate(response);
|
|
58
|
+
}
|
|
59
|
+
async createMany(addresses, options = {}) {
|
|
60
|
+
const atomic = options.atomic ?? true;
|
|
61
|
+
const validated = this.validate(z.array(createTransmisorAddressInputSchema), addresses);
|
|
62
|
+
const nestedItems = validated.map((a) => this.transformToNested(a));
|
|
63
|
+
const response = await this.execute(() => this.trpc.addresses.createMany.mutate({ items: nestedItems, atomic }));
|
|
64
|
+
if (response.atomic) {
|
|
65
|
+
return {
|
|
66
|
+
atomic: true,
|
|
67
|
+
data: response.data.map((a) => this.instantiate(a)),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return {
|
|
72
|
+
atomic: false,
|
|
73
|
+
succeeded: response.succeeded.map((item) => ({
|
|
74
|
+
index: item.index,
|
|
75
|
+
data: this.instantiate(item.data),
|
|
76
|
+
})),
|
|
77
|
+
failed: response.failed,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async updateMany(updates, options = {}) {
|
|
82
|
+
const atomic = options.atomic ?? true;
|
|
83
|
+
const updateItemSchema = z.object({
|
|
84
|
+
id: z.uuid(),
|
|
85
|
+
data: updateTransmisorAddressInputSchema,
|
|
86
|
+
});
|
|
87
|
+
const validated = this.validate(z.array(updateItemSchema), updates);
|
|
88
|
+
const nestedUpdates = validated.map((u) => ({
|
|
89
|
+
id: u.id,
|
|
90
|
+
data: this.transformUpdateToNested(u.data),
|
|
91
|
+
}));
|
|
92
|
+
const response = await this.execute(() => this.trpc.addresses.updateMany.mutate({ items: nestedUpdates, atomic }));
|
|
93
|
+
if (response.atomic) {
|
|
94
|
+
return {
|
|
95
|
+
atomic: true,
|
|
96
|
+
data: response.data.map((a) => this.instantiate(a)),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return {
|
|
101
|
+
atomic: false,
|
|
102
|
+
succeeded: response.succeeded.map((item) => ({
|
|
103
|
+
index: item.index,
|
|
104
|
+
data: this.instantiate(item.data),
|
|
105
|
+
})),
|
|
106
|
+
failed: response.failed,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// ─────────────────────────────────────────────────────────────────
|
|
111
|
+
// Upsert Operations
|
|
112
|
+
// ─────────────────────────────────────────────────────────────────
|
|
113
|
+
async upsertByExternalId(data) {
|
|
114
|
+
const validated = this.validate(upsertTransmisorAddressInputSchema, data);
|
|
115
|
+
const nestedData = this.transformToNested(validated);
|
|
116
|
+
const response = await this.execute(() => this.trpc.addresses.upsertByExternalId.mutate(nestedData));
|
|
117
|
+
return {
|
|
118
|
+
data: this.instantiate(response.data),
|
|
119
|
+
action: response.action,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async upsertManyByExternalId(addresses, options = {}) {
|
|
123
|
+
const atomic = options.atomic ?? true;
|
|
124
|
+
const validated = this.validate(z.array(upsertTransmisorAddressInputSchema), addresses);
|
|
125
|
+
const nestedItems = validated.map((a) => this.transformToNested(a));
|
|
126
|
+
const response = await this.execute(() => this.trpc.addresses.upsertManyByExternalId.mutate({
|
|
127
|
+
items: nestedItems,
|
|
128
|
+
atomic,
|
|
129
|
+
}));
|
|
130
|
+
if (response.atomic) {
|
|
131
|
+
return {
|
|
132
|
+
atomic: true,
|
|
133
|
+
data: response.data.map((item) => ({
|
|
134
|
+
data: this.instantiate(item.data),
|
|
135
|
+
action: item.action,
|
|
136
|
+
})),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return {
|
|
141
|
+
atomic: false,
|
|
142
|
+
succeeded: response.succeeded.map((item) => ({
|
|
143
|
+
index: item.index,
|
|
144
|
+
data: {
|
|
145
|
+
data: this.instantiate(item.data.data),
|
|
146
|
+
action: item.data.action,
|
|
147
|
+
},
|
|
148
|
+
})),
|
|
149
|
+
failed: response.failed,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async sync(clientId, items, options) {
|
|
154
|
+
const itemsWithClientId = items.map((item) => {
|
|
155
|
+
if (!("id" in item) || !item.id) {
|
|
156
|
+
return { ...item, clientId };
|
|
157
|
+
}
|
|
158
|
+
return item;
|
|
159
|
+
});
|
|
160
|
+
const validated = this.validate(z.array(replaceSyncItemSchema(createTransmisorAddressInputSchema, updateTransmisorAddressInputSchema)), itemsWithClientId);
|
|
161
|
+
const nestedItems = [];
|
|
162
|
+
for (const item of validated) {
|
|
163
|
+
if ("_delete" in item && item._delete) {
|
|
164
|
+
nestedItems.push(item);
|
|
165
|
+
}
|
|
166
|
+
else if ("id" in item && item.id) {
|
|
167
|
+
const { id, ...data } = item;
|
|
168
|
+
const transformed = this.transformUpdateToNested(data);
|
|
169
|
+
nestedItems.push({
|
|
170
|
+
id,
|
|
171
|
+
...transformed,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const transformed = this.transformToNested(item);
|
|
176
|
+
nestedItems.push(transformed);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const result = await super.sync(clientId, nestedItems, options);
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
// ─────────────────────────────────────────────────────────────────
|
|
183
|
+
// Protected Helpers
|
|
184
|
+
// ─────────────────────────────────────────────────────────────────
|
|
185
|
+
/**
|
|
186
|
+
* Transforms flattened Transmisor input to nested API format.
|
|
187
|
+
*
|
|
188
|
+
* Extracts localidad and nests it into jurisdictions.MX.cnbv.TRANSMISOR.
|
|
189
|
+
* Delegates base + MX fields to parent.
|
|
190
|
+
*/
|
|
191
|
+
transformToNested(data) {
|
|
192
|
+
const { localidad, ...mexData } = data;
|
|
193
|
+
const nested = super.transformToNested(mexData);
|
|
194
|
+
const mexJurisdiction = (nested.jurisdictions?.MX ?? {});
|
|
195
|
+
return {
|
|
196
|
+
...nested,
|
|
197
|
+
jurisdictions: {
|
|
198
|
+
MX: {
|
|
199
|
+
...mexJurisdiction,
|
|
200
|
+
cnbv: {
|
|
201
|
+
TRANSMISOR: { localidad },
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Transforms flattened Transmisor update input to nested API format.
|
|
209
|
+
*
|
|
210
|
+
* Always includes cnbv.TRANSMISOR marker for filterability.
|
|
211
|
+
*/
|
|
212
|
+
transformUpdateToNested(data) {
|
|
213
|
+
const { localidad, ...mexData } = data;
|
|
214
|
+
const nested = super.transformUpdateToNested(mexData);
|
|
215
|
+
const mexJurisdiction = (nested.jurisdictions?.MX ?? {});
|
|
216
|
+
const transmisorData = {};
|
|
217
|
+
if (localidad !== undefined)
|
|
218
|
+
transmisorData.localidad = localidad;
|
|
219
|
+
return {
|
|
220
|
+
...nested,
|
|
221
|
+
jurisdictions: {
|
|
222
|
+
MX: {
|
|
223
|
+
...mexJurisdiction,
|
|
224
|
+
cnbv: {
|
|
225
|
+
...mexJurisdiction.cnbv,
|
|
226
|
+
TRANSMISOR: transmisorData,
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transmisor (CNBV Money Transmitters) Alerts Resource
|
|
3
|
+
*
|
|
4
|
+
* Extends MexAlertsResource with Transmisor-specific behavior:
|
|
5
|
+
* - Accepts flattened CreateTransmisorAlertInput
|
|
6
|
+
* - Returns MexTransmisorAlert models
|
|
7
|
+
* - Nests Transmisor fields under jurisdictions.MX.cnbv.TRANSMISOR
|
|
8
|
+
*/
|
|
9
|
+
import type { CreateAlertInput, UpdateAlertInput, CreateAlertItemInput, UpdateAlertItemInput, CreateTransmisorAlertInput, UpdateTransmisorAlertInput, UpsertTransmisorAlertInput, CreateTransmisorAlertItemInput, UpdateTransmisorAlertItemInput, SubmitTransmisorAlertInput, ListOptions, PaginatedResponse, AtomicBatchResult, PartialBatchResult, ValidationResult, GenerateResult, SubmissionResult, TransmisorAlertDefaultsInput, UpsertResult } from "@artu-ai/shared";
|
|
10
|
+
import type { TransmisorAlertFilter, TransmisorAlertSort, TransmisorAlertItemFilter, AlertSort, AlertItemFilter, AlertItemSort } from "@artu-ai/shared";
|
|
11
|
+
import { MexAlertsResource } from "../../alerts";
|
|
12
|
+
import { MexTransmisorAlert, MexTransmisorAlertItem, type AlertData, type AlertItemData } from "../../../../models";
|
|
13
|
+
export declare class TransmisorAlertsResource extends MexAlertsResource<TransmisorAlertSort, TransmisorAlertDefaultsInput> {
|
|
14
|
+
create(data: CreateTransmisorAlertInput): Promise<MexTransmisorAlert>;
|
|
15
|
+
retrieve(id: string): Promise<MexTransmisorAlert>;
|
|
16
|
+
retrieveByMetadata(key: string, value: string): Promise<MexTransmisorAlert>;
|
|
17
|
+
retrieveByExternalId(externalId: string): Promise<MexTransmisorAlert>;
|
|
18
|
+
update(id: string, data: UpdateTransmisorAlertInput): Promise<MexTransmisorAlert>;
|
|
19
|
+
list(options?: ListOptions<TransmisorAlertFilter, TransmisorAlertSort>): Promise<PaginatedResponse<MexTransmisorAlert>>;
|
|
20
|
+
iterate(options?: {
|
|
21
|
+
filter?: TransmisorAlertFilter;
|
|
22
|
+
sort?: TransmisorAlertSort;
|
|
23
|
+
pageSize?: number;
|
|
24
|
+
}): AsyncGenerator<MexTransmisorAlert, void, undefined>;
|
|
25
|
+
count(filter?: TransmisorAlertFilter): Promise<number>;
|
|
26
|
+
createMany(alerts: CreateTransmisorAlertInput[], options?: {
|
|
27
|
+
atomic?: true;
|
|
28
|
+
}): Promise<AtomicBatchResult<MexTransmisorAlert>>;
|
|
29
|
+
createMany(alerts: CreateTransmisorAlertInput[], options: {
|
|
30
|
+
atomic: false;
|
|
31
|
+
}): Promise<PartialBatchResult<MexTransmisorAlert>>;
|
|
32
|
+
updateMany(updates: {
|
|
33
|
+
id: string;
|
|
34
|
+
data: UpdateTransmisorAlertInput;
|
|
35
|
+
}[], options?: {
|
|
36
|
+
atomic?: true;
|
|
37
|
+
}): Promise<AtomicBatchResult<MexTransmisorAlert>>;
|
|
38
|
+
updateMany(updates: {
|
|
39
|
+
id: string;
|
|
40
|
+
data: UpdateTransmisorAlertInput;
|
|
41
|
+
}[], options: {
|
|
42
|
+
atomic: false;
|
|
43
|
+
}): Promise<PartialBatchResult<MexTransmisorAlert>>;
|
|
44
|
+
upsertByExternalId(data: UpsertTransmisorAlertInput): Promise<UpsertResult<MexTransmisorAlert>>;
|
|
45
|
+
addItem(alertId: string, data: CreateTransmisorAlertItemInput): Promise<MexTransmisorAlertItem>;
|
|
46
|
+
getItem(alertId: string, itemId: string): Promise<MexTransmisorAlertItem>;
|
|
47
|
+
updateItem(alertId: string, itemId: string, data: UpdateTransmisorAlertItemInput): Promise<MexTransmisorAlertItem>;
|
|
48
|
+
listItems(alertId: string, options?: ListOptions<TransmisorAlertItemFilter, AlertItemSort>): Promise<PaginatedResponse<MexTransmisorAlertItem>>;
|
|
49
|
+
protected applyScopeToItemFilter(filter?: TransmisorAlertItemFilter): AlertItemFilter | undefined;
|
|
50
|
+
addItems(alertId: string, items: CreateTransmisorAlertItemInput[]): Promise<{
|
|
51
|
+
added: number;
|
|
52
|
+
items: MexTransmisorAlertItem[];
|
|
53
|
+
}>;
|
|
54
|
+
validateAlert(alertId: string, defaults: TransmisorAlertDefaultsInput): Promise<ValidationResult>;
|
|
55
|
+
generateAlert(alertId: string, defaults: TransmisorAlertDefaultsInput): Promise<GenerateResult>;
|
|
56
|
+
submit(input: SubmitTransmisorAlertInput): Promise<SubmissionResult>;
|
|
57
|
+
protected applyScopeToSort(sort?: TransmisorAlertSort): AlertSort | undefined;
|
|
58
|
+
protected transformToNested(data: CreateTransmisorAlertInput): CreateAlertInput;
|
|
59
|
+
protected transformUpdateToNested(data: UpdateTransmisorAlertInput): UpdateAlertInput;
|
|
60
|
+
protected instantiate(data: AlertData): MexTransmisorAlert;
|
|
61
|
+
protected instantiateItem(data: AlertItemData): MexTransmisorAlertItem;
|
|
62
|
+
protected transformItemToNested(data: CreateTransmisorAlertItemInput): CreateAlertItemInput;
|
|
63
|
+
protected transformItemUpdateToNested(data: UpdateTransmisorAlertItemInput): UpdateAlertItemInput;
|
|
64
|
+
/**
|
|
65
|
+
* Transforms Transmisor defaults to nested API format for validate/generate.
|
|
66
|
+
*/
|
|
67
|
+
protected transformDefaultsToNested(alertId: string, defaults: TransmisorAlertDefaultsInput): {
|
|
68
|
+
alertId: string;
|
|
69
|
+
jurisdictions: unknown;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=alerts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../../../../src/resources/mex/cnbv/transmisor/alerts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transmisor (CNBV Money Transmitters) Alerts Resource
|
|
3
|
+
*
|
|
4
|
+
* Extends MexAlertsResource with Transmisor-specific behavior:
|
|
5
|
+
* - Accepts flattened CreateTransmisorAlertInput
|
|
6
|
+
* - Returns MexTransmisorAlert models
|
|
7
|
+
* - Nests Transmisor fields under jurisdictions.MX.cnbv.TRANSMISOR
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { createTransmisorAlertInputSchema, updateTransmisorAlertInputSchema, upsertTransmisorAlertInputSchema, createTransmisorAlertItemInputSchema, updateTransmisorAlertItemInputSchema, submitTransmisorAlertInputSchema, transmisorDefaultsInputSchema, transformSort, transmisorAlertFieldMapping, } from "@artu-ai/shared";
|
|
11
|
+
import { MexAlertsResource } from "../../alerts";
|
|
12
|
+
import { MexTransmisorAlert, MexTransmisorAlertItem, } from "../../../../models";
|
|
13
|
+
// ===========================
|
|
14
|
+
// TransmisorAlertsResource
|
|
15
|
+
// ===========================
|
|
16
|
+
export class TransmisorAlertsResource extends MexAlertsResource {
|
|
17
|
+
// ─────────────────────────────────────────────────────────────────
|
|
18
|
+
// Alert CRUD
|
|
19
|
+
// ─────────────────────────────────────────────────────────────────
|
|
20
|
+
async create(data) {
|
|
21
|
+
const validated = this.validate(createTransmisorAlertInputSchema, data);
|
|
22
|
+
const nestedData = this.transformToNested(validated);
|
|
23
|
+
const response = await this.execute(() => this.trpc.alerts.create.mutate(nestedData));
|
|
24
|
+
return this.instantiate(response);
|
|
25
|
+
}
|
|
26
|
+
async retrieve(id) {
|
|
27
|
+
const response = await this.execute(() => this.trpc.alerts.retrieve.query({ id }));
|
|
28
|
+
return this.instantiate(response);
|
|
29
|
+
}
|
|
30
|
+
async retrieveByMetadata(key, value) {
|
|
31
|
+
const response = await this.execute(() => this.trpc.alerts.retrieveByMetadata.query({ key, value }));
|
|
32
|
+
return this.instantiate(response);
|
|
33
|
+
}
|
|
34
|
+
async retrieveByExternalId(externalId) {
|
|
35
|
+
const response = await this.execute(() => this.trpc.alerts.retrieveByExternalId.query({ externalId }));
|
|
36
|
+
return this.instantiate(response);
|
|
37
|
+
}
|
|
38
|
+
async update(id, data) {
|
|
39
|
+
const validated = this.validate(updateTransmisorAlertInputSchema, data);
|
|
40
|
+
const nestedData = this.transformUpdateToNested(validated);
|
|
41
|
+
const response = await this.execute(() => this.trpc.alerts.update.mutate({ id, data: nestedData }));
|
|
42
|
+
return this.instantiate(response);
|
|
43
|
+
}
|
|
44
|
+
// ─────────────────────────────────────────────────────────────────
|
|
45
|
+
// List & Pagination
|
|
46
|
+
// ─────────────────────────────────────────────────────────────────
|
|
47
|
+
async list(options) {
|
|
48
|
+
const scopedFilter = this.applyScopeToFilter(options?.filter);
|
|
49
|
+
const scopedSort = this.applyScopeToSort(options?.sort);
|
|
50
|
+
const response = await this.execute(() => this.trpc.alerts.list.query({
|
|
51
|
+
...options,
|
|
52
|
+
filter: scopedFilter,
|
|
53
|
+
sort: scopedSort,
|
|
54
|
+
}));
|
|
55
|
+
return {
|
|
56
|
+
data: response.data.map((r) => this.instantiate(r)),
|
|
57
|
+
pagination: response.pagination,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
iterate(options) {
|
|
61
|
+
const scopedFilter = this.applyScopeToFilter(options?.filter);
|
|
62
|
+
return this.createIterator({
|
|
63
|
+
filter: scopedFilter,
|
|
64
|
+
sort: options?.sort,
|
|
65
|
+
pageSize: options?.pageSize,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async count(filter) {
|
|
69
|
+
const scopedFilter = this.applyScopeToFilter(filter);
|
|
70
|
+
const response = await this.execute(() => this.trpc.alerts.count.query({ filter: scopedFilter }));
|
|
71
|
+
return response.count;
|
|
72
|
+
}
|
|
73
|
+
async createMany(alerts, options = {}) {
|
|
74
|
+
const atomic = options.atomic ?? true;
|
|
75
|
+
const validated = this.validate(z.array(createTransmisorAlertInputSchema), alerts);
|
|
76
|
+
const nestedItems = validated.map((r) => this.transformToNested(r));
|
|
77
|
+
const response = await this.execute(() => this.trpc.alerts.createMany.mutate({ items: nestedItems, atomic }));
|
|
78
|
+
if (response.atomic) {
|
|
79
|
+
return {
|
|
80
|
+
atomic: true,
|
|
81
|
+
data: response.data.map((r) => this.instantiate(r)),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
return {
|
|
86
|
+
atomic: false,
|
|
87
|
+
succeeded: response.succeeded.map((item) => ({
|
|
88
|
+
index: item.index,
|
|
89
|
+
data: this.instantiate(item.data),
|
|
90
|
+
})),
|
|
91
|
+
failed: response.failed,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async updateMany(updates, options = {}) {
|
|
96
|
+
const atomic = options.atomic ?? true;
|
|
97
|
+
const updateItemSchema = z.object({
|
|
98
|
+
id: z.uuid(),
|
|
99
|
+
data: updateTransmisorAlertInputSchema,
|
|
100
|
+
});
|
|
101
|
+
const validated = this.validate(z.array(updateItemSchema), updates);
|
|
102
|
+
const nestedUpdates = validated.map((u) => ({
|
|
103
|
+
id: u.id,
|
|
104
|
+
data: this.transformUpdateToNested(u.data),
|
|
105
|
+
}));
|
|
106
|
+
const response = await this.execute(() => this.trpc.alerts.updateMany.mutate({ items: nestedUpdates, atomic }));
|
|
107
|
+
if (response.atomic) {
|
|
108
|
+
return {
|
|
109
|
+
atomic: true,
|
|
110
|
+
data: response.data.map((r) => this.instantiate(r)),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return {
|
|
115
|
+
atomic: false,
|
|
116
|
+
succeeded: response.succeeded.map((item) => ({
|
|
117
|
+
index: item.index,
|
|
118
|
+
data: this.instantiate(item.data),
|
|
119
|
+
})),
|
|
120
|
+
failed: response.failed,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ─────────────────────────────────────────────────────────────────
|
|
125
|
+
// Upsert Operations
|
|
126
|
+
// ─────────────────────────────────────────────────────────────────
|
|
127
|
+
async upsertByExternalId(data) {
|
|
128
|
+
const validated = this.validate(upsertTransmisorAlertInputSchema, data);
|
|
129
|
+
const nestedData = this.transformToNested(validated);
|
|
130
|
+
const response = await this.execute(() => this.trpc.alerts.upsertByExternalId.mutate(nestedData));
|
|
131
|
+
return {
|
|
132
|
+
data: this.instantiate(response.data),
|
|
133
|
+
action: response.action,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// ─────────────────────────────────────────────────────────────────
|
|
137
|
+
// Alert Items
|
|
138
|
+
// ─────────────────────────────────────────────────────────────────
|
|
139
|
+
async addItem(alertId, data) {
|
|
140
|
+
const validated = this.validate(createTransmisorAlertItemInputSchema, data);
|
|
141
|
+
const nestedData = this.transformItemToNested(validated);
|
|
142
|
+
const response = await this.execute(() => this.trpc.alerts.addItem.mutate({ alertId, data: nestedData }));
|
|
143
|
+
return this.instantiateItem(response);
|
|
144
|
+
}
|
|
145
|
+
async getItem(alertId, itemId) {
|
|
146
|
+
const response = await this.execute(() => this.trpc.alerts.getItem.query({ alertId, itemId }));
|
|
147
|
+
return this.instantiateItem(response);
|
|
148
|
+
}
|
|
149
|
+
async updateItem(alertId, itemId, data) {
|
|
150
|
+
const validated = this.validate(updateTransmisorAlertItemInputSchema, data);
|
|
151
|
+
const nestedData = this.transformItemUpdateToNested(validated);
|
|
152
|
+
const response = await this.execute(() => this.trpc.alerts.updateItem.mutate({
|
|
153
|
+
alertId,
|
|
154
|
+
itemId,
|
|
155
|
+
data: nestedData,
|
|
156
|
+
}));
|
|
157
|
+
return this.instantiateItem(response);
|
|
158
|
+
}
|
|
159
|
+
async listItems(alertId, options) {
|
|
160
|
+
const scopedFilter = this.applyScopeToItemFilter(options?.filter);
|
|
161
|
+
const response = await this.execute(() => this.trpc.alerts.listItems.query({
|
|
162
|
+
alertId,
|
|
163
|
+
...options,
|
|
164
|
+
filter: scopedFilter,
|
|
165
|
+
}));
|
|
166
|
+
return {
|
|
167
|
+
data: response.data.map((i) => this.instantiateItem(i)),
|
|
168
|
+
pagination: response.pagination,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
applyScopeToItemFilter(filter) {
|
|
172
|
+
if (!filter)
|
|
173
|
+
return undefined;
|
|
174
|
+
const { isPrimary, ...baseFields } = filter;
|
|
175
|
+
if (isPrimary === undefined) {
|
|
176
|
+
return baseFields;
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
...baseFields,
|
|
180
|
+
jurisdictions: {
|
|
181
|
+
MX: {
|
|
182
|
+
cnbv: {
|
|
183
|
+
TRANSMISOR: { isPrimary },
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async addItems(alertId, items) {
|
|
190
|
+
const validated = this.validate(z.array(createTransmisorAlertItemInputSchema), items);
|
|
191
|
+
const nestedItems = validated.map((i) => this.transformItemToNested(i));
|
|
192
|
+
const response = await this.execute(() => this.trpc.alerts.addItems.mutate({ alertId, items: nestedItems }));
|
|
193
|
+
return {
|
|
194
|
+
added: response.added,
|
|
195
|
+
items: response.items.map((i) => this.instantiateItem(i)),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
// ─────────────────────────────────────────────────────────────────
|
|
199
|
+
// Validation
|
|
200
|
+
// ─────────────────────────────────────────────────────────────────
|
|
201
|
+
async validateAlert(alertId, defaults) {
|
|
202
|
+
const validated = this.validate(transmisorDefaultsInputSchema, defaults);
|
|
203
|
+
const nestedInput = this.transformDefaultsToNested(alertId, validated);
|
|
204
|
+
return this.execute(() => this.trpc.alerts.validate.mutate(nestedInput));
|
|
205
|
+
}
|
|
206
|
+
// ─────────────────────────────────────────────────────────────────
|
|
207
|
+
// Generation
|
|
208
|
+
// ─────────────────────────────────────────────────────────────────
|
|
209
|
+
async generateAlert(alertId, defaults) {
|
|
210
|
+
const validated = this.validate(transmisorDefaultsInputSchema, defaults);
|
|
211
|
+
const nestedInput = this.transformDefaultsToNested(alertId, validated);
|
|
212
|
+
return this.execute(() => this.trpc.alerts.generate.mutate(nestedInput));
|
|
213
|
+
}
|
|
214
|
+
// ─────────────────────────────────────────────────────────────────
|
|
215
|
+
// Submission
|
|
216
|
+
// ─────────────────────────────────────────────────────────────────
|
|
217
|
+
async submit(input) {
|
|
218
|
+
const validated = this.validate(submitTransmisorAlertInputSchema, input);
|
|
219
|
+
const jurisdictions = {
|
|
220
|
+
MX: {
|
|
221
|
+
cnbv: {
|
|
222
|
+
TRANSMISOR: {
|
|
223
|
+
acuseRecibo: validated.acuseRecibo,
|
|
224
|
+
notes: validated.notes,
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
return this.execute(() => this.trpc.alerts.submit.mutate({
|
|
230
|
+
alertId: validated.alertId,
|
|
231
|
+
jurisdictions,
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
// ─────────────────────────────────────────────────────────────────
|
|
235
|
+
// Protected Helpers
|
|
236
|
+
// ─────────────────────────────────────────────────────────────────
|
|
237
|
+
applyScopeToSort(sort) {
|
|
238
|
+
if (!sort || sort.length === 0) {
|
|
239
|
+
return undefined;
|
|
240
|
+
}
|
|
241
|
+
return transformSort(sort, transmisorAlertFieldMapping);
|
|
242
|
+
}
|
|
243
|
+
transformToNested(data) {
|
|
244
|
+
const { tipoReporte, periodoReporte, organoSupervisor, claveSujetoObligado, agenteNombre, agenteApellidoPaterno, agenteApellidoMaterno, agenteRfc, ...baseFields } = data;
|
|
245
|
+
return {
|
|
246
|
+
...baseFields,
|
|
247
|
+
jurisdictions: {
|
|
248
|
+
MX: {
|
|
249
|
+
cnbv: {
|
|
250
|
+
TRANSMISOR: {
|
|
251
|
+
tipoReporte,
|
|
252
|
+
periodoReporte,
|
|
253
|
+
organoSupervisor,
|
|
254
|
+
claveSujetoObligado,
|
|
255
|
+
agenteNombre,
|
|
256
|
+
agenteApellidoPaterno,
|
|
257
|
+
agenteApellidoMaterno,
|
|
258
|
+
agenteRfc,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
transformUpdateToNested(data) {
|
|
266
|
+
const { tipoReporte, periodoReporte, organoSupervisor, claveSujetoObligado, agenteNombre, agenteApellidoPaterno, agenteApellidoMaterno, agenteRfc, ...baseFields } = data;
|
|
267
|
+
const transmisorData = {};
|
|
268
|
+
if (tipoReporte !== undefined)
|
|
269
|
+
transmisorData.tipoReporte = tipoReporte;
|
|
270
|
+
if (periodoReporte !== undefined)
|
|
271
|
+
transmisorData.periodoReporte = periodoReporte;
|
|
272
|
+
if (organoSupervisor !== undefined)
|
|
273
|
+
transmisorData.organoSupervisor = organoSupervisor;
|
|
274
|
+
if (claveSujetoObligado !== undefined)
|
|
275
|
+
transmisorData.claveSujetoObligado = claveSujetoObligado;
|
|
276
|
+
if (agenteNombre !== undefined)
|
|
277
|
+
transmisorData.agenteNombre = agenteNombre;
|
|
278
|
+
if (agenteApellidoPaterno !== undefined)
|
|
279
|
+
transmisorData.agenteApellidoPaterno = agenteApellidoPaterno;
|
|
280
|
+
if (agenteApellidoMaterno !== undefined)
|
|
281
|
+
transmisorData.agenteApellidoMaterno = agenteApellidoMaterno;
|
|
282
|
+
if (agenteRfc !== undefined)
|
|
283
|
+
transmisorData.agenteRfc = agenteRfc;
|
|
284
|
+
return {
|
|
285
|
+
...baseFields,
|
|
286
|
+
jurisdictions: {
|
|
287
|
+
MX: {
|
|
288
|
+
cnbv: {
|
|
289
|
+
TRANSMISOR: transmisorData,
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
instantiate(data) {
|
|
296
|
+
return new MexTransmisorAlert(data);
|
|
297
|
+
}
|
|
298
|
+
instantiateItem(data) {
|
|
299
|
+
return new MexTransmisorAlertItem(data);
|
|
300
|
+
}
|
|
301
|
+
transformItemToNested(data) {
|
|
302
|
+
const { isPrimary, fechaDeteccion, descripcionOperacion, razones, ...baseFields } = data;
|
|
303
|
+
const transmisorData = {};
|
|
304
|
+
if (isPrimary !== undefined)
|
|
305
|
+
transmisorData.isPrimary = isPrimary;
|
|
306
|
+
if (fechaDeteccion !== undefined)
|
|
307
|
+
transmisorData.fechaDeteccion = fechaDeteccion;
|
|
308
|
+
if (descripcionOperacion !== undefined)
|
|
309
|
+
transmisorData.descripcionOperacion = descripcionOperacion;
|
|
310
|
+
if (razones !== undefined)
|
|
311
|
+
transmisorData.razones = razones;
|
|
312
|
+
return {
|
|
313
|
+
...baseFields,
|
|
314
|
+
jurisdictions: {
|
|
315
|
+
MX: {
|
|
316
|
+
cnbv: {
|
|
317
|
+
TRANSMISOR: transmisorData,
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
transformItemUpdateToNested(data) {
|
|
324
|
+
const { isPrimary, fechaDeteccion, descripcionOperacion, razones, ...baseFields } = data;
|
|
325
|
+
const transmisorData = {};
|
|
326
|
+
if (isPrimary !== undefined)
|
|
327
|
+
transmisorData.isPrimary = isPrimary;
|
|
328
|
+
if (fechaDeteccion !== undefined)
|
|
329
|
+
transmisorData.fechaDeteccion = fechaDeteccion;
|
|
330
|
+
if (descripcionOperacion !== undefined)
|
|
331
|
+
transmisorData.descripcionOperacion = descripcionOperacion;
|
|
332
|
+
if (razones !== undefined)
|
|
333
|
+
transmisorData.razones = razones;
|
|
334
|
+
if (Object.keys(transmisorData).length === 0) {
|
|
335
|
+
return baseFields;
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
...baseFields,
|
|
339
|
+
jurisdictions: {
|
|
340
|
+
MX: {
|
|
341
|
+
cnbv: {
|
|
342
|
+
TRANSMISOR: transmisorData,
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Transforms Transmisor defaults to nested API format for validate/generate.
|
|
350
|
+
*/
|
|
351
|
+
transformDefaultsToNested(alertId, defaults) {
|
|
352
|
+
return {
|
|
353
|
+
alertId,
|
|
354
|
+
jurisdictions: {
|
|
355
|
+
MX: {
|
|
356
|
+
cnbv: {
|
|
357
|
+
...defaults,
|
|
358
|
+
TRANSMISOR: defaults,
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
}
|