import { CLIDocumentKey, CLIDocuments, CLIRequiredWorkflows } from './product-module-definition'; export enum TopLevelDirectoryName { Code = 'code', Docs = 'docs', Documents = 'documents', Workflows = 'workflows', } export enum WorkflowsDirectoryName { Embed = 'embed', AlterationHooks = 'alteration-hooks', ApplicationAlterationHooks = 'application-alteration-hooks', MemberAlterationHooks = 'member-alteration-hooks', } export enum DocumentsDirectoryName { SupplementaryTerms = 'supplementary-terms', } export enum CodeDirectoryName { UnitTests = 'unit-tests', Src = 'src', Build = '.build', } export enum EmbedFileName { PrePaymentCompliance = 'pre-payment-compliance.md', PrePersonalDetailsCompliance = 'pre-personal-details-compliance.md', InputFields = 'input-fields.json', EmbedConfig = 'embed-config.json', } export enum RequiredWorkflowFileName { QuoteSchema = 'quote-schema.json', ApplicationSchema = 'application-schema.json', ClaimsBlocks = 'claims-blocks.json', } export const mapRequiredWorkflowKeyToFileName = (key: keyof CLIRequiredWorkflows): RequiredWorkflowFileName => { const mapping: Record = { quoteSchema: RequiredWorkflowFileName.QuoteSchema, applicationSchema: RequiredWorkflowFileName.ApplicationSchema, claimsBlocks: RequiredWorkflowFileName.ClaimsBlocks, }; return mapping[key]; }; export enum TopLevelFileName { RootConfig = '.root-config.json', Readme = 'README.md', RootAuth = '.root-auth', } export enum DocsFileName { ApiDocs = 'api-docs.json', ApiDocsPrompt = 'api-docs-prompt.txt', } export enum PolicyDocumentFileName { AnniversaryLetter = 'anniversary-letter.html', Certificate = 'certificate.html', Invoice = 'invoice.html', MemberCertificate = 'member-certificate.html', PolicySchedule = 'policy-schedule.html', QuoteSummary = 'quote-summary.html', Terms = 'terms.pdf', WelcomeLetter = 'welcome-letter.html', } export const isPolicyDocumentFileName = (filename: string): filename is PolicyDocumentFileName => { return Object.values(PolicyDocumentFileName).includes(filename as PolicyDocumentFileName); }; export const mapDocumentKeyToFileName = (key: CLIDocumentKey): PolicyDocumentFileName => { const mapping: Record = { anniversaryLetterHtml: PolicyDocumentFileName.AnniversaryLetter, certificateHtml: PolicyDocumentFileName.Certificate, invoiceTemplateHtml: PolicyDocumentFileName.Invoice, memberCertificateHtml: PolicyDocumentFileName.MemberCertificate, policyScheduleHtml: PolicyDocumentFileName.PolicySchedule, quoteSummaryHtml: PolicyDocumentFileName.QuoteSummary, termsPdfBase64: PolicyDocumentFileName.Terms, welcomeLetterHtml: PolicyDocumentFileName.WelcomeLetter, }; return mapping[key]; }; export const mapFileNameToDocumentKey = (filename: PolicyDocumentFileName): CLIDocumentKey => { const mapping: Record = { [PolicyDocumentFileName.AnniversaryLetter]: CLIDocumentKey.AnniversaryLetterHtml, [PolicyDocumentFileName.Certificate]: CLIDocumentKey.CertificateHtml, [PolicyDocumentFileName.Invoice]: CLIDocumentKey.InvoiceTemplateHtml, [PolicyDocumentFileName.MemberCertificate]: CLIDocumentKey.MemberCertificateHtml, [PolicyDocumentFileName.PolicySchedule]: CLIDocumentKey.PolicyScheduleHtml, [PolicyDocumentFileName.QuoteSummary]: CLIDocumentKey.QuoteSummaryHtml, [PolicyDocumentFileName.Terms]: CLIDocumentKey.TermsPdfBase64, [PolicyDocumentFileName.WelcomeLetter]: CLIDocumentKey.WelcomeLetterHtml, }; return mapping[filename]; };