@fiado/type-kit 3.131.0 → 3.133.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.
@@ -0,0 +1,10 @@
1
+ import { describe, it, expect } from '@jest/globals';
2
+ import { PrincipalIdentifierEnum } from '../../../../src/platformRbac/enums/PrincipalIdentifierEnum';
3
+
4
+ describe('PrincipalIdentifierEnum', () => {
5
+ it('tiene EMAIL y PHONE con esos valores', () => {
6
+ expect(PrincipalIdentifierEnum.EMAIL).toBe('EMAIL');
7
+ expect(PrincipalIdentifierEnum.PHONE).toBe('PHONE');
8
+ expect(Object.values(PrincipalIdentifierEnum)).toEqual(['EMAIL', 'PHONE']);
9
+ });
10
+ });
@@ -19,4 +19,9 @@ export declare class CreatePoolRequest {
19
19
  passwordPolicy: PasswordPolicyConfig;
20
20
  customAttributes: CustomAttributeSpec[];
21
21
  appClientConfig: AppClientConfig;
22
+ /**
23
+ * DEC-RBAC-079: atributos de sign-in del pool (Cognito UsernameAttributes). Ausente → el connector
24
+ * default-ea a ['email'] (backward-compatible con los pools ya creados).
25
+ */
26
+ usernameAttributes?: Array<'email' | 'phone_number'>;
22
27
  }
@@ -59,3 +59,10 @@ __decorate([
59
59
  (0, class_transformer_1.Type)(() => AppClientConfig_1.AppClientConfig),
60
60
  __metadata("design:type", AppClientConfig_1.AppClientConfig)
61
61
  ], CreatePoolRequest.prototype, "appClientConfig", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ (0, class_validator_1.IsOptional)(),
65
+ (0, class_validator_1.IsArray)(),
66
+ (0, class_validator_1.IsIn)(['email', 'phone_number'], { each: true }),
67
+ __metadata("design:type", Array)
68
+ ], CreatePoolRequest.prototype, "usernameAttributes", void 0);
@@ -1,4 +1,5 @@
1
1
  import { PermissionScope } from '../enums/PermissionScope';
2
+ import { PrincipalIdentifierEnum } from '../enums/PrincipalIdentifierEnum';
2
3
  import { ApplicationStatus } from '../enums/ApplicationStatus';
3
4
  import type { UserFieldDef } from '../dtos/UserFieldDef';
4
5
  import type { TokenValidationMode } from '../enums/TokenValidationMode';
@@ -35,6 +36,14 @@ export interface ApplicationDefaults {
35
36
  brandingConfig?: ApplicationBrandingDefault;
36
37
  tokenValidationMode?: TokenValidationMode;
37
38
  autoregister?: AutoregisterConfig;
39
+ /** DEC-RBAC-079: identificador principal de login que heredan los tenants de esta app. Default EMAIL. */
40
+ principalIdentifier?: PrincipalIdentifierEnum;
41
+ /**
42
+ * DEC-RBAC-081: si la app permite un identificador secundario (el otro método) que el usuario/admin
43
+ * agrega y verifica después, habilitando login dual. Default false. INMUTABLE (define el
44
+ * UsernameAttributes del pool): true ⇒ pool con ['email','phone_number']. Heredado al tenant.
45
+ */
46
+ allowSecondary?: boolean;
38
47
  }
39
48
  export interface SeedRole {
40
49
  roleId: string;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * DEC-RBAC-079: identificador principal de login de una aplicación. Lo hereda cada tenant (inmutable)
3
+ * y determina el UsernameAttributes del pool, el campo obligatorio del alta y el canal de mensajes.
4
+ */
5
+ export declare enum PrincipalIdentifierEnum {
6
+ EMAIL = "EMAIL",
7
+ PHONE = "PHONE"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrincipalIdentifierEnum = void 0;
4
+ /**
5
+ * DEC-RBAC-079: identificador principal de login de una aplicación. Lo hereda cada tenant (inmutable)
6
+ * y determina el UsernameAttributes del pool, el campo obligatorio del alta y el canal de mensajes.
7
+ */
8
+ var PrincipalIdentifierEnum;
9
+ (function (PrincipalIdentifierEnum) {
10
+ PrincipalIdentifierEnum["EMAIL"] = "EMAIL";
11
+ PrincipalIdentifierEnum["PHONE"] = "PHONE";
12
+ })(PrincipalIdentifierEnum || (exports.PrincipalIdentifierEnum = PrincipalIdentifierEnum = {}));
@@ -1,6 +1,7 @@
1
1
  export { Permission, PERMISSION_BIT_ORDER, PERMS_VERSION, permissionsToBits, bitsToPermissions, } from './enums/Permission';
2
2
  export { PermissionScope } from './enums/PermissionScope';
3
3
  export { PermissionCategory } from './enums/PermissionCategory';
4
+ export { PrincipalIdentifierEnum } from './enums/PrincipalIdentifierEnum';
4
5
  export type { AuthContext } from './dtos/AuthContext';
5
6
  export type { RoleAssignmentInfo } from './dtos/RoleAssignmentInfo';
6
7
  export type { PermissionMeta } from './dtos/PermissionMeta';
@@ -23,7 +23,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
23
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.UserFieldType = exports.scopeRankOrder = exports.tableSuffixForLevel = exports.levelsOf = exports.TENANT_TYPES = exports.TenantType = exports.AuthorizeDenyReason = exports.PermissionCategory = exports.PermissionScope = exports.bitsToPermissions = exports.permissionsToBits = exports.PERMS_VERSION = exports.PERMISSION_BIT_ORDER = exports.Permission = void 0;
26
+ exports.UserFieldType = exports.scopeRankOrder = exports.tableSuffixForLevel = exports.levelsOf = exports.TENANT_TYPES = exports.TenantType = exports.AuthorizeDenyReason = exports.PrincipalIdentifierEnum = exports.PermissionCategory = exports.PermissionScope = exports.bitsToPermissions = exports.permissionsToBits = exports.PERMS_VERSION = exports.PERMISSION_BIT_ORDER = exports.Permission = void 0;
27
27
  var Permission_1 = require("./enums/Permission");
28
28
  Object.defineProperty(exports, "Permission", { enumerable: true, get: function () { return Permission_1.Permission; } });
29
29
  Object.defineProperty(exports, "PERMISSION_BIT_ORDER", { enumerable: true, get: function () { return Permission_1.PERMISSION_BIT_ORDER; } });
@@ -34,6 +34,9 @@ var PermissionScope_1 = require("./enums/PermissionScope");
34
34
  Object.defineProperty(exports, "PermissionScope", { enumerable: true, get: function () { return PermissionScope_1.PermissionScope; } });
35
35
  var PermissionCategory_1 = require("./enums/PermissionCategory");
36
36
  Object.defineProperty(exports, "PermissionCategory", { enumerable: true, get: function () { return PermissionCategory_1.PermissionCategory; } });
37
+ // DEC-RBAC-079: identificador principal de login por aplicación (heredado por tenant).
38
+ var PrincipalIdentifierEnum_1 = require("./enums/PrincipalIdentifierEnum");
39
+ Object.defineProperty(exports, "PrincipalIdentifierEnum", { enumerable: true, get: function () { return PrincipalIdentifierEnum_1.PrincipalIdentifierEnum; } });
37
40
  // Fase 1 — Custom Auth Challenge (Email OTP + TOTP) + MFA self-service.
38
41
  // Class values (no type-only) — los DTOs llevan decoradores class-validator y se hidratan con plainToInstance en runtime.
39
42
  __exportStar(require("./enums/MfaMethodEnum"), exports);
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Límites por usuario para el backoffice de Operación (pantalla Límites, read-only).
3
+ *
4
+ * Los LÍMITES los define el provider (UNIR): `UserCreditLimit` (Wlp Wallet daily/weekly
5
+ * + levelName) + `UserComplianceLimit` (ventanas 4/14/30/60/90 d). El **usage** NO lo
6
+ * expone UNIR (txAggregate da 403) → lo calcula el connector sumando las tx no-canceladas
7
+ * por ventana móvil. `limitUSD` es null cuando el provider no envía ese límite (d180, B3).
8
+ */
9
+ export declare class RemittanceLimitWindow {
10
+ /** Ventana en días: 1 | 4 | 7 | 14 | 30 | 60 | 90 | 180. */
11
+ windowDays: number;
12
+ /** Límite USD del provider; null si UNIR no lo da (p.ej. d180). */
13
+ limitUSD: number | null;
14
+ /** Consumo USD calculado desde nuestras tx (rolling window, no-canceladas). */
15
+ usedUSD: number;
16
+ /** Procedencia del límite: d1/d7 de UserCreditLimit; el resto de UserComplianceLimit. */
17
+ source: "credit" | "compliance";
18
+ }
19
+ export declare class RemittanceUserLimits {
20
+ directoryId: string;
21
+ /** Nivel de UserProfileInfo.remitterLevel (display). null si no se pudo leer. */
22
+ profileLevel: string | null;
23
+ /** Nivel de UserCreditLimit.levelName (el efectivo que enforza el provider). */
24
+ creditLevel: string | null;
25
+ /** profileLevel !== creditLevel (ambos no-null). Bug real del provider; se marca, no se corrige. */
26
+ discrepancy: boolean;
27
+ /** Ventanas con límite (provider) + consumo (calculado). */
28
+ windows: RemittanceLimitWindow[];
29
+ /** ISO — cuándo se trajeron los límites del provider (para el FreshnessBadge). */
30
+ lastSyncedAt: string;
31
+ }
32
+ export declare class RemittanceUserLimitsBatchResponse {
33
+ items: RemittanceUserLimits[];
34
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemittanceUserLimitsBatchResponse = exports.RemittanceUserLimits = exports.RemittanceLimitWindow = void 0;
4
+ /**
5
+ * Límites por usuario para el backoffice de Operación (pantalla Límites, read-only).
6
+ *
7
+ * Los LÍMITES los define el provider (UNIR): `UserCreditLimit` (Wlp Wallet daily/weekly
8
+ * + levelName) + `UserComplianceLimit` (ventanas 4/14/30/60/90 d). El **usage** NO lo
9
+ * expone UNIR (txAggregate da 403) → lo calcula el connector sumando las tx no-canceladas
10
+ * por ventana móvil. `limitUSD` es null cuando el provider no envía ese límite (d180, B3).
11
+ */
12
+ class RemittanceLimitWindow {
13
+ }
14
+ exports.RemittanceLimitWindow = RemittanceLimitWindow;
15
+ class RemittanceUserLimits {
16
+ }
17
+ exports.RemittanceUserLimits = RemittanceUserLimits;
18
+ class RemittanceUserLimitsBatchResponse {
19
+ }
20
+ exports.RemittanceUserLimitsBatchResponse = RemittanceUserLimitsBatchResponse;
@@ -34,3 +34,4 @@ export * from "./RemittanceBackofficeUserDetail";
34
34
  export * from "./RemittanceBackofficeUserListResponse";
35
35
  export * from "./RemittanceBackofficeTxListResponse";
36
36
  export * from "./RemittanceBackofficeStats";
37
+ export * from "./RemittanceUserLimits";
@@ -50,3 +50,4 @@ __exportStar(require("./RemittanceBackofficeUserDetail"), exports);
50
50
  __exportStar(require("./RemittanceBackofficeUserListResponse"), exports);
51
51
  __exportStar(require("./RemittanceBackofficeTxListResponse"), exports);
52
52
  __exportStar(require("./RemittanceBackofficeStats"), exports);
53
+ __exportStar(require("./RemittanceUserLimits"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.131.0",
3
+ "version": "3.133.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import { Expose, Type } from 'class-transformer';
2
- import { IsArray, IsString, ValidateNested } from 'class-validator';
2
+ import { IsArray, IsIn, IsOptional, IsString, ValidateNested } from 'class-validator';
3
3
  import { PasswordPolicyConfig } from './PasswordPolicyConfig';
4
4
  import { CustomAttributeSpec } from './CustomAttributeSpec';
5
5
  import { AppClientConfig } from './AppClientConfig';
@@ -28,4 +28,14 @@ export class CreatePoolRequest {
28
28
 
29
29
  @Expose() @ValidateNested() @Type(() => AppClientConfig)
30
30
  appClientConfig!: AppClientConfig;
31
+
32
+ /**
33
+ * DEC-RBAC-079: atributos de sign-in del pool (Cognito UsernameAttributes). Ausente → el connector
34
+ * default-ea a ['email'] (backward-compatible con los pools ya creados).
35
+ */
36
+ @Expose()
37
+ @IsOptional()
38
+ @IsArray()
39
+ @IsIn(['email', 'phone_number'], { each: true })
40
+ usernameAttributes?: Array<'email' | 'phone_number'>;
31
41
  }
@@ -1,4 +1,5 @@
1
1
  import { PermissionScope } from '../enums/PermissionScope';
2
+ import { PrincipalIdentifierEnum } from '../enums/PrincipalIdentifierEnum';
2
3
  import { ApplicationStatus } from '../enums/ApplicationStatus';
3
4
  import type { UserFieldDef } from '../dtos/UserFieldDef';
4
5
  import type { TokenValidationMode } from '../enums/TokenValidationMode';
@@ -45,6 +46,14 @@ export interface ApplicationDefaults {
45
46
  brandingConfig?: ApplicationBrandingDefault;
46
47
  tokenValidationMode?: TokenValidationMode;
47
48
  autoregister?: AutoregisterConfig;
49
+ /** DEC-RBAC-079: identificador principal de login que heredan los tenants de esta app. Default EMAIL. */
50
+ principalIdentifier?: PrincipalIdentifierEnum;
51
+ /**
52
+ * DEC-RBAC-081: si la app permite un identificador secundario (el otro método) que el usuario/admin
53
+ * agrega y verifica después, habilitando login dual. Default false. INMUTABLE (define el
54
+ * UsernameAttributes del pool): true ⇒ pool con ['email','phone_number']. Heredado al tenant.
55
+ */
56
+ allowSecondary?: boolean;
48
57
  }
49
58
 
50
59
  export interface SeedRole {
@@ -0,0 +1,8 @@
1
+ /**
2
+ * DEC-RBAC-079: identificador principal de login de una aplicación. Lo hereda cada tenant (inmutable)
3
+ * y determina el UsernameAttributes del pool, el campo obligatorio del alta y el canal de mensajes.
4
+ */
5
+ export enum PrincipalIdentifierEnum {
6
+ EMAIL = 'EMAIL',
7
+ PHONE = 'PHONE',
8
+ }
@@ -17,6 +17,8 @@ export {
17
17
  } from './enums/Permission';
18
18
  export { PermissionScope } from './enums/PermissionScope';
19
19
  export { PermissionCategory } from './enums/PermissionCategory';
20
+ // DEC-RBAC-079: identificador principal de login por aplicación (heredado por tenant).
21
+ export { PrincipalIdentifierEnum } from './enums/PrincipalIdentifierEnum';
20
22
 
21
23
  export type { AuthContext } from './dtos/AuthContext';
22
24
  export type { RoleAssignmentInfo } from './dtos/RoleAssignmentInfo';
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Límites por usuario para el backoffice de Operación (pantalla Límites, read-only).
3
+ *
4
+ * Los LÍMITES los define el provider (UNIR): `UserCreditLimit` (Wlp Wallet daily/weekly
5
+ * + levelName) + `UserComplianceLimit` (ventanas 4/14/30/60/90 d). El **usage** NO lo
6
+ * expone UNIR (txAggregate da 403) → lo calcula el connector sumando las tx no-canceladas
7
+ * por ventana móvil. `limitUSD` es null cuando el provider no envía ese límite (d180, B3).
8
+ */
9
+ export class RemittanceLimitWindow {
10
+ /** Ventana en días: 1 | 4 | 7 | 14 | 30 | 60 | 90 | 180. */
11
+ windowDays!: number;
12
+ /** Límite USD del provider; null si UNIR no lo da (p.ej. d180). */
13
+ limitUSD!: number | null;
14
+ /** Consumo USD calculado desde nuestras tx (rolling window, no-canceladas). */
15
+ usedUSD!: number;
16
+ /** Procedencia del límite: d1/d7 de UserCreditLimit; el resto de UserComplianceLimit. */
17
+ source!: "credit" | "compliance";
18
+ }
19
+
20
+ export class RemittanceUserLimits {
21
+ directoryId!: string;
22
+ /** Nivel de UserProfileInfo.remitterLevel (display). null si no se pudo leer. */
23
+ profileLevel!: string | null;
24
+ /** Nivel de UserCreditLimit.levelName (el efectivo que enforza el provider). */
25
+ creditLevel!: string | null;
26
+ /** profileLevel !== creditLevel (ambos no-null). Bug real del provider; se marca, no se corrige. */
27
+ discrepancy!: boolean;
28
+ /** Ventanas con límite (provider) + consumo (calculado). */
29
+ windows!: RemittanceLimitWindow[];
30
+ /** ISO — cuándo se trajeron los límites del provider (para el FreshnessBadge). */
31
+ lastSyncedAt!: string;
32
+ }
33
+
34
+ export class RemittanceUserLimitsBatchResponse {
35
+ items!: RemittanceUserLimits[];
36
+ }
@@ -34,3 +34,4 @@ export * from "./RemittanceBackofficeUserDetail";
34
34
  export * from "./RemittanceBackofficeUserListResponse";
35
35
  export * from "./RemittanceBackofficeTxListResponse";
36
36
  export * from "./RemittanceBackofficeStats";
37
+ export * from "./RemittanceUserLimits";