Skip to content
Merged

V12 #19

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ac3f313
feat: logger dependencie
brmorillo Jun 18, 2025
5638669
chore: project version
brmorillo Jun 18, 2025
5b66fa8
feat: http service
brmorillo Jun 18, 2025
4134695
docs: update all project docs
brmorillo Jun 18, 2025
a65b8af
feat: storage local/s3
brmorillo Jun 18, 2025
31b0fbb
fix: http client
brmorillo Jun 18, 2025
e1a8ba8
fix: errors
brmorillo Jun 18, 2025
ea32fe7
feat: version
brmorillo Jun 19, 2025
0f9888e
feat: v12
Aug 22, 2025
dd8cc47
feat: implement Git Flow automation and release management
Aug 22, 2025
65fbd0b
style: fix whitespace formatting in feature.yml workflow
Aug 22, 2025
ec1db90
feat: merge git flow automation into v12 branch
Aug 22, 2025
2f57e87
feat: complete git flow automation consolidation in v12
Aug 22, 2025
5c9d535
fix: correct pnpm installation order in all GitHub Actions workflows
Aug 22, 2025
4ccd118
fix: update pnpm lockfile and use --no-frozen-lockfile for CI
Aug 22, 2025
8479b1b
fix: migrate all workflows from pnpm to npm
Aug 22, 2025
00c7abc
fix: remove npm cache and use npm install for lockfile-free builds
Aug 22, 2025
1aea139
fix: resolve dependency conflicts without legacy-peer-deps
Aug 23, 2025
2562582
fix(eslint): convert to CommonJS and relax rules for CI compatibility
Aug 23, 2025
12807bf
style: fix code formatting with Prettier
Aug 23, 2025
caa8325
feat: auto-format before format:check
Aug 23, 2025
ebaa97c
fix: prevent duplicate workflow triggers
Aug 23, 2025
9f357d7
fix: add conditions to prevent wrong workflow triggers
Aug 23, 2025
5fcbd6d
fix: configure workflows for release branch (v12 -> main)
Aug 23, 2025
0e9c90e
feat: update Node.js support to versions 20, 22, and 24
Aug 23, 2025
a8274af
fix: reduce coverage thresholds temporarily for CI stability
Aug 23, 2025
68de3dd
style: fix whitespace formatting in feature.yml workflow
Aug 23, 2025
a7bdf89
fix: deprecated tests
Aug 23, 2025
6fbf643
fix: deprecated tests
Aug 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .eslintignore

This file was deleted.

41 changes: 34 additions & 7 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,52 @@ module.exports = {
project: 'tsconfig.json',
tsconfigRootDir: __dirname,
sourceType: 'module',
ecmaVersion: 2020,
},
plugins: ['@typescript-eslint/eslint-plugin', 'prettier'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'prettier',
],
root: true,
env: {
node: true,
jest: true,
es2020: true,
},
ignorePatterns: ['.eslintrc.js', 'dist', 'node_modules', 'jest.config.js', 'tsup.config.ts'],
ignorePatterns: ['.eslintrc.js', 'dist', 'node_modules', 'jest.config.js', 'tsup.config.ts', 'organize-tests.js'],
rules: {
// TypeScript specific rules
'@typescript-eslint/interface-name-prefix': 'off',
'@typescript-eslint/explicit-function-return-type': 'warn',
'@typescript-eslint/explicit-module-boundary-types': 'warn',
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-vars': 'warn',
'@typescript-eslint/ban-ts-comment': 'warn',
'prettier/prettier': 'warn'
'@typescript-eslint/explicit-function-return-type': 'error',
'@typescript-eslint/explicit-module-boundary-types': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/ban-ts-comment': 'error',
'@typescript-eslint/prefer-const': 'error',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/no-empty-function': 'warn',

// General ESLint rules
'prefer-const': 'error',
'no-var': 'error',
'no-console': 'warn',
'eqeqeq': 'error',
'curly': 'error',

// Prettier
'prettier/prettier': 'warn',
},
overrides: [
{
files: ['tests/**/*.ts', '**/*.spec.ts', '**/*.bench.ts', '**/*.int-spec.ts'],
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
'no-console': 'off',
},
},
],
};
43 changes: 0 additions & 43 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,2 @@
# Pull Request

## Type of Change
<!-- Please check the one that applies to this PR using "x". -->

- [ ] πŸš€ feat: A new feature
- [ ] πŸ› fix: A bug fix
- [ ] πŸ“š docs: Documentation only changes
- [ ] πŸ’Ž style: Changes that do not affect the meaning of the code (white-space, formatting, etc)
- [ ] ♻️ refactor: A code change that neither fixes a bug nor adds a feature
- [ ] ⚑ perf: A code change that improves performance
- [ ] βœ… test: Adding missing tests or correcting existing tests
- [ ] πŸ”§ build: Changes that affect the build system or external dependencies
- [ ] πŸ‘· ci: Changes to our CI configuration files and scripts
- [ ] πŸ”„ chore: Other changes that don't modify src or test files

## Description
<!-- Please include a summary of the change and which issue is fixed. -->
<!-- Please also include relevant motivation and context. -->

Fixes # (issue)

## Semantic Version Impact
<!-- Which semantic version component would this PR increment? -->
<!-- See https://semver.org/ for more information -->

- [ ] Major (Breaking changes - not backward compatible)
- [ ] Minor (New features - backward compatible)
- [ ] Patch (Bug fixes - backward compatible)
- [ ] None (Documentation, chore, etc - no release needed)

## Checklist

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] My commit messages follow the [Conventional Commits](https://www.conventionalcommits.org/) standard
- [ ] I have updated the CHANGELOG.md (if applicable)

## Additional Information
<!-- Any additional information or context that would be helpful for reviewers -->
142 changes: 142 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: CI/CD Pipeline

on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]

jobs:
quality:
name: Code Quality
runs-on: ubuntu-latest
# Only run for development PRs, not release PRs
if: |
github.event_name == 'push' ||
(github.event_name == 'pull_request' &&
!startsWith(github.head_ref, 'v') &&
!startsWith(github.head_ref, 'release/') &&
!startsWith(github.head_ref, 'feature/') &&
!startsWith(github.head_ref, 'feat/') &&
!startsWith(github.head_ref, 'hotfix/'))

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm install

- name: Type checking
run: npm run type-check

- name: Lint
run: npm run lint

- name: Format check
run: npm run format:check

test:
name: Test Suite
runs-on: ubuntu-latest
needs: quality

strategy:
matrix:
node-version: [20, 22, 24]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
run: npm install

- name: Run tests
run: npm run test:ci

- name: Upload coverage to Codecov
if: matrix.node-version == 20
uses: codecov/codecov-action@v3
with:
file: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella

build:
name: Build Package
runs-on: ubuntu-latest
needs: [quality, test]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install pnpm
uses: actions/setup-node@v4
with:
node-version: 20

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm install

- name: Build package
run: npm run build

- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/

release:
name: Release
runs-on: ubuntu-latest
needs: [quality, test, build]
if: github.ref == 'refs/heads/main' && github.event_name == 'push'

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install pnpm
uses: actions/setup-node@v4
with:
node-version: 20

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

registry-url: 'https://registry.npmjs.org'

- name: Install dependencies
run: npm install

- name: Build package
run: npm run build

- name: Semantic Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npx semantic-release
94 changes: 94 additions & 0 deletions .github/workflows/feature.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Git Flow - Feature Branch

on:
push:
branches:
- 'feature/**'
- 'feat/**'
pull_request:
branches:
- v12
types: [opened, synchronize, reopened]

jobs:
validate:
name: Validate Feature Branch
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm install

- name: Type checking
run: npm run type-check

- name: Lint
run: npm run lint

- name: Format check
run: npm run format:check

- name: Run tests
run: npm run test:ci

- name: Build
run: npm run build

- name: Validate branch naming
run: |
branch_name="${{ github.head_ref || github.ref_name }}"
if [[ ! "$branch_name" =~ ^(feature|feat)/.+ ]]; then
echo "❌ Branch name '$branch_name' does not follow convention: feature/your-feature-name"
exit 1
fi
echo "βœ… Branch name '$branch_name' follows convention"

- name: Check commit messages
run: |
# Check if commits follow conventional commit format
commits=$(git log --pretty=format:"%s" origin/v12..HEAD)
while IFS= read -r commit; do
if [[ ! "$commit" =~ ^(feat|fix|chore|docs|style|refactor|test|perf|ci|build)(\([^)]*\))?\!?:\ .+ ]]; then
echo "❌ Commit message does not follow conventional format: $commit"
echo "Expected format: type(scope): description"
echo "Types: feat, fix, chore, docs, style, refactor, test, perf, ci, build"
exit 1
fi
done <<< "$commits"
echo "βœ… All commit messages follow conventional format"

auto-assign-reviewers:
name: Auto Assign Reviewers
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'

steps:
- name: Auto assign reviewers
uses: actions/github-script@v7
with:
script: |
const { owner, repo, number } = context.issue;

// Add reviewers (customize based on your team)
await github.rest.pulls.requestReviewers({
owner,
repo,
pull_number: number,
reviewers: ['brmorillo'], // Add team members here
});

// Add labels
await github.rest.issues.addLabels({
owner,
repo,
issue_number: number,
labels: ['feature', 'review-needed']
});
Loading
Loading