Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/duffelhq/duffel-api-javascript
JavaScript client library for the Duffel API
https://github.com/duffelhq/duffel-api-javascript
api api-client client-library duffel duffel-api flights-api javascript nodejs travel-api typescript
Last synced: 3 months ago
JSON representation
JavaScript client library for the Duffel API
- Host: GitHub
- URL: https://github.com/duffelhq/duffel-api-javascript
- Owner: duffelhq
- License: mit
- Created: 2021-04-15T15:32:15.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-02T11:32:46.000Z (3 months ago)
- Last Synced: 2024-08-02T13:05:48.459Z (3 months ago)
- Topics: api, api-client, client-library, duffel, duffel-api, flights-api, javascript, nodejs, travel-api, typescript
- Language: TypeScript
- Homepage: https://duffel.com/docs
- Size: 3.31 MB
- Stars: 34
- Watchers: 19
- Forks: 11
- Open Issues: 8
-
Metadata Files:
- Readme: .github/README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Duffel API JavaScript Client
A JavaScript client library for the Duffel API.
**Content**
- [Prerequisites](#prerequisites)
- [Install](#install)
- [Continuous Integration](#client-ci)
- [Contributing](../docs/CONTRIBUTING.md)
- [How to test](#test)
- [Documentation](#documentation)## Prerequisites
- Node >= 18.16.0
## Install
You can install the dependencies for this library by executing the following command:
```
yarn install
```## Test
You can run the test suite for this library by executing the following command:
```
yarn test
```## Lint
You can run the linters configured for this library by executing the following command:
```
yarn lint
```## Installation
You can install this library into your current project by executing the following command:
```
yarn add @duffel/api
```If you need to create a new API operation class, just type `yarn generate:operation` and you will be prompted with a few questions. This script will create the relevant operation folder and files for you.
## Committing to the repository
To be able to publish the correct version to [npm](https://www.npmjs.com), this project is currently following [Angular conventional commit message guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#type) which is based on [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/). This commit message guideline allows the [semantic-release GitHub action](##client-ci) to be triggered.
### CommitLint to the rescue
Before creating a commit you should run a [husky hook](https://www.npmjs.com/package/husky) which will check if the commit structure is valid or not. If you don't want to create the commit manually, you can use `yarn commit` which will use `commitzen` to help you out creating the message.
## Client CI
Every time a commit is merged to main, a GitHub Action is run to analyse the commit messages with [`semantic-release`](https://github.com/semantic-release/semantic-release) and automatically update the current version to be deployed by following semantic versioning. When the deployment is complete, the action updates the package version, using Duffel's machine user (`@duffel-bot`) as the author, and this change will be automatically approved by the GitHub Action via the [`autoapprove` workflow] (../.github/workflows/autoapprove.yml).
### Continuous Integration
1. Developer opens pull request to main
2. Pull request is merged
3. GitHub Actions are triggered and the commits are analysed
- if there's a breaking change, bump the major version
- if there's a feature commit, bump the minor version
- if there's a fix, bump the patch version
4. Deploy the new version
a. Publish to npm
b. Create and push a git tag
c. Publish a GitHub release with the relevant commits and descriptions
5. After the release is published then a pull request is automatically created and approved via a GitHub Action to bump the package version## Documentation
You can learn more about the Duffel API and this library in our [documentation](https://duffel.com/docs).