@fiado/type-kit 3.522.0 → 3.524.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.
Files changed (59) hide show
  1. package/_test_/unit/pdfRender/pdfRenderDtos.test.ts +66 -0
  2. package/_test_/unit/retailWizard/prospectResume.test.ts +49 -0
  3. package/bin/index.d.ts +1 -0
  4. package/bin/index.js +3 -1
  5. package/bin/pdfRender/dtos/GeneratePdfRequest.d.ts +4 -0
  6. package/bin/pdfRender/dtos/GeneratePdfRequest.js +22 -0
  7. package/bin/pdfRender/dtos/MergePdfsRequest.d.ts +4 -0
  8. package/bin/pdfRender/dtos/MergePdfsRequest.js +24 -0
  9. package/bin/pdfRender/dtos/PdfDocumentResponse.d.ts +5 -0
  10. package/bin/pdfRender/dtos/PdfDocumentResponse.js +6 -0
  11. package/bin/pdfRender/dtos/PublishTemplateRequest.d.ts +10 -0
  12. package/bin/pdfRender/dtos/PublishTemplateRequest.js +40 -0
  13. package/bin/pdfRender/dtos/PublishTemplateResponse.d.ts +4 -0
  14. package/bin/pdfRender/dtos/PublishTemplateResponse.js +6 -0
  15. package/bin/pdfRender/dtos/RenderDocumentRequest.d.ts +6 -0
  16. package/bin/pdfRender/dtos/RenderDocumentRequest.js +29 -0
  17. package/bin/pdfRender/dtos/RenderDocumentResponse.d.ts +5 -0
  18. package/bin/pdfRender/dtos/RenderDocumentResponse.js +7 -0
  19. package/bin/pdfRender/dtos/TemplateLocationRequest.d.ts +6 -0
  20. package/bin/pdfRender/dtos/TemplateLocationRequest.js +36 -0
  21. package/bin/pdfRender/dtos/TemplateRefRequest.d.ts +14 -0
  22. package/bin/pdfRender/dtos/TemplateRefRequest.js +54 -0
  23. package/bin/pdfRender/dtos/TemplateSummaryResponse.d.ts +6 -0
  24. package/bin/pdfRender/dtos/TemplateSummaryResponse.js +6 -0
  25. package/bin/pdfRender/dtos/UploadAssetRequest.d.ts +9 -0
  26. package/bin/pdfRender/dtos/UploadAssetRequest.js +49 -0
  27. package/bin/pdfRender/dtos/UploadAssetResponse.d.ts +4 -0
  28. package/bin/pdfRender/dtos/UploadAssetResponse.js +6 -0
  29. package/bin/pdfRender/index.d.ts +12 -0
  30. package/bin/pdfRender/index.js +29 -0
  31. package/bin/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.d.ts +9 -1
  32. package/bin/retailWizard/dtos/responses/ProspectResumeResponse.d.ts +7 -0
  33. package/bin/retailWizard/dtos/responses/ProspectResumeResponse.js +2 -0
  34. package/bin/retailWizard/enums/ProspectResumeModeEnum.d.ts +6 -0
  35. package/bin/retailWizard/enums/ProspectResumeModeEnum.js +10 -0
  36. package/bin/retailWizard/enums/SystemCancelReasonEnum.d.ts +4 -0
  37. package/bin/retailWizard/enums/SystemCancelReasonEnum.js +8 -0
  38. package/bin/retailWizard/index.d.ts +3 -0
  39. package/bin/retailWizard/index.js +3 -0
  40. package/package.json +1 -1
  41. package/src/index.ts +3 -0
  42. package/src/pdfRender/dtos/GeneratePdfRequest.ts +7 -0
  43. package/src/pdfRender/dtos/MergePdfsRequest.ts +7 -0
  44. package/src/pdfRender/dtos/PdfDocumentResponse.ts +5 -0
  45. package/src/pdfRender/dtos/PublishTemplateRequest.ts +18 -0
  46. package/src/pdfRender/dtos/PublishTemplateResponse.ts +4 -0
  47. package/src/pdfRender/dtos/RenderDocumentRequest.ts +12 -0
  48. package/src/pdfRender/dtos/RenderDocumentResponse.ts +6 -0
  49. package/src/pdfRender/dtos/TemplateLocationRequest.ts +15 -0
  50. package/src/pdfRender/dtos/TemplateRefRequest.ts +28 -0
  51. package/src/pdfRender/dtos/TemplateSummaryResponse.ts +6 -0
  52. package/src/pdfRender/dtos/UploadAssetRequest.ts +25 -0
  53. package/src/pdfRender/dtos/UploadAssetResponse.ts +4 -0
  54. package/src/pdfRender/index.ts +13 -0
  55. package/src/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.ts +9 -1
  56. package/src/retailWizard/dtos/responses/ProspectResumeResponse.ts +8 -0
  57. package/src/retailWizard/enums/ProspectResumeModeEnum.ts +6 -0
  58. package/src/retailWizard/enums/SystemCancelReasonEnum.ts +4 -0
  59. package/src/retailWizard/index.ts +3 -0
@@ -0,0 +1,66 @@
1
+ import 'reflect-metadata';
2
+ import { plainToInstance } from 'class-transformer';
3
+ import { validate } from 'class-validator';
4
+ import {
5
+ GeneratePdfRequest, MergePdfsRequest, PublishTemplateRequest, RenderDocumentRequest,
6
+ TemplateLocationRequest, UploadAssetRequest,
7
+ } from '../../../src/pdfRender';
8
+
9
+ const errorsOf = async <T extends object>(cls: new () => T, body: unknown) =>
10
+ (await validate(plainToInstance(cls, body) as object, { whitelist: true })).map(e => e.property);
11
+
12
+ describe('pdfRender render DTOs', () => {
13
+ it('accepts a deep template ref with data', async () => {
14
+ expect(await errorsOf(RenderDocumentRequest, {
15
+ template: { enterprise: 'FIADOSA', partnerId: 'UNE', category: 'CREDITS', documentType: 'CREDIT_CONTRATO_SIMPLE', version: '2' },
16
+ data: { cliente: { nombre: 'Ana' } },
17
+ })).toEqual([]);
18
+ });
19
+
20
+ it('accepts a flat template ref without version', async () => {
21
+ expect(await errorsOf(RenderDocumentRequest, { template: { enterprise: 'PAGO_CONFIADO', documentType: 'TERMS_WALLET_PAGO' }, data: {} })).toEqual([]);
22
+ });
23
+
24
+ it('rejects path traversal and slashes in segments', async () => {
25
+ expect(await errorsOf(RenderDocumentRequest, { template: { enterprise: '../FIADOSA', documentType: 'A/B' }, data: {} })).toEqual(['template']);
26
+ });
27
+
28
+ it('rejects a non numeric version', async () => {
29
+ expect(await errorsOf(RenderDocumentRequest, { template: { enterprise: 'FIADOSA', documentType: 'X', version: 'V2' }, data: {} })).toEqual(['template']);
30
+ });
31
+
32
+ it('requires data to be an object', async () => {
33
+ expect(await errorsOf(RenderDocumentRequest, { template: { enterprise: 'FIADOSA', documentType: 'X' }, data: 'nope' })).toEqual(['data']);
34
+ });
35
+
36
+ it('requires non empty html', async () => {
37
+ expect(await errorsOf(GeneratePdfRequest, { html: '' })).toEqual(['html']);
38
+ });
39
+
40
+ it('requires between 1 and 50 pdfs', async () => {
41
+ expect(await errorsOf(MergePdfsRequest, { pdfs: [] })).toEqual(['pdfs']);
42
+ expect(await errorsOf(MergePdfsRequest, { pdfs: Array(51).fill('JVBERi0=') })).toEqual(['pdfs']);
43
+ expect(await errorsOf(MergePdfsRequest, { pdfs: ['JVBERi0='] })).toEqual([]);
44
+ });
45
+ });
46
+
47
+ describe('pdfRender admin DTOs', () => {
48
+ it('publish: requires documentType and html, and drops any version', async () => {
49
+ expect(await errorsOf(PublishTemplateRequest, { template: { enterprise: 'FIADOSA', documentType: 'X' }, html: '<p/>' })).toEqual([]);
50
+ expect(await errorsOf(PublishTemplateRequest, { template: { enterprise: 'FIADOSA', documentType: 'X' }, html: '' })).toEqual(['html']);
51
+ const withVersion = plainToInstance(PublishTemplateRequest, { template: { enterprise: 'FIADOSA', documentType: 'X', version: '9' }, html: '<p/>' });
52
+ await validate(withVersion, { whitelist: true });
53
+ expect((withVersion.template as unknown as Record<string, unknown>).version).toBeUndefined();
54
+ });
55
+
56
+ it('asset: accepts nested folders and known types, rejects traversal and other types', async () => {
57
+ expect(await errorsOf(UploadAssetRequest, { enterprise: 'FIADOSA', path: 'fonts/Carlito-Bold.ttf', contentType: 'font/ttf', contentBase64: 'AAAA' })).toEqual([]);
58
+ expect(await errorsOf(UploadAssetRequest, { enterprise: 'FIADOSA', path: '../x.ttf', contentType: 'font/ttf', contentBase64: 'AAAA' })).toEqual(['path']);
59
+ expect(await errorsOf(UploadAssetRequest, { enterprise: 'FIADOSA', path: 'x.exe', contentType: 'application/x-msdownload', contentBase64: 'AAAA' })).toEqual(['path', 'contentType']);
60
+ });
61
+
62
+ it('location: enterprise required, partnerId optional', async () => {
63
+ expect(await errorsOf(TemplateLocationRequest, { enterprise: 'FIADOSA', partnerId: 'UNE', category: 'CREDITS' })).toEqual([]);
64
+ expect(await errorsOf(TemplateLocationRequest, {})).toEqual(['enterprise']);
65
+ });
66
+ });
@@ -0,0 +1,49 @@
1
+ import 'reflect-metadata';
2
+ import {
3
+ ProspectResumeModeEnum,
4
+ SystemCancelReasonEnum,
5
+ WizardStateEnum,
6
+ WizardStepEnum,
7
+ type ActiveSessionByPhoneResponse,
8
+ type ProspectResumeResponse,
9
+ } from '../../../src/retailWizard';
10
+
11
+ describe('ProspectResumeModeEnum', () => {
12
+ it('has the three outcomes of «Reabrir»', () => {
13
+ expect(Object.values(ProspectResumeModeEnum)).toEqual(['EXACT', 'CHECKPOINT', 'NEW']);
14
+ });
15
+ });
16
+
17
+ describe('SystemCancelReasonEnum', () => {
18
+ it('names the saga cancel when loan-credit discards the quote', () => {
19
+ expect(SystemCancelReasonEnum.SWEEP_CREDIT_DISCARDED).toBe('SWEEP_CREDIT_DISCARDED');
20
+ });
21
+ });
22
+
23
+ describe('ProspectResumeResponse', () => {
24
+ it('NEW carries no session; EXACT and CHECKPOINT carry the session to resume', () => {
25
+ const responses: ProspectResumeResponse[] = [
26
+ { sessionId: null, mode: ProspectResumeModeEnum.NEW },
27
+ { sessionId: 'S1', mode: ProspectResumeModeEnum.EXACT },
28
+ { sessionId: 'S1', mode: ProspectResumeModeEnum.CHECKPOINT },
29
+ ];
30
+ expect(responses.map((r) => r.mode)).toEqual(['NEW', 'EXACT', 'CHECKPOINT']);
31
+ });
32
+ });
33
+
34
+ describe('ActiveSessionByPhoneResponse', () => {
35
+ it('carries the entry screen, the entry step, the exact window and money at stake', () => {
36
+ const res: ActiveSessionByPhoneResponse = {
37
+ found: true,
38
+ sessionId: 'S1',
39
+ currentStep: WizardStepEnum.S04,
40
+ state: WizardStateEnum.PAUSED_EXTERNAL_REFERRAL,
41
+ blocked: null,
42
+ resumeSlug: null,
43
+ resumeTargetStep: WizardStepEnum.S02,
44
+ exactUntil: null,
45
+ moneyAtStake: false,
46
+ };
47
+ expect(res.resumeTargetStep).toBe(WizardStepEnum.S02);
48
+ });
49
+ });
package/bin/index.d.ts CHANGED
@@ -125,3 +125,4 @@ export * as DynamicForm from './dynamicForm';
125
125
  export * as Rewards from './rewards';
126
126
  export * as RewardsEligibility from './rewardsEligibility';
127
127
  export * as DatalakeReports from './datalakeReports';
128
+ export * as PdfRender from './pdfRender';
package/bin/index.js CHANGED
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.Blacklist = exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.MessageMoments = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Biometrics = exports.MetamapConnector = exports.Account = exports.Crypto = void 0;
40
40
  exports.RetailWizard = exports.RetailCustomer = exports.RetailCards = exports.RetailCatalog = exports.RetailCommission = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.WhatsappConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = exports.Device = exports.Observations = exports.IssuanceBusiness = void 0;
41
- exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = void 0;
41
+ exports.PdfRender = exports.DatalakeReports = exports.RewardsEligibility = exports.Rewards = exports.DynamicForm = exports.FileStorage = exports.MoneyTransfer = exports.RetailLoan = exports.Membership = exports.WebhookBusiness = exports.PeopleBusiness = exports.UserConfirmations = exports.Collection = exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.DatalakeQuery = exports.RetailIntegration = exports.RetailPromotions = void 0;
42
42
  exports.Crypto = __importStar(require("./crypto"));
43
43
  exports.Account = __importStar(require("./account"));
44
44
  exports.MetamapConnector = __importStar(require("./metamapConnector"));
@@ -246,3 +246,5 @@ exports.Rewards = __importStar(require("./rewards"));
246
246
  // servicios emisores: POST /events (request/response) y GET /runs/{id}.
247
247
  exports.RewardsEligibility = __importStar(require("./rewardsEligibility"));
248
248
  exports.DatalakeReports = __importStar(require("./datalakeReports"));
249
+ // PdfRender: DTOs del lambda pdf-render-business (plantilla HTML → PDF multitenant y su backoffice).
250
+ exports.PdfRender = __importStar(require("./pdfRender"));
@@ -0,0 +1,4 @@
1
+ /** HTML ya resuelto por el consumidor; se imprime en A4 con márgenes de 2 mm. */
2
+ export declare class GeneratePdfRequest {
3
+ html: string;
4
+ }
@@ -0,0 +1,22 @@
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.GeneratePdfRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /** HTML ya resuelto por el consumidor; se imprime en A4 con márgenes de 2 mm. */
15
+ class GeneratePdfRequest {
16
+ }
17
+ exports.GeneratePdfRequest = GeneratePdfRequest;
18
+ __decorate([
19
+ (0, class_validator_1.IsString)(),
20
+ (0, class_validator_1.IsNotEmpty)(),
21
+ __metadata("design:type", String)
22
+ ], GeneratePdfRequest.prototype, "html", void 0);
@@ -0,0 +1,4 @@
1
+ /** PDFs en base64, en el orden en que deben quedar en el documento final. */
2
+ export declare class MergePdfsRequest {
3
+ pdfs: string[];
4
+ }
@@ -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.MergePdfsRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /** PDFs en base64, en el orden en que deben quedar en el documento final. */
15
+ class MergePdfsRequest {
16
+ }
17
+ exports.MergePdfsRequest = MergePdfsRequest;
18
+ __decorate([
19
+ (0, class_validator_1.IsArray)(),
20
+ (0, class_validator_1.ArrayMinSize)(1),
21
+ (0, class_validator_1.ArrayMaxSize)(50),
22
+ (0, class_validator_1.IsString)({ each: true }),
23
+ __metadata("design:type", Array)
24
+ ], MergePdfsRequest.prototype, "pdfs", void 0);
@@ -0,0 +1,5 @@
1
+ export declare class PdfDocumentResponse {
2
+ base64: string;
3
+ pages: number;
4
+ bytes: number;
5
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PdfDocumentResponse = void 0;
4
+ class PdfDocumentResponse {
5
+ }
6
+ exports.PdfDocumentResponse = PdfDocumentResponse;
@@ -0,0 +1,10 @@
1
+ import { TemplateLocationRequest } from "./TemplateLocationRequest";
2
+ /** Tipo de documento al que se le publica una versión nueva. */
3
+ export declare class PublishTemplateTarget extends TemplateLocationRequest {
4
+ documentType: string;
5
+ }
6
+ /** Publica el HTML como la siguiente versión del tipo de documento. La versión la asigna el servicio. */
7
+ export declare class PublishTemplateRequest {
8
+ template: PublishTemplateTarget;
9
+ html: string;
10
+ }
@@ -0,0 +1,40 @@
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.PublishTemplateRequest = exports.PublishTemplateTarget = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const TemplateLocationRequest_1 = require("./TemplateLocationRequest");
16
+ /** Tipo de documento al que se le publica una versión nueva. */
17
+ class PublishTemplateTarget extends TemplateLocationRequest_1.TemplateLocationRequest {
18
+ }
19
+ exports.PublishTemplateTarget = PublishTemplateTarget;
20
+ __decorate([
21
+ (0, class_validator_1.IsString)(),
22
+ (0, class_validator_1.IsNotEmpty)(),
23
+ (0, class_validator_1.Matches)(/^[A-Za-z0-9_-]{1,64}$/),
24
+ __metadata("design:type", String)
25
+ ], PublishTemplateTarget.prototype, "documentType", void 0);
26
+ /** Publica el HTML como la siguiente versión del tipo de documento. La versión la asigna el servicio. */
27
+ class PublishTemplateRequest {
28
+ }
29
+ exports.PublishTemplateRequest = PublishTemplateRequest;
30
+ __decorate([
31
+ (0, class_validator_1.IsDefined)(),
32
+ (0, class_validator_1.ValidateNested)(),
33
+ (0, class_transformer_1.Type)(() => PublishTemplateTarget),
34
+ __metadata("design:type", PublishTemplateTarget)
35
+ ], PublishTemplateRequest.prototype, "template", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsString)(),
38
+ (0, class_validator_1.IsNotEmpty)(),
39
+ __metadata("design:type", String)
40
+ ], PublishTemplateRequest.prototype, "html", void 0);
@@ -0,0 +1,4 @@
1
+ export declare class PublishTemplateResponse {
2
+ key: string;
3
+ version: string;
4
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PublishTemplateResponse = void 0;
4
+ class PublishTemplateResponse {
5
+ }
6
+ exports.PublishTemplateResponse = PublishTemplateResponse;
@@ -0,0 +1,6 @@
1
+ import { TemplateRefRequest } from "./TemplateRefRequest";
2
+ export declare class RenderDocumentRequest {
3
+ template: TemplateRefRequest;
4
+ /** Variables de la plantilla. Se escapan como HTML salvo que la plantilla use {{{triple}}}. */
5
+ data: Record<string, unknown>;
6
+ }
@@ -0,0 +1,29 @@
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.RenderDocumentRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const TemplateRefRequest_1 = require("./TemplateRefRequest");
16
+ class RenderDocumentRequest {
17
+ }
18
+ exports.RenderDocumentRequest = RenderDocumentRequest;
19
+ __decorate([
20
+ (0, class_validator_1.IsDefined)(),
21
+ (0, class_validator_1.ValidateNested)(),
22
+ (0, class_transformer_1.Type)(() => TemplateRefRequest_1.TemplateRefRequest),
23
+ __metadata("design:type", TemplateRefRequest_1.TemplateRefRequest)
24
+ ], RenderDocumentRequest.prototype, "template", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsDefined)(),
27
+ (0, class_validator_1.IsObject)(),
28
+ __metadata("design:type", Object)
29
+ ], RenderDocumentRequest.prototype, "data", void 0);
@@ -0,0 +1,5 @@
1
+ import { PdfDocumentResponse } from "./PdfDocumentResponse";
2
+ export declare class RenderDocumentResponse extends PdfDocumentResponse {
3
+ templateVersion: string;
4
+ renderMs: number;
5
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RenderDocumentResponse = void 0;
4
+ const PdfDocumentResponse_1 = require("./PdfDocumentResponse");
5
+ class RenderDocumentResponse extends PdfDocumentResponse_1.PdfDocumentResponse {
6
+ }
7
+ exports.RenderDocumentResponse = RenderDocumentResponse;
@@ -0,0 +1,6 @@
1
+ /** Carpeta del bucket de plantillas: empresa, y opcionalmente partner + categoría. */
2
+ export declare class TemplateLocationRequest {
3
+ enterprise: string;
4
+ partnerId?: string;
5
+ category?: string;
6
+ }
@@ -0,0 +1,36 @@
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.TemplateLocationRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
15
+ /** Carpeta del bucket de plantillas: empresa, y opcionalmente partner + categoría. */
16
+ class TemplateLocationRequest {
17
+ }
18
+ exports.TemplateLocationRequest = TemplateLocationRequest;
19
+ __decorate([
20
+ (0, class_validator_1.IsString)(),
21
+ (0, class_validator_1.IsNotEmpty)(),
22
+ (0, class_validator_1.Matches)(SEGMENT),
23
+ __metadata("design:type", String)
24
+ ], TemplateLocationRequest.prototype, "enterprise", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsString)(),
28
+ (0, class_validator_1.Matches)(SEGMENT),
29
+ __metadata("design:type", String)
30
+ ], TemplateLocationRequest.prototype, "partnerId", void 0);
31
+ __decorate([
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.Matches)(SEGMENT),
35
+ __metadata("design:type", String)
36
+ ], TemplateLocationRequest.prototype, "category", void 0);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Referencia a una plantilla del bucket de plantillas.
3
+ * Layout profundo: {enterprise}/{partnerId}/{category}/{documentType}/V{version}.html
4
+ * Layout plano: {enterprise}/{documentType}/V{version}.html
5
+ * partnerId y category van juntos o no van.
6
+ */
7
+ export declare class TemplateRefRequest {
8
+ enterprise: string;
9
+ partnerId?: string;
10
+ category?: string;
11
+ documentType: string;
12
+ /** Número de versión sin la "V". Sin valor se usa la versión más alta publicada. */
13
+ version?: string;
14
+ }
@@ -0,0 +1,54 @@
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.TemplateRefRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /** Segmento de ruta S3 permitido: letras, dígitos, guion y guion bajo. */
15
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
16
+ /**
17
+ * Referencia a una plantilla del bucket de plantillas.
18
+ * Layout profundo: {enterprise}/{partnerId}/{category}/{documentType}/V{version}.html
19
+ * Layout plano: {enterprise}/{documentType}/V{version}.html
20
+ * partnerId y category van juntos o no van.
21
+ */
22
+ class TemplateRefRequest {
23
+ }
24
+ exports.TemplateRefRequest = TemplateRefRequest;
25
+ __decorate([
26
+ (0, class_validator_1.IsString)(),
27
+ (0, class_validator_1.IsNotEmpty)(),
28
+ (0, class_validator_1.Matches)(SEGMENT),
29
+ __metadata("design:type", String)
30
+ ], TemplateRefRequest.prototype, "enterprise", void 0);
31
+ __decorate([
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.Matches)(SEGMENT),
35
+ __metadata("design:type", String)
36
+ ], TemplateRefRequest.prototype, "partnerId", void 0);
37
+ __decorate([
38
+ (0, class_validator_1.IsOptional)(),
39
+ (0, class_validator_1.IsString)(),
40
+ (0, class_validator_1.Matches)(SEGMENT),
41
+ __metadata("design:type", String)
42
+ ], TemplateRefRequest.prototype, "category", void 0);
43
+ __decorate([
44
+ (0, class_validator_1.IsString)(),
45
+ (0, class_validator_1.IsNotEmpty)(),
46
+ (0, class_validator_1.Matches)(SEGMENT),
47
+ __metadata("design:type", String)
48
+ ], TemplateRefRequest.prototype, "documentType", void 0);
49
+ __decorate([
50
+ (0, class_validator_1.IsOptional)(),
51
+ (0, class_validator_1.IsString)(),
52
+ (0, class_validator_1.Matches)(/^[0-9]{1,6}$/),
53
+ __metadata("design:type", String)
54
+ ], TemplateRefRequest.prototype, "version", void 0);
@@ -0,0 +1,6 @@
1
+ export declare class TemplateSummaryResponse {
2
+ documentType: string;
3
+ /** Versiones publicadas, de menor a mayor. */
4
+ versions: string[];
5
+ latestVersion: string;
6
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateSummaryResponse = void 0;
4
+ class TemplateSummaryResponse {
5
+ }
6
+ exports.TemplateSummaryResponse = TemplateSummaryResponse;
@@ -0,0 +1,9 @@
1
+ export declare const ASSET_CONTENT_TYPES: string[];
2
+ /** Fuente, imagen u hoja de estilo para la carpeta _assets de una empresa o partner. */
3
+ export declare class UploadAssetRequest {
4
+ enterprise: string;
5
+ partnerId?: string;
6
+ path: string;
7
+ contentType: string;
8
+ contentBase64: string;
9
+ }
@@ -0,0 +1,49 @@
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.UploadAssetRequest = exports.ASSET_CONTENT_TYPES = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
15
+ /** Ruta relativa dentro de _assets/: hasta 4 carpetas y un archivo, sin "..", con extensión permitida. */
16
+ const ASSET_PATH = /^(?!.*\.\.)([A-Za-z0-9_-]+\/){0,4}[A-Za-z0-9_.()-]+\.(ttf|otf|woff|woff2|png|jpg|jpeg|svg|gif|css)$/;
17
+ exports.ASSET_CONTENT_TYPES = ['font/ttf', 'font/otf', 'font/woff', 'font/woff2', 'image/png', 'image/jpeg', 'image/svg+xml', 'image/gif', 'text/css'];
18
+ /** Fuente, imagen u hoja de estilo para la carpeta _assets de una empresa o partner. */
19
+ class UploadAssetRequest {
20
+ }
21
+ exports.UploadAssetRequest = UploadAssetRequest;
22
+ __decorate([
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.IsNotEmpty)(),
25
+ (0, class_validator_1.Matches)(SEGMENT),
26
+ __metadata("design:type", String)
27
+ ], UploadAssetRequest.prototype, "enterprise", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_validator_1.Matches)(SEGMENT),
32
+ __metadata("design:type", String)
33
+ ], UploadAssetRequest.prototype, "partnerId", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsString)(),
36
+ (0, class_validator_1.Matches)(ASSET_PATH),
37
+ __metadata("design:type", String)
38
+ ], UploadAssetRequest.prototype, "path", void 0);
39
+ __decorate([
40
+ (0, class_validator_1.IsString)(),
41
+ (0, class_validator_1.IsIn)(exports.ASSET_CONTENT_TYPES),
42
+ __metadata("design:type", String)
43
+ ], UploadAssetRequest.prototype, "contentType", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.IsString)(),
46
+ (0, class_validator_1.IsNotEmpty)(),
47
+ (0, class_validator_1.IsBase64)(),
48
+ __metadata("design:type", String)
49
+ ], UploadAssetRequest.prototype, "contentBase64", void 0);
@@ -0,0 +1,4 @@
1
+ export declare class UploadAssetResponse {
2
+ key: string;
3
+ bytes: number;
4
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UploadAssetResponse = void 0;
4
+ class UploadAssetResponse {
5
+ }
6
+ exports.UploadAssetResponse = UploadAssetResponse;
@@ -0,0 +1,12 @@
1
+ export * from './dtos/TemplateRefRequest';
2
+ export * from './dtos/RenderDocumentRequest';
3
+ export * from './dtos/GeneratePdfRequest';
4
+ export * from './dtos/MergePdfsRequest';
5
+ export * from './dtos/PdfDocumentResponse';
6
+ export * from './dtos/RenderDocumentResponse';
7
+ export * from './dtos/TemplateLocationRequest';
8
+ export * from './dtos/PublishTemplateRequest';
9
+ export * from './dtos/PublishTemplateResponse';
10
+ export * from './dtos/UploadAssetRequest';
11
+ export * from './dtos/UploadAssetResponse';
12
+ export * from './dtos/TemplateSummaryResponse';
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //dtos
18
+ __exportStar(require("./dtos/TemplateRefRequest"), exports);
19
+ __exportStar(require("./dtos/RenderDocumentRequest"), exports);
20
+ __exportStar(require("./dtos/GeneratePdfRequest"), exports);
21
+ __exportStar(require("./dtos/MergePdfsRequest"), exports);
22
+ __exportStar(require("./dtos/PdfDocumentResponse"), exports);
23
+ __exportStar(require("./dtos/RenderDocumentResponse"), exports);
24
+ __exportStar(require("./dtos/TemplateLocationRequest"), exports);
25
+ __exportStar(require("./dtos/PublishTemplateRequest"), exports);
26
+ __exportStar(require("./dtos/PublishTemplateResponse"), exports);
27
+ __exportStar(require("./dtos/UploadAssetRequest"), exports);
28
+ __exportStar(require("./dtos/UploadAssetResponse"), exports);
29
+ __exportStar(require("./dtos/TemplateSummaryResponse"), exports);
@@ -17,11 +17,19 @@ export interface ActiveSessionByPhoneResponse {
17
17
  sessionId: string | null;
18
18
  /** Paso en el que se quedo la venta. `null` cuando `found` es `false`. */
19
19
  currentStep: WizardStepEnum | null;
20
- /** Hoy siempre `ACTIVE`: la busqueda filtra por ese estado. `null` cuando `found` es `false`. */
20
+ /** ACTIVE o una PAUSED_* de la tienda del caller. `null` cuando `found` es `false`. */
21
21
  state: WizardStateEnum | null;
22
22
  /**
23
23
  * El bloqueo de la venta, para pintar la etiqueta y el «hace N dias». `null` cuando la venta va
24
24
  * bien o cuando `found` es `false`.
25
25
  */
26
26
  blocked?: WizardBlockedSummary | null;
27
+ /** Pantalla exacta a la que entra «Reabrir» (slug del front). `null` = entra por `resumeTargetStep`. */
28
+ resumeSlug?: string | null;
29
+ /** Paso al que entra «Reabrir» sin pantalla exacta (checkpoint del silo). */
30
+ resumeTargetStep?: WizardStepEnum | null;
31
+ /** Hasta cuándo se retoma en la pantalla exacta (ISO). `null` = no vence por inactividad. */
32
+ exactUntil?: string | null;
33
+ /** La venta movió dinero u originó crédito: siempre se retoma la misma. */
34
+ moneyAtStake?: boolean;
27
35
  }
@@ -0,0 +1,7 @@
1
+ import type { ProspectResumeModeEnum } from '../../enums/ProspectResumeModeEnum';
2
+ /** POST /prospects/{id}/resume. La pantalla de entrada sale de GET /wizard/sessions/{id} tras el OTP. */
3
+ export interface ProspectResumeResponse {
4
+ /** `null` solo con `mode = NEW`: el front arranca la venta con POST /wizard/sessions. */
5
+ sessionId: string | null;
6
+ mode: ProspectResumeModeEnum;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ /** Cómo entra «Reabrir». EXACT = pantalla guardada; CHECKPOINT = destino del silo; NEW = sin venta viva. */
2
+ export declare enum ProspectResumeModeEnum {
3
+ EXACT = "EXACT",
4
+ CHECKPOINT = "CHECKPOINT",
5
+ NEW = "NEW"
6
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProspectResumeModeEnum = void 0;
4
+ /** Cómo entra «Reabrir». EXACT = pantalla guardada; CHECKPOINT = destino del silo; NEW = sin venta viva. */
5
+ var ProspectResumeModeEnum;
6
+ (function (ProspectResumeModeEnum) {
7
+ ProspectResumeModeEnum["EXACT"] = "EXACT";
8
+ ProspectResumeModeEnum["CHECKPOINT"] = "CHECKPOINT";
9
+ ProspectResumeModeEnum["NEW"] = "NEW";
10
+ })(ProspectResumeModeEnum || (exports.ProspectResumeModeEnum = ProspectResumeModeEnum = {}));
@@ -0,0 +1,4 @@
1
+ /** `cancelReason` que escribe el sistema (no el vendedor). La saga cierra la venta cuyo crédito se descartó. */
2
+ export declare enum SystemCancelReasonEnum {
3
+ SWEEP_CREDIT_DISCARDED = "SWEEP_CREDIT_DISCARDED"
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemCancelReasonEnum = void 0;
4
+ /** `cancelReason` que escribe el sistema (no el vendedor). La saga cierra la venta cuyo crédito se descartó. */
5
+ var SystemCancelReasonEnum;
6
+ (function (SystemCancelReasonEnum) {
7
+ SystemCancelReasonEnum["SWEEP_CREDIT_DISCARDED"] = "SWEEP_CREDIT_DISCARDED";
8
+ })(SystemCancelReasonEnum || (exports.SystemCancelReasonEnum = SystemCancelReasonEnum = {}));
@@ -17,6 +17,8 @@ export * from './enums/AccountVerdictEnum';
17
17
  export * from './enums/AccountOutcomeEnum';
18
18
  export * from './enums/AccountStepStatusEnum';
19
19
  export * from './enums/ResumeReasonEnum';
20
+ export * from './enums/ProspectResumeModeEnum';
21
+ export * from './enums/SystemCancelReasonEnum';
20
22
  export * from './enums/AppOnboardingStepEnum';
21
23
  export * from './enums/AppOnboardingStepStatusEnum';
22
24
  export * from './enums/BlockedReasonEnum';
@@ -101,6 +103,7 @@ export * from './dtos/responses/SignatureSignResponse';
101
103
  export * from './dtos/responses/RegisterDeviceResponse';
102
104
  export * from './dtos/responses/AccountStatusResponse';
103
105
  export * from './dtos/responses/ActiveSessionByPhoneResponse';
106
+ export * from './dtos/responses/ProspectResumeResponse';
104
107
  export * from './dtos/responses/ProspectByPhoneResponse';
105
108
  export * from './dtos/responses/AppOnboardingResponse';
106
109
  export * from './enums/SaleFinancierEnum';
@@ -36,6 +36,8 @@ __exportStar(require("./enums/AccountVerdictEnum"), exports);
36
36
  __exportStar(require("./enums/AccountOutcomeEnum"), exports);
37
37
  __exportStar(require("./enums/AccountStepStatusEnum"), exports);
38
38
  __exportStar(require("./enums/ResumeReasonEnum"), exports);
39
+ __exportStar(require("./enums/ProspectResumeModeEnum"), exports);
40
+ __exportStar(require("./enums/SystemCancelReasonEnum"), exports);
39
41
  __exportStar(require("./enums/AppOnboardingStepEnum"), exports);
40
42
  __exportStar(require("./enums/AppOnboardingStepStatusEnum"), exports);
41
43
  __exportStar(require("./enums/BlockedReasonEnum"), exports);
@@ -127,6 +129,7 @@ __exportStar(require("./dtos/responses/SignatureSignResponse"), exports);
127
129
  __exportStar(require("./dtos/responses/RegisterDeviceResponse"), exports);
128
130
  __exportStar(require("./dtos/responses/AccountStatusResponse"), exports);
129
131
  __exportStar(require("./dtos/responses/ActiveSessionByPhoneResponse"), exports);
132
+ __exportStar(require("./dtos/responses/ProspectResumeResponse"), exports);
130
133
  __exportStar(require("./dtos/responses/ProspectByPhoneResponse"), exports);
131
134
  __exportStar(require("./dtos/responses/AppOnboardingResponse"), exports);
132
135
  // ── F3 · Backoffice VentasLuga ────────────────────────────────────────────────
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.522.0",
3
+ "version": "3.524.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
package/src/index.ts CHANGED
@@ -209,3 +209,6 @@ export * as Rewards from './rewards';
209
209
  // servicios emisores: POST /events (request/response) y GET /runs/{id}.
210
210
  export * as RewardsEligibility from './rewardsEligibility';
211
211
  export * as DatalakeReports from './datalakeReports';
212
+
213
+ // PdfRender: DTOs del lambda pdf-render-business (plantilla HTML → PDF multitenant y su backoffice).
214
+ export * as PdfRender from './pdfRender';
@@ -0,0 +1,7 @@
1
+ import { IsNotEmpty, IsString } from "class-validator";
2
+
3
+ /** HTML ya resuelto por el consumidor; se imprime en A4 con márgenes de 2 mm. */
4
+ export class GeneratePdfRequest {
5
+ @IsString() @IsNotEmpty()
6
+ html!: string;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { ArrayMaxSize, ArrayMinSize, IsArray, IsString } from "class-validator";
2
+
3
+ /** PDFs en base64, en el orden en que deben quedar en el documento final. */
4
+ export class MergePdfsRequest {
5
+ @IsArray() @ArrayMinSize(1) @ArrayMaxSize(50) @IsString({ each: true })
6
+ pdfs!: string[];
7
+ }
@@ -0,0 +1,5 @@
1
+ export class PdfDocumentResponse {
2
+ base64!: string;
3
+ pages!: number;
4
+ bytes!: number;
5
+ }
@@ -0,0 +1,18 @@
1
+ import { IsDefined, IsNotEmpty, IsString, Matches, ValidateNested } from "class-validator";
2
+ import { Type } from "class-transformer";
3
+ import { TemplateLocationRequest } from "./TemplateLocationRequest";
4
+
5
+ /** Tipo de documento al que se le publica una versión nueva. */
6
+ export class PublishTemplateTarget extends TemplateLocationRequest {
7
+ @IsString() @IsNotEmpty() @Matches(/^[A-Za-z0-9_-]{1,64}$/)
8
+ documentType!: string;
9
+ }
10
+
11
+ /** Publica el HTML como la siguiente versión del tipo de documento. La versión la asigna el servicio. */
12
+ export class PublishTemplateRequest {
13
+ @IsDefined() @ValidateNested() @Type(() => PublishTemplateTarget)
14
+ template!: PublishTemplateTarget;
15
+
16
+ @IsString() @IsNotEmpty()
17
+ html!: string;
18
+ }
@@ -0,0 +1,4 @@
1
+ export class PublishTemplateResponse {
2
+ key!: string;
3
+ version!: string;
4
+ }
@@ -0,0 +1,12 @@
1
+ import { IsDefined, IsObject, ValidateNested } from "class-validator";
2
+ import { Type } from "class-transformer";
3
+ import { TemplateRefRequest } from "./TemplateRefRequest";
4
+
5
+ export class RenderDocumentRequest {
6
+ @IsDefined() @ValidateNested() @Type(() => TemplateRefRequest)
7
+ template!: TemplateRefRequest;
8
+
9
+ /** Variables de la plantilla. Se escapan como HTML salvo que la plantilla use {{{triple}}}. */
10
+ @IsDefined() @IsObject()
11
+ data!: Record<string, unknown>;
12
+ }
@@ -0,0 +1,6 @@
1
+ import { PdfDocumentResponse } from "./PdfDocumentResponse";
2
+
3
+ export class RenderDocumentResponse extends PdfDocumentResponse {
4
+ templateVersion!: string;
5
+ renderMs!: number;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { IsNotEmpty, IsOptional, IsString, Matches } from "class-validator";
2
+
3
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
4
+
5
+ /** Carpeta del bucket de plantillas: empresa, y opcionalmente partner + categoría. */
6
+ export class TemplateLocationRequest {
7
+ @IsString() @IsNotEmpty() @Matches(SEGMENT)
8
+ enterprise!: string;
9
+
10
+ @IsOptional() @IsString() @Matches(SEGMENT)
11
+ partnerId?: string;
12
+
13
+ @IsOptional() @IsString() @Matches(SEGMENT)
14
+ category?: string;
15
+ }
@@ -0,0 +1,28 @@
1
+ import { IsNotEmpty, IsOptional, IsString, Matches } from "class-validator";
2
+
3
+ /** Segmento de ruta S3 permitido: letras, dígitos, guion y guion bajo. */
4
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
5
+
6
+ /**
7
+ * Referencia a una plantilla del bucket de plantillas.
8
+ * Layout profundo: {enterprise}/{partnerId}/{category}/{documentType}/V{version}.html
9
+ * Layout plano: {enterprise}/{documentType}/V{version}.html
10
+ * partnerId y category van juntos o no van.
11
+ */
12
+ export class TemplateRefRequest {
13
+ @IsString() @IsNotEmpty() @Matches(SEGMENT)
14
+ enterprise!: string;
15
+
16
+ @IsOptional() @IsString() @Matches(SEGMENT)
17
+ partnerId?: string;
18
+
19
+ @IsOptional() @IsString() @Matches(SEGMENT)
20
+ category?: string;
21
+
22
+ @IsString() @IsNotEmpty() @Matches(SEGMENT)
23
+ documentType!: string;
24
+
25
+ /** Número de versión sin la "V". Sin valor se usa la versión más alta publicada. */
26
+ @IsOptional() @IsString() @Matches(/^[0-9]{1,6}$/)
27
+ version?: string;
28
+ }
@@ -0,0 +1,6 @@
1
+ export class TemplateSummaryResponse {
2
+ documentType!: string;
3
+ /** Versiones publicadas, de menor a mayor. */
4
+ versions!: string[];
5
+ latestVersion!: string;
6
+ }
@@ -0,0 +1,25 @@
1
+ import { IsBase64, IsIn, IsNotEmpty, IsOptional, IsString, Matches } from "class-validator";
2
+
3
+ const SEGMENT = /^[A-Za-z0-9_-]{1,64}$/;
4
+ /** Ruta relativa dentro de _assets/: hasta 4 carpetas y un archivo, sin "..", con extensión permitida. */
5
+ const ASSET_PATH = /^(?!.*\.\.)([A-Za-z0-9_-]+\/){0,4}[A-Za-z0-9_.()-]+\.(ttf|otf|woff|woff2|png|jpg|jpeg|svg|gif|css)$/;
6
+
7
+ export const ASSET_CONTENT_TYPES = ['font/ttf', 'font/otf', 'font/woff', 'font/woff2', 'image/png', 'image/jpeg', 'image/svg+xml', 'image/gif', 'text/css'];
8
+
9
+ /** Fuente, imagen u hoja de estilo para la carpeta _assets de una empresa o partner. */
10
+ export class UploadAssetRequest {
11
+ @IsString() @IsNotEmpty() @Matches(SEGMENT)
12
+ enterprise!: string;
13
+
14
+ @IsOptional() @IsString() @Matches(SEGMENT)
15
+ partnerId?: string;
16
+
17
+ @IsString() @Matches(ASSET_PATH)
18
+ path!: string;
19
+
20
+ @IsString() @IsIn(ASSET_CONTENT_TYPES)
21
+ contentType!: string;
22
+
23
+ @IsString() @IsNotEmpty() @IsBase64()
24
+ contentBase64!: string;
25
+ }
@@ -0,0 +1,4 @@
1
+ export class UploadAssetResponse {
2
+ key!: string;
3
+ bytes!: number;
4
+ }
@@ -0,0 +1,13 @@
1
+ //dtos
2
+ export * from './dtos/TemplateRefRequest';
3
+ export * from './dtos/RenderDocumentRequest';
4
+ export * from './dtos/GeneratePdfRequest';
5
+ export * from './dtos/MergePdfsRequest';
6
+ export * from './dtos/PdfDocumentResponse';
7
+ export * from './dtos/RenderDocumentResponse';
8
+ export * from './dtos/TemplateLocationRequest';
9
+ export * from './dtos/PublishTemplateRequest';
10
+ export * from './dtos/PublishTemplateResponse';
11
+ export * from './dtos/UploadAssetRequest';
12
+ export * from './dtos/UploadAssetResponse';
13
+ export * from './dtos/TemplateSummaryResponse';
@@ -18,11 +18,19 @@ export interface ActiveSessionByPhoneResponse {
18
18
  sessionId: string | null;
19
19
  /** Paso en el que se quedo la venta. `null` cuando `found` es `false`. */
20
20
  currentStep: WizardStepEnum | null;
21
- /** Hoy siempre `ACTIVE`: la busqueda filtra por ese estado. `null` cuando `found` es `false`. */
21
+ /** ACTIVE o una PAUSED_* de la tienda del caller. `null` cuando `found` es `false`. */
22
22
  state: WizardStateEnum | null;
23
23
  /**
24
24
  * El bloqueo de la venta, para pintar la etiqueta y el «hace N dias». `null` cuando la venta va
25
25
  * bien o cuando `found` es `false`.
26
26
  */
27
27
  blocked?: WizardBlockedSummary | null;
28
+ /** Pantalla exacta a la que entra «Reabrir» (slug del front). `null` = entra por `resumeTargetStep`. */
29
+ resumeSlug?: string | null;
30
+ /** Paso al que entra «Reabrir» sin pantalla exacta (checkpoint del silo). */
31
+ resumeTargetStep?: WizardStepEnum | null;
32
+ /** Hasta cuándo se retoma en la pantalla exacta (ISO). `null` = no vence por inactividad. */
33
+ exactUntil?: string | null;
34
+ /** La venta movió dinero u originó crédito: siempre se retoma la misma. */
35
+ moneyAtStake?: boolean;
28
36
  }
@@ -0,0 +1,8 @@
1
+ import type { ProspectResumeModeEnum } from '../../enums/ProspectResumeModeEnum';
2
+
3
+ /** POST /prospects/{id}/resume. La pantalla de entrada sale de GET /wizard/sessions/{id} tras el OTP. */
4
+ export interface ProspectResumeResponse {
5
+ /** `null` solo con `mode = NEW`: el front arranca la venta con POST /wizard/sessions. */
6
+ sessionId: string | null;
7
+ mode: ProspectResumeModeEnum;
8
+ }
@@ -0,0 +1,6 @@
1
+ /** Cómo entra «Reabrir». EXACT = pantalla guardada; CHECKPOINT = destino del silo; NEW = sin venta viva. */
2
+ export enum ProspectResumeModeEnum {
3
+ EXACT = 'EXACT',
4
+ CHECKPOINT = 'CHECKPOINT',
5
+ NEW = 'NEW',
6
+ }
@@ -0,0 +1,4 @@
1
+ /** `cancelReason` que escribe el sistema (no el vendedor). La saga cierra la venta cuyo crédito se descartó. */
2
+ export enum SystemCancelReasonEnum {
3
+ SWEEP_CREDIT_DISCARDED = 'SWEEP_CREDIT_DISCARDED',
4
+ }
@@ -20,6 +20,8 @@ export * from './enums/AccountVerdictEnum';
20
20
  export * from './enums/AccountOutcomeEnum';
21
21
  export * from './enums/AccountStepStatusEnum';
22
22
  export * from './enums/ResumeReasonEnum';
23
+ export * from './enums/ProspectResumeModeEnum';
24
+ export * from './enums/SystemCancelReasonEnum';
23
25
  export * from './enums/AppOnboardingStepEnum';
24
26
  export * from './enums/AppOnboardingStepStatusEnum';
25
27
  export * from './enums/BlockedReasonEnum';
@@ -114,6 +116,7 @@ export * from './dtos/responses/SignatureSignResponse';
114
116
  export * from './dtos/responses/RegisterDeviceResponse';
115
117
  export * from './dtos/responses/AccountStatusResponse';
116
118
  export * from './dtos/responses/ActiveSessionByPhoneResponse';
119
+ export * from './dtos/responses/ProspectResumeResponse';
117
120
  export * from './dtos/responses/ProspectByPhoneResponse';
118
121
  export * from './dtos/responses/AppOnboardingResponse';
119
122