@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.
- package/_test_/unit/pdfRender/pdfRenderDtos.test.ts +66 -0
- package/_test_/unit/retailWizard/prospectResume.test.ts +49 -0
- package/bin/index.d.ts +1 -0
- package/bin/index.js +3 -1
- package/bin/pdfRender/dtos/GeneratePdfRequest.d.ts +4 -0
- package/bin/pdfRender/dtos/GeneratePdfRequest.js +22 -0
- package/bin/pdfRender/dtos/MergePdfsRequest.d.ts +4 -0
- package/bin/pdfRender/dtos/MergePdfsRequest.js +24 -0
- package/bin/pdfRender/dtos/PdfDocumentResponse.d.ts +5 -0
- package/bin/pdfRender/dtos/PdfDocumentResponse.js +6 -0
- package/bin/pdfRender/dtos/PublishTemplateRequest.d.ts +10 -0
- package/bin/pdfRender/dtos/PublishTemplateRequest.js +40 -0
- package/bin/pdfRender/dtos/PublishTemplateResponse.d.ts +4 -0
- package/bin/pdfRender/dtos/PublishTemplateResponse.js +6 -0
- package/bin/pdfRender/dtos/RenderDocumentRequest.d.ts +6 -0
- package/bin/pdfRender/dtos/RenderDocumentRequest.js +29 -0
- package/bin/pdfRender/dtos/RenderDocumentResponse.d.ts +5 -0
- package/bin/pdfRender/dtos/RenderDocumentResponse.js +7 -0
- package/bin/pdfRender/dtos/TemplateLocationRequest.d.ts +6 -0
- package/bin/pdfRender/dtos/TemplateLocationRequest.js +36 -0
- package/bin/pdfRender/dtos/TemplateRefRequest.d.ts +14 -0
- package/bin/pdfRender/dtos/TemplateRefRequest.js +54 -0
- package/bin/pdfRender/dtos/TemplateSummaryResponse.d.ts +6 -0
- package/bin/pdfRender/dtos/TemplateSummaryResponse.js +6 -0
- package/bin/pdfRender/dtos/UploadAssetRequest.d.ts +9 -0
- package/bin/pdfRender/dtos/UploadAssetRequest.js +49 -0
- package/bin/pdfRender/dtos/UploadAssetResponse.d.ts +4 -0
- package/bin/pdfRender/dtos/UploadAssetResponse.js +6 -0
- package/bin/pdfRender/index.d.ts +12 -0
- package/bin/pdfRender/index.js +29 -0
- package/bin/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.d.ts +9 -1
- package/bin/retailWizard/dtos/responses/ProspectResumeResponse.d.ts +7 -0
- package/bin/retailWizard/dtos/responses/ProspectResumeResponse.js +2 -0
- package/bin/retailWizard/enums/ProspectResumeModeEnum.d.ts +6 -0
- package/bin/retailWizard/enums/ProspectResumeModeEnum.js +10 -0
- package/bin/retailWizard/enums/SystemCancelReasonEnum.d.ts +4 -0
- package/bin/retailWizard/enums/SystemCancelReasonEnum.js +8 -0
- package/bin/retailWizard/index.d.ts +3 -0
- package/bin/retailWizard/index.js +3 -0
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/pdfRender/dtos/GeneratePdfRequest.ts +7 -0
- package/src/pdfRender/dtos/MergePdfsRequest.ts +7 -0
- package/src/pdfRender/dtos/PdfDocumentResponse.ts +5 -0
- package/src/pdfRender/dtos/PublishTemplateRequest.ts +18 -0
- package/src/pdfRender/dtos/PublishTemplateResponse.ts +4 -0
- package/src/pdfRender/dtos/RenderDocumentRequest.ts +12 -0
- package/src/pdfRender/dtos/RenderDocumentResponse.ts +6 -0
- package/src/pdfRender/dtos/TemplateLocationRequest.ts +15 -0
- package/src/pdfRender/dtos/TemplateRefRequest.ts +28 -0
- package/src/pdfRender/dtos/TemplateSummaryResponse.ts +6 -0
- package/src/pdfRender/dtos/UploadAssetRequest.ts +25 -0
- package/src/pdfRender/dtos/UploadAssetResponse.ts +4 -0
- package/src/pdfRender/index.ts +13 -0
- package/src/retailWizard/dtos/responses/ActiveSessionByPhoneResponse.ts +9 -1
- package/src/retailWizard/dtos/responses/ProspectResumeResponse.ts +8 -0
- package/src/retailWizard/enums/ProspectResumeModeEnum.ts +6 -0
- package/src/retailWizard/enums/SystemCancelReasonEnum.ts +4 -0
- 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
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,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,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,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,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,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,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,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,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
|
-
/**
|
|
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,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,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
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 { 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,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,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,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,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,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
|
-
/**
|
|
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
|
+
}
|
|
@@ -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
|
|