@elsikora/setup-wizard
Version:
Setup Wizard - CLI scaffolding utility
95 lines (92 loc) • 5.23 kB
JavaScript
import { EPrlintGenerationProvider } from '../../../domain/enum/prlint-generation-provider.enum.js';
import { EPrlintTicketMissingBranchLintBehavior } from '../../../domain/enum/prlint-ticket-missing-branch-lint-behavior.enum.js';
import { EPrlintTicketNormalization } from '../../../domain/enum/prlint-ticket-normalization.enum.js';
import { EPrlintTicketSource } from '../../../domain/enum/prlint-ticket-source.enum.js';
const DEFAULT_BASE_BRANCH = "dev";
const IS_DRAFT_DEFAULT = false;
const DEFAULT_FORBIDDEN_PLACEHOLDERS = ["WIP", "TODO", "<!--", "TEMPLATE", "lorem ipsum", "[ ]", "<replace-me>"];
const DEFAULT_MAX_RETRIES = 3;
const DEFAULT_MODEL = "claude-opus-4-5";
const DEFAULT_PROHIBITED_BRANCHES = ["main", "master"];
const DEFAULT_PROVIDER = EPrlintGenerationProvider.ANTHROPIC;
const DEFAULT_REQUIRED_SECTIONS = ["Summary", "Scope", "Changes", "Acceptance Criteria", "Test Plan", "Risks", "Linear"];
const DEFAULT_TICKET_PATTERN = "[a-z]{2,}-[0-9]+";
const DEFAULT_TICKET_PATTERN_FLAGS = "i";
const DEFAULT_TITLE_PATTERN = String.raw `^(?<type>[a-z]+)\((?<scope>[a-z0-9-]+)\): (?<subject>.+) \| (?<ticket>[A-Za-z]{2,}-\d+)$`;
const DEFAULT_VALIDATION_RETRIES = 3;
const PRLINT_CONFIG_DEFAULTS = {
generation: {
model: DEFAULT_MODEL,
provider: DEFAULT_PROVIDER,
retries: DEFAULT_MAX_RETRIES,
validationRetries: DEFAULT_VALIDATION_RETRIES,
},
github: {
base: DEFAULT_BASE_BRANCH,
isDraft: IS_DRAFT_DEFAULT,
prohibitedBranches: DEFAULT_PROHIBITED_BRANCHES,
},
lint: {
forbiddenPlaceholders: DEFAULT_FORBIDDEN_PLACEHOLDERS,
requiredSections: DEFAULT_REQUIRED_SECTIONS,
titlePattern: DEFAULT_TITLE_PATTERN,
},
ticket: {
missingBranchLintBehavior: EPrlintTicketMissingBranchLintBehavior.ERROR,
normalization: EPrlintTicketNormalization.UPPER,
pattern: DEFAULT_TICKET_PATTERN,
patternFlags: DEFAULT_TICKET_PATTERN_FLAGS,
source: EPrlintTicketSource.BRANCH_LINT,
},
};
const PRLINT_CONFIG = {
template: (config) => {
const generationConfig = config?.generation;
const githubConfig = config?.github;
const lintConfig = config?.lint;
const ticketConfig = config?.ticket;
const generationProvider = generationConfig?.provider ?? PRLINT_CONFIG_DEFAULTS.generation.provider;
const generationModel = generationConfig?.model ?? PRLINT_CONFIG_DEFAULTS.generation.model;
const generationRetries = typeof generationConfig?.retries === "number" ? generationConfig.retries : PRLINT_CONFIG_DEFAULTS.generation.retries;
const generationValidationRetries = typeof generationConfig?.validationRetries === "number" ? generationConfig.validationRetries : PRLINT_CONFIG_DEFAULTS.generation.validationRetries;
const githubBaseBranch = githubConfig?.base ?? PRLINT_CONFIG_DEFAULTS.github.base;
const isGithubDraft = typeof githubConfig?.isDraft === "boolean" ? githubConfig.isDraft : PRLINT_CONFIG_DEFAULTS.github.isDraft;
const githubProhibitedBranches = Array.isArray(githubConfig?.prohibitedBranches) ? githubConfig.prohibitedBranches : PRLINT_CONFIG_DEFAULTS.github.prohibitedBranches;
const lintTitlePattern = lintConfig?.titlePattern ?? PRLINT_CONFIG_DEFAULTS.lint.titlePattern;
const lintRequiredSections = Array.isArray(lintConfig?.requiredSections) ? lintConfig.requiredSections : PRLINT_CONFIG_DEFAULTS.lint.requiredSections;
const lintForbiddenPlaceholders = Array.isArray(lintConfig?.forbiddenPlaceholders) ? lintConfig.forbiddenPlaceholders : PRLINT_CONFIG_DEFAULTS.lint.forbiddenPlaceholders;
const ticketSource = ticketConfig?.source ?? PRLINT_CONFIG_DEFAULTS.ticket.source;
const ticketPattern = ticketConfig?.pattern ?? PRLINT_CONFIG_DEFAULTS.ticket.pattern;
const ticketPatternFlags = ticketConfig?.patternFlags ?? PRLINT_CONFIG_DEFAULTS.ticket.patternFlags;
const ticketNormalization = ticketConfig?.normalization ?? PRLINT_CONFIG_DEFAULTS.ticket.normalization;
const ticketMissingBranchLintBehavior = ticketConfig?.missingBranchLintBehavior ?? PRLINT_CONFIG_DEFAULTS.ticket.missingBranchLintBehavior;
return `export default {
generation: {
model: ${JSON.stringify(generationModel)},
provider: ${JSON.stringify(generationProvider)},
retries: ${generationRetries},
validationRetries: ${generationValidationRetries},
},
github: {
base: ${JSON.stringify(githubBaseBranch)},
draft: ${isGithubDraft},
prohibitedBranches: ${JSON.stringify(githubProhibitedBranches)},
},
lint: {
forbiddenPlaceholders: ${JSON.stringify(lintForbiddenPlaceholders)},
requiredSections: ${JSON.stringify(lintRequiredSections)},
titlePattern: ${JSON.stringify(lintTitlePattern)},
},
ticket: {
missingBranchLintBehavior: ${JSON.stringify(ticketMissingBranchLintBehavior)},
normalization: ${JSON.stringify(ticketNormalization)},
pattern: ${JSON.stringify(ticketPattern)},
patternFlags: ${JSON.stringify(ticketPatternFlags)},
source: ${JSON.stringify(ticketSource)},
},
};`;
},
};
export { PRLINT_CONFIG, PRLINT_CONFIG_DEFAULTS };
//# sourceMappingURL=config.constant.js.map