diff --git a/.github/ISSUE_TEMPLATE/01-BUG_REPORT.yml b/.github/ISSUE_TEMPLATE/01-BUG_REPORT.yml new file mode 100644 index 0000000..c29a9de --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-BUG_REPORT.yml @@ -0,0 +1,82 @@ +name: "🐛 Bug report" +description: Use this template to report a bug or issue with the project. +labels: "bug" +body: + - type: textarea + id: error-description + attributes: + label: Error Description + description: Provide a detailed description of the error encountered. + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Steps to Reproduce + description: Describe the steps to reproduce the error and include a minimal code snippet if possible. + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: Describe the expected result of the minimal code snippet provided. + validations: + required: true + - type: textarea + id: actual-behavior + attributes: + label: Actual Behavior + description: Describe the actual erroneous result of the minimal code snippet provided. + validations: + required: true + - type: dropdown + id: severity + attributes: + label: Severity + description: Select the severity level of the error. + options: + - Minimal + - Moderate + - Severe + - Critical + validations: + required: true + - type: input + id: version + attributes: + label: BatchJS-SQL Version + description: Provide the version of the product where the error was encountered. + placeholder: ex. 10.3.1 + validations: + required: true + - type: input + id: batchjs-version + attributes: + label: BatchJS Version + description: Provide the version of the product where the error was encountered. + placeholder: ex. 10.3.1 + validations: + required: true + - type: input + id: node-version + attributes: + label: Node version + description: Provide the version of Node.js being used. + placeholder: ex. v18.17.0 + validations: + required: true + - type: textarea + id: other + attributes: + label: Other + placeholder: Any other details? + - type: checkboxes + id: check-list + attributes: + label: Bug Report Checklist + options: + - label: "Confirm that you agree to follow the project's code of conduct." + required: true + - label: Confirm that you have reviewed open and rejected anomalies and have not found the reported anomaly. + required: true diff --git a/.github/ISSUE_TEMPLATE/02-FEATURE_REQUEST.yml b/.github/ISSUE_TEMPLATE/02-FEATURE_REQUEST.yml new file mode 100644 index 0000000..3a7262c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02-FEATURE_REQUEST.yml @@ -0,0 +1,40 @@ +name: "✨ Feature request" +description: Suggest a feature or enhancement to improve BatchJS-SQL. +labels: "feature" +body: + - type: textarea + id: feature + attributes: + label: Short Description of the Feature + description: Provide a brief description of the functionality you want to propose. + validations: + required: true + - type: textarea + id: benefits + attributes: + label: Expected Benefits + description: Describe the expected benefits or impact of this feature. + - type: textarea + id: acceptance + attributes: + label: Acceptance Criteria + description: Define the criteria for considering this feature complete. + - type: textarea + id: documentation + attributes: + label: Documentation + description: Provide detailed logic or documentation for the feature. + - type: textarea + id: others + attributes: + label: Additional Comments + description: Include any additional comments or context. + - type: checkboxes + id: check-list + attributes: + label: Feature Request Checklist + options: + - label: "Confirm that you agree to follow the project's code of conduct." + required: true + - label: Confirm that you have reviewed open and rejected feature requests to ensure novelty. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..26bb978 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Question and Help + url: https://github.com/palcarazm/batchjs/discussions/categories/q-a + about: Please ask and answer questions here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..3d42da1 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,33 @@ +### Change Summary +**Indicate the type of change being made.** +- [ ] New Feature +- [ ] Bug Fix +- [ ] Refactor +- [ ] Documentation + +### Description +**Provide a brief description of the change.** +- For New Features or Bug Fixes, reference the related issue number. +- For other changes, provide a brief description. + +### Test Coverage +**Indicate whether you have added, modified, fixed, or removed tests. If removed, please explain why in additional notes.** +- [ ] Added tests +- [ ] Modified tests +- [ ] Fixed tests +- [ ] Removed tests (please explain why in additional notes) + +### Documentation Changes +**Indicate whether any documentation has been updated.** +- [ ] Documentation updated + +### Additional Notes +**Provide any additional information or context related to this pull request.** + +--- + +## Pull Request Checklist +- [ ] Code adheres to the project's coding style guide. +- [ ] All tests are passing. +- [ ] The pull request description is complete. +- [ ] Documentation is updated if needed. diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml new file mode 100644 index 0000000..51425be --- /dev/null +++ b/.github/workflows/ci-workflow.yml @@ -0,0 +1,79 @@ +name: CI Workflow + +on: + push: + branches: + - "develop/*" + - "version/*" + pull_request: + branches: + - "develop/*" + - "version/*" + types: + - opened + - synchronize + +jobs: + build-and-test: + name: Build and Test + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x, 20.x, 22.x] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm install + + - name: Build project + run: npm run build + + - name: Lint code + run: npm run lint + + - name: Run tests + run: npm run test + + - name: Upload coverage report + if: always() + uses: actions/upload-artifact@v4 + with: + name: coverage-report-${{ matrix.node-version }} + path: coverage + + analyze: + name: Analyze code with CodeQL + runs-on: ubuntu-latest + needs: build-and-test + permissions: + actions: read + contents: read + security-events: write + + strategy: + matrix: + language: [typescript] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 diff --git a/.gitignore b/.gitignore index c6bba59..1e96583 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ build/Release # Dependency directories node_modules/ jspm_packages/ +package-lock.json # Snowpack dependency directory (https://snowpack.dev/) web_modules/ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..857ad7c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,127 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement via [email](mailto:pablo@alcarazm.es). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..99bee1d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Contributing to batchJS-SQL + +Thank you for considering contributing to batchJS! We appreciate your interest and are excited to collaborate with you. To ensure a smooth contribution process, please follow the guidelines outlined below. + +## How to Contribute + +### 1. **Fork and Clone** +Currently, we do not require forking the repository. Please clone the repository directly from the [batchJS-SQL GitHub repository](https://github.com/palcarazm/batchjs-sql). + +### 2. **Branch Structure** + +- **Feature Branches**: For adding new features, create a branch from the `develop/vX.Y.Z` that corresponds to the milestone of the feature. If such a branch does not exist, use the nearest available `develop` branch. Name your branch `feat/XXX`, where `XXX` is the issue number. If no issue exists, create one and branch from the closest `develop` branch. + +- **Fix Branches**: For bug fixes, create a branch from the `develop/vX.Y.Z` that aligns with the milestone of the fix. Name your branch `fix/XXX`, where `XXX` is the issue number. If no issue exists, create one and branch from the nearest `develop` branch. + +### 3. **Commit Messages** +We use [Conventional Commits](https://www.conventionalcommits.org/) for commit messages. When you install the project, Husky will add a commit-msg hook to enforce this convention via commit lint. + +### 4. **Pull Requests** +- **Template**: Use the provided pull request template. +- **Checks**: Ensure your pull request passes all CI checks. The minimum test coverage is 80%. +- **Approval**: Pull requests must be reviewed and approved before merging. + +## Testing and Validation + +- **Running Tests**: Execute tests with `npm run test`. Tests are written with Jest, and a minimum coverage of 80% is required. +- **Writing Tests**: Write tests using Jest to ensure coverage meets the 80% minimum requirement. + +## Reporting Issues + +- **Bug Reports**: Create an issue of type `bug` following the issue template. We will review, categorize, and prioritize the issue as needed. Contributors will be credited in the Release Notes. For support, use the [Discussions](https://github.com/palcarazm/batchjs/discussions) section. For security issues, follow the instructions in `SECURITY.md` and **do not open a public issue**. + +- **Feature Requests**: Create an issue of type `feature` using the template provided. We will analyze, categorize, and prioritize the request. Contributors will be credited in the Release Notes. For ambitious features, we may move the discussion to a thread in the [Discussions](https://github.com/palcarazm/batchjs/discussions) section. + +## Code Style and Standards + +- **Style Guide**: Follow the ESLint configuration file provided in the repository. The style guide may be updated over time. +- **Linters and Formatters**: Use ESLint with Husky's pre-commit hook to enforce code quality. + +## Documentation and Resources + +- **Project Documentation**: All classes have JSDoc comments that should be updated. Execute `npm run docs` to update autogenerated documentation from JSDoc. +- **Community Resources**: Participate in the [Discussions](https://github.com/palcarazm/batchjs/discussions) section for community support and engagement. + +## Code of Conduct + +Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md), which is based on the Contributor Covenant. We strive to create a welcoming and inclusive environment for all contributors. + +## Contact + +For any questions or further communication, you can reach us via [email](mailto:pablo@alcaraz.es) or preferably by opening a thread in the Q&A section of the [Discussions](https://github.com/palcarazm/batchjs/discussions) section. + +Thank you for your contributions to batchJS! + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..a5a33a9 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,21 @@ +# Reporting Security Issues + +If you discover a security vulnerability in this project, please follow these steps to report it: + +1. **Do Not Open an Issue**: Please **do not** open a GitHub issue to report a security vulnerability. This helps to ensure that the details of the vulnerability are not exposed to the public. + +2. **Report the Vulnerability**: + - Visit the [security advisories page](https://github.com/palcarazm/batchjs-sql/security/advisories/new) for this repository. + - Provide detailed information about the vulnerability you have discovered. This should include a clear description of the issue, steps to reproduce it, and any potential impact on the project. + +3. **Contact**: + - If you need to communicate with the maintainers directly, you can reach out to us via [email](mailto:pablo@alcarazm.es). + +4. **Disclosure Policy**: + - We follow a responsible disclosure policy and will acknowledge receipt of your report. We will work on a fix as soon as possible and will notify you once the issue is resolved. + +Thank you for helping us keep this project secure! + +--- + +*Note: This document is subject to change. Please check this file for the most current security reporting instructions.*