Skip to content

Commit

Permalink
Merge 1442d6b into 8358a30
Browse files Browse the repository at this point in the history
  • Loading branch information
Arcath committed Sep 11, 2018
2 parents 8358a30 + 1442d6b commit e77e862
Show file tree
Hide file tree
Showing 50 changed files with 8,650 additions and 147 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules/
lib/
coverage/
2 changes: 1 addition & 1 deletion .npmignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
src/
tests/
coverage/
5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
language: node_js
node_js:
'node'
script:
- npm run ci
66 changes: 0 additions & 66 deletions Gruntfile.coffee

This file was deleted.

66 changes: 65 additions & 1 deletion Readme.markdown
Original file line number Diff line number Diff line change
@@ -1,3 +1,67 @@
# Kashflow API (Node)

The Kashflow api bindings for NodeJS
[![Coverage Status](https://coveralls.io/repos/github/Ed-ITSolutions/kashflow-api-node/badge.svg?branch=master)](https://coveralls.io/github/Ed-ITSolutions/kashflow-api-node?branch=master)

The Kashflow api bindings for NodeJS written in Typescript.

## Install

```
npm install --save kashflow-api
```

## Usage

Require Kashflow

### Javascript

```js
var KashflowAPI = require('kashflow-api')

var api = new KashflowAPI('your-username', 'your-password')

api.call('GetCustomer', {
CustomerCode: 'SOMECODE'
}).then(function(result){
// your code here.
result.response // The customer
})
```

Whilst this library will work fine in Javascript it has so many more features for Typescript.

### Typescript

This library is 90% Typescript typings.

The `call` method has its input data and response typed based on the requested API method. All the interfaces are exported for you to use in your code.

```ts
import {KashflowAPI, Customer} from 'kashflow-api'

const useAPI = async () => {
const api = new KashflowAPI('your-username', 'your-password')

let {response: customer} = await api.call('GetCustomer', {
CustomerCode: 'SOMECODE' // TS will only allow CustomerCode here because of the call to `GetCustomer
})

customer.Name // will produce no errors as the output is typed as Customer
}

// Using exported interfaces you can set the types for functions etc...
const outputCustomer = (customer: Customer) => {
console.log(customer.Name)
}
```

We reccomend using Typescript with this API. There is some extremely inconsistent naming and inputs, for example `GetInvoice` uses `InvoiceNumber`, `GetInvoiceNotes` uses `InvoiceId`, `GetInvoicePayment` uses `InvoiceNumber` and `GetInvoiceByID` uses `InvoiceID`.

## Contributing

We welcome pull requests and issues on this repository.

To build locally pull a copy of the repository and run `npm install` to get the dependecies.

Testing is done with `npm test` which will test the code and that `tsc` can compile the output.
18 changes: 18 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
module.exports = {
"roots": [
"<rootDir>/src"
],
"transform": {
"^.+\\.tsx?$": "ts-jest"
},
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
"collectCoverage": true
}
Loading

0 comments on commit e77e862

Please sign in to comment.