Thanks for taking the time to contribute!
Prerequisites:
- Node.js 16+
- npm
Clone and install:
git clone git@github.com:snatalenko/declarative-mapper.git
cd declarative-mapper
npm cisrc/- mapper runtime and public APIstests/unit/- Jest teststests/unit/data/- test fixturesschemas/- JSON schemasscripts/changelog/- changelog templates/configdist/andtypes/- generated build output
npm run cleanup # Remove dist/, types/, coverage/
npm test
npm run test:coverage # Run tests with coverage report
npm run lint # Run ESLint
npm run build # Build both ESM and CJS outputs
npm run build:esm # Build ESM only (generates dist/esm/ and types/)
npm run build:cjs # Build CJS only (generates dist/cjs/)npm test tests/unit/mappingSchema.test.tsCode style and formatting are enforced via EditorConfig (.editorconfig) and ESLint (eslint.config.mjs).
- Indentation: Tabs (not spaces)
- Quotes: Single quotes
- Semicolons: Required
- Brace style: Stroustrup
- No
console.login production code - No trailing commas
- Line length: Warn at 120 chars
- Type-only imports: Use the
typekeyword for imports that are only used as types .tsfile extensions in imports: Always use explicit.tsextensions in relative import paths
- Keep commits focused and include tests for behavior changes
- For PRs, include a short problem/solution summary and link the related issue (if any)
- Use one of the following prefixes for the commit messages:
New:,Feat:- New functionalityChange:- Change to existing behaviorFix:,Fixes:- Bug-fixPerf:- Performance improvementSecurity:- Fix of a security issueDocs:- DocumentationTests:- TestsBuild:,CI:- Build scripts changeChore:,Internal Fix:- Internal changes or fixes of not-yet-released functionality
By contributing, you agree that your contributions are licensed under the project license.