---
# Specifies the type of service provider to receive project information
provider: github
# Branch for compare with current branch and get a changelog
branch: main
# Commit levels of changes
# The commits with the specified types will be distributed by change levels.
# For a list of change types by level, see https://semver.org/.  For example:
changes:
  # Incompatible API changes
  major:
    # Breaking changes
    - break
  # New functionality with backwards compatible
  minor:
    # New features
    - feat
    # Features improvements
    - improve
  # Backwards compatible bug fixes
  patch:
    # Some bugs fixing
    - fix
    # Minor changes
    - chore
    # Code refactoring
    - refactor
    # Adding or modifying tests
    - test
    # Documentation changes
    - docs
    # Package changes, releases, merging
    - build
    # Code typing
    - types
    # CSS, SCSS, and other style sheets changes
    - style
    # Workflow changes
    - workflow
    # Performance improvements
    - perf
    # Reverted changes
    - revert
# Parameters of the output file. Specify the path to the file and the excluded entities
output:
  # File path to write change log to it
  filePath: CHANGELOG.md
  # One way to filter output by ignoring commits with a given type, scope, subject, or from certain authors
  exclude:
    # Excludes authors with the listed logins from the output file
    authorLogin: ['dependabot[bot]', 'dependabot-preview[bot]']
    # Excludes commits with the listed types from the output file
    commitType: ['build']
    # Excludes commits with the listed scopes from the output file
    commitScope: ['deps', 'deps-dev']
    # Excludes commits that contain the specified words in the subject
    commitSubject: []
# Rules that extend the basic functionality and modify the output in the change log
rules:
  # Highlights variables and code snippets in subject of commit
  highlight:
    # Highlight camelCase and UpperCamelCase words
    camelCase: true
    # Highlight by regex mask
    masks: [
        # Tags
        '<[^>]*>',
        # Words which start with '$', '@' or '!' symbol
        '[$@!]\S+',
        # CLI commands
        '((?<= )|^)-{1,2}[a-z0-9_-]+',
        # Dashed words
        '(?<= |^)[a-z]+-[a-z-]+',
        # Dotted words
        '(?<= |^)[a-z0-9_$\[\]()]+\.[a-z0-9_$.()]+',
      ]
  # Allows you to add additional useful information to the commit
  #
  # The following markers are available:
  # - !ignore - Ignore a commit in output
  # - !group(<name>) - Creates a group of commits with the <name>
  # - !important - Place a commit title to special section on top of changelog
  # - !deprecated - Place a commit title to special section with deprecated properties
  # - !break` - Indicates major changes breaking backward compatibility
  mark:
    # Join markers combine commits in sections
    joins:
      # !important - place a commit title to special section on top of changelog
      important: Important Internal Changes
      # !deprecated - place a commit title to special section with deprecated properties
      deprecated: DEPRECATIONS
      # !break - indicates major changes breaking backward compatibility
      break: BREAKING CHANGES
  # Displays information about changes to package.json in the change log
  package:
    # Main section title
    title: 'Important Changes'
    # The change message templates
    #
    # Literals available for substitution in Templates:
    # - %name% - dependency name
    # - %val% - dependency version value
    # - %pval% - previous dependency version
    templates:
      # Template for added Dependencies
      added: 'Added %name% with %val%'
      # Template for dependencies whose values is not `SemVer` and has been changed
      changed: 'Changed %name% from %pval% to %val%'
      # Template for dependencies whose version was bumped
      bumped: 'Bumped %name% from %pval% to %val%'
      # Template for dependencies whose version was downgraded
      downgraded: 'Downgraded %name% from %pval% to %val%'
      # Template for removed dependencies
      removed: 'Removed %name%, with %pval%'
    # List of available for output sections.
    # If you do not want to see a section in the changelog, simply remove its name from the list.
    sections:
      - license
      - os
      - cpu
      - engines
      - dependencies
      - devDependencies
      - peerDependencies
      - optionalDependencies
      - bundledDependencies
  # Renames scopes and abbreviations to a more human-readable format
  scope:
    # In the case of true will only rename the specified names
    onlyPresented: false
    # List of abbreviations and their human-readable versions
    names:
      core: Core
      api: API
      ssr: Server Side Rendering
      fc: Functional Components
      dts: TypeScript Declaration Improvements
      gh-actions: GitHub Actions
      pkg: Package
      ts: TypeScript
      conf: Configuration
  # Distributes commits with the specified types into sections
  section:
    Features:
      emoji: ':tada:'
      types: ['feat']
    Improvements:
      emoji: ':fire:'
      types: [improve]
    Bug Fixes:
      emoji: ':bug:'
      types: [fix]
    Internal changes:
      emoji: ':memo:'
      types: [types, workflow, build, test, chore, docs]
    Performance Improvements:
      emoji: ':zap:'
      types: [perf]
    Code Refactoring:
      emoji: ':wrench:'
      types: [refactor]
    Reverts:
      emoji: ':recycle:'
      types: [revert]
