import * as _cz_git_inquirer from '@cz-git/inquirer'; export * from '@cz-git/inquirer'; export * from '@cz-git/loader'; declare const generateQuestions: (options: CommitizenGitOptions, cz: any) => false | ({ type: string; name: string; message: string | undefined; themeColorCode: string | undefined; source: (_: unknown, input: string) => _cz_git_inquirer.FilterArrayItemType[]; separator?: undefined; validate?: undefined; when?: undefined; completeValue?: undefined; transformer?: undefined; filter?: undefined; default?: undefined; } | { type: string; name: string; message: string | string[] | undefined; themeColorCode: string | undefined; separator: string | undefined; source: (answer: Answers, input: string) => _cz_git_inquirer.FilterArrayItemType[]; validate: (input: string | Array) => string | true; when: (answer: Answers) => boolean; completeValue?: undefined; transformer?: undefined; filter?: undefined; default?: undefined; } | { type: string; name: string; message: string | undefined; completeValue: string | undefined; validate: (input: string | Array) => string | true; when: (answers: Answers) => boolean; transformer: (input: string) => string; themeColorCode?: undefined; source?: undefined; separator?: undefined; filter?: undefined; default?: undefined; } | { type: string; name: string; message: string | undefined; validate: (subject: string, answers: Answers) => string | boolean; transformer: (subject: string, answers: Answers) => string; filter: (subject: string) => string; completeValue: string | undefined; themeColorCode?: undefined; source?: undefined; separator?: undefined; when?: undefined; default?: undefined; } | { type: string; name: string; message: string | undefined; completeValue: string | undefined; transformer: (input: string) => string; themeColorCode?: undefined; source?: undefined; separator?: undefined; validate?: undefined; when?: undefined; filter?: undefined; default?: undefined; } | { type: string; name: string; message: string | boolean | undefined; default: boolean; when: () => boolean; themeColorCode?: undefined; source?: undefined; separator?: undefined; validate?: undefined; completeValue?: undefined; transformer?: undefined; filter?: undefined; } | { type: string; name: string; message: string | undefined; completeValue: string | undefined; when: (answers: Answers) => string | boolean; transformer: (input: string) => string; themeColorCode?: undefined; source?: undefined; separator?: undefined; validate?: undefined; filter?: undefined; default?: undefined; } | { type: string; name: string; message: string | undefined; themeColorCode: string | undefined; source: (_: Answers, input: string) => _cz_git_inquirer.FilterArrayItemType[]; when: () => boolean; separator?: undefined; validate?: undefined; completeValue?: undefined; transformer?: undefined; filter?: undefined; default?: undefined; })[]; type GenerateQuestionsType = typeof generateQuestions; type QuestionsType = ReturnType; /** * @description: fork by "@commitlint/types" v16.2.1 */ /** ========== rules ========== */ /** * Rules match the input either as successful or failed. * For example, when `header-full-stop` detects a full stop and is set as "always"; it's true. * If the `header-full-stop` discovers a full stop but is set to "never"; it's false. */ type RuleOutcome = Readonly<[boolean, string?]>; /** * Rules receive a parsed commit, condition, and possible additional settings through value. * All rules should provide the most sensible rule condition and value. */ type RuleType = 'async' | 'sync' | 'either'; type BaseRule = (parsed: Commit, when?: RuleConfigCondition, value?: Value) => Type extends 'either' ? RuleOutcome | Promise : Type extends 'async' ? Promise : Type extends 'sync' ? RuleOutcome : never; type Rule = BaseRule; type AsyncRule = BaseRule; type SyncRule = BaseRule; /** * Rules always have a severity. * Severity indicates what to do if the rule is found to be broken * 0 - Disable this rule * 1 - Warn for violations * 2 - Error for violations */ declare enum RuleConfigSeverity { Disabled = 0, Warning = 1, Error = 2 } /** * Rules always have a condition. * It can be either "always" (as tested), or "never" (as tested). * For example, `header-full-stop` can be enforced as "always" or "never". */ type RuleConfigCondition = 'always' | 'never'; type RuleConfigTuple = T extends void ? Readonly<[RuleConfigSeverity.Disabled]> | Readonly<[RuleConfigSeverity, RuleConfigCondition]> : Readonly<[RuleConfigSeverity.Disabled]> | Readonly<[RuleConfigSeverity, RuleConfigCondition, T]>; declare enum RuleConfigQuality { User = 0, Qualified = 1 } type QualifiedRuleConfig = (() => RuleConfigTuple) | (() => Promise>) | RuleConfigTuple; type RuleConfig = V extends RuleConfigQuality.Qualified ? RuleConfigTuple : QualifiedRuleConfig; type CaseRuleConfig = RuleConfig; type LengthRuleConfig = RuleConfig; type EnumRuleConfig = RuleConfig; interface RulesConfig { 'body-case': CaseRuleConfig; 'body-empty': RuleConfig; 'body-full-stop': RuleConfig; 'body-leading-blank': RuleConfig; 'body-max-length': LengthRuleConfig; 'body-max-line-length': LengthRuleConfig; 'body-min-length': LengthRuleConfig; 'footer-empty': RuleConfig; 'footer-leading-blank': RuleConfig; 'footer-max-length': LengthRuleConfig; 'footer-max-line-length': LengthRuleConfig; 'footer-min-length': LengthRuleConfig; 'header-case': CaseRuleConfig; 'header-full-stop': RuleConfig; 'header-max-length': LengthRuleConfig; 'header-min-length': LengthRuleConfig; 'references-empty': RuleConfig; 'scope-case': CaseRuleConfig; 'scope-empty': RuleConfig; 'scope-enum': EnumRuleConfig; 'scope-max-length': LengthRuleConfig; 'scope-min-length': LengthRuleConfig; 'signed-off-by': RuleConfig; 'subject-case': CaseRuleConfig; 'subject-empty': RuleConfig; 'subject-full-stop': RuleConfig; 'subject-max-length': LengthRuleConfig; 'subject-min-length': LengthRuleConfig; 'trailer-exists': RuleConfig; 'type-case': CaseRuleConfig; 'type-empty': RuleConfig; 'type-enum': EnumRuleConfig; 'type-max-length': LengthRuleConfig; 'type-min-length': LengthRuleConfig; [key: string]: AnyRuleConfig; } type AnyRuleConfig = RuleConfig | RuleConfig; /** ========== load ========== */ type PluginRecords = Record; interface Plugin { rules: { [ruleName: string]: Rule | AsyncRule | SyncRule; }; } interface LoadOptions { cwd?: string; file?: string; } interface CommitlintUserConfig { extends?: string | string[]; formatter?: string; rules?: Partial; parserPreset?: string | ParserPreset | Promise; ignores?: ((commit: string) => boolean)[]; defaultIgnores?: boolean; plugins?: (string | Plugin)[]; helpUrl?: string; [key: string]: unknown; } type QualifiedRules = Partial>; interface QualifiedConfig { extends: string[]; formatter: string; rules: QualifiedRules; parserPreset?: ParserPreset; ignores?: ((commit: string) => boolean)[]; defaultIgnores?: boolean; plugins: PluginRecords; helpUrl: string; } interface ParserPreset { name?: string; path?: string; parserOpts?: unknown; } /** ========== parse ========== */ interface Commit { raw: string; header: string; type: string | null; scope: string | null; subject: string | null; body: string | null; footer: string | null; mentions: string[]; notes: CommitNote[]; references: CommitReference[]; revert: any; merge: any; } interface CommitNote { title: string; text: string; } interface CommitReference { raw: string; prefix: string; action: string | null; owner: string | null; repository: string | null; issue: string | null; } /** ========== ensure ========== */ type TargetCaseType = 'camel-case' | 'kebab-case' | 'snake-case' | 'pascal-case' | 'start-case' | 'upper-case' | 'uppercase' | 'sentence-case' | 'sentencecase' | 'lower-case' | 'lowercase' | 'lowerCase'; /** * @description: cz-git types * @author: @Zhengqbbb (zhengqbbb@gmail.com) * @license: MIT * @copyright: Copyright (c) 2022-present Qiubin Zheng */ interface UserConfig extends CommitlintUserConfig { prompt?: CommitizenGitOptions; } type Config = Omit, 'scopes'> & { scopes: ScopesType; disableScopeLowerCase?: boolean; disableSubjectLowerCase?: boolean; maxHeaderLength?: number; maxSubjectLength?: number; minSubjectLength?: number; defaultScope?: string; defaultSubject?: string; defaultBody?: string; defaultFooterPrefix?: string; defaultIssues?: string; }; interface Answers { /** * @default: Select the type of change that you're committing: */ type?: string; /** * @default: Denote the SCOPE of this change (optional): */ scope?: string | string[]; /** * @default: Denote the SCOPE of this change: */ customScope?: string; /** * @default: Write a SHORT, IMPERATIVE tense description of the change:\n */ subject?: string; /** * @default:Provide a LONGER description of the change (optional). Use "|" to break new line:\n */ body?: string; /** * @default: Is any BREAKING CHANGE (add "!" in header) (optional) ? * @use need turn on options "markBreakingChangeMode" */ markBreaking?: string | boolean; /** * @default: List any BREAKING CHANGES (optional). Use "|" to break new line:\n */ breaking?: string; /** @deprecated Please use `footerPrefixesSelect` field instead. @note fix typo option field v1.4.0: Already processed for normal compatibility */ footerPrefixsSelect?: string; /** * @default: Select the ISSUES type of change (optional): */ footerPrefixesSelect?: string; /** @deprecated Please use `customFooterPrefix` field instead. @note fix typo option field v1.4.0: Already processed for normal compatibility */ customFooterPrefixs?: string; /** * @default: Input ISSUES prefix: */ customFooterPrefix?: string; /** * @default: List any ISSUES AFFECTED by this change. E.g.: #31, #34: */ footer?: string; /** * @default: Are you sure you want to proceed with the commit above? */ confirmCommit?: string; /** * @default: Generating your AI commit subject... */ generatingByAI: string; /** * @description: Select suitable subject by AI generated: */ generatedSelectByAI: string; footerPrefix?: string; } type ScopesType = string[] | Array<{ name: string; value?: string; }>; interface CommitizenType { registerPrompt: (type: string, plugin: unknown) => void; prompt: (qs: QuestionsType) => Promise; } interface Option { /** * @description: show prompt name */ name: string; /** * @description: output real value */ value: string; } interface TypesOption extends Option { /** * @description: Submit emoji commit string * @see: https://gitmoji.dev/ * @example: ":bug:" => 🐛 */ emoji?: string; } /** * provide subdivides each message part */ interface CommitMessageOptions { /** * @description: choose type list value * @example: 'feat' */ type: string; /** * @description: choose or custom scope value * @example: 'app' */ scope: string; /** * @description: choose type list emoji code. need turn on `useEmoji` options * @example: ':sparkles:' */ emoji: string; /** * @description: express is a breaking change message * @example `!` */ markBreaking: string; /** * @description: input subject */ subject: string; /** * @description: base Angular format default header * @example `feat(app): add a feature` */ defaultHeader: string; body: string; breaking: string; footer: string; /** * @description: base Angular format default all message */ defaultMessage: string; } interface GenerateAIPromptType { type?: string; defaultScope?: string; maxSubjectLength?: number; upperCaseSubject?: boolean; diff?: string; } interface CommitizenGitOptions { /** * @description: define commonly used commit message alias * @default: { fd: "docs: fix typos" } * @use commitizen CLI: "cz_alias=fd cz" * @use czg CLI: "czg --alias=fd" | "czg :fd" * @note use commitizen CLI will meet process not exit. cz-git can't resolve it. */ alias?: Record; /** * @description: Customize prompt questions */ messages?: Answers; /** * @description: the prompt inquirer primary color * @rule `38;5;${color_code}` * @tip the color_code can get by https://github.com/sindresorhus/xterm-colors * @example "38;5;043" * @default: "" = cyan color */ themeColorCode?: string; /** * @description: Customize prompt type */ types?: TypesOption[]; /** * @description: Add extra types to default types * @use Use when you don't want to add bloated defaults and don't want to adjust the default order in configuration * @example `typesAppend: [ { value: "workflow", name: "workflow: Workflow changes"} ],` * @default: [] */ typesAppend?: TypesOption[]; /** * @description: default types list fuzzy search types `value` key of list. * if choose `false` will search `name` key of list * @use Using emoji unicode as `value` and that can't be searched * @default: true */ typesSearchValue?: boolean; /** @deprecated Please use `typesSearchValue` field instead. */ typesSearchValueKey?: boolean; /** * @description: Use OpenAI to auto generate short description for commit message * @default: false */ useAI?: boolean; /** * @description: If >1 will turn on select mode, select generate options like returned by OpenAI * @default: 1 */ aiNumber?: number; /** * @description: To ignore selection codes when sending AI API requests * @default: [ "package-lock.json", "yarn.lock", "pnpm-lock.yaml" ] * @example: [ "pnpm-lock.yaml", "docs/public" ] */ aiDiffIgnore?: string[]; /** * @default: OpenAI */ aiType?: string; /** * @description: Alert!!! Save on "$HOME/.czrc" or "$HOME/.config/.czrc". Do not save on project */ openAIToken?: string; /** * It is recommended to use the command to configure the local * `npx czg --api-proxy=` * e.g: `npx czg --api-proxy="http://127.0.0.1:1080"` or `npx czg --api-proxy="socks5://127.0.0.1:1080"` */ apiProxy?: string; /** * @description: Use the callback fn can customize edit information AI question information * @param GenerateAIPromptType: provide some known parameters * @default: generateSubjectDefaultPrompt */ aiQuestionCB?: (aiParam: GenerateAIPromptType) => string; /** * @description: Use emoji ?| it will be use typesOption.emoji code * @default: false */ useEmoji?: boolean; /** * @description: Set the location of emoji in header * @default: "center" */ emojiAlign?: 'left' | 'center' | 'right'; /** * @description: Provides a select of prompt to select module scopes * @note it auto import value from rule "scope-enum" with `@commitlint` * @use want to add scopes description or when you not use commitlint */ scopes?: ScopesType; /** * @description: default scope list fuzzy search types `name` key of list. * if choose `true` will search `value` key of list. * @use If have long description of scope. can use it to enhanced search. * @default: false */ scopesSearchValue?: boolean; /** * @description: Provides an overriding select of prompt to select module scopes under specific type * @note use this option should set `scopes` option to realize distinguish * @example: [test] => provide select e2eTest unitTest */ scopeOverrides?: { [type: string]: ScopesType; }; /** * @description: Filter select of prompt to select module scopes by the scope.value * @default: ['.DS_Store'] */ scopeFilters?: string[]; /** * @description: Whether to enable scope multiple mode * @default: false */ enableMultipleScopes?: boolean; /** * @description: Multiple choice scope separator * @default: "," */ scopeEnumSeparator?: string; /** * @description: Whether to show "custom" when selecting scopes * @note it auto check rule "scope-enum" set the option with `@commitlint` * @use when you not use commitlint * @default true */ allowCustomScopes?: boolean; /** * @description: Whether to show "empty" when selecting scopes * @default true */ allowEmptyScopes?: boolean; /** * @description: Set the location of empty option (empty) and custom option (custom) in selection range * @default: "bottom" */ customScopesAlign?: 'top' | 'bottom' | 'top-bottom' | 'bottom-top'; /** * @default: "custom" */ customScopesAlias?: string; /** * @default: "empty" */ emptyScopesAlias?: string; /** * @description: Subject is need upper case first. * @default false */ upperCaseSubject?: boolean; /** * @description: Whether to add extra prompt BREAKCHANGE ask. to add an extra "!" to the header * @see: https://cz-git.qbb.sh/recipes/breakingchange * @default: false */ markBreakingChangeMode?: boolean; /** * @description: Allow breaking changes in the included types output box * @default: ['feat', 'fix'] */ allowBreakingChanges?: string[]; /** * @description: set body and BREAKING CHANGE max length to break-line * @default: 100 * @note it auto check rule "body-max-line-length" set the option with `@commitlint`. * @use when you not use commitlint */ breaklineNumber?: number; /** * @description: body and BREAKINGCHANGES new line char * @default: "|" */ breaklineChar?: string; /** * @deprecated Please use `issuePrefixes` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ issuePrefixs?: Option[]; /** * @description: Provides a select issue prefix box in footer * @default: issuePrefixes: [{ value: "closed", name: "ISSUES has been processed" }] */ issuePrefixes?: Option[]; /** * @deprecated Please use `customIssuePrefixAlign` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ customIssuePrefixsAlign?: 'top' | 'bottom' | 'top-bottom' | 'bottom-top'; /** * @default: "top" */ customIssuePrefixAlign?: 'top' | 'bottom' | 'top-bottom' | 'bottom-top'; /** * @deprecated Please use `emptyIssuePrefixAlias` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ emptyIssuePrefixsAlias?: string; /** * @default: "skip" */ emptyIssuePrefixAlias?: string; /** * @deprecated Please use `customIssuePrefixAlias` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ customIssuePrefixsAlias?: string; /** * @default: "custom" */ customIssuePrefixAlias?: string; /** * @deprecated Please use `allowCustomIssuePrefix` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ allowCustomIssuePrefixs?: boolean; /** * @description: Whether to show "custom" selecting issue prefixes * @default true */ allowCustomIssuePrefix?: boolean; /** * @deprecated Please use `allowEmptyIssuePrefix` field instead. * @note fix typo option field v1.3.4: Already processed for normal compatibility */ allowEmptyIssuePrefixs?: boolean; /** * @description: Whether to show "skip(empty)" when selecting issue prefixes * @default true */ allowEmptyIssuePrefix?: boolean; /** * @description: Prompt final determination whether to display the color * @default: true */ confirmColorize?: boolean; /** * @description: List of questions you want to skip * @default: [] * @example: ['body'] */ skipQuestions?: Array<'scope' | 'body' | 'breaking' | 'footerPrefix' | 'footer' | 'confirmCommit'>; /** * @description: Force set max header length | Equivalent setting maxSubjectLength. * @note it auto check rule "header-max-length" set the option with `@commitlint`. * @use when you not use commitlint */ maxHeaderLength?: number; /** * @description: Force set max subject length. * @note it auto check rule "subject-max-length" set the option with `@commitlint`. * @use when you not use commitlint */ maxSubjectLength?: number; /** * @description: Is not strict subject rule. Just provide prompt word length warning. * Effected maxHeader and maxSubject commitlint * @example [1, 'always', 80] 1: mean warning. will be true * @default: false */ isIgnoreCheckMaxSubjectLength?: boolean; /** * @description: Force set header width. * @note it auto check rule "subject-min-length" set the option with `@commitlint`. * @use when you not use commitlint */ minSubjectLength?: number; /** * @description: pin type item the top of the types list (match item value) */ defaultType?: string; /** * @description: Whether to use display default value in custom scope * @tip pin scope item the top of the scope list (match item value) * @example: When you want to use default, just keyboard it */ defaultScope?: string; /** * @description: default value show subject template prompt * @example: If you want to use template complete. just keyboard or it * @example: If you want to use default, just keyboard it */ defaultSubject?: string; /** * @description: default value show body and BREAKINGCHANGES template prompt * @example: If you want to use template complete. just keyboard or it * @example: When you want to use default, just keyboard it */ defaultBody?: string; /** * @description: default value show issuePrefixes custom template prompt * @example: If you want to use template complete. just keyboard or it * @example: When you want to use default, just keyboard it */ defaultFooterPrefix?: string; /** * @description: default value show issue foot template prompt * @example: If you want to use template complete. just keyboard or it * @example: When you want to use default, just keyboard it */ defaultIssues?: string; /** * @description: Whether to use GPG sign commit message (git commit -S -m) * @note the options only support `czg` cz-git cli and no support git hooks mode * @usage_see https://github.com/Zhengqbbb/cz-git/issues/58 * @default: false */ useCommitSignGPG?: boolean; /** * @description: provide user custom finally message, can use the callback to change format * @param CommitMessageOptions: provide subdivides each message part * @default: ({ defaultMessage }) => defaultMessage */ formatMessageCB?: (messageMod: CommitMessageOptions) => string; } declare const defaultConfig: Readonly; /** * @description: customizable and git support commitizen adapter * @author: @Zhengqbbb (zhengqbbb@gmail.com) * @license: MIT * @copyright: Copyright (c) 2022-present Qiubin Zheng */ declare const prompter: (cz: CommitizenType, commit: (message: string) => void, configPath?: string) => void; export { Answers, AnyRuleConfig, AsyncRule, BaseRule, CaseRuleConfig, Commit, CommitMessageOptions, CommitNote, CommitReference, CommitizenGitOptions, CommitizenType, CommitlintUserConfig, Config, EnumRuleConfig, GenerateAIPromptType, LengthRuleConfig, LoadOptions, Option, ParserPreset, Plugin, PluginRecords, QualifiedConfig, QualifiedRuleConfig, QualifiedRules, Rule, RuleConfig, RuleConfigCondition, RuleConfigQuality, RuleConfigSeverity, RuleConfigTuple, RuleOutcome, RuleType, RulesConfig, ScopesType, SyncRule, TargetCaseType, TypesOption, UserConfig, defaultConfig, prompter };