Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Typescript, version 1.0.0 #1

Merged
merged 18 commits into from
Sep 12, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.

70 changes: 69 additions & 1 deletion Readme.markdown
Original file line number Diff line number Diff line change
@@ -1,3 +1,71 @@
# 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.

## Before you Install

Version 1.0.0 is still in testing. The javascript works fine and it makes API cals no problem, but the typings enforced by Typescript may require some tweaking as time goes on. If you have any problems open an issue here.

## 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