czg 1.9.4 → 1.10.0-beta.2

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/README.md CHANGED
@@ -38,7 +38,7 @@ Interactive Commitizen CLI that generate standardized git commit message
38
38
  <br/>
39
39
 
40
40
  - 🤖 **OpenAI Support.** Let the AI generate your git commit message description.
41
- - ⚡️ **Lightweight** : Zero Dependencies (1.6MB)
41
+ - ⚡️ **Lightweight** : Zero Dependencies (1.31MB)
42
42
  - 🤗 **Simpler and Faster** : No plugin, No adapter, No extra steps, You can use `npx` | `npm script` | `global install`... quick start CLI in your any project
43
43
  - 😎 **Highly Customizable** : Internally contains the core of cz-git. Extend all the features of cz-git. Same behavior, Same configuration loader... You can customize the commit CLI according to your need
44
44
 
@@ -88,10 +88,15 @@ OPTIONS:
88
88
  --config= Specify the configuration file to use
89
89
 
90
90
  OpenAI:
91
- -N=,--ai-num= Setting AI return number subjects and Turn on choose mode
91
+ -N=,--ai-num= Sets AI return multiple subjects and Turn on choose mode
92
+ -M=,--ai-model= Sets AI model in this session
93
+ [default: "gpt-4o-mini"]
94
+ [example: "gpt-3.5-turbo", "gpt-4o", "gpt-4o-mini" ...]
92
95
  --api-key= Setup request OpenAI API secret key to local (.config/.czrc)
96
+ --api-model= Setup request OpenAI API model to local (.config/.czrc)
93
97
  --api-proxy= Setup request OpenAI API proxy to local (.config/.czrc)
94
98
  --api-endpoint= Setup request OpenAI API endpoint to local (.config/.czrc)
99
+ [default: "https://api.openai.com/v1"]
95
100
 
96
101
  FLAG:
97
102
  -r, --retry Directly retry submit by the last message
@@ -106,7 +111,7 @@ EXAMPLES:
106
111
  czg :fd
107
112
  czg --config="./config/cz.json"
108
113
  czg --api-key="sk-XXXXX"
109
- czg ai -N=3
114
+ czg ai -N=3 -M="gpt-4o"
110
115
 
111
116
  Extends 'git commit' options.
112
117
  See 'git commit --help' for more information.
@@ -178,7 +183,19 @@ brew install czg
178
183
 
179
184
  ## LICENSE
180
185
 
181
- MIT
182
- Copyright (c) 2022-present Qiubin Zheng <zhengqbbb@gmail.com> (https://github.com/Zhengqbbb)
186
+ MIT Copyright (c) 2022-present Qiubin Zheng <zhengqbbb@gmail.com> (https://github.com/Zhengqbbb)
183
187
 
184
- > I just do my best to make thing well, Could you give a [star ⭐](https://github.com/Zhengqbbb/cz-git) to encourage me ?
188
+ <p align="center">
189
+ <table>
190
+ <tbody>
191
+ <td align="center">
192
+ <br>
193
+ I just try my best to make thing well.<br>
194
+ Could you give a star ⭐ to encourage me 🤗
195
+ <br>
196
+ If possible, can to be my <a href="https://github.com/sponsors/Zhengqbbb">💖 Sponsor 💖</a> to support my work
197
+ <img width="800" height="0" />
198
+ </td>
199
+ </tbody>
200
+ </table>
201
+ </p>
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @description: fork by "@commitlint/types" v16.2.1
2
+ * @description fork by "@commitlint/types" v16.2.1
3
3
  */
4
4
  /** ========== rules ========== */
5
5
  /**
@@ -135,10 +135,10 @@ interface CommitReference {
135
135
  type TargetCaseType = 'camel-case' | 'kebab-case' | 'snake-case' | 'pascal-case' | 'start-case' | 'upper-case' | 'uppercase' | 'sentence-case' | 'sentencecase' | 'lower-case' | 'lowercase' | 'lowerCase';
136
136
 
137
137
  /**
138
- * @description: cz-git types
139
- * @author: @Zhengqbbb (zhengqbbb@gmail.com)
140
- * @license: MIT
141
- * @copyright: Copyright (c) 2022-present Qiubin Zheng
138
+ * @description cz-git types
139
+ * @author @Zhengqbbb (zhengqbbb@gmail.com)
140
+ * @license MIT
141
+ * @copyright Copyright (c) 2022-present Qiubin Zheng
142
142
  */
143
143
 
144
144
  /** cz-git + commitlint configure */
@@ -212,19 +212,20 @@ type ScopesType = string[] | Array<{
212
212
  }>;
213
213
  interface Option {
214
214
  /**
215
- * @description: show prompt name
215
+ * show terminal prompt name
216
216
  */
217
217
  name: string;
218
218
  /**
219
- * @description: output real value
219
+ * output real value
220
220
  */
221
221
  value: string;
222
222
  }
223
223
  interface TypesOption extends Option {
224
224
  /**
225
- * @description: Submit emoji commit string
226
- * @see: https://gitmoji.dev/
227
- * @example: ":bug:" => 🐛
225
+ * Submit emoji commit string
226
+ *
227
+ * @see https://gitmoji.dev/
228
+ * @example ":bug:" => 🐛
228
229
  */
229
230
  emoji?: string;
230
231
  }
@@ -233,31 +234,36 @@ interface TypesOption extends Option {
233
234
  */
234
235
  interface CommitMessageOptions {
235
236
  /**
236
- * @description: choose type list value
237
+ * choose type list value
238
+ *
237
239
  * @example: 'feat'
238
240
  */
239
241
  type: string;
240
242
  /**
241
- * @description: choose or custom scope value
243
+ * choose or custom scope value
244
+ *
242
245
  * @example: 'app'
243
246
  */
244
247
  scope: string;
245
248
  /**
246
- * @description: choose type list emoji code. need turn on `useEmoji` options
249
+ * choose type list emoji code. need turn on `useEmoji` options
250
+ *
247
251
  * @example: ':sparkles:'
248
252
  */
249
253
  emoji: string;
250
254
  /**
251
- * @description: express is a breaking change message
255
+ * express is a breaking change message
256
+ *
252
257
  * @example `!`
253
258
  */
254
259
  markBreaking: string;
255
260
  /**
256
- * @description: input subject
261
+ * input subject
257
262
  */
258
263
  subject: string;
259
264
  /**
260
- * @description: base Angular format default header
265
+ * base Angular format default header
266
+ *
261
267
  * @example `feat(app): add a feature`
262
268
  */
263
269
  defaultHeader: string;
@@ -265,7 +271,7 @@ interface CommitMessageOptions {
265
271
  breaking: string;
266
272
  footer: string;
267
273
  /**
268
- * @description: base Angular format default all message
274
+ * base Angular format default all message
269
275
  */
270
276
  defaultMessage: string;
271
277
  }
@@ -279,7 +285,8 @@ interface GenerateAIPromptType {
279
285
  /** cz-git configure */
280
286
  interface CommitizenGitOptions {
281
287
  /**
282
- * @description: define commonly used commit message alias
288
+ * define commonly used commit message alias
289
+ *
283
290
  * @default { fd: "docs: fix typos" }
284
291
  * @use commitizen CLI: "cz_alias=fd cz"
285
292
  * @use czg CLI: "czg --alias=fd" | "czg :fd"
@@ -287,11 +294,12 @@ interface CommitizenGitOptions {
287
294
  */
288
295
  alias?: Record<string, string>;
289
296
  /**
290
- * @description: Customize prompt questions
297
+ * Customize prompt questions
291
298
  */
292
299
  messages?: Answers;
293
300
  /**
294
- * @description: the prompt inquirer primary color
301
+ * the prompt inquirer primary color
302
+ *
295
303
  * @rule `38;5;${color_code}`
296
304
  * @tip the color_code can get by https://github.com/sindresorhus/xterm-colors
297
305
  * @example "38;5;043"
@@ -299,19 +307,21 @@ interface CommitizenGitOptions {
299
307
  */
300
308
  themeColorCode?: string;
301
309
  /**
302
- * @description: Customize prompt type
310
+ * Customize prompt type
303
311
  */
304
312
  types?: TypesOption[];
305
313
  /**
306
- * @description: Add extra types to default types
314
+ * Add extra types to default types
315
+ *
307
316
  * @use Use when you don't want to add bloated defaults and don't want to adjust the default order in configuration
308
317
  * @example `typesAppend: [ { value: "workflow", name: "workflow: Workflow changes"} ],`
309
318
  * @default []
310
319
  */
311
320
  typesAppend?: TypesOption[];
312
321
  /**
313
- * @description: default types list fuzzy search types `value` key of list.
314
- * if choose `false` will search `name` key of list
322
+ * Default types list fuzzy search types `value` key of list.
323
+ * If choose `false` will search `name` key of list.
324
+ *
315
325
  * @use Using emoji unicode as `value` and that can't be searched
316
326
  * @default true
317
327
  */
@@ -319,110 +329,134 @@ interface CommitizenGitOptions {
319
329
  /** @deprecated Please use `typesSearchValue` field instead. */
320
330
  typesSearchValueKey?: boolean;
321
331
  /**
322
- * @description: Use OpenAI to auto generate short description for commit message
332
+ * Use OpenAI to auto generate short description for commit message
333
+ *
323
334
  * @default false
324
335
  */
325
336
  useAI?: boolean;
326
337
  /**
327
- * @description: If >1 will turn on select mode, select generate options like returned by OpenAI
338
+ * Choose the AI model you want to use
339
+ *
340
+ * @see https://platform.openai.com/docs/models/model-endpoint-compatibility => /v1/chat/completions
341
+ * @example "gpt-3.5-turbo" | "gpt-4" | "gpt-4o" | "gpt-4o-mini"
342
+ * @default "gpt-4o-mini"
343
+ */
344
+ aiModel?: string;
345
+ /**
346
+ * If >1 will turn on select mode, select generate options like returned by OpenAI
347
+ *
328
348
  * @default 1
329
349
  */
330
350
  aiNumber?: number;
331
351
  /**
332
- * @description: To ignore selection codes when sending AI API requests
352
+ * To ignore selection codes when sending AI API requests
353
+ *
333
354
  * @default [ "package-lock.json", "yarn.lock", "pnpm-lock.yaml" ]
334
- * @example: [ "pnpm-lock.yaml", "docs/public" ]
355
+ * @example [ "pnpm-lock.yaml", "docs/public" ]
335
356
  */
336
357
  aiDiffIgnore?: string[];
337
358
  /**
338
- * Choose the AI model you want to use: gpt-3.5-turbo | text-davinci-003
339
- * gpt-3.5-turbo: Lower price consumption (10x) and faster
340
- * text-davinci-003: Get more reliable information
341
- *
342
- * @default openAI-Turbo
359
+ * Save on "$HOME/.config/.czrc" or "$HOME/.czrc". Do not save on project.
360
+ * `npx czg --api-key=sk-xxxxx`
343
361
  */
344
- aiType?: 'openAI-Turbo' | 'openAI-Davinci';
362
+ openAIToken?: string;
345
363
  /**
346
- * @description: Alert!!! Save on "$HOME/.czrc" or "$HOME/.config/.czrc". Do not save on project
364
+ * `npx czg --api-model=<model>` - to setup the AI model in local
365
+ *
366
+ * @note If the global or project has an `aiModel` field, set by --api-model=<value> will be overridden.
367
+ * @default "gpt-4o-mini"
347
368
  */
348
- openAIToken?: string;
369
+ apiModel?: string;
349
370
  /**
350
371
  * It is recommended to use the command to configure the local
351
372
  * `npx czg --api-proxy=<http_proxy>`
352
- * e.g: `npx czg --api-proxy="http://127.0.0.1:1080"` or `npx czg --api-proxy="socks5://127.0.0.1:1080"`
373
+ *
374
+ * @example `npx czg --api-proxy="http://127.0.0.1:1080"` or `npx czg --api-proxy="socks5://127.0.0.1:1080"`
353
375
  */
354
376
  apiProxy?: string;
355
377
  /**
356
378
  * `npx czg --api-endpoint=<url>`
379
+ *
357
380
  * @default "https://api.openai.com/v1"
358
381
  */
359
382
  apiEndpoint?: string;
360
383
  /**
361
- * @description: Use the callback fn can customize edit information AI question information
362
- * @param GenerateAIPromptType: provide some known parameters
384
+ * Use the callback fn can customize edit information AI question information
385
+ *
386
+ * @param aiParam provide some known parameters
363
387
  * @default generateSubjectDefaultPrompt
364
388
  */
365
389
  aiQuestionCB?: (aiParam: GenerateAIPromptType) => string;
366
390
  /**
367
- * @description: Use emoji ?| it will be use typesOption.emoji code
391
+ * Use emoji ?It will be use typesOption.emoji code
392
+ *
368
393
  * @default false
369
394
  */
370
395
  useEmoji?: boolean;
371
396
  /**
372
- * @description: Set the location of emoji in header
397
+ * Set the location of emoji in header
398
+ *
373
399
  * @default "center"
374
400
  */
375
401
  emojiAlign?: 'left' | 'center' | 'right';
376
402
  /**
377
- * @description: Provides a select of prompt to select module scopes
378
- * @note it auto import value from rule "scope-enum" with `@commitlint`
379
- * @use want to add scopes description or when you not use commitlint
403
+ * Provides a select of prompt to select module scopes
404
+ *
405
+ * @commitlint it auto import value from rule "scope-enum"
380
406
  */
381
407
  scopes?: ScopesType;
382
408
  /**
383
- * @description: default scope list fuzzy search types `name` key of list.
384
- * if choose `true` will search `value` key of list.
409
+ * Default scope list fuzzy search types `name` key of list.
410
+ * If choose `true` will search `value` key of list.
411
+ *
385
412
  * @use If have long description of scope. can use it to enhanced search.
386
413
  * @default false
387
414
  */
388
415
  scopesSearchValue?: boolean;
389
416
  /**
390
- * @description: Provides an overriding select of prompt to select module scopes under specific type
417
+ * Provides an overriding select of prompt to select module scopes under specific type
418
+ *
391
419
  * @note use this option should set `scopes` option to realize distinguish
392
- * @example: [test] => provide select e2eTest unitTest
420
+ * @example { "test": ["e2eTest", "unitTest"] }
393
421
  */
394
422
  scopeOverrides?: {
395
423
  [type: string]: ScopesType;
396
424
  };
397
425
  /**
398
- * @description: Filter select of prompt to select module scopes by the scope.value
426
+ * Filter select of prompt to select module scopes by the scope.value
427
+ *
399
428
  * @default ['.DS_Store']
400
429
  */
401
430
  scopeFilters?: string[];
402
431
  /**
403
- * @description: Whether to enable scope multiple mode
432
+ * Whether to enable scope multiple mode
433
+ *
404
434
  * @default false
405
435
  */
406
436
  enableMultipleScopes?: boolean;
407
437
  /**
408
- * @description: Multiple choice scope separator
438
+ * Multiple choice scope separator
439
+ *
409
440
  * @default ","
410
441
  */
411
442
  scopeEnumSeparator?: string;
412
443
  /**
413
- * @description: Whether to show "custom" when selecting scopes
444
+ * Whether to show "custom" when selecting scopes
445
+ *
414
446
  * @note it auto check rule "scope-enum" set the option with `@commitlint`
415
447
  * @use when you not use commitlint
416
448
  * @default true
417
449
  */
418
450
  allowCustomScopes?: boolean;
419
451
  /**
420
- * @description: Whether to show "empty" when selecting scopes
452
+ * Whether to show "empty" when selecting scopes
453
+ *
421
454
  * @default true
422
455
  */
423
456
  allowEmptyScopes?: boolean;
424
457
  /**
425
- * @description: Set the location of empty option (empty) and custom option (custom) in selection range
458
+ * Set the location of empty option (empty) and custom option (custom) in selection range
459
+ *
426
460
  * @default "bottom"
427
461
  */
428
462
  customScopesAlign?: 'top' | 'bottom' | 'top-bottom' | 'bottom-top';
@@ -435,30 +469,34 @@ interface CommitizenGitOptions {
435
469
  */
436
470
  emptyScopesAlias?: string;
437
471
  /**
438
- * @description: Subject is need upper case first.
472
+ * Subject is need upper case first.
473
+ *
439
474
  * @default false
440
475
  */
441
476
  upperCaseSubject?: boolean;
442
477
  /**
443
- * @description: Whether to add extra prompt BREAKCHANGE ask. to add an extra "!" to the header
478
+ * Whether to add extra prompt BREAKCHANGE ask. to add an extra "!" to the header
479
+ *
444
480
  * @see: https://cz-git.qbb.sh/recipes/breakingchange
445
481
  * @default false
446
482
  */
447
483
  markBreakingChangeMode?: boolean;
448
484
  /**
449
- * @description: Allow breaking changes in the included types output box
485
+ * Allow breaking changes in the included types output box
486
+ *
450
487
  * @default ['feat', 'fix']
451
488
  */
452
489
  allowBreakingChanges?: string[];
453
490
  /**
454
- * @description: set body and BREAKING CHANGE max length to break-line
491
+ * set body and BREAKING CHANGE max length to break-line
492
+ *
455
493
  * @default 100
456
- * @note it auto check rule "body-max-line-length" set the option with `@commitlint`.
457
- * @use when you not use commitlint
494
+ * @commitlint it auto check rule "body-max-line-length".
458
495
  */
459
496
  breaklineNumber?: number;
460
497
  /**
461
- * @description: body and BREAKINGCHANGES new line char
498
+ * body and BREAKINGCHANGES new line char
499
+ *
462
500
  * @default "|"
463
501
  */
464
502
  breaklineChar?: string;
@@ -468,7 +506,8 @@ interface CommitizenGitOptions {
468
506
  */
469
507
  issuePrefixs?: Option[];
470
508
  /**
471
- * @description: Provides a select issue prefix box in footer
509
+ * Provides a select issue prefix box in footer
510
+ *
472
511
  * @default issuePrefixes: [{ value: "closed", name: "ISSUES has been processed" }]
473
512
  */
474
513
  issuePrefixes?: Option[];
@@ -505,7 +544,8 @@ interface CommitizenGitOptions {
505
544
  */
506
545
  allowCustomIssuePrefixs?: boolean;
507
546
  /**
508
- * @description: Whether to show "custom" selecting issue prefixes
547
+ * Whether to show "custom" selecting issue prefixes
548
+ *
509
549
  * @default true
510
550
  */
511
551
  allowCustomIssuePrefix?: boolean;
@@ -515,92 +555,105 @@ interface CommitizenGitOptions {
515
555
  */
516
556
  allowEmptyIssuePrefixs?: boolean;
517
557
  /**
518
- * @description: Whether to show "skip(empty)" when selecting issue prefixes
558
+ * Whether to show "skip(empty)" when selecting issue prefixes
559
+ *
519
560
  * @default true
520
561
  */
521
562
  allowEmptyIssuePrefix?: boolean;
522
563
  /**
523
- * @description: Prompt final determination whether to display the color
564
+ * Prompt final determination whether to display the color
565
+ *
524
566
  * @default true
525
567
  */
526
568
  confirmColorize?: boolean;
527
569
  /**
528
- * @description: List of questions you want to skip
570
+ * List of questions you want to skip
571
+ *
529
572
  * @default []
530
- * @example: ['body']
573
+ * @example ['body']
531
574
  */
532
575
  skipQuestions?: Array<'scope' | 'body' | 'breaking' | 'footerPrefix' | 'footer' | 'confirmCommit'>;
533
576
  /**
534
- * @description: Force set max header length | Equivalent setting maxSubjectLength.
535
- * @note it auto check rule "header-max-length" set the option with `@commitlint`.
577
+ * Force set max header length | Equivalent setting maxSubjectLength.
578
+ *
579
+ * @commitlint it auto check rule and use value from "header-max-length".
536
580
  * @use when you not use commitlint
537
581
  */
538
582
  maxHeaderLength?: number;
539
583
  /**
540
- * @description: Force set max subject length.
541
- * @note it auto check rule "subject-max-length" set the option with `@commitlint`.
584
+ * Force set max subject length.
585
+ *
586
+ * @commitlint it auto check rule and use value from "subject-max-length".
542
587
  * @use when you not use commitlint
543
588
  */
544
589
  maxSubjectLength?: number;
545
590
  /**
546
- * @description: Is not strict subject rule. Just provide prompt word length warning.
547
- * Effected maxHeader and maxSubject commitlint
591
+ * Is not strict subject rule. Just provide prompt word length warning.
592
+ * Effected maxHeader and maxSubject commitlint.
593
+ *
548
594
  * @example [1, 'always', 80] 1: mean warning. will be true
549
595
  * @default false
550
596
  */
551
597
  isIgnoreCheckMaxSubjectLength?: boolean;
552
598
  /**
553
- * @description: Force set header width.
554
- * @note it auto check rule "subject-min-length" set the option with `@commitlint`.
599
+ * Force set header width.
600
+ *
601
+ * @commitlint it auto check rule and use value from "subject-min-length".
555
602
  * @use when you not use commitlint
556
603
  */
557
604
  minSubjectLength?: number;
558
605
  /**
559
- * @description: pin type item the top of the types list (match item value)
606
+ * pin type item the top of the types list (match item value)
560
607
  */
561
608
  defaultType?: string;
562
609
  /**
563
- * @description Whether to use display default value in custom scope
564
- * @tip pin scope item the top of the scope list (match item value)
610
+ * Whether to use display default value in custom scope
565
611
  *
566
- * `string[]` for checkbox mode will default-select the options whose values match those within the `scopes` range list.
567
- * @example: When you want to use default, just keyboard <Enter> it
612
+ * @tip
613
+ * 1. pin scope item the top of the scope list (match item value)
614
+ * 2. `string[]` for checkbox mode will default-select the options whose values match those within the `scopes` range list.
615
+ * @usage When you want to use default, just keyboard `Enter` it
568
616
  */
569
617
  defaultScope?: string | string[];
570
618
  /**
571
- * @description: default value show subject template prompt
572
- * @example: If you want to use template complete. just keyboard <Tab> or <Right Arrow> it
573
- * @example: If you want to use default, just keyboard <Enter> it
619
+ * default value show subject template prompt
620
+ *
621
+ * @usage If you want to use template complete. just keyboard `Tab` or `Right Arrow` it
622
+ * @usage If you want to use default, just keyboard `Enter` it
574
623
  */
575
624
  defaultSubject?: string;
576
625
  /**
577
- * @description: default value show body and BREAKINGCHANGES template prompt
578
- * @example: If you want to use template complete. just keyboard <Tab> or <Right Arrow> it
579
- * @example: When you want to use default, just keyboard <Enter> it
626
+ * default value show body and BREAKINGCHANGES template prompt
627
+ *
628
+ * @usage If you want to use template complete. just keyboard `Tab` or `Right Arrow` it
629
+ * @usage When you want to use default, just keyboard `Enter` it
580
630
  */
581
631
  defaultBody?: string;
582
632
  /**
583
- * @description: default value show issuePrefixes custom template prompt
584
- * @example: If you want to use template complete. just keyboard <Tab> or <Right Arrow> it
585
- * @example: When you want to use default, just keyboard <Enter> it
633
+ * default value show issuePrefixes custom template prompt
634
+ *
635
+ * @usage If you want to use template complete. just keyboard `Tab` or `Right Arrow` it
636
+ * @usage When you want to use default, just keyboard `Enter` it
586
637
  */
587
638
  defaultFooterPrefix?: string;
588
639
  /**
589
- * @description: default value show issue foot template prompt
590
- * @example: If you want to use template complete. just keyboard <Tab> or <Right Arrow> it
591
- * @example: When you want to use default, just keyboard <Enter> it
640
+ * default value show issue foot template prompt
641
+ *
642
+ * @usage If you want to use template complete. just keyboard `Tab` or `Right Arrow` it
643
+ * @usage When you want to use default, just keyboard `Enter` it
592
644
  */
593
645
  defaultIssues?: string;
594
646
  /**
595
- * @description: Whether to use GPG sign commit message (git commit -S -m)
647
+ * Whether to use GPG sign commit message (git commit -S -m)
596
648
  * @note the options only support `czg` cz-git cli and no support git hooks mode
597
- * @usage_see https://github.com/Zhengqbbb/cz-git/issues/58
649
+ * @see https://github.com/Zhengqbbb/cz-git/issues/58
598
650
  * @default false
599
651
  */
600
652
  useCommitSignGPG?: boolean;
601
653
  /**
602
- * @description: provide user custom finally message, can use the callback to change format
603
- * @param CommitMessageOptions: provide subdivides each message part
654
+ * provide user custom finally message, can use the callback to change format
655
+ *
656
+ * @param messageMod provide subdivides each message part
604
657
  * @default ({ defaultMessage }) => defaultMessage
605
658
  */
606
659
  formatMessageCB?: (messageMod: CommitMessageOptions) => string;