Detalhes do pacote

@mountainpass/waychaser

mountain-pass893Apache-2.05.0.11

Client library for HATEOAS level 3 RESTful APIs that provide hypermedia controls

isomorphic, fetch, rest, rest-client

readme (leia-me)

waychaser

Client library for HATEOAS level 3 RESTful APIs that provide hypermedia controls using:

This isomorphic library is compatible with Node.js 12.x, 14.x and 16.x, Chrome, Firefox, Safari and Edge.

Node.js
Node.js
Chrome
Chrome
Firefox
Firefox
Safari
Safari
Edge
Edge
iOS
iOS
Android
Android
12.x, 14.x, 16.x latest version latest version latest version latest version latest version latest version

FOSSA Status

ToC

Usage

Node.js

npm install @mountainpass/waychaser
import { WayChaser } from '@mountainpass/waychaser'

//...
const waychaser = new WayChaser()
try {
  const apiResource = await waychaser.load(apiUrl)
  // do something with `apiResource`
} catch (error) {
  // do something with `error`
}

Browser

<script
  type="text/javascript"
  src="https://unpkg.com/@mountainpass/waychaser@5.0.11"
></script>

...
<script type="text/javascript">
  var waychaser = new window.waychaser.WayChaser()
  waychaser
    .load(apiUrl)
    .then((apiResource) => {
      // do something with `apiResource`
    })
    .catch((error) => {
      // do something with `error`
    });
</script>

Getting the response

WayChaser makes it's http requests using fetch and the Fetch.Response is available via the response property.

For example

const responseUrl = apiResource.response.url

Getting the response body

WayChaser makes the response body available via the body() async method.

For example

const responseUrl = await apiResource.body()

Requesting linked resources

Level 3 REST APIs are expected to return links to related resources. WayChaser expects to find these links via RFC 8288 link headers, link-template headers, HAL _link elements or Siren link elements.

WayChaser provides methods to simplify requesting these linked resources.

For instance, if the apiResource we loaded above has a next link like any of the following:

Link header:

Link: <https://api.waychaser.io/example?p=2>; rel="next";

HAL

{
  "_links": {
    "next": { "href": "https://api.waychaser.io/example?p=2" }
  }
}

Siren

{
  "links": [
    { "rel": [ "next" ], "href": "https://api.waychaser.io/example?p=2" },
  ]
}

then that next page can be retrieved using the following code

const nextResource = await apiResource.invoke('next')

You don't need to tell waychaser whether to use Link headers, HAL _links or Siren links; it will figure it out based on the resource's media-type. If the media-type is application/hal+json if will try to parse the links in the _link property of the body. If the media-type is application/vnd.siren+json if will try to parse the links in the link property of the body.

Regardless of the resource's media-type, it will always try to parse the links in the Link and Link-Template headers.

Multiple links with the same relationship

Resources can have multiple links with the same relationship, such as

HAL

{
  "_links": {
    "item": [{
      "href": "/first_item",
      "name": "first"
    },{
      "href": "/second_item",
      "name": "second"
    }]
  }
}

If you know the name of the resource, then waychaser can load it using the following code

const firstResource = await apiResource.invoke({ rel: 'item', name: 'first' })

Forms

Query forms

Support for query forms is provided via:

For instance if our resource has either of the following

Link-Template header:

Link-Template: <https://api.waychaser.io/search{?q}>; rel="search";

HAL

{
  "_links": {
    "search": { "href": "https://api.waychaser.io/search{?q}" }
  }
}

Then waychaser can execute a search for "waychaser" with the following code

const searchResultsResource = await apiResource.invoke('search', {
  q: 'waychaser'
})

Path parameter forms

Support for query forms is provided via:

For instance if our resource has either of the following

Link-Template header

Link-Template: <https://api.waychaser.io/users{/username}>; rel="item";

HAL

{
  "_links": {
    "item": { "href": "https://api.waychaser.io/users{/username}" }
  }
}

Then waychaser can retrieve the user with the username "waychaser" with the following code

const userResource = await apiResource.invoke('item', {
  username: 'waychaser'
})

Request body forms

Support for request body forms is provided via:

To support request body forms with link-template headers, waychaser supports three additional parameters in the link-template header:

  • method - used to specify the HTTP method to use
  • params* - used to specify the fields the form expects
  • accept* - used to specify the media-types that can be used to send the body as per, RFC7231 and defaulting to application/x-www-form-urlencoded

If our resource has either of the following:

Link-Template header:

Link-Template: <https://api.waychaser.io/users>; 
  rel="https://waychaser.io/rels/create-user"; 
  method="POST";
  params*=UTF-8'en'%7B%22username%22%3A%7B%7D%7D'

If your wondering what the UTF-8'en'%7B%22username%22%3A%7B%7D%7D' part is, it's just the JSON {"username":{}} encoded as an Extension Attribute as per (RFC8288) Link Headers. Don't worry, libraries like http-link-header can do this encoding for you.

Siren

{
  "actions": [
    {
      "name": "https://waychaser.io/rels/create-user",
      "href": "https://api.waychaser.io/users",
      "method": "POST",
      "fields": [
        { "name": "username" }
      ]
    }
  ]
}

Then waychaser can create a new user with the username "waychaser" with the following code

const createUserResultsResource = await apiResource.invoke('https://waychaser.io/rels/create-user', {
  username: 'waychaser'
})

NOTE: The URL https://waychaser.io/rels/create-user in the above code is NOT the end-point the form is posted to. That URL is a custom Extension Relation that identifies the semantics of the operation. In the example above, the form will be posted to https://api.waychaser.io/users

DELETE, POST, PUT, PATCH

As mentioned above, waychaser supports Link and Link-Template headers that include method properties, to specify the HTTP method the client must use to execute the relationship.

For instance if our resource has the following link

Link header:

Link: <https://api.waychaser.io/example/some-resource>; rel="https://api.waychaser.io/rel/delete"; method="DELETE";

Then the following code

const deletedResource = await apiResource.invoke('https://waychaser.io/rel/delete')

will send a HTTP DELETE to https://api.waychaser.io/example/some-resource.

NOTE: The method property is not part of the specification for Link

(RFC8288) or Link-Template headers. This means that if you use waychaser with a server that provides this headers and it uses the method property for something else, then you're going to need a custom handler.

Examples

HAL

The following code demonstrates using waychaser with the REST API for AWS API Gateway to download the 'Error' schema from 'test-waychaser' gateway

import { waychaser, halHandler, MediaTypes } from '@mountainpass/waychaser'
import fetch from 'cross-fetch'
import aws4 from 'aws4'


// AWS makes us sign each request. This is a fetcher that does that automagically for us.
/**
 * @param url
 * @param options
 */
function awsFetch (url, options) {
  const parsedUrl = new URL(url)
  const signedOptions = aws4.sign(
    Object.assign(
      {
        host: parsedUrl.host,
        path: `${parsedUrl.pathname}?${parsedUrl.searchParams}`,
        method: 'GET'
      },
      options
    )
  )
  return fetch(url, signedOptions)
}

// Now we tell waychaser, to only accept HAL and to use our fetcher.
const awsWayChaser = waychaser.use(halHandler, MediaTypes.HAL).withFetch(awsFetch)

// now we can load the API
const api = await waychaser.load(
  'https://apigateway.ap-southeast-2.amazonaws.com/restapis'
)

// then we can find the gateway we're after
const gateway = await api.ops
  .filter('item')
  .findInRelated({ name: 'test-waychaser' })

// then we can get the models
const models = await gateway.invoke(
  'http://docs.aws.amazon.com/apigateway/latest/developerguide/restapi-restapi-models.html'
)

// then we can find the schema we're after 
const model = await models.ops
  .filter('item')
  .findInRelated({ name: 'Error' })

// and now we get the schema
const schema = JSON.parse((await model.body()).schema)

NOTE: While the above is a legit, and it works (here's the test), for full use of the AWS API Gateway REST API, you're going to need a custom handler.

This is because HAL links are supposed retrieved using a HTTP GET, but many of the AWS API Gateway REST API links require using POST, PATCH or DELETE HTTP methods.

But there's nothing in AWS API Gateway links to tell you when to use a different HTTP method. Instead it's communicated out-of-band in AWS API Gateway documentation. If you write a custom handler, please let me know 👍

Siren

While admittedly this is a toy example, the following code demonstrates using waychaser to complete the Hypermedia in the Wizard's Tower text-based adventure game.

But even though it's a game, it shows how waychaser can easily navigate a complex process, including POSTing data and DELETEing resources.

  return waychaser
    .load('http://hyperwizard.azurewebsites.net/hywit/void')
    .then(current =>
      current.invoke('start-adventure', {
        name: 'waychaser',
        class: 'Burglar',
        race: 'waychaser',
        gender: 'Male'
      })
    )
    .then(current => {
      if (current.response.status <= 500) return current.invoke('related')
      else throw new Error('Server Error')
    })
    .then(current => current.invoke('north'))
    .then(current => current.invoke('pull-lever'))
    .then(current =>
      current.invoke({ rel: 'move', title: 'Cross the bridge.' })
    )
    .then(current => current.invoke('move'))
    .then(current => current.invoke('look'))
    .then(current => current.invoke('eat-snacks'))
    .then(current => current.invoke('related'))
    .then(current => current.invoke('north'))
    .then(current => current.invoke('pull-lever'))
    .then(current => current.invoke('look'))
    .then(current => current.invoke('eat-snacks'))
    .then(current => current.invoke('enter'))
    .then(current => current.invoke('answer-skull', { master: 'Edsger' }))
    .then(current => current.invoke('east'))
    .then(current => current.invoke('smash-mirror-1') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-2') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-3') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-4') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-5') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-6') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('smash-mirror-7') || current)
    .then(current => current.invoke('related') || current)
    .then(current => current.invoke('look'))
    .then(current => current.invoke('enter-mirror'))
    .then(current => current.invoke('north'))
    .then(current => current.invoke('down'))
    .then(current => current.invoke('take-book-3'))

Upgrading from 1.x to 2.x

Removal of Loki

Loki is no longer use for storing operations and has been replaced with an subclass of Array. We originally introduced Loki it's querying capability, but it turned out to be far to large a dependency.

Operation count

Previously you could get the number of operations on a resource by calling

apiResource.count()

For 2.x, replace this with

apiResource.length

Finding operations

To find an operation, instead of using

apiResource.operations.findOne(relationship)
// or
apiResource.operations.findOne({ rel: relationship })
// or
apiResource.ops.findOne(relationship)
// or
apiResource.ops.findOne({ rel: relationship })

use

apiResource.operations.find(relationship)
// or
apiResource.operations.find({ rel: relationship })
// or
apiResource.operations.find(operation => {
  return operation.rel === relationship
})
// or
apiResource.ops.find(relationship)
// or
apiResource.ops.find({ rel: relationship })
// or
apiResource.ops.find(operation => {
  return operation.rel === relationship
})

Additionally when invoking an operation, you can use an array finder function as well. e.g. the following are all equivalent

await apiResource.invoke(relationship)
await apiResource.invoke({ rel: relationship })
await apiResource.invoke(operation => {
  return operation.rel === relationship
})
await apiResource.operations.invoke(relationship)
await apiResource.operations.invoke({ rel: relationship })
await apiResource.operations.invoke(operation => {
  return operation.rel === relationship
})
await apiResource.ops.invoke(relationship)
await apiResource.ops.invoke({ rel: relationship })
await apiResource.ops.invoke(operation => {
  return operation.rel === relationship
})
await apiResource.operations.find(relationship).invoke()
await apiResource.operations.find({ rel: relationship }).invoke()
await apiResource.operations.find(operation => {
  return operation.rel === relationship
}).invoke()
await apiResource.ops.find(relationship).invoke()
await apiResource.ops.find({ rel: relationship }).invoke()
await apiResource.ops.find(operation => {
  return operation.rel === relationship
}).invoke()

NOTE: When findOne could not find an operation, null was returned, whereas when find cannot find an operation it returns undefined

Upgrading from 2.x to 3.x

Accept Header

waychaser now automatically provides an accept header in requests.

The accept header can be overridden for individual requests, by including an alternate header.accept value in the options parameter when calling the invoke method.

Handlers

The use method now expects both a handler and the mediaType it can handle. WayChaser uses the provided mediaTypes to automatically generate the accept request header.

NOTE: Currently waychaser does use the corresponding content-type header to filter the responses passed to handlers. THIS MAY CHANGE IN THE FUTURE. Handlers should only process responses that match the mediaType provided when they are registered using the use method.

Error responses

In 2.x waychaser would throw an Error if response.ok was false. This is no longer the case as some APIs provide hypermedia responses for 4xx and 5xx responses.

Code like the following

try {
  return apiResource.invoke(relationship)
} catch(error) {
  if( error.response ) {
    // handle error response...
  }
  else {
    // handle fetch error
  }
}

should be replaced with

try {
  const resource = await apiResource.invoke(relationship)
  if( resource.response.ok ) {
    return resource
  }
  else {
    // handle error response...
  }
} catch(error) {
  // handle fetch error
}

or if there is no special processing needed for error responses

try {
  return apiResource.invoke(relationship)
} catch(error) {
  // handle fetch error
}

Invoking missing operations

In 2.x invoking an operation that didn't exist would throw an error, leading to code like

const found = apiResource.ops.find(relationship)
if( found ) {
  return found.invoke()
}
else {
  // handle op missing
}

In 3.x invoking an operation that doesn't exist returns undefined, allowing for simpler code, as follows

const resource = await apiResource.invoke(relationship)
if( resource === undefined ) {
  // handle operation missing 
}

or

return apiResource.invoke(relationship) || //... return a default

NOTE: When we say it returns undefined we actually mean undefined, NOT a promise the resolves to undefined. This is what makes the ...invoke(rel) || default code possible.

Handling location headers

WayChaser 3.x now includes a location header hander, which will create an operation with the related relationship. This allows support for APIs that, when creating a resource (ie using POST), provide a location to the created resource in the response, or APIs that, when updating a resource (ie using PUT or PATCH), provide a location to the updated resource in the response.

Upgrading from 3.x to 4.x

Previously WayChaser provided a default instance via the waychaser export. This is no longer the case and you will need to create your own instance using new WayChaser()

Problem vs WayChaserResponse

Problems can be client side or server side

Client side

  • fetch throws exception - No Response
  • can't parse response - Has Response
  • can parse response, but the type predicate fails - Has Response

Server side

  • server returns problem document - Has Response

Response may include links that tell the client how to resolve, so we want it to be a WayChaserResponse

Options:

  1. invoke returns WayChaserResponse with problem or content
    • client uses content !== undefined && problem === undefined to check if the were not problems
    • unclear if we got a problem or not
  2. invoke returns a clean WayChaserResponse with content or a WayChaserProblem with a problem document
    • client would need to use instanceOf to differentiate
    • clean WayChaserResponse has a response and content (which could be expectedly undefined)
    • WayChaserProblem has a problem document and may or may not have a response
  3. invoke returns a clean WayChaserResponse or a ProblemDocument with optional waychaser response as extention
    • client would need to use instanceOf to differentiate
    • if server returns PD, then do we wrap the PD? Feels ugly

changelog (log de mudanças)

5.0.11 (2022-07-04)

  • Merge pull request #476 from mountain-pass/dependabot/npm_and_yarn/path-parse-1.0.7 (428aa12), closes #476

5.0.10 (2022-07-04)

  • Merge pull request #477 from mountain-pass/dependabot/npm_and_yarn/shelljs-0.8.5 (b12baa9), closes #477

5.0.9 (2022-07-04)

  • fix(errors): not all errors were being wrapped (37420cc)

5.0.8 (2022-06-27)

  • Merge pull request #485 from mountain-pass/dependabot/npm_and_yarn/nanoid-3.3.4 (f60c199), closes #485

5.0.7 (2022-06-27)

  • Merge pull request #486 from mountain-pass/dependabot/npm_and_yarn/moment-2.29.3 (88830fd), closes #486

5.0.6 (2022-06-27)

  • fix(content-parser): fixed issues detecting thrown problem-documents (61d8b98)

5.0.5 (2022-06-27)

  • Merge pull request #487 from mountain-pass/dependabot/npm_and_yarn/follow-redirects-1.15.1 (c6066f3), closes #487

5.0.4 (2022-06-27)

  • feat(content-parser): content parsers now throw problem documents (c0e5293)

5.0.3 (2022-06-27)

  • feat(content-parser): content parsers can now access previous implementations (27ac9ba)

5.0.2 (2022-06-26)

  • Merge pull request #488 from mountain-pass/dependabot/npm_and_yarn/shell-quote-1.7.3 (8a5b378), closes #488

5.0.1 (2022-06-26)

  • feat(defaults): defaults are now accessible via waychaser.currentDefaults (987d73b)

5.0.0 (2022-06-20)

  • ci(test): removing node 10.x tests (a4aae3b)

4.0.38 (2021-11-15)

  • fix(cjs): fixed import issues (595240b)

4.0.37 (2021-11-15)

  • Merge pull request #474 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-unicorn-35.0.0 (e65b163), closes #474

4.0.36 (2021-11-15)

  • Merge pull request #449 from mountain-pass/dependabot/npm_and_yarn/rollup-2.55.0 (71f0e34), closes #449

4.0.35 (2021-11-15)

  • Merge pull request #475 from mountain-pass/dependabot/npm_and_yarn/jsonpointer-5.0.0 (129d9cb), closes #475

4.0.34 (2021-09-06)

  • fix(ci): Fixing chrome tests (4e341a0)

4.0.33 (2021-09-05)

  • build(cjs): Fixed commonjs build (ff156ca)

4.0.32 (2021-08-02)

  • Merge pull request #470 from mountain-pass/dependabot/npm_and_yarn/chromedriver-92.0.1 (8e8c834), closes #470

4.0.31 (2021-08-02)

  • Merge pull request #469 from mountain-pass/dependabot/npm_and_yarn/snyk-1.674.0 (64c787b), closes #469

4.0.30 (2021-08-02)

  • Merge pull request #468 from mountain-pass/dependabot/npm_and_yarn/snyk-1.673.0 (72b1f4e), closes #468

4.0.29 (2021-08-02)

  • Merge pull request #467 from mountain-pass/dependabot/npm_and_yarn/babel/plugin-syntax-top-level-awa (90cadae), closes #467

4.0.28 (2021-08-02)

  • Merge pull request #465 from mountain-pass/dependabot/npm_and_yarn/lint-staged-11.1.1 (2b1fae8), closes #465

4.0.27 (2021-08-01)

  • Merge pull request #462 from mountain-pass/dependabot/npm_and_yarn/babel/preset-env-7.14.9 (9880e86), closes #462

4.0.26 (2021-07-30)

  • Merge pull request #460 from mountain-pass/dependabot/npm_and_yarn/eslint-7.32.0 (2c2c107), closes #460

4.0.25 (2021-07-30)

  • Merge pull request #459 from mountain-pass/dependabot/npm_and_yarn/snyk-1.672.0 (e3c98b2), closes #459

4.0.24 (2021-07-30)

  • Merge pull request #458 from mountain-pass/dependabot/npm_and_yarn/rollup/plugin-commonjs-20.0.0 (547ff19), closes #458

4.0.23 (2021-07-30)

  • Merge pull request #457 from mountain-pass/dependabot/npm_and_yarn/core-js-3.16.0 (ee14143), closes #457

4.0.22 (2021-07-30)

  • Merge pull request #370 from mountain-pass/dependabot/npm_and_yarn/chai-4.3.4 (976086d), closes #370

4.0.21 (2021-07-29)

  • Merge pull request #456 from mountain-pass/dependabot/npm_and_yarn/chromedriver-92.0.0 (cf1c9d6), closes #456

4.0.20 (2021-07-29)

  • Merge pull request #452 from mountain-pass/dependabot/npm_and_yarn/depcheck-1.4.2 (393297e), closes #452

4.0.19 (2021-07-28)

  • Merge pull request #447 from mountain-pass/dependabot/npm_and_yarn/babel/eslint-parser-7.14.7 (0fd1427), closes #447

4.0.18 (2021-07-28)

  • Merge pull request #446 from mountain-pass/dependabot/npm_and_yarn/eslint-7.31.0 (424f3bd), closes #446

4.0.17 (2021-07-27)

  • Merge pull request #445 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-36.0.4 (c76b8ce), closes #445

4.0.16 (2021-07-27)

  • Merge pull request #444 from mountain-pass/dependabot/npm_and_yarn/snyk-1.668.0 (bb950b2), closes #444

4.0.15 (2021-07-27)

  • Merge pull request #443 from mountain-pass/dependabot/npm_and_yarn/nodemon-2.0.12 (0378a63), closes #443

4.0.14 (2021-07-27)

  • Merge pull request #421 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-json-3.0.0 (4109b37), closes #421

4.0.13 (2021-07-26)

  • Merge pull request #440 from mountain-pass/dependabot/npm_and_yarn/rollup/plugin-commonjs-19.0.2 (2d95634), closes #440

4.0.12 (2021-07-26)

  • Merge pull request #439 from mountain-pass/dependabot/npm_and_yarn/snyk-1.667.0 (71d4320), closes #439

4.0.11 (2021-07-26)

  • Merge pull request #438 from mountain-pass/dependabot/npm_and_yarn/start-server-and-test-1.13.1 (7e75d20), closes #438

4.0.10 (2021-07-22)

  • Merge pull request #436 from mountain-pass/dependabot/npm_and_yarn/lint-staged-11.1.0 (c337015), closes #436

4.0.9 (2021-07-22)

  • Merge pull request #435 from mountain-pass/dependabot/npm_and_yarn/snyk-1.665.0 (95fca08), closes #435

4.0.8 (2021-07-22)

  • Merge pull request #434 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-35.5.1 (65587d1), closes #434

4.0.7 (2021-07-21)

  • Merge pull request #433 from mountain-pass/dependabot/npm_and_yarn/glob-parent-5.1.2 (ca91b6b), closes #433

4.0.6 (2021-07-21)

  • Merge pull request #432 from mountain-pass/dependabot/npm_and_yarn/rollup-2.53.3 (1ea70b7), closes #432

4.0.5 (2021-07-21)

  • Merge pull request #431 from mountain-pass/dependabot/npm_and_yarn/babel/cli-7.14.8 (5e1acaa), closes #431

4.0.4 (2021-06-30)

4.0.3 (2021-06-29)

  • Merge pull request #425 from mountain-pass/dependabot/npm_and_yarn/core-js-3.15.2 (afcfd54), closes #425

4.0.2 (2021-06-24)

  • Merge pull request #420 from mountain-pass/dependabot/npm_and_yarn/snyk-1.645.0 (16bb850), closes #420

4.0.1 (2021-06-24)

  • fix(ci): fixed version number (ede0233)

3.0.43 (2021-06-06)

  • Merge pull request #388 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-35.1.3 (4deaa16), closes #388

3.0.42 (2021-06-05)

  • Merge pull request #385 from mountain-pass/dependabot/npm_and_yarn/core-js-3.14.0 (a0ee0a8), closes #385

3.0.41 (2021-06-04)

  • Merge pull request #368 from mountain-pass/dependabot/npm_and_yarn/webpack-bundle-analyzer-4.4.2 (96e1b12), closes #368

3.0.40 (2021-06-04)

  • Merge pull request #379 from mountain-pass/dependabot/npm_and_yarn/ws-6.2.2 (ca356fb), closes #379

3.0.39 (2021-05-28)

  • fix(ranged-links): fixed stack issues with links with ranges in anchors (e6c4946)

3.0.38 (2021-05-27)

  • Merge pull request #347 from mountain-pass/dependabot/npm_and_yarn/commitlint/config-conventional-12 (0e574b5), closes #347

3.0.37 (2021-05-27)

  • Merge pull request #350 from mountain-pass/dependabot/npm_and_yarn/humanize-duration-3.26.0 (2edbbc0), closes #350

3.0.36 (2021-05-26)

  • Merge pull request #362 from mountain-pass/dependabot/npm_and_yarn/dns-packet-1.3.4 (4353895), closes #362

3.0.35 (2021-05-25)

  • fix(coverage): removed dead code (3e63934)

3.0.33 (2021-05-24)

  • Merge pull request #359 from mountain-pass/dependabot/npm_and_yarn/concurrently-6.2.0 (c3a70e3), closes #359

3.0.32 (2021-05-24)

  • Merge pull request #357 from mountain-pass/dependabot/npm_and_yarn/start-server-and-test-1.12.2 (eb8f71d), closes #357

3.0.31 (2021-05-23)

  • Merge pull request #354 from mountain-pass/dependabot/npm_and_yarn/snyk-1.606.0 (f28c484), closes #354

3.0.30 (2021-05-22)

  • Merge pull request #353 from mountain-pass/dependabot/npm_and_yarn/eslint-7.27.0 (12c32a9), closes #353

3.0.29 (2021-04-06)

  • Merge pull request #303 from mountain-pass/dependabot/npm_and_yarn/snyk-1.526.0 (f0f506c), closes #303

3.0.28 (2021-04-06)

  • Merge pull request #302 from mountain-pass/dependabot/npm_and_yarn/snyk-1.525.0 (9e0a360), closes #302

3.0.27 (2021-04-06)

  • Merge pull request #300 from mountain-pass/dependabot/npm_and_yarn/snyk-1.523.0 (e79d0de), closes #300

3.0.26 (2021-04-05)

  • Merge pull request #228 from mountain-pass/dependabot/npm_and_yarn/depcheck-1.4.0 (0d84847), closes #228

3.0.25 (2021-03-29)

  • Merge pull request #284 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-32.3.0 (8f3a67d), closes #284

3.0.24 (2021-03-27)

  • Merge pull request #283 from mountain-pass/dependabot/npm_and_yarn/webpack-cli-4.6.0 (dbe5dd2), closes #283

3.0.23 (2021-03-26)

  • Merge pull request #280 from mountain-pass/dependabot/npm_and_yarn/snyk-1.511.0 (5276911), closes #280

3.0.22 (2021-03-26)

  • Merge pull request #274 from mountain-pass/dependabot/npm_and_yarn/is-svg-4.3.1 (1be30c1), closes #274

3.0.21 (2021-03-25)

  • fix(duplication): fixed crash when using duplication detection (d7e609f)

3.0.20 (2021-02-28)

  • fix(package): added missing files (13eded3)

3.0.19 (2021-02-24)

  • fix(coverage): added missing aws keys to CI (5f385f4)

3.0.18 (2021-02-23)

  • Merge pull request #254 from mountain-pass/dependabot/npm_and_yarn/babel/cli-7.13.0 (c1bebbb), closes #254

3.0.17 (2021-02-23)

  • Merge pull request #253 from mountain-pass/dependabot/npm_and_yarn/babel/runtime-7.13.6 (6a41026), closes #253

3.0.16 (2021-02-23)

  • Merge pull request #251 from mountain-pass/dependabot/npm_and_yarn/babel/preset-env-7.13.5 (b28166f), closes #251

3.0.15 (2021-02-23)

  • Merge pull request #249 from mountain-pass/dependabot/npm_and_yarn/babel/runtime-7.13.4 (c90ae7a), closes #249

3.0.14 (2021-02-23)

  • Merge pull request #247 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-32.2.0 (fd0df5e), closes #247

3.0.13 (2021-02-23)

  • Merge pull request #246 from mountain-pass/dependabot/npm_and_yarn/commitlint/config-conventional-12 (994fcff), closes #246

3.0.12 (2021-02-23)

  • Merge pull request #245 from mountain-pass/dependabot/npm_and_yarn/commitlint/cli-12.0.0 (0468014), closes #245

3.0.11 (2021-02-22)

  • Merge pull request #239 from mountain-pass/dependabot/npm_and_yarn/snyk-1.459.0 (1b29f74), closes #239

3.0.10 (2021-02-22)

  • Merge pull request #236 from mountain-pass/spike-ci-debugging (74b2281), closes #236

3.0.9 (2021-02-13)

  • Merge pull request #218 from mountain-pass/dependabot/npm_and_yarn/eslint-7.20.0 (72842ac), closes #218

3.0.8 (2021-02-12)

  • Merge pull request #217 from mountain-pass/dependabot/npm_and_yarn/snyk-1.454.0 (7f58812), closes #217

3.0.7 (2021-02-12)

  • Merge pull request #216 from mountain-pass/dependabot/npm_and_yarn/snyk-1.453.0 (e2edca6), closes #216

3.0.6 (2021-02-12)

  • Merge pull request #215 from mountain-pass/dependabot/npm_and_yarn/markdownlint-0.23.1 (8fe5830), closes #215

3.0.5 (2021-02-12)

  • Merge pull request #214 from mountain-pass/dependabot/npm_and_yarn/babel/preset-env-7.12.16 (8ded219), closes #214

3.0.4 (2021-02-12)

  • Merge pull request #211 from mountain-pass/dependabot/npm_and_yarn/babel/node-7.12.16 (8f70c42), closes #211

3.0.3 (2021-02-10)

  • Merge pull request #207 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-promise-4.3.1 (f045b96), closes #207

3.0.2 (2021-02-10)

  • Merge pull request #205 from mountain-pass/dependabot/npm_and_yarn/snyk-1.449.0 (5304988), closes #205

3.0.1 (2021-02-10)

  • fix(invoke): fixed options when calling invoke on an resource (0ea4045)

3.0.0 (2021-02-09)

  • feat(multiple): added or modified support for accept (67d336d)

BREAKING CHANGE

  • See README for upgrade instructions

2.0.20 (2021-02-08)

  • Merge pull request #202 from mountain-pass/dependabot/npm_and_yarn/husky-5.0.9 (ead8d45), closes #202

2.0.19 (2021-02-08)

  • Merge pull request #201 from mountain-pass/dependabot/npm_and_yarn/snyk-1.447.0 (bc1629a), closes #201

2.0.18 (2021-02-07)

  • Merge pull request #199 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.6.1 (c274e19), closes #199

2.0.17 (2021-02-07)

  • Merge pull request #194 from mountain-pass/dependabot/npm_and_yarn/lint-staged-10.5.4 (4ea9c31), closes #194

2.0.16 (2021-02-07)

  • Merge pull request #198 from mountain-pass/dependabot/npm_and_yarn/markdownlint-0.23.0 (28365ad), closes #198

2.0.15 (2021-02-06)

  • Merge pull request #196 from mountain-pass/dependabot/npm_and_yarn/moment-timezone-0.5.33 (4915c29), closes #196

2.0.14 (2021-02-05)

  • Merge pull request #193 from mountain-pass/dependabot/npm_and_yarn/snyk-1.446.0 (3800523), closes #193

2.0.13 (2021-02-04)

  • Merge pull request #192 from mountain-pass/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7. (c8ce70b), closes #192

2.0.12 (2021-02-04)

  • Merge pull request #191 from mountain-pass/dependabot/npm_and_yarn/snyk-1.445.0 (4cc46e0), closes #191

2.0.11 (2021-02-04)

  • Merge pull request #190 from mountain-pass/dependabot/npm_and_yarn/snyk-1.444.0 (1ed8d3e), closes #190

2.0.10 (2021-02-04)

  • Merge pull request #188 from mountain-pass/dependabot/npm_and_yarn/snyk-1.442.0 (65633ee), closes #188

2.0.9 (2021-02-04)

  • Merge pull request #186 from mountain-pass/dependabot/npm_and_yarn/chai-4.3.0 (bdbd0bf), closes #186

2.0.8 (2021-02-03)

  • Merge pull request #182 from mountain-pass/dependabot/npm_and_yarn/babel/preset-env-7.12.13 (98c788c), closes #182

2.0.7 (2021-02-03)

  • Merge pull request #184 from mountain-pass/dependabot/npm_and_yarn/babel/plugin-transform-modules-co (1dff56d), closes #184

2.0.6 (2021-02-03)

  • Merge pull request #181 from mountain-pass/dependabot/npm_and_yarn/prettier-config-standard-4.0.0 (55c2cd2), closes #181

2.0.5 (2021-02-03)

  • Merge pull request #177 from mountain-pass/dependabot/npm_and_yarn/snyk-1.440.5 (f3b4657), closes #177

2.0.4 (2021-02-03)

  • Merge pull request #170 from mountain-pass/dependabot/npm_and_yarn/babel/plugin-transform-arrow-func (d62fbbd), closes #170

2.0.3 (2021-02-02)

  • Merge pull request #168 from mountain-pass/dependabot/npm_and_yarn/webpack-cli-4.5.0 (4a4ed10), closes #168

2.0.2 (2021-02-01)

  • Merge pull request #166 from mountain-pass/dependabot/npm_and_yarn/snyk-1.440.4 (650073e), closes #166

2.0.1 (2021-02-01)

  • Merge pull request #165 from mountain-pass/dependabot/npm_and_yarn/snyk-1.440.3 (3fe0221), closes #165

2.0.0 (2021-02-01)

  • feat(operation): major version change (61b62af)

BREAKING CHANGE

  • version bump was missed before. See README.md for upgrade instructions

1.62.37 (2021-02-01)

  • feat(operation)!: trying to force major version (53d7f13)

BREAKING CHANGE

  • version bump was missed before

1.62.36 (2021-02-01)

  • test(accept): fixed coverage (96bd110)

1.62.35 (2021-01-31)

  • Merge pull request #163 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.6.0 (e35ecbd), closes #163

1.62.34 (2021-01-31)

  • Merge pull request #162 from mountain-pass/dependabot/npm_and_yarn/start-server-and-test-1.12.0 (86ced94), closes #162

1.62.33 (2021-01-31)

  • Merge pull request #160 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.5.0 (798f570), closes #160

1.62.32 (2021-01-31)

  • Merge pull request #159 from mountain-pass/dependabot/npm_and_yarn/eslint-7.19.0 (d285c5b), closes #159

1.62.31 (2021-01-30)

  • Merge pull request #158 from mountain-pass/dependabot/npm_and_yarn/dateformat-4.5.1 (08b310b), closes #158

1.62.30 (2021-01-28)

  • Merge pull request #155 from mountain-pass/dependabot/npm_and_yarn/snyk-1.440.0 (fb56c2c), closes #155

1.62.29 (2021-01-27)

  • Merge pull request #153 from mountain-pass/dependabot/npm_and_yarn/snyk-1.439.3 (7e777f1), closes #153

1.62.28 (2021-01-25)

  • test(handler): additional tests for custom handlers (51c8ec6)

1.62.27 (2021-01-25)

  • Merge pull request #147 from mountain-pass/dependabot/npm_and_yarn/geckodriver-1.22.1 (8f50394), closes #147

1.62.26 (2021-01-24)

  • Merge pull request #146 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.3.2 (ac1c4e9), closes #146

1.62.25 (2021-01-23)

  • Merge pull request #142 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.2.2 (325263d), closes #142

1.62.24 (2021-01-23)

  • Merge pull request #141 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.2.1 (7e13b55), closes #141

1.62.23 (2021-01-23)

  • Merge pull request #138 from mountain-pass/dependabot/npm_and_yarn/dateformat-4.5.0 (8856d98), closes #138

1.62.22 (2021-01-21)

  • Merge pull request #133 from mountain-pass/dependabot/npm_and_yarn/snyk-1.439.0 (b70dd5d), closes #133

1.62.21 (2021-01-21)

  • Merge pull request #132 from mountain-pass/dependabot/npm_and_yarn/webpack-bundle-analyzer-4.4.0 (2d1e33e), closes #132

1.62.20 (2021-01-20)

  • Merge pull request #131 from mountain-pass/dependabot/npm_and_yarn/snyk-1.438.0 (b1bf5ce), closes #131

1.62.19 (2021-01-20)

  • Merge pull request #126 from mountain-pass/dependabot/npm_and_yarn/core-js-3.8.3 (bf1f71c), closes #126

1.62.18 (2021-01-19)

  • Merge pull request #128 from mountain-pass/dependabot/npm_and_yarn/fs-extra-9.1.0 (5394a87), closes #128

1.62.17 (2021-01-19)

  • Merge pull request #127 from mountain-pass/dependabot/npm_and_yarn/webpack-cli-4.4.0 (1ed3ce2), closes #127

1.62.16 (2021-01-18)

  • Merge pull request #125 from mountain-pass/dependabot/npm_and_yarn/chromedriver-87.0.7 (34bc4ff), closes #125

1.62.15 (2021-01-18)

  • Merge pull request #123 from mountain-pass/dependabot/npm_and_yarn/eslint-config-prettier-7.2.0 (b9b9fac), closes #123

1.62.14 (2021-01-18)

  • Merge pull request #122 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.0.7 (9a779e9), closes #122

1.62.13 (2021-01-15)

  • feat(siren): added support for Siren actions (518c097)

1.62.12 (2021-01-15)

  • docs(readme): added more details about how to use (db457dc)

1.62.11 (2021-01-15)

  • Merge pull request #117 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-jsdoc-31.0.5 (24b5c58), closes #117

1.62.10 (2021-01-15)

  • feat(siren): inital support for siren links (70a5c79)

1.62.9 (2021-01-14)

1.62.8 (2021-01-14)

  • refactor(test): reducing number of calls to browser (6985f2f)

1.62.7 (2021-01-14)

  • test(hal): additional tests for templated HAL links (1d1e214)

1.62.6 (2021-01-13)

  • ci(publish): fixing versioning (689f9a3)

1.62.5 (2021-01-13)

  • Merge pull request #98 from mountain-pass/dependabot/npm_and_yarn/dateformat-4.4.1 (75c3341), closes #98

1.62.4 (2021-01-13)

  • Merge pull request #108 from mountain-pass/dependabot/npm_and_yarn/webpack-dev-server-3.11.2 (d89b739), closes #108

1.62.3 (2021-01-13)

  • Merge pull request #107 from mountain-pass/dependabot/npm_and_yarn/eslint-plugin-unicorn-26.0.1 (27830d8), closes #107

1.62.2 (2021-01-13)

  • ci(browserstack): fixing retry logic (f344d24)

1.62.2 (2021-01-12)

  • ci(browserstack): fixing retry logic (537cd04)
  • docs(badge): added conventional commits badge (6c724ed)
  • chore(release): updated CHANGELOG.md and version in README.md to 1.62.1 [skip-ci] (edba99d)
  • chore(release): version bump to 1.62.1. :tada: [skip-ci] (9115f7d)
  • chore(release): version bump to 1.62.2. :tada: [skip-ci] (33f894e)
  • Bump @babel/preset-env from 7.12.1 to 7.12.11 (0a09f7c)
  • Bump html-webpack-plugin from 4.5.0 to 4.5.1 (e3c8a8d)

1.62.0 (2021-01-12)

  • chore(release): updated CHANGELOG.md and version in README.md to 1.61.0 [skip-ci] (de51229)
  • chore(release): updated CHANGELOG.md and version in README.md to 1.62.0 [skip-ci] (f12126f)
  • chore(release): version bump to 1.61.0. :tada: [skip-ci] (19ccce6)
  • chore(release): version bump to 1.62.0. :tada: [skip-ci] (10a892b)
  • Bump @babel/core from 7.12.3 to 7.12.10 (517e693)
  • Bump @babel/node from 7.12.6 to 7.12.10 (22e3ac1)
  • Bump @babel/register from 7.12.1 to 7.12.10 (6b0b86d)
  • Bump markdownlint from 0.21.1 to 0.22.0 (4603764)
  • ci(release): version number now based on commits (43b666a)
  • build(dev): remove unused ngrok dependency (5ababb1)

1.60.0 (2021-01-12)

  • chore(npm): merge (960a64c)
  • chore(release): updated CHANGELOG.md and version in README.md to 1.60.0 [skip-ci] (c04e47d)
  • chore(release): version bump to 1.60.0. :tada: [skip-ci] (e1b2602)
  • chore(todo): updated TODO in README.md (e779fba)
  • feat(hal): initial HAL support (27e45c0)

1.59.0 (2021-01-12)

  • chore(release): updated CHANGELOG.md and version in README.md to 1.59.0 [skip-ci] (fd357a5)
  • chore(release): version bump to 1.59.0. :tada: [skip-ci] (0a111ec)
  • feat(response): added method for getting the response body (1bdec0e)
  • feat(response): added method for getting the response body (43f9731)

1.58.0 (2021-01-12)

  • chore(release): updated CHANGELOG.md and version in README.md to 1.57.0 [skip-ci] (9c64285)
  • chore(release): updated CHANGELOG.md and version in README.md to 1.58.0 [skip-ci] (886c14d)
  • chore(release): version bump to 1.57.0. :tada: [skip-ci] (b4f6932)
  • chore(release): version bump to 1.58.0. :tada: [skip-ci] (66eb488)
  • ci(browserstack): fixed syntax error in new retry logic (193667d)
  • ci(browserstack): moved to custom retry (c8bf99e)
  • ci(coverage): always upload coverage (1007824)
  • ci(coverage): re-added artifact uploading (92feadc)
  • ci(cucumber): turned off sending to reports.cucumber.io (9ad538c)
  • test(coverage): excluded takeTheWin() from coverage (78759b8)
  • docs: added missing JSDoc (f0bd106)
  • refactor(coverage): removed unnecessary if statements (158e0d0)
  • Bump utf-8-validate from 5.0.3 to 5.0.4 (4f3b94d)

1.56.0 (2021-01-11)

  • chore(release): updated CHANGELOG.md and version in README.md to 1.56.0 [skip-ci] (8a52f88)
  • chore(release): version bump to 1.56.0. :tada: [skip-ci] (abdb996)
  • Bump eslint-plugin-jsdoc from 30.7.13 to 31.0.3 (8679fdf)

1.55.0 (2021-01-11)

  • chore(release): updated CHANGELOG.md and version in README.md to 1.55.0 [skip-ci] (9371c9c)
  • chore(todo): updated TODO in README.md (da5ab5e)
  • ci(browserstack): added about if tests don't exit in a timely way (30171b3)
  • ci(browserstack): added initial wait back into the retry and increased polling variance (6d2b258)
  • ci(browserstack): added random wait before browserstack availability polling (0015bb7)
  • ci(browserstack): added step to quit browser when disconnected (8b40f3d)
  • ci(browserstack): added wait logic (731d215)
  • ci(browserstack): further increased time till initial browserstack availability poll (ec16faf)
  • ci(browserstack): increased random wait before browserstack availability polling (12e5765)
  • ci(browserstack): increased timeout (80e357b)
  • ci(browserstack): reduced frequency of browserstack availability polling (fa3c0c0)
  • ci(change-log): Switched to conventionalcommits format (83a43cb)
  • ci(coverage): disabling upload to codacy (4639790)
  • ci(snyk): added retry (7ba19a3)
  • feat(hal): initial HAL support (d5c700a)
  • fix(lint): fixed linting for commitlint.config.js (7e3d3b2)
  • docs(changelog): automated CHANGELOG.md generation (837c2dc)
  • test(body parameters): tests for body, query and path parameters at same time (899a4a9)
  • style(lint): added commit comment linting (ae374e2)
  • added support for multiple body parameters (9247e26)
  • Added test for multiple query/path params with extra parameters (3aad7ce)
  • Added test for multiple params of differing type (7fa54d6)
  • added tests for extra params with multiple body params (bc48505)
  • disabled test coverage downloading on IE (9591ed1)
  • removed report publishing (56c1096)
  • Version bump to 1.55.0. [skip-ci] (a25578e)

1.54.0 (2021-01-10)

  • Added support for GETting with multiple path parameters (ca49ac9)
  • Added support for multiple query parameters (d1d5a06)
  • Added test for multiple path/query params for different methods (14d8ef2)
  • test functions refactor (38e1a45)
  • testing post-pull hook (eae7c05)
  • updated README (cee1ffa)
  • Updated version in README.md to 1.54.0. [skip-ci] (8eee092)
  • updating todo list (d624b0f)
  • Version bump to 1.54.0. [skip-ci] (b7c0c3e)

1.53.0 (2021-01-10)

  • Bump webpack-dev-server from 3.11.0 to 3.11.1 (73d62ed)
  • Updated version in README.md to 1.53.0. [skip-ci] (5501cbe)
  • Version bump to 1.53.0. [skip-ci] (b0bab34)

1.52.0 (2021-01-10)

  • Updated version in README.md to 1.52.0. [skip-ci] (9d3c7a5)
  • Version bump to 1.52.0. [skip-ci] (1bc553b)
  • WIP codacy coverage reporting (7f718be)

1.51.0 (2021-01-10)

  • Add path parameter test for GET (dc842c9)
  • added logic for restarting selenium session after disconnect (37ed7c8)
  • added retry logic to cucumber (7328c5f)
  • added retries again because of browserstack flakiness (b1d8a87)
  • Added support for different form post content types (7a1f1db)
  • Added support for post body (f286c6a)
  • added support for sending multipart/form-data (93f4e4d)
  • Added tests for PUT and PATCH body (9872e00)
  • Added turnstyle to limit concurrent browser stack jobs (4766933)
  • Adding codacy integration (96d7860)
  • browserstack debugging (406027f)
  • Bump eslint-plugin-jsdoc from 30.7.8 to 30.7.13 (35caad6)
  • Bump jscpd from 3.3.21 to 3.3.23 (1725b66)
  • Bump lint-staged from 10.5.1 to 10.5.3 (793194b)
  • fixed coverage (882dc0f)
  • fixes for IE (f59bf65)
  • fixing coverage (9d39e3b)
  • fixing coverage and timeout (86b43e4)
  • I'm hoping that by selecting more recent OSs and devices, the browser-stack tests will run faster (62f6b6a)
  • increased test timeout (2633cc1)
  • increased timeout and logging (2ff96a0)
  • increasing retry timeout (43fb16a)
  • linting (16a83f5)
  • reducing logging again (7d58d6a)
  • reducing page updates during tests (a3aeeaa)
  • removed code climate and libraries.io badges (1121020)
  • removed retry on browser stack (c9ab1ec)
  • removed turnstyle from get-browser-list job (3aeee3a)
  • seeing if reduced logging stabilises the browserstack tests (923cabc)
  • switched to single session per browser test (e698812)
  • Updated version in README.md to 1.51.0. [skip-ci] (49a2dee)
  • upgraded cucumber to get retries and add report publishing (02760f3)
  • Version bump to 1.51.0. [skip-ci] (f261819)

1.50.0 (2021-01-07)

  • Bump humanize-duration from 3.24.0 to 3.25.1 (a05d711)
  • Updated version in README.md to 1.50.0. [skip-ci] (481b413)
  • Version bump to 1.50.0. [skip-ci] (120215a)

1.49.0 (2021-01-07)

  • Bump husky from 4.3.0 to 4.3.7 (3818125)
  • Updated version in README.md to 1.49.0. [skip-ci] (43d971d)
  • Version bump to 1.49.0. [skip-ci] (1c80b12)

1.48.0 (2021-01-07)

  • added hypermedia keyword (0da0c7d)
  • added hypermedia-client keyword (ecc0b4b)
  • removing dependabot beta - will revert to old version (db72f51)
  • Updated version in README.md to 1.48.0. [skip-ci] (6e16f2a)
  • Version bump to 1.48.0. [skip-ci] (f7843d3)
  • Vulnerability fixes (9e2130e)

1.47.0 (2021-01-04)

  • Bump eslint from 7.13.0 to 7.17.0 (10fd156)
  • Updated version in README.md to 1.47.0. [skip-ci] (327ce6b)
  • Version bump to 1.47.0. [skip-ci] (9f05992)

1.46.0 (2020-12-23)

  • added path parameter tests (8802a2c)
  • Updated version in README.md to 1.46.0. [skip-ci] (c512292)
  • Version bump to 1.46.0. [skip-ci] (c7a19df)

1.45.0 (2020-12-22)

  • added ability to call parameterised invocation (f74457d)
  • Added another parameterised invocation test (b4ffcf6)
  • Added POST test (055441a)
  • Added support for DELETE links (0944210)
  • Added test for parameterised invocation with extra params (a9892ff)
  • added tests for parameterised DELETE, POST, PUT, PATCH (1fba2e0)
  • Added tests for PUT and PATCH operations (0beea40)
  • fixed audit issues (72c3ee9)
  • fixed delete invocation (a0f372c)
  • fixing linting issues (16e8a63)
  • increased retries because of browserstack instability (dd7ec48)
  • increased timeout for android (a70c0bb)
  • Increased timeout for browser stack tests (d62f7d5)
  • reduced browser testing concurrency to 3 (5755683)
  • tweaking job dependencies (d381f62)
  • Updated version in README.md to 1.45.0. [skip-ci] (197b76b)
  • Version bump to 1.45.0. [skip-ci] (7117f5a)

1.44.0 (2020-12-07)

  • increased timeout (because Android can be slow) (9cee8ef)
  • removed codeclimate reporting (378c333)
  • Updated version in README.md to 1.44.0. [skip-ci] (2343a52)
  • Version bump to 1.44.0. [skip-ci] (9ee0578)

1.43.0 (2020-12-07)

  • added test for multiple follows (ae014e1)
  • fix for IE (cef7fba)
  • Updated version in README.md to 1.43.0. [skip-ci] (667e595)
  • Version bump to 1.43.0. [skip-ci] (31e3bc1)

1.42.0 (2020-12-06)

  • Bump core-js from 3.7.0 to 3.8.1 (d0ff46e)
  • Create Dependabot config file (89c7888)
  • it shouldn't be linting/building in the test jobs (8f44759)
  • tidy up (89565d8)
  • Updated version in README.md to 1.41.0. [skip-ci] (4fd20d6)
  • Updated version in README.md to 1.42.0. [skip-ci] (af9e4ea)
  • Version bump to 1.41.0. [skip-ci] (edddf16)
  • Version bump to 1.42.0. [skip-ci] (db25e16)

1.40.0 (2020-12-04)

  • clean before commit (3af0f1f)
  • Fixed linting (76da692)
  • Updated version in README.md to 1.40.0. [skip-ci] (ea81154)
  • Version bump to 1.40.0. [skip-ci] (b597e4a)

1.39.0 (2020-12-01)

  • added tests for follow to different resource (4e5e31f)
  • Bump eslint-plugin-jsdoc from 30.7.7 to 30.7.8 (905fbb8)
  • Bump moment-timezone from 0.5.31 to 0.5.32 (18a84d4)
  • removed some unused deps (5208c90)
  • removed unused (07abedd)
  • Updated version in README.md to 1.38.0. [skip-ci] (854d210)
  • Updated version in README.md to 1.39.0. [skip-ci] (9224d1f)
  • Version bump to 1.38.0. [skip-ci] (2ab04a3)
  • Version bump to 1.39.0. [skip-ci] (c45f56a)

1.37.0 (2020-11-30)

  • added example of invoking rel (dccae8e)
  • fixed duplication (7aaa2f8)
  • logging clean up (4bd155d)
  • refactoring operation names (975d8e1)
  • refactoring operation names (773c688)
  • Updated version in README.md to 1.37.0. [skip-ci] (92f66be)
  • Version bump to 1.37.0. [skip-ci] (46297a2)

1.36.0 (2020-11-29)

  • added debug for publish version issues (a5bd97c)
  • Added JS Docs (3789ca4)
  • Added json linting [skip-release] (8bb92b8)
  • Added markdown linting [skip-release] (dbacdaf)
  • Added npm tags (9c8d0a0)
  • added script for fixing sec issues (30e75bc)
  • Added snyk scanning (a498e90)
  • adding duplicate detection (fcef9bc)
  • coverage (5d6bf4b)
  • don't forget to kill the remote tunnel (df34f1b)
  • duplicates (222a3cd)
  • duplicates (5f7df2a)
  • duplicates (342771b)
  • duplicates be gone! (81c0af4)
  • fail on upgradable only [skip-release] (c0c6b63)
  • fixing linting issues (de9023b)
  • fix for android (7e05d16)
  • fixed direc tests (e795f3c)
  • fixed linting problems (66e4c8d)
  • fixed local coverage (6c31007)
  • fixing CI (d009200)
  • fixing code coverage reporting from IE (635e714)
  • Got IE tests working again (f595d84)
  • including dev dependencies in snyk scanning [skip-release] (ce1c10b)
  • increasing timeout for android tests (7f89c81)
  • logging tidy up (b6bf17a)
  • Mega commit (87f7290)
  • Note on security scanning (d8eea43)
  • only fail on vulnerabilities that can be fixed (092e84a)
  • refactoring for duplicates (28b0c96)
  • split browser stack runs to avoid exceeding queue (a10ea18)
  • split browser stack tunnel into separate class (b64c33b)
  • split test proxy and webdriver manager (6f2c7f5)
  • switched to JS Standard [skip-release] (471461f)
  • tidying up (3dc58ba)
  • updated notes about umd (bea2ca8)
  • Updated version in README.md to 1.36.0. [skip-ci] (0b27981)
  • updating security scanning (8f40c75)
  • Version bump to 1.35.0. [skip-ci] (c5fee13)
  • Version bump to 1.36.0. [skip-ci] (b3c76fa)
  • WIP security (fcd6b9e)
  • WIP security scanning (c231a45)
  • working on duplicates (208998d)
  • working on duplicates (2e580bb)

1.34.0 (2020-11-10)

  • Added npm audit check for vulnerabilities (546d2a4)
  • Updated version in README.md to 1.34.0. [skip-ci] (5093fe8)
  • Version bump to 1.34.0. [skip-ci] (362fa9b)

1.33.0 (2020-11-10)

  • Added android tests (c507263)
  • Added browserstack links [skip-ci] (5010491)
  • added cover script for ios tests (4aca6b2)
  • increased timeout and back-off for browser tests (3eb455d)
  • Updated version in README.md to 1.33.0. [skip-ci] (8977d69)
  • Version bump to 1.33.0. [skip-ci] (ea4921f)

1.32.0 (2020-11-10)

  • Added ios tests (4858440)
  • Updated version in README.md to 1.32.0. [skip-ci] (ca2067d)
  • Version bump to 1.32.0. [skip-ci] (ecc26fd)

1.31.0 (2020-11-09)

  • Bump depcheck from 1.3.0 to 1.3.1 (9e83522)
  • Updated version in README.md to 1.31.0. [skip-ci] (a5ea401)
  • Version bump to 1.31.0. [skip-ci] (5becd43)

1.30.0 (2020-11-09)

  • added codeclimate duplication check [skip-release] (504fe19)
  • added coverage check for local (b8c401e)
  • addeed CI retry logic for browserstack (56d5e7a)
  • Bump depcheck from 1.2.0 to 1.3.0 (ea0aaf5)
  • fixing coverage (9041f9d)
  • removed saucy variables (b065e02)
  • updated todo [skip-ci] (6f409c9)
  • Updated version in README.md to 1.29.0. [skip-ci] (8872d07)
  • Updated version in README.md to 1.30.0. [skip-ci] (d4cbecd)
  • Version bump to 1.29.0. [skip-ci] (a227533)
  • Version bump to 1.30.0. [skip-ci] (c5041f8)
  • wip coverage (ec6d632)
  • working on PRs from forks (47cfc9f)
  • working on PRs from forks (4152db1)

1.28.0 (2020-11-09)

  • Adding local chrome test to pipeline (52d9d48)
  • increasing test setup timeouts (dae0fa8)
  • Updated version in README.md to 1.28.0. [skip-ci] (3fc4c16)
  • Version bump to 1.28.0. [skip-ci] (3018388)
  • wip coverage (dbdd1e6)

1.27.0 (2020-11-09)

  • fixing CI config (4e5c0bd)
  • Updated version in README.md to 1.27.0. [skip-ci] (7f1d7e6)
  • Version bump to 1.27.0. [skip-ci] (38ac577)
  • WIP logic to skip jobs when secrets are not set (26ed78b)
  • WIP skip jobs when missing secrets (8d21d2f)

1.26.0 (2020-11-09)

  • added more webdriver debug [skip-release] (caab4de)
  • debugging how we detect fork (40cb8bb)
  • does git hub actions automatically disable jobs (4779c0c)
  • fixed coverage checker/reporter [skip-release] (f84c284)
  • fixed istanbul ignore [skip-release] (28fbcf2)
  • fixing CI config parsing error (8ec224c)
  • fixing eslint version for code-climate [skip-release] (8146f2c)
  • more work on detecting forks (4eb0378)
  • removed godban.github.io links [skip-ci] (b70077f)
  • removed unneeded global declaration [skip-release] (6a494d8)
  • Updated version in README.md to 1.26.0. [skip-ci] (1e5314a)
  • uploading test reports [skip-release] (cba856f)
  • Version bump to 1.26.0. [skip-ci] (ee20a89)
  • WIP coverage upload [skip-release] (e9106ed)
  • WIP coverage uploading [skip-release] (b663a97)
  • working on fork PR support (bfbb149)
  • working on PR from fork support (838b945)

1.25.0 (2020-11-09)

  • don't start tunnel if already started (0735bff)
  • Initial codeclimate config [skip-release] (a0385e6)
  • Updated version in README.md to 1.25.0. [skip-ci] (1f0360d)
  • Version bump to 1.25.0. [skip-ci] (16e56c1)
  • WIP coverage uploading [skip-release] (daea64d)

1.24.0 (2020-11-09)

  • added job for reporting coverage to codeclimate (20c5865)
  • Updated version in README.md to 1.24.0. [skip-ci] (4f4990b)
  • Version bump to 1.24.0. [skip-ci] (0d03ce4)

1.23.0 (2020-11-09)

  • Added automatic update of version in README (5fba6b1)
  • Added badges (f4f2dc4)
  • Added browserstack badge [skip-ci] (d2dd6ae)
  • Added code of conduct [skip-ci] (c12cc5e)
  • added information about commit tags [skip-ci] (f5a11ef)
  • added turnstyle CI action (2a305ef)
  • Adding option to skip release [skip-release] (cd07ca1)
  • Bump @babel/node from 7.12.1 to 7.12.6 (9b8a29b)
  • Bump @babel/node from 7.12.1 to 7.12.6 (27da762)
  • Bump @babel/preset-react from 7.12.1 to 7.12.5 (28545b6)
  • Bump @babel/runtime from 7.12.1 to 7.12.5 (cb5c5a7)
  • Fixed linting errors (a4db7f8)
  • fixed skip-ci [skip-ci] (72cb599)
  • fixed typo [skip-ci] (bb97fc3)
  • fixing CI config [skip-release] (f88a2e4)
  • fixing publish (b5b9406)
  • More todo [skip-ci] (eaabe40)
  • moved development guidelines out of readme [skip-ci] (d67f64e)
  • Updated version in README.md to 1.23.0. [skip-ci] (105ce60)
  • Version bump to 1.22.0. [skip ci] (a457941)
  • Version bump to 1.23.0. [skip-ci] (1c7e78b)

1.21.0 (2020-11-08)

  • added missing await on sending test results (d35cd50)
  • trying to fix BS tunnel again (b390259)
  • tweaking CI (96e1d34)
  • Version bump to 1.21.0. [skip ci] (ddafabc)

1.20.0 (2020-11-08)

  • switched to browserstack (36b8590)
  • Bump eslint from 7.12.1 to 7.13.0 (94a626d)
  • Bump saucelabs from 4.5.1 to 4.5.2 (85f0319)
  • Bump webpack-cli from 4.1.0 to 4.2.0 (a923b89)
  • debugging browserstack tests (e27eb03)
  • fixing build (98d1875)
  • fixing build (3e64654)
  • refactored and simplified browser testing framework (159ab8f)
  • refactored pipeline (8045e71)
  • trying to fix tunnel (940131c)
  • trying to get tunnel working on CI (0f2468c)
  • Version bump to 1.17.0. [skip ci] (63d2d79)
  • Version bump to 1.18.0. [skip ci] (a666565)
  • Version bump to 1.19.0. [skip ci] (2ccf82c)
  • Version bump to 1.20.0. [skip ci] (3c07f42)
  • WIP fixing build (cee599d)
  • WIP fixing build (69317f2)
  • WIP fixing build (148f9c4)
  • WIP IE issues (973ffe0)

1.16.0 (2020-11-03)

  • Added Edge browser testing (b40f708)
  • Version bump to 1.16.0. [skip ci] (1a3aeaf)

1.15.0 (2020-11-02)

  • ignore publishing errors for now (079109b)
  • Version bump to 1.15.0. [skip ci] (1d7a604)

1.14.0 (2020-11-02)

  • removed redundant nyc config (88b548c)
  • tidying up nyc config (d4e8564)
  • trying out report publishing (23e2e44)
  • Updated TODO [skip ci] (63aad89)
  • Version bump to 1.14.0. [skip ci] (2917f10)
  • CI: improved caching (4c90848)

1.13.0 (2020-11-02)

  • CI: working on dynamic browser matrix (90de8eb)
  • CI: working on dynamic browser matrix (3a8dfee)
  • CI: working on dynamic browser matrix (db1a218)
  • CI: working on dynamic browser matrix (3a79ebc)
  • CI: working on dynamic browser matrix (f70833b)
  • CI: working on dynamic browser matrix (f9fe92e)
  • CI: working on dynamic browser matrix (1475266)
  • CI: working on dynamic browser matrix (674bbe5)
  • updating lock file when bumping version [skip ci] (9b3a539)
  • Version bump to 1.12.0. [skip ci] (edadfbe)
  • Version bump to 1.13.0. [skip ci] (682fcbe)

1.11.0 (2020-11-02)

  • added CI dependency caching (f50dd64)
  • Version bump to 1.11.0. [skip ci] (dea405c)

1.10.0 (2020-11-02)

1.9.0 (2020-11-01)

  • Added node version to saucy tags (bb6a463)
  • Fixed safari execution on saucy (3d56fcf)
  • Version bump to 1.9.0. [skip ci] (6ccde56)

1.8.0 (2020-11-01)

  • Added safari tests (21623e5)
  • Bump lint-staged from 10.5.0 to 10.5.1 (2e2c47d)
  • Bump url-polyfill from 1.1.11 to 1.1.12 (b76efe5)
  • ignore local safari for CI coverage (ee7a8c0)
  • Ignore safari local coverage when using saucy (abcf308)
  • Version bump to 1.6.0. [skip ci] (2f3880e)
  • Version bump to 1.7.0. [skip ci] (de5279b)
  • Version bump to 1.8.0. [skip ci] (cc6af68)

1.5.0 (2020-10-30)

  • refactoring scripts (1ed1680)
  • Version bump to 1.5.0. [skip ci] (d02ef94)

1.4.0 (2020-10-30)

  • Added workflow status badge [skip ci] (201853b)
  • fixing publish (2d48677)
  • unpkg support and browser instructions (7be7d12)
  • Version bump to 1.4.0. [skip ci] (a71a92d)

1.3.0 (2020-10-29)

  • added firefox testing (dd29201)
  • Added istanbul linting (d93892e)
  • Added saucelabs status matrix badge [skip ci] (2f10e7f)
  • Browser testing via saucelabs on CI (b24f02c)
  • Bump clean-webpack-plugin from 1.0.1 to 3.0.0 (3542b34)
  • Bump concurrently from 4.1.2 to 5.3.0 (e38cec2)
  • Bump depcheck from 0.9.2 to 1.2.0 (7d6bf9a)
  • Bump eslint from 7.11.0 to 7.12.1 (3396720)
  • Bump eslint-config-prettier from 6.14.0 to 6.15.0 (f124200)
  • Bump html-webpack-plugin from 3.2.0 to 4.5.0 (d9df6bb)
  • Bump lint-staged from 10.4.2 to 10.5.0 (fe4c5ab)
  • Bump webpack-cli from 3.3.12 to 4.1.0 (296f33d)
  • changing default shell to bash (276f224)
  • changing default shell to bash (91b0574)
  • conditional builds [skip ci] (eaed209)
  • fixes for webpack upgrade (7e5ff24)
  • fixing istanbul ignore (cd93798)
  • fixing saucy tunnel ID (36fef83)
  • fixing tunnel ID for saucy (2d854c7)
  • fixing webpack upgrade (403be68)
  • Ignore local run parameters from code coverage (271fdd6)
  • updated TODO [skip ci] (3446475)
  • updating todo [skip ci] (e46928e)
  • Version bump to 1.1.0. [skip ci] (40cc3ad)
  • Version bump to 1.2.0. [skip ci] (ac47536)
  • Version bump to 1.3.0. [skip ci] (86a099c)
  • WIP conditional builds [skip ci] (c76d9a6)
  • working on CI (c640668)
  • working on CI (c6024c5)
  • working on CI (c6b95c3)
  • working on CI (adc128c)
  • working on CI (fce5e86)
  • working on CI (910689d)
  • CI: removed artifact upload because the server is flaky (59397aa)

1.0.1 (2020-10-27)

1.0.0 (2020-10-27)