If you are contributing to this SDK repository, linting rules will run to ensure code consistency. Here are a few things you might consider:
To manually lint a folder use the lint:path script and pass the path to the folder you want to lint. For example: yarn lint:path src/modules/apis
To lint fix your code simply add the --fix argument: yarn lint:path src/modules/apis --fix
To lint all the code in your module, use the yarn lint:path command above. The linter has been configured to ignore any folders called sample-app !!
The repository has been setup with a pre-commit hook that will lint any files that have been staged. This will prevent pushing any unlinted files to GitHub.
You will need to fix any linting issues locally before being allowed to commit anything. You can either fix the linting issues manually or use the lint:path command with the --fix argument and specify the path to the files you want to lint fix.
Since the existing codebase already contains unlinted code, the GitHub workflow to lint is configured to only lint files in the PR that have been added or changed.
This is to prevent unlinted code in the rest of the codebase preventing PR’s from merging.
This repository uses Jest as the default unit-testing framework, and is configured independently at each package directory. Due to the build system, you have the flexibility within each package to test appropriately.
To test this SDK locally, you can:
# Install dependencies
yarn
# Build
yarn build
# Runs all tests, but skip the ones that require a VPN
yarn test
# Run all tests, including the ones that require a VPN
yarn test:vpn
Or,
To run test suites specific to a package, you will require to change directory to a package, and run yarn test
there:
cd packages/passport && yarn test
cd packages/checkout && yarn test
cd packages/internal/toolkit && yarn test
cd packages/x-provider && yarn test
cd packages/x-client && yarn test
You can also extend these commands, by using Jest syntax such as regex or to target specific tests to run:
cd packages/passport && yarn test -t "this is a test name within passport testing suite"
The root package.json
is the entry point for all CI testing purposes. Therefore, if you wish to write tests for an existing or new package, please ensure that a "test"
script exists in the associated package.json
file so that it is picked up by the root "test" command.
Documentation is automatically generated from TSDoc style comments after PR is successfully merged to main branch.
This repository uses TypeDoc to convert TSDoc comments into the SDK reference docs you see here
A good rule of thumb is to ensure anything that is exported has TSDoc comments created for it. The best way to get a feel for how TSDoc works is to play with it here
At a minimum, aim to have @param
, @returns
, @throws
and @description
for functions. If the function is quite complex, provide an @example
too, like this
From a clean checkout, run:
yarn
yarn build
yarn docs:build
To view the docs locally, run: yarn docs:serve
The Immutable team will take responsibility for releasing successful PRs contributed, including versioning decisions.
Publishing the SDK to NPM will create a new GitHub release with auto-generated release notes to communicate changes between releases. These auto-generated notes are a list of PR titles merged since the last release.
In an effort to help make the auto-generated notes useful to customers, please write meaningful PR titles. For example, Fix bug
is not a meaningful title, but Fix bug when user does X
is.
Please follow our check points provided in PR template.
To ensure all releases and changes make sense to people who use and contribute to this SDK, we strongly recommend the following rules for contributors:
When creating PRs, start it with a section on one-line Customer Impact, followed by a section on the changes that have happened. You can pick all that apply in the list of types of changes below.
Added
for new features.Changed
for changes in existing functionality.Deprecated
for soon-to-be removed features.Removed
for now removed features.Fixed
for any bug fixes.Security
in case of vulnerabilities.