Resolves persistent `ReferenceError: exports is not defined` errors
encountered during unit tests (`unit-test (20.x)` job) in the GitHub
Actions CI environment. These errors occurred specifically when
importing `cli-testing-library` in the global Jest setup file
(`test/jest-setup.ts`), despite tests passing locally with the same
Node.js version (v20.19.0).
After iterative testing, the following Jest configuration combination
was identified as necessary to ensure consistent ESM handling and test
success in both local and CI environments:
- Set preset to `ts-jest/presets/default-esm` for stricter ESM rules.
- Configured `transformIgnorePatterns` to ensure Jest transforms specific ESM dependencies (`cli-testing-library`, `@clack`, `cleye`) within `node_modules`.
- Expanded the `transform` pattern (`^.+\\.(ts|tsx|js|jsx|mjs)$`) to explicitly cover various script types handled by `ts-jest`.
- Included explicit `tsconfig` overrides (`module: 'ESNext'`, `target: 'ES2022'`) within the `ts-jest` transform options to resolve potential environment discrepancies.
- Retained `moduleNameMapper` for `.js` imports for reliable module resolution.
- Ensured `cli-testing-library` imports remain in the global setup (`test/jest-setup.ts`).
- Removed test cache clearing from the `test:unit` script in `package.json`.
This configuration now passes reliably across environments.
Including rimraf in the project allows for easier and more efficient
removal of files and directories, enhancing the development workflow,
especially for tasks like cleaning up build artifacts.
The space normalization logic is updated to replace only multiple spaces
and tabs with a single space, while preserving newlines. This change
ensures that the formatting of the content is maintained, especially
when dealing with empty line requirements and max line length.
Resolves persistent `ReferenceError: exports is not defined` errors
encountered during unit tests (`unit-test (20.x)` job) in the GitHub
Actions CI environment. These errors occurred specifically when
importing `cli-testing-library` in the global Jest setup file
(`test/jest-setup.ts`), despite tests passing locally with the same
Node.js version (v20.19.0).
After iterative testing, the following Jest configuration combination
was identified as necessary to ensure consistent ESM handling and test
success in both local and CI environments:
- Set preset to `ts-jest/presets/default-esm` for stricter ESM rules.
- Configured `transformIgnorePatterns` to ensure Jest transforms specific ESM dependencies (`cli-testing-library`, `@clack`, `cleye`) within `node_modules`.
- Expanded the `transform` pattern (`^.+\\.(ts|tsx|js|jsx|mjs)$`) to explicitly cover various script types handled by `ts-jest`.
- Included explicit `tsconfig` overrides (`module: 'ESNext'`, `target: 'ES2022'`) within the `ts-jest` transform options to resolve potential environment discrepancies.
- Retained `moduleNameMapper` for `.js` imports for reliable module resolution.
- Ensured `cli-testing-library` imports remain in the global setup (`test/jest-setup.ts`).
- Removed test cache clearing from the `test:unit` script in `package.json`.
This configuration now passes reliably across environments.
Including rimraf in the project allows for easier and more efficient
removal of files and directories, enhancing the development workflow,
especially for tasks like cleaning up build artifacts.
The commitlint configuration and prompts have been refactored to enhance
clarity and maintain consistency throughout the codebase. The type
assertion for commitLintConfig is updated to use 'as any' for better
type handling. Additionally, formatting adjustments are made in the
prompts to ensure proper readability and alignment with the defined
conventions. These changes aim to streamline the commit message
generation process and improve overall code maintainability.
This update introduces a new structure for generating commit messages by defining a constant for commit types and consolidating the logic into a single function. The changes enhance readability and maintainability while ensuring consistent formatting based on the OCO_OMIT_SCOPE configuration.
This change allows opencommit to locate commitlint installed globally
(with opencommit), which is useful for project that does not use node.js
environment or dose not have opencommit and @commitlint installed locally.
Add DeepSeekEngine to support DeepSeek API. This
includes a new DeepSeekConfig interface and updates to
the engine selection logic.
feat(README.md, src/commands/config.ts): Add DeepSeek support
Adds support for the DeepSeek AI provider. Updates the README,
config validation, and model list to include DeepSeek. This
allows users to utilize DeepSeek models with the OpenCommit
tool.
fix(deepseek.ts): update DeepSeek API base URL to include version number v1
refactor(deepseek.ts): improve DeepSeekEngine constructor
The DeepSeekEngine constructor is refactored to use the
spread syntax for better readability and maintainability
when merging config parameters. The baseURL is now
explicitly set within the constructor.
fix(README.md): remove Groq from the list of supported AI providers
refactor(deepseek.ts): rename interface DeepseekConfig to DeepSeekEngineeekConfig and fix typo
Revert "refactor(deepseek.ts): rename interface DeepseekConfig to DeepSeekEngineeekConfig and fix typo"
This reverts commit f492367d3885fa97cd685feca889f93d6c465b2f.
refactor(deepseek.ts): Rename DeepseekConfig to DeepSeekConfig for consistency
✨ feat(engine): add DeepSeekEngine to support DeepSeek API
♻️ refactor(engine): improve OpenAiEngine and create a
new DeepSeekEngine class to handle DeepSeek API
requests. The DeepSeekEngine class inherits from
OpenAiEngine and overrides the
generateCommitMessage method to use the DeepSeek
API. This change improves code organization and
maintainability.
🐛 Fix: Correct DeepSeekEngine import and class name
The import path and class name for DeepSeekEngine were
incorrect, causing a runtime error. This commit corrects
the import path and class name to `DeepseekEngine` to
resolve the issue.
Revert "🐛 Fix: Correct DeepSeekEngine import and class name"
This reverts commit 738fd36c434d9df9c3a458b1e8230c974bd2a76e.
🐛 Fix: Correct DeepSeekEngine import and class name
The import path and class name for DeepSeekEngine were corrected to match the actual file and class name. This fixes a runtime error.
Restore ./out directory to master state
* feat(commit.ts): add option to skip pushing commits to a remote repository to enhance user flexibility during commit process
* Update src/commands/commit.ts
---------
Co-authored-by: GPT8 <57486732+di-sukharev@users.noreply.github.com>
* feat(config): add support for groq AI provider, including config validation and engine implementation (#381)
* fix migrations (#414)
---------
Co-authored-by: Takanori Matsumoto <matscube@gmail.com>
Co-authored-by: BILLY Maxime <ozeliurs@gmail.com>
* refactor(config.ts): improve code readability by formatting array elements and conditions
* fix(migrations): handle undefined values correctly when setting default config values
* fix(migrations): ensure process exits with error code on migration failure
* fix(commit.ts): update error handling to provide clearer feedback when commit message generation fails
* feat(config.ts): add cleanUndefinedValues function to sanitize config values by converting 'undefined' and 'null' strings to actual values
* refactor(config.ts): return cleaned config from getConfig function to ensure consistent data types
* chore(migrations): log entriesToSet in migration to assist with debugging and tracking changes