@fiado/type-kit 3.580.0 → 3.581.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.
@@ -119,3 +119,47 @@ describe('respuestas de la revisión', () => {
119
119
  expect(catalog.storesPending).toBe(0);
120
120
  });
121
121
  });
122
+
123
+ describe('revisión con excludeExtraneousValues', () => {
124
+ function exposed<T extends object>(cls: ClassConstructor<T>, payload: object): T {
125
+ return plainToInstance(cls, payload, { excludeExtraneousValues: true });
126
+ }
127
+
128
+ it('StartOrgReconciliationRequest conserva entity y descarta lo ajeno', () => {
129
+ expect(exposed(StartOrgReconciliationRequest, { entity: 'USERS', extra: 1 })).toEqual({ entity: 'USERS' });
130
+ });
131
+
132
+ it('StartCatalogReconciliationRequest conserva entity y storeId', () => {
133
+ const dto = exposed(StartCatalogReconciliationRequest, { entity: 'INVENTORY', storeId: 's-1', extra: 1 });
134
+ expect({ ...dto }).toEqual({ entity: 'INVENTORY', storeId: 's-1' });
135
+ });
136
+
137
+ it('ReconciliationPageMessage conserva todos sus campos y valida sin errores', () => {
138
+ const payload = {
139
+ tenantId: 't-1',
140
+ retailerId: 'r-1',
141
+ entity: 'INVENTORY',
142
+ runId: 'run-1',
143
+ pageIndex: 2,
144
+ storeId: 's-1',
145
+ requeueCount: 3,
146
+ };
147
+ const dto = exposed(ReconciliationPageMessage, { ...payload, extra: 1 });
148
+ expect({ ...dto }).toEqual(payload);
149
+ expect(validateSync(dto)).toEqual([]);
150
+ });
151
+ });
152
+
153
+ describe('ReconciliationPageMessage.requeueCount', () => {
154
+ const valid = { tenantId: 't-1', retailerId: 'r-1', entity: 'STORES', runId: 'run-1', pageIndex: 0 };
155
+
156
+ it('es opcional y acepta enteros desde 0', () => {
157
+ expect(propsWithErrors(ReconciliationPageMessage, valid)).toEqual([]);
158
+ expect(propsWithErrors(ReconciliationPageMessage, { ...valid, requeueCount: 0 })).toEqual([]);
159
+ expect(propsWithErrors(ReconciliationPageMessage, { ...valid, requeueCount: 5 })).toEqual([]);
160
+ });
161
+
162
+ it.each([-1, 1.5, '2'])('rechaza %p', (requeueCount) => {
163
+ expect(propsWithErrors(ReconciliationPageMessage, { ...valid, requeueCount })).toContain('requeueCount');
164
+ });
165
+ });
@@ -0,0 +1,36 @@
1
+ import 'reflect-metadata';
2
+ import { plainToInstance } from 'class-transformer';
3
+ import { validateSync } from 'class-validator';
4
+ import { CentralResendKindEnum, ResendCentralSaleRequest } from '../../../src/retailWizard';
5
+ import * as root from '../../../src';
6
+
7
+ function errorsOf(payload: object): string[] {
8
+ const dto = plainToInstance(ResendCentralSaleRequest, payload, { excludeExtraneousValues: true });
9
+ return validateSync(dto).map((e) => e.property);
10
+ }
11
+
12
+ describe('CentralResendKindEnum', () => {
13
+ it('distingue el registro de la cancelación', () => {
14
+ expect(Object.values(CentralResendKindEnum)).toEqual(['SALE_REGISTER', 'SALE_CANCEL']);
15
+ });
16
+ });
17
+
18
+ describe('ResendCentralSaleRequest', () => {
19
+ it.each(['SALE_REGISTER', 'SALE_CANCEL'])('acepta %s', (kind) => {
20
+ expect(errorsOf({ kind })).toEqual([]);
21
+ });
22
+
23
+ it.each(['OTRO', undefined, 1])('rechaza %p', (kind) => {
24
+ expect(errorsOf({ kind })).toContain('kind');
25
+ });
26
+
27
+ it('conserva kind y descarta lo ajeno', () => {
28
+ const dto = plainToInstance(ResendCentralSaleRequest, { kind: 'SALE_CANCEL', extra: 1 }, { excludeExtraneousValues: true });
29
+ expect({ ...dto }).toEqual({ kind: 'SALE_CANCEL' });
30
+ });
31
+
32
+ it('se exporta desde la raíz de la lib', () => {
33
+ expect(root.RetailWizard.ResendCentralSaleRequest).toBe(ResendCentralSaleRequest);
34
+ expect(root.RetailWizard.CentralResendKindEnum).toBe(CentralResendKindEnum);
35
+ });
36
+ });
@@ -10,4 +10,6 @@ export declare class ReconciliationPageMessage {
10
10
  pageIndex: number;
11
11
  /** Tienda del mensaje en inventario. */
12
12
  storeId?: string;
13
+ /** Veces que el mensaje ya se re-encoló. */
14
+ requeueCount?: number;
13
15
  }
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ReconciliationPageMessage = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
15
  const ReconciliationEntityEnum_1 = require("../enums/ReconciliationEntityEnum");
15
16
  /** Mensaje de la cola de revisión: una página, o una tienda completa en inventario. */
@@ -17,32 +18,45 @@ class ReconciliationPageMessage {
17
18
  }
18
19
  exports.ReconciliationPageMessage = ReconciliationPageMessage;
19
20
  __decorate([
21
+ (0, class_transformer_1.Expose)(),
20
22
  (0, class_validator_1.IsString)(),
21
23
  (0, class_validator_1.IsNotEmpty)(),
22
24
  __metadata("design:type", String)
23
25
  ], ReconciliationPageMessage.prototype, "tenantId", void 0);
24
26
  __decorate([
27
+ (0, class_transformer_1.Expose)(),
25
28
  (0, class_validator_1.IsString)(),
26
29
  (0, class_validator_1.IsNotEmpty)(),
27
30
  __metadata("design:type", String)
28
31
  ], ReconciliationPageMessage.prototype, "retailerId", void 0);
29
32
  __decorate([
33
+ (0, class_transformer_1.Expose)(),
30
34
  (0, class_validator_1.IsEnum)(ReconciliationEntityEnum_1.ReconciliationEntityEnum),
31
35
  __metadata("design:type", String)
32
36
  ], ReconciliationPageMessage.prototype, "entity", void 0);
33
37
  __decorate([
38
+ (0, class_transformer_1.Expose)(),
34
39
  (0, class_validator_1.IsString)(),
35
40
  (0, class_validator_1.IsNotEmpty)(),
36
41
  __metadata("design:type", String)
37
42
  ], ReconciliationPageMessage.prototype, "runId", void 0);
38
43
  __decorate([
44
+ (0, class_transformer_1.Expose)(),
39
45
  (0, class_validator_1.IsInt)(),
40
46
  (0, class_validator_1.Min)(0),
41
47
  __metadata("design:type", Number)
42
48
  ], ReconciliationPageMessage.prototype, "pageIndex", void 0);
43
49
  __decorate([
50
+ (0, class_transformer_1.Expose)(),
44
51
  (0, class_validator_1.IsOptional)(),
45
52
  (0, class_validator_1.IsString)(),
46
53
  (0, class_validator_1.IsNotEmpty)(),
47
54
  __metadata("design:type", String)
48
55
  ], ReconciliationPageMessage.prototype, "storeId", void 0);
56
+ __decorate([
57
+ (0, class_transformer_1.Expose)(),
58
+ (0, class_validator_1.IsOptional)(),
59
+ (0, class_validator_1.IsInt)(),
60
+ (0, class_validator_1.Min)(0),
61
+ __metadata("design:type", Number)
62
+ ], ReconciliationPageMessage.prototype, "requeueCount", void 0);
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.StartCatalogReconciliationRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
15
  const ReconciliationEntityEnum_1 = require("../enums/ReconciliationEntityEnum");
15
16
  /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en catalog (backofficeStartCatalogReconciliation). */
@@ -17,10 +18,12 @@ class StartCatalogReconciliationRequest {
17
18
  }
18
19
  exports.StartCatalogReconciliationRequest = StartCatalogReconciliationRequest;
19
20
  __decorate([
21
+ (0, class_transformer_1.Expose)(),
20
22
  (0, class_validator_1.IsIn)([ReconciliationEntityEnum_1.ReconciliationEntityEnum.CATALOG, ReconciliationEntityEnum_1.ReconciliationEntityEnum.INVENTORY]),
21
23
  __metadata("design:type", String)
22
24
  ], StartCatalogReconciliationRequest.prototype, "entity", void 0);
23
25
  __decorate([
26
+ (0, class_transformer_1.Expose)(),
24
27
  (0, class_validator_1.IsOptional)(),
25
28
  (0, class_validator_1.IsString)(),
26
29
  (0, class_validator_1.IsNotEmpty)(),
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.StartOrgReconciliationRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
15
  const ReconciliationEntityEnum_1 = require("../enums/ReconciliationEntityEnum");
15
16
  /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en org (backofficeStartOrgReconciliation). */
@@ -17,6 +18,7 @@ class StartOrgReconciliationRequest {
17
18
  }
18
19
  exports.StartOrgReconciliationRequest = StartOrgReconciliationRequest;
19
20
  __decorate([
21
+ (0, class_transformer_1.Expose)(),
20
22
  (0, class_validator_1.IsIn)([ReconciliationEntityEnum_1.ReconciliationEntityEnum.STORES, ReconciliationEntityEnum_1.ReconciliationEntityEnum.USERS]),
21
23
  __metadata("design:type", String)
22
24
  ], StartOrgReconciliationRequest.prototype, "entity", void 0);
@@ -0,0 +1,5 @@
1
+ import { CentralResendKindEnum } from '../../enums/CentralResendKindEnum';
2
+ /** Body de POST /backoffice/sales/{saleId}/central-resend. */
3
+ export declare class ResendCentralSaleRequest {
4
+ kind: CentralResendKindEnum;
5
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResendCentralSaleRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const CentralResendKindEnum_1 = require("../../enums/CentralResendKindEnum");
16
+ /** Body de POST /backoffice/sales/{saleId}/central-resend. */
17
+ class ResendCentralSaleRequest {
18
+ }
19
+ exports.ResendCentralSaleRequest = ResendCentralSaleRequest;
20
+ __decorate([
21
+ (0, class_transformer_1.Expose)(),
22
+ (0, class_validator_1.IsEnum)(CentralResendKindEnum_1.CentralResendKindEnum),
23
+ __metadata("design:type", String)
24
+ ], ResendCentralSaleRequest.prototype, "kind", void 0);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mensaje a Central que el backoffice reenvía.
3
+ *
4
+ * SALE_REGISTER - Registro de la venta.
5
+ * SALE_CANCEL - Cancelación de la venta.
6
+ */
7
+ export declare enum CentralResendKindEnum {
8
+ SALE_REGISTER = "SALE_REGISTER",
9
+ SALE_CANCEL = "SALE_CANCEL"
10
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CentralResendKindEnum = void 0;
4
+ /**
5
+ * Mensaje a Central que el backoffice reenvía.
6
+ *
7
+ * SALE_REGISTER - Registro de la venta.
8
+ * SALE_CANCEL - Cancelación de la venta.
9
+ */
10
+ var CentralResendKindEnum;
11
+ (function (CentralResendKindEnum) {
12
+ CentralResendKindEnum["SALE_REGISTER"] = "SALE_REGISTER";
13
+ CentralResendKindEnum["SALE_CANCEL"] = "SALE_CANCEL";
14
+ })(CentralResendKindEnum || (exports.CentralResendKindEnum = CentralResendKindEnum = {}));
@@ -149,6 +149,8 @@ export * from './dtos/requests/AddSaleExceptionNoteRequest';
149
149
  export * from './dtos/requests/RunSalesReportRequest';
150
150
  export * from './dtos/requests/BackofficeCancelSaleRequest';
151
151
  export * from './dtos/requests/PortalCancelSaleRequest';
152
+ export * from './enums/CentralResendKindEnum';
153
+ export * from './dtos/requests/ResendCentralSaleRequest';
152
154
  export * from './dtos/responses/BackofficeSalesStatsResponse';
153
155
  export * from './dtos/responses/BackofficeSalesKpisResponse';
154
156
  export * from './dtos/responses/BackofficeReportsResponse';
@@ -180,6 +180,8 @@ __exportStar(require("./dtos/requests/AddSaleExceptionNoteRequest"), exports);
180
180
  __exportStar(require("./dtos/requests/RunSalesReportRequest"), exports);
181
181
  __exportStar(require("./dtos/requests/BackofficeCancelSaleRequest"), exports);
182
182
  __exportStar(require("./dtos/requests/PortalCancelSaleRequest"), exports);
183
+ __exportStar(require("./enums/CentralResendKindEnum"), exports);
184
+ __exportStar(require("./dtos/requests/ResendCentralSaleRequest"), exports);
183
185
  // Responses
184
186
  __exportStar(require("./dtos/responses/BackofficeSalesStatsResponse"), exports);
185
187
  __exportStar(require("./dtos/responses/BackofficeSalesKpisResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.580.0",
3
+ "version": "3.581.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,32 +1,46 @@
1
+ import { Expose } from 'class-transformer';
1
2
  import { IsEnum, IsInt, IsNotEmpty, IsOptional, IsString, Min } from 'class-validator';
2
3
  import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
4
 
4
5
  /** Mensaje de la cola de revisión: una página, o una tienda completa en inventario. */
5
6
  export class ReconciliationPageMessage {
7
+ @Expose()
6
8
  @IsString()
7
9
  @IsNotEmpty()
8
10
  tenantId!: string;
9
11
 
12
+ @Expose()
10
13
  @IsString()
11
14
  @IsNotEmpty()
12
15
  retailerId!: string;
13
16
 
17
+ @Expose()
14
18
  @IsEnum(ReconciliationEntityEnum)
15
19
  entity!: ReconciliationEntityEnum;
16
20
 
17
21
  /** Corrida dueña del lease; otro runId en el LEASE vuelve el mensaje NOOP. */
22
+ @Expose()
18
23
  @IsString()
19
24
  @IsNotEmpty()
20
25
  runId!: string;
21
26
 
22
27
  /** Índice de la página que se pide; al re-encolar el resto lleva el índice siguiente. */
28
+ @Expose()
23
29
  @IsInt()
24
30
  @Min(0)
25
31
  pageIndex!: number;
26
32
 
27
33
  /** Tienda del mensaje en inventario. */
34
+ @Expose()
28
35
  @IsOptional()
29
36
  @IsString()
30
37
  @IsNotEmpty()
31
38
  storeId?: string;
39
+
40
+ /** Veces que el mensaje ya se re-encoló. */
41
+ @Expose()
42
+ @IsOptional()
43
+ @IsInt()
44
+ @Min(0)
45
+ requeueCount?: number;
32
46
  }
@@ -1,12 +1,15 @@
1
+ import { Expose } from 'class-transformer';
1
2
  import { IsIn, IsNotEmpty, IsOptional, IsString } from 'class-validator';
2
3
  import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
4
 
4
5
  /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en catalog (backofficeStartCatalogReconciliation). */
5
6
  export class StartCatalogReconciliationRequest {
7
+ @Expose()
6
8
  @IsIn([ReconciliationEntityEnum.CATALOG, ReconciliationEntityEnum.INVENTORY])
7
9
  entity!: ReconciliationEntityEnum.CATALOG | ReconciliationEntityEnum.INVENTORY;
8
10
 
9
11
  /** Tienda a revisar en inventario; sin ella se revisan todas las del padrón. */
12
+ @Expose()
10
13
  @IsOptional()
11
14
  @IsString()
12
15
  @IsNotEmpty()
@@ -1,8 +1,10 @@
1
+ import { Expose } from 'class-transformer';
1
2
  import { IsIn } from 'class-validator';
2
3
  import { ReconciliationEntityEnum } from '../enums/ReconciliationEntityEnum';
3
4
 
4
5
  /** Body de POST /backoffice/retailers/{retailerId}/reconciliations en org (backofficeStartOrgReconciliation). */
5
6
  export class StartOrgReconciliationRequest {
7
+ @Expose()
6
8
  @IsIn([ReconciliationEntityEnum.STORES, ReconciliationEntityEnum.USERS])
7
9
  entity!: ReconciliationEntityEnum.STORES | ReconciliationEntityEnum.USERS;
8
10
  }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum } from 'class-validator';
3
+ import { CentralResendKindEnum } from '../../enums/CentralResendKindEnum';
4
+
5
+ /** Body de POST /backoffice/sales/{saleId}/central-resend. */
6
+ export class ResendCentralSaleRequest {
7
+ @Expose()
8
+ @IsEnum(CentralResendKindEnum)
9
+ kind!: CentralResendKindEnum;
10
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Mensaje a Central que el backoffice reenvía.
3
+ *
4
+ * SALE_REGISTER - Registro de la venta.
5
+ * SALE_CANCEL - Cancelación de la venta.
6
+ */
7
+ export enum CentralResendKindEnum {
8
+ SALE_REGISTER = 'SALE_REGISTER',
9
+ SALE_CANCEL = 'SALE_CANCEL',
10
+ }
@@ -171,6 +171,8 @@ export * from './dtos/requests/AddSaleExceptionNoteRequest';
171
171
  export * from './dtos/requests/RunSalesReportRequest';
172
172
  export * from './dtos/requests/BackofficeCancelSaleRequest';
173
173
  export * from './dtos/requests/PortalCancelSaleRequest';
174
+ export * from './enums/CentralResendKindEnum';
175
+ export * from './dtos/requests/ResendCentralSaleRequest';
174
176
 
175
177
  // Responses
176
178
  export * from './dtos/responses/BackofficeSalesStatsResponse';