@mountainpass/waychaser 4.0.38 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +37 -26
  3. package/dist/augment-options.d.ts +29 -0
  4. package/dist/augment-options.js +70 -0
  5. package/dist/augment-options.js.map +1 -0
  6. package/dist/expand-operation.d.ts +5 -0
  7. package/dist/expand-operation.js +78 -0
  8. package/dist/expand-operation.js.map +1 -0
  9. package/dist/handlers/hal/de-curie.d.ts +9 -0
  10. package/dist/handlers/hal/de-curie.js +50 -0
  11. package/dist/handlers/hal/de-curie.js.map +1 -0
  12. package/dist/handlers/hal/hal-handler.d.ts +6 -0
  13. package/dist/handlers/hal/hal-handler.js +91 -0
  14. package/dist/handlers/hal/hal-handler.js.map +1 -0
  15. package/dist/handlers/hal/map-hal-link-to-operation.d.ts +7 -0
  16. package/dist/handlers/hal/map-hal-link-to-operation.js +40 -0
  17. package/dist/handlers/hal/map-hal-link-to-operation.js.map +1 -0
  18. package/dist/handlers/link-header/link-header-handler.d.ts +7 -0
  19. package/dist/handlers/link-header/link-header-handler.js +83 -0
  20. package/dist/handlers/link-header/link-header-handler.js.map +1 -0
  21. package/dist/handlers/location-header/location-header-handler.d.ts +5 -0
  22. package/dist/handlers/location-header/location-header-handler.js +16 -0
  23. package/dist/handlers/location-header/location-header-handler.js.map +1 -0
  24. package/dist/handlers/siren/map-siren-action-to-operation.d.ts +6 -0
  25. package/dist/handlers/siren/map-siren-action-to-operation.js +63 -0
  26. package/dist/handlers/siren/map-siren-action-to-operation.js.map +1 -0
  27. package/dist/handlers/siren/map-siren-link-to-operation.d.ts +13 -0
  28. package/dist/handlers/siren/map-siren-link-to-operation.js +43 -0
  29. package/dist/handlers/siren/map-siren-link-to-operation.js.map +1 -0
  30. package/dist/handlers/siren/siren-action-handler.d.ts +5 -0
  31. package/dist/handlers/siren/siren-action-handler.js +46 -0
  32. package/dist/handlers/siren/siren-action-handler.js.map +1 -0
  33. package/dist/handlers/siren/siren-handler.d.ts +6 -0
  34. package/dist/handlers/siren/siren-handler.js +48 -0
  35. package/dist/handlers/siren/siren-handler.js.map +1 -0
  36. package/dist/handlers/siren/siren-link-handler.d.ts +6 -0
  37. package/dist/handlers/siren/siren-link-handler.js +59 -0
  38. package/dist/handlers/siren/siren-link-handler.js.map +1 -0
  39. package/dist/operation-array.d.ts +12 -0
  40. package/dist/operation-array.js +110 -0
  41. package/dist/operation-array.js.map +1 -0
  42. package/dist/operation.d.ts +24 -0
  43. package/dist/operation.js +304 -0
  44. package/dist/operation.js.map +1 -0
  45. package/dist/util/media-types.d.ts +5 -0
  46. package/dist/util/media-types.js +8 -0
  47. package/dist/util/media-types.js.map +1 -0
  48. package/dist/util/method-can-have-body.d.ts +4 -0
  49. package/dist/util/method-can-have-body.js +11 -0
  50. package/dist/util/method-can-have-body.js.map +1 -0
  51. package/dist/util/parse-accept.d.ts +6 -0
  52. package/dist/util/parse-accept.js +85 -0
  53. package/dist/util/parse-accept.js.map +1 -0
  54. package/dist/util/parse-operations.d.ts +14 -0
  55. package/dist/util/parse-operations.js +94 -0
  56. package/dist/util/parse-operations.js.map +1 -0
  57. package/dist/util/preferred-content-type.d.ts +6 -0
  58. package/dist/util/preferred-content-type.js +23 -0
  59. package/dist/util/preferred-content-type.js.map +1 -0
  60. package/dist/util/uri-template-lite.d.ts +1 -0
  61. package/dist/util/uri-template-lite.js +31 -0
  62. package/dist/util/uri-template-lite.js.map +1 -0
  63. package/dist/waychaser.d.ts +130 -0
  64. package/dist/waychaser.es.js +2331 -0
  65. package/dist/waychaser.es.min.js +15 -0
  66. package/dist/waychaser.js +582 -4527
  67. package/dist/waychaser.js.map +1 -1
  68. package/package.json +36 -63
  69. package/dist/waychaser.cjs +0 -14
  70. package/dist/waychaser.cjs.map +0 -1
  71. package/dist/waychaser.min.js +0 -7
  72. package/dist/waychaser.min.js.map +0 -1
  73. package/dist/waychaser.mjs +0 -14
  74. package/dist/waychaser.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ ## <small>5.0.2 (2022-06-26)</small>
2
+
3
+ * Merge pull request #488 from mountain-pass/dependabot/npm_and_yarn/shell-quote-1.7.3 ([8a5b378](https://github.com/mountain-pass/waychaser/commit/8a5b378)), closes [#488](https://github.com/mountain-pass/waychaser/issues/488)
4
+
5
+
6
+
7
+ ## <small>5.0.1 (2022-06-26)</small>
8
+
9
+ * feat(defaults): defaults are now accessible via `waychaser.currentDefaults` ([987d73b](https://github.com/mountain-pass/waychaser/commit/987d73b))
10
+
11
+
12
+
13
+ ## 5.0.0 (2022-06-20)
14
+
15
+ * ci(test): removing node 10.x tests ([a4aae3b](https://github.com/mountain-pass/waychaser/commit/a4aae3b))
16
+
17
+
18
+
1
19
  ## <small>4.0.38 (2021-11-15)</small>
2
20
 
3
21
  * fix(cjs): fixed import issues ([595240b](https://github.com/mountain-pass/waychaser/commit/595240b))
package/README.md CHANGED
@@ -5,30 +5,11 @@ Client library for HATEOAS level 3 RESTful APIs that provide hypermedia controls
5
5
  - [HAL](https://tools.ietf.org/html/draft-kelly-json-hal-08)
6
6
  - [Siren](https://github.com/kevinswiber/siren)
7
7
 
8
- This [isomorphic](https://en.wikipedia.org/wiki/Isomorphic_JavaScript) library is compatible with Node.js 10.x, 12.x and 14.x, Chrome, Firefox, Safari, Edge and even IE.
9
- <img alt="aw yeah!" src="./docs/images/aw_yeah.gif" width="20" height="20" />
10
-
11
- [![License](https://img.shields.io/github/license/mountain-pass/waychaser?logo=apache)](https://github.com/mountain-pass/waychaser/blob/master/LICENSE) [![npm](https://img.shields.io/npm/v/@mountainpass/waychaser?logo=npm)](https://www.npmjs.com/package/@mountainpass/waychaser) [![npm downloads](https://img.shields.io/npm/dm/@mountainpass/waychaser?logo=npm)](https://www.npmjs.com/package/@mountainpass/waychaser)
12
- [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmountain-pass%2Fwaychaser.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fmountain-pass%2Fwaychaser?ref=badge_shield)
13
-
14
- [![Build Status](https://img.shields.io/github/workflow/status/mountain-pass/waychaser/Build?logo=github)](https://github.com/mountain-pass/waychaser/actions?query=workflow%3ABuild) [![BrowserStack Status](https://img.shields.io/badge/dynamic/json?label=BrowserStack&query=%24.status&url=https%3A%2F%2Fautomate.browserstack.com%2Fapi%2Fv1%2Fpublic-builds%2FM2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ%3D%3D--8a61c301655735baed333d4f305980a13ef32c25&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAACfFBMVEX////ocDTobzToVzroOzznQT3lSj7mUkLud072ql3ocDTnbDbhdkbzllf5wmLobzTnbzT0oFn3wGHnbzTocTP5t2DnbzT4vmHobzT6vWLobzT7u2HocDT7vGLpejr5vWHtjkT3vmH0rlf3vGD3wWPulUj3v2H3vGD3v2H3vGD3vWD3wGL3vGD3vGD3vGD3wGL3vWD3vmH3vGD3vWD3v2L3wWL3wWL3wGL3vmHnPjvkUUDTmlm8vGi2xWXAwknRpDroPTngaFWvybZlyeE3ut8jt9xQvMyFyIC2zjnZlEbnVjfiU1Gyz9NSwu4Ss9xEnLZFl68AqM8Asttyu3Kx0DrgnkvnbzTnPTrOqaF/0/NArdBOYGcjHyAkISJoc3kjosYjsrB/wEbGxELyrlroaDPkTUi70NRvxuZefo14enzFxshNXmgAscBntlGnykPrvFXoZjPiV0631t59yeVWZG1EREZKSkw4PkMbsL1ltVCTxUbnx1PoaTPeVkSvz82b1utogI1MX2tJuK9qtkmRxEjpw1LobDLiUzektY+t4faYx9hXX2Q/RkxrrcV3vXlktkmjxEXxt1TmazLsXjW1iEiKzq+x3fGr1+uas8GTrb2Yyt+KxZlptklsvk7MtkH5slrpbTPjYziSpEp2xIaYzrSbz7+Uyq2Bv3hmtkphvE+ut0LumUb5vmLmaDLqazPjazihnUJptUleukxbukpeukp4uk26qD/qgzr4tFztkUXpaTLqaDTXfjnAkD+6lUDHkD3ffDTudzj1rlj3wGHxo1DqfzvnbjTqZzLsYzHtZDLtbjbwjUT2uF33wGLzrVfxoU/wn07yp1P1tlz3wWLShVqMAAAAOXRSTlMBE3XD5+3r05k5Rd39lwtB97sLEd+ZbzXBm+PT6efl583Tj5kt+/0zi5MHr7UJBYv5+5Exj83l5c0M9lQxAAABD0lEQVQY02NgYGBgZGJmYWVj5+BkgAAubksraxtbO3seXj4Qn1/AwdHJ2cXVzd3DU1CIgUFYxMvbx9fPPyAwKDgkVJSBQSwsPCIyKjomNi4+ITEpWZxBIiU1LT0jJiYzKzsnNy9fkkGqoLCouCQmprSsvKKyqlqaQaamtq6+IQYIGpuaW1plGeTa2js6u7pjYnp6+/onTJRnUJg0ecrUadNnzJw1e87cefMVGZTCFixctHjJ0mXLV6xctXqNMoOK6tp16zds3LR5y9Zt23eoqTMwaOyctGv3nr379h84eOiwJtDpWtpHjh47fuLkqdNnzurogjyjp29w7vyFi5cuGxrpQv1rbGJqZm6hqQ5iAwBfVVxc6RHpXAAAAABJRU5ErkJggg==)](https://automate.browserstack.com/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25)
15
-
16
- [![GitHub issues](https://img.shields.io/github/issues/mountain-pass/waychaser?logo=github)](https://github.com/mountain-pass/waychaser/issues) [![GitHub pull requests](https://img.shields.io/github/issues-pr/mountain-pass/waychaser?logo=github)](https://github.com/mountain-pass/waychaser/pulls)
17
-
18
- [![Quality](https://img.shields.io/codacy/grade/940768d54f7545f7b42f89b26c23c751?logo=codacy)](https://www.codacy.com/gh/mountain-pass/waychaser/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=mountain-pass/waychaser&amp;utm_campaign=Badge_Grade) [![Coverage](https://img.shields.io/codacy/coverage/940768d54f7545f7b42f89b26c23c751?logo=codacy)](https://www.codacy.com/gh/mountain-pass/waychaser/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mountain-pass/waychaser&utm_campaign=Badge_Coverage)
19
-
20
- [![source code vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/mountain-pass/waychaser?label=source%20code%20vulnerabilities&logo=snyk)](https://snyk.io/test/github/mountain-pass/waychaser) [![npm package vulnerabilities](https://img.shields.io/snyk/vulnerabilities/npm/@mountainpass/waychaser@4.0.38?label=npm%20package%20vulnerabilties&logo=snyk)](https://snyk.io/test/npm/@mountainpass/waychaser/4.0.38)
21
-
22
-
23
- [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
24
-
25
- ![I love badges](https://img.shields.io/badge/%E2%99%A5%20i%20love-%20badges-green?logo=heart)
26
-
27
- [![JavaScript Style Guide](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard)
28
-
29
- | <img src="https://nodejs.org/static/images/logos/nodejs-new-pantone-black.svg" alt="Node.js" width="24px" height="24px" /><br/>Node.js | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" /><br/>Chrome](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22chrome%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" /><br/>Firefox](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22firefox%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" /><br/>Safari](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22safari%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="Edge" width="24px" height="24px" /><br/>Edge](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22edge%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png" alt="iOS" width="24px" height="24px" /><br/>iOS](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?oses=[{%22os%22:%22ios%22}]) | [<img src="https://source.android.com/setup/images/Android_symbol_green_RGB.svg" alt="Android" width="24px" height="24px" /><br/>Android](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?oses=[{%22os%22:%22android%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png" alt="IE" width="24px" height="24px" /><br/>IE](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22ie%22}]) |
30
- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
31
- | 10.x, 12.x, 14.x | latest version | latest version | latest version | latest version | latest version | latest version | 11 |
8
+ This [isomorphic](https://en.wikipedia.org/wiki/Isomorphic_JavaScript) library is compatible with Node.js 12.x, 14.x and 16.x, Chrome, Firefox, Safari and Edge.
9
+
10
+ | <img src="https://nodejs.org/static/images/logos/nodejs-new-pantone-black.svg" alt="Node.js" width="24px" height="24px" /><br/>Node.js | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" /><br/>Chrome](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22chrome%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" /><br/>Firefox](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22firefox%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" /><br/>Safari](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22safari%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="Edge" width="24px" height="24px" /><br/>Edge](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?browsers=[{%22browser%22:%22edge%22}]) | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png" alt="iOS" width="24px" height="24px" /><br/>iOS](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?oses=[{%22os%22:%22ios%22}]) | [<img src="https://source.android.com/setup/images/Android_symbol_green_RGB.svg" alt="Android" width="24px" height="24px" /><br/>Android](https://automate.browserstack.com/dashboard/v2/public-build/M2lUc2Q3VFJicFR2c0N6Y0JvZE5oSXAvYlpUQ1ZPMXgxalpUK2ZtNTdPcz0tLVR3QzU5TXllbEZnemhqK2Z5VEpVQ2c9PQ==--8a61c301655735baed333d4f305980a13ef32c25?oses=[{%22os%22:%22android%22}]) |
11
+ | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
12
+ | 12.x, 14.x, 16.x | latest version | latest version | latest version | latest version | latest version | latest version |
32
13
 
33
14
  [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fmountain-pass%2Fwaychaser.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fmountain-pass%2Fwaychaser?ref=badge_large)
34
15
 
@@ -62,6 +43,7 @@ This [isomorphic](https://en.wikipedia.org/wiki/Isomorphic_JavaScript) library i
62
43
  - [Invoking missing operations](#invoking-missing-operations)
63
44
  - [Handling location headers](#handling-location-headers)
64
45
  - [Upgrading from 3.x to 4.x](#upgrading-from-3x-to-4x)
46
+ - [Problem vs WayChaserResponse](#problem-vs-waychaserresponse)
65
47
 
66
48
  # Usage
67
49
 
@@ -89,7 +71,7 @@ try {
89
71
  ```html
90
72
  <script
91
73
  type="text/javascript"
92
- src="https://unpkg.com/@mountainpass/waychaser@4.0.38"
74
+ src="https://unpkg.com/@mountainpass/waychaser@5.0.2"
93
75
  ></script>
94
76
 
95
77
  ...
@@ -663,4 +645,33 @@ updated resource in the response.
663
645
  # Upgrading from 3.x to 4.x
664
646
 
665
647
  Previously WayChaser provided a default instance via the `waychaser` export. This is no longer the case and you will
666
- need to create your own instance using `new WayChaser()`
648
+ need to create your own instance using `new WayChaser()`
649
+
650
+
651
+ ## Problem vs WayChaserResponse
652
+
653
+ Problems can be client side or server side
654
+
655
+ Client side
656
+ - fetch throws exception - No Response
657
+ - can't parse response - Has Response
658
+ - can parse response, but the type predicate fails - Has Response
659
+
660
+ Server side
661
+ - server returns problem document - Has Response
662
+
663
+ Response may include links that tell the client how to resolve,
664
+ so we want it to be a WayChaserResponse
665
+
666
+ Options:
667
+ 1. invoke returns WayChaserResponse with problem or content
668
+ - client uses content !== undefined && problem === undefined to check if the were not problems
669
+ - unclear if we got a problem or not
670
+ 2. invoke returns a clean WayChaserResponse with content or a WayChaserProblem with a problem document
671
+ - client would need to use instanceOf to differentiate
672
+ - clean WayChaserResponse has a response and content (which could be expectedly undefined)
673
+ - WayChaserProblem has a problem document and may or may not have a response
674
+ 3. invoke returns a clean WayChaserResponse or a ProblemDocument with optional waychaser response as extention
675
+ - client would need to use instanceOf to differentiate
676
+ - if server returns PD, then do we wrap the PD? Feels ugly
677
+
@@ -0,0 +1,29 @@
1
+ import { WayChaserOptions } from './waychaser';
2
+ /**
3
+ * @param baseOptions
4
+ * @param additionalOptions
5
+ */
6
+ export declare function augmentOptions<BaseContent, AdditionalContent>(baseOptions: WayChaserOptions<BaseContent>, additionalOptions?: Partial<WayChaserOptions<AdditionalContent>>): {
7
+ defaultHandlers: import("./waychaser").HandlerSpec[];
8
+ handlers: never[];
9
+ headers: {};
10
+ body?: BodyInit | null | undefined;
11
+ cache?: RequestCache | undefined;
12
+ credentials?: RequestCredentials | undefined;
13
+ integrity?: string | undefined;
14
+ keepalive?: boolean | undefined;
15
+ method?: string | undefined;
16
+ mode?: RequestMode | undefined;
17
+ redirect?: RequestRedirect | undefined;
18
+ referrer?: string | undefined;
19
+ referrerPolicy?: ReferrerPolicy | undefined;
20
+ signal?: AbortSignal | null | undefined;
21
+ window?: null | undefined;
22
+ fetch: typeof fetch;
23
+ preInterceptors: ((uriOrRequest: any, updateOptions: any, stopper: any) => void)[];
24
+ postInterceptors: (<InterceptorContent>(response: import("./waychaser").WayChaserResponse<InterceptorContent>, stop: import("./waychaser").Stopper) => void)[];
25
+ postErrorInterceptors: ((error: Error | import("./waychaser").WayChaserProblem, stopper: import("./waychaser").Stopper) => void)[];
26
+ contentParser: (response: Response) => Promise<unknown>;
27
+ parameters?: Record<string, unknown> | undefined;
28
+ validator?: import("./waychaser").Validator<AdditionalContent> | import("./waychaser").Validator<BaseContent> | undefined;
29
+ };
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.augmentOptions = void 0;
51
+ var waychaser_1 = require("./waychaser");
52
+ /**
53
+ * @param baseOptions
54
+ * @param additionalOptions
55
+ */
56
+ function augmentOptions(baseOptions, additionalOptions) {
57
+ var baseHandlers = baseOptions.handlers, baseDefaultHandlers = baseOptions.defaultHandlers, baseHeaders = baseOptions.headers, baseOther = __rest(baseOptions, ["handlers", "defaultHandlers", "headers"]);
58
+ var _a = additionalOptions || {}, additionalHandlers = _a.handlers, additionalDefaultHandlers = _a.defaultHandlers, additionalHeaders = _a.headers, additionalOther = __rest(_a, ["handlers", "defaultHandlers", "headers"]);
59
+ // if additional has default, don't use base default
60
+ // if additional has handlers, don;'t use base handlers
61
+ // augment({ dh: [XXX] }, { h: [YYY] }) => { h: [], dh: [YYY, XXX] }
62
+ // augment({ dh: [XXX] }, { h: [YYY], dh: [] }) => { h: [], dh: [YYY] }
63
+ // augment({ dh: [YYY, XXX] }, { h: [ZZZ] }) => { h: [], dh: [ZZZ, YYY, XXX] }
64
+ // augment({ dh: [YYY, XXX] }, { h: [ZZZ], dh: [] }) => { h: [], dh: [ZZZ] }
65
+ var mergedHandlers = (0, waychaser_1.sortHandlers)(__spreadArray(__spreadArray([], __read((additionalHandlers || baseHandlers || [])), false), __read((additionalDefaultHandlers || baseDefaultHandlers || [])), false));
66
+ var finalOptions = __assign(__assign(__assign({}, baseOther), additionalOther), { defaultHandlers: mergedHandlers, handlers: [], headers: __assign(__assign({}, baseHeaders), additionalHeaders) });
67
+ return finalOptions;
68
+ }
69
+ exports.augmentOptions = augmentOptions;
70
+ //# sourceMappingURL=augment-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augment-options.js","sourceRoot":"","sources":["../src/augment-options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4D;AAE5D;;;GAGG;AACH,SAAgB,cAAc,CAC5B,WAA0C,EAC1C,iBAAgE;IAG9D,IAAU,YAAY,GAIpB,WAAW,SAJS,EACL,mBAAmB,GAGlC,WAAW,gBAHuB,EAC3B,WAAW,GAElB,WAAW,QAFO,EACjB,SAAS,UACV,WAAW,EALT,0CAKL,CADa,CACC;IACf,IAAM,KAKF,iBAAiB,IAAI,EAAE,EAJf,kBAAkB,cAAA,EACX,yBAAyB,qBAAA,EACjC,iBAAiB,aAAA,EACvB,eAAe,cAJd,0CAKL,CAA0B,CAAA;IAE3B,oDAAoD;IACpD,uDAAuD;IACvD,oEAAoE;IACpE,uEAAuE;IACvE,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAM,cAAc,GAAG,IAAA,wBAAY,yCAC9B,CAAC,kBAAkB,IAAI,YAAY,IAAI,EAAE,CAAC,kBAC1C,CAAC,yBAAyB,IAAI,mBAAmB,IAAI,EAAE,CAAC,UAC3D,CAAA;IAEF,IAAM,YAAY,kCACb,SAAS,GACT,eAAe,KAClB,eAAe,EAAE,cAAc,EAC/B,QAAQ,EAAE,EAAE,EACZ,OAAO,wBACF,WAAW,GACX,iBAAiB,IAEvB,CAAA;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAvCD,wCAuCC"}
@@ -0,0 +1,5 @@
1
+ import { Operation } from './operation';
2
+ /**
3
+ * @param operation
4
+ */
5
+ export declare function expandOperation(operation: Operation): Operation[];
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __values = (this && this.__values) || function(o) {
3
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
+ if (m) return m.call(o);
5
+ if (o && typeof o.length === "number") return {
6
+ next: function () {
7
+ if (o && i >= o.length) o = void 0;
8
+ return { value: o && o[i++], done: !o };
9
+ }
10
+ };
11
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.expandOperation = void 0;
15
+ var operation_1 = require("./operation");
16
+ /**
17
+ * @param operation
18
+ */
19
+ function expandOperation(operation) {
20
+ var e_1, _a, e_2, _b;
21
+ var expandedOperations = [];
22
+ var rangeRegex = /{\[(\d+)..(\d+)]}/;
23
+ var originalUrl = operation.uri.toString();
24
+ var matches = originalUrl.match(rangeRegex);
25
+ if (matches) {
26
+ for (var index = Number.parseInt(matches[1]); index <= Number.parseInt(matches[2]); ++index) {
27
+ var newOp = new operation_1.Operation(Object.assign(operation, {
28
+ uri: originalUrl.replace(rangeRegex, index.toFixed(0))
29
+ }));
30
+ var thisExpandedOperations = expandOperation(newOp);
31
+ try {
32
+ for (var thisExpandedOperations_1 = (e_1 = void 0, __values(thisExpandedOperations)), thisExpandedOperations_1_1 = thisExpandedOperations_1.next(); !thisExpandedOperations_1_1.done; thisExpandedOperations_1_1 = thisExpandedOperations_1.next()) {
33
+ var operation_2 = thisExpandedOperations_1_1.value;
34
+ expandedOperations.push(operation_2);
35
+ }
36
+ }
37
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
38
+ finally {
39
+ try {
40
+ if (thisExpandedOperations_1_1 && !thisExpandedOperations_1_1.done && (_a = thisExpandedOperations_1.return)) _a.call(thisExpandedOperations_1);
41
+ }
42
+ finally { if (e_1) throw e_1.error; }
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ var originalAnchor = operation.anchor;
48
+ var anchorMatches = originalAnchor === null || originalAnchor === void 0 ? void 0 : originalAnchor.match(rangeRegex);
49
+ if (originalAnchor &&
50
+ anchorMatches) {
51
+ for (var index = Number.parseInt(anchorMatches[1]); index <= Number.parseInt(anchorMatches[2]); ++index) {
52
+ var newOp = new operation_1.Operation(Object.assign(operation, {
53
+ anchor: originalAnchor.replace(rangeRegex, index.toFixed(0))
54
+ }));
55
+ var thisExpandedOperations = expandOperation(newOp);
56
+ try {
57
+ for (var thisExpandedOperations_2 = (e_2 = void 0, __values(thisExpandedOperations)), thisExpandedOperations_2_1 = thisExpandedOperations_2.next(); !thisExpandedOperations_2_1.done; thisExpandedOperations_2_1 = thisExpandedOperations_2.next()) {
58
+ var operation_3 = thisExpandedOperations_2_1.value;
59
+ expandedOperations.push(operation_3);
60
+ }
61
+ }
62
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
63
+ finally {
64
+ try {
65
+ if (thisExpandedOperations_2_1 && !thisExpandedOperations_2_1.done && (_b = thisExpandedOperations_2.return)) _b.call(thisExpandedOperations_2);
66
+ }
67
+ finally { if (e_2) throw e_2.error; }
68
+ }
69
+ }
70
+ }
71
+ else {
72
+ expandedOperations.push(operation);
73
+ }
74
+ }
75
+ return expandedOperations;
76
+ }
77
+ exports.expandOperation = expandOperation;
78
+ //# sourceMappingURL=expand-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand-operation.js","sourceRoot":"","sources":["../src/expand-operation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,yCAAuC;AAEvC;;GAEG;AACH,SAAgB,eAAe,CAAE,SAAoB;;IACnD,IAAM,kBAAkB,GAAgB,EAAE,CAAA;IAC1C,IAAM,UAAU,GAAG,mBAAmB,CAAA;IACtC,IAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;IAC5C,IAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAC7C,IAAI,OAAO,EAAE;QACX,KACE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACvC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACpC,EAAE,KAAK,EACP;YACA,IAAM,KAAK,GAAG,IAAI,qBAAS,CACzB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;gBACvB,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACvD,CAAC,CACH,CAAA;YACD,IAAM,sBAAsB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;;gBACrD,KAAwB,IAAA,0CAAA,SAAA,sBAAsB,CAAA,CAAA,8DAAA,kGAAE;oBAA3C,IAAM,WAAS,mCAAA;oBAClB,kBAAkB,CAAC,IAAI,CAAC,WAAS,CAAC,CAAA;iBACnC;;;;;;;;;SACF;KACF;SAAM;QACL,IAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAA;QACvC,IAAM,aAAa,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACvD,IAAI,cAAc;YAChB,aAAa,EAAE;YACf,KACE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC7C,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC1C,EAAE,KAAK,EACP;gBACA,IAAM,KAAK,GAAG,IAAI,qBAAS,CACzB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBAC7D,CAAC,CACH,CAAA;gBACD,IAAM,sBAAsB,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;;oBACrD,KAAwB,IAAA,0CAAA,SAAA,sBAAsB,CAAA,CAAA,8DAAA,kGAAE;wBAA3C,IAAM,WAAS,mCAAA;wBAClB,kBAAkB,CAAC,IAAI,CAAC,WAAS,CAAC,CAAA;qBACnC;;;;;;;;;aACF;SACF;aAAM;YACL,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SACnC;KACF;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AA9CD,0CA8CC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param relationship
3
+ * @param curies
4
+ */
5
+ /**
6
+ * @param relationship
7
+ * @param curies
8
+ */
9
+ export function deCurie(relationship: any, curies: any): any;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.deCurie = void 0;
20
+ var uri_template_lite_1 = require("../../util/uri-template-lite");
21
+ /**
22
+ * @param relationship
23
+ * @param curies
24
+ */
25
+ /**
26
+ * @param relationship
27
+ * @param curies
28
+ */
29
+ function deCurie(relationship, curies) {
30
+ // we can either look in the rel for ':' and try to convert if it exists, but then we'll be trying to covert almost
31
+ // everything because none standard rels typically start with 'http:' or 'https:'.
32
+ // otherwise we can iterate over all the curies and try to replace. Seems inefficient.
33
+ // Going with option 1 for now.
34
+ // ⚠️ NOTE TO SELF: never use 'http' or 'https' as a curie name or hilarity will not ensue 😬
35
+ // ⚠️ ALSO NOTE TO SELF: never use ':' in a curie name or hilarity will not ensue 😬
36
+ // I'm going to assume that if there are multiple ':' characters, then we ignore all but the first
37
+ var splitRelationship = relationship.split(/:(.+)/);
38
+ if (splitRelationship.length > 1) {
39
+ var _a = __read(splitRelationship, 2), curieName = _a[0], curieRemainder = _a[1];
40
+ var rval = curies[curieName]
41
+ ? uri_template_lite_1.URI.expand(curies[curieName], { rel: curieRemainder })
42
+ : relationship;
43
+ return rval;
44
+ }
45
+ else {
46
+ return relationship;
47
+ }
48
+ }
49
+ exports.deCurie = deCurie;
50
+ //# sourceMappingURL=de-curie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de-curie.js","sourceRoot":"","sources":["../../../src/handlers/hal/de-curie.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,kEAAkD;AAElD;;;GAGG;AAEH;;;GAGG;AACH,SAAgB,OAAO,CAAE,YAAY,EAAE,MAAM;IAC3C,mHAAmH;IACnH,kFAAkF;IAClF,sFAAsF;IACtF,+BAA+B;IAC/B,6FAA6F;IAC7F,oFAAoF;IACpF,kGAAkG;IAClG,IAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,IAAA,KAAA,OAA8B,iBAAiB,IAAA,EAA9C,SAAS,QAAA,EAAE,cAAc,QAAqB,CAAA;QACrD,IAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;YAC5B,CAAC,CAAC,uBAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;YACxD,CAAC,CAAC,YAAY,CAAA;QAChB,OAAO,IAAI,CAAA;KACZ;SAAM;QACL,OAAO,YAAY,CAAA;KACpB;AACH,CAAC;AAlBD,0BAkBC"}
@@ -0,0 +1,6 @@
1
+ import { Operation } from '../../operation';
2
+ /**
3
+ * @param response
4
+ * @param content
5
+ */
6
+ export declare function halHandler(response: Response, content?: unknown): Array<Operation>;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __values = (this && this.__values) || function(o) {
3
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
+ if (m) return m.call(o);
5
+ if (o && typeof o.length === "number") return {
6
+ next: function () {
7
+ if (o && i >= o.length) o = void 0;
8
+ return { value: o && o[i++], done: !o };
9
+ }
10
+ };
11
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.halHandler = void 0;
18
+ var media_types_1 = __importDefault(require("../../util/media-types"));
19
+ var map_hal_link_to_operation_1 = require("./map-hal-link-to-operation");
20
+ /**
21
+ * @param response
22
+ * @param content
23
+ */
24
+ function halHandler(response, content) {
25
+ var e_1, _a, e_2, _b, e_3, _c;
26
+ var _d;
27
+ var operations = [];
28
+ var contentType = (_d = response.headers.get('content-type')) === null || _d === void 0 ? void 0 : _d.split(';');
29
+ if ((contentType === null || contentType === void 0 ? void 0 : contentType[0]) === media_types_1.default.HAL &&
30
+ content &&
31
+ typeof content === 'object' &&
32
+ '_links' in content) {
33
+ var body = content;
34
+ // if there are curies in the Hal Links, we need to load them first, so we can expand them wherever they are used
35
+ // we also want to convert them to a map, for easy lookup
36
+ var curies = {};
37
+ if (body._links.curies) {
38
+ if (Array.isArray(body._links.curies)) {
39
+ try {
40
+ for (var _e = __values(body._links.curies), _f = _e.next(); !_f.done; _f = _e.next()) {
41
+ var curie = _f.value;
42
+ curies[curie.name] = curie.href;
43
+ }
44
+ }
45
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
46
+ finally {
47
+ try {
48
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
49
+ }
50
+ finally { if (e_1) throw e_1.error; }
51
+ }
52
+ }
53
+ else {
54
+ curies[body._links.curies.name] = body._links.curies.href;
55
+ }
56
+ }
57
+ try {
58
+ for (var _g = __values(Object.keys(body._links).filter(function (relationship) { return relationship !== 'curies'; })), _h = _g.next(); !_h.done; _h = _g.next()) {
59
+ var key = _h.value;
60
+ if (Array.isArray(body._links[key])) {
61
+ try {
62
+ for (var _j = (e_3 = void 0, __values(body._links[key])), _k = _j.next(); !_k.done; _k = _j.next()) {
63
+ var link = _k.value;
64
+ operations.push((0, map_hal_link_to_operation_1.mapHalLinkToOperation)(key, link, curies));
65
+ }
66
+ }
67
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
68
+ finally {
69
+ try {
70
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
71
+ }
72
+ finally { if (e_3) throw e_3.error; }
73
+ }
74
+ }
75
+ else {
76
+ operations.push((0, map_hal_link_to_operation_1.mapHalLinkToOperation)(key, body._links[key], curies));
77
+ }
78
+ }
79
+ }
80
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
81
+ finally {
82
+ try {
83
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
84
+ }
85
+ finally { if (e_2) throw e_2.error; }
86
+ }
87
+ }
88
+ return operations;
89
+ }
90
+ exports.halHandler = halHandler;
91
+ //# sourceMappingURL=hal-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hal-handler.js","sourceRoot":"","sources":["../../../src/handlers/hal/hal-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,uEAA+C;AAC/C,yEAAmE;AAUnE;;;GAGG;AACH,SAAgB,UAAU,CACxB,QAAkB,EAClB,OAAiB;;;IAEjB,IAAM,UAAU,GAAqB,EAAE,CAAA;IACvC,IAAM,WAAW,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,KAAK,CAAC,GAAG,CAAC,CAAA;IACpE,IACE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,MAAK,qBAAU,CAAC,GAAG;QACnC,OAAO;QACP,OAAO,OAAO,KAAK,QAAQ;QAC3B,QAAQ,IAAI,OAAO,EACnB;QACA,IAAM,IAAI,GAAG,OAOZ,CAAA;QAED,iHAAiH;QACjH,yDAAyD;QACzD,IAAM,MAAM,GAAG,EAAE,CAAA;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;;oBACrC,KAAoB,IAAA,KAAA,SAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,gBAAA,4BAAE;wBAAnC,IAAM,KAAK,WAAA;wBACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;qBAChC;;;;;;;;;aACF;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;aAC1D;SACF;;YACD,KAAkB,IAAA,KAAA,SAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAA,YAAY,IAAI,OAAA,YAAY,KAAK,QAAQ,EAAzB,CAAyB,CAAC,CAAA,gBAAA,4BAAE;gBAAzF,IAAM,GAAG,WAAA;gBACZ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;;wBACnC,KAAmB,IAAA,oBAAA,SAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmB,CAAA,CAAA,gBAAA,4BAAE;4BAAlD,IAAM,IAAI,WAAA;4BACb,UAAU,CAAC,IAAI,CAAC,IAAA,iDAAqB,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;yBAC1D;;;;;;;;;iBACF;qBAAM;oBACL,UAAU,CAAC,IAAI,CAAC,IAAA,iDAAqB,EAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;iBACtE;aACF;;;;;;;;;KACF;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AA5CD,gCA4CC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @param relationship
3
+ * @param link
4
+ * @param curies
5
+ */
6
+ export function mapHalLinkToOperation(relationship: any, link: any, curies: any): Operation;
7
+ import { Operation } from "../../operation";
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.mapHalLinkToOperation = void 0;
26
+ var operation_1 = require("../../operation");
27
+ var de_curie_1 = require("./de-curie");
28
+ /**
29
+ * @param relationship
30
+ * @param link
31
+ * @param curies
32
+ */
33
+ function mapHalLinkToOperation(relationship, link, curies) {
34
+ // we don't need to copy `templated` across, because when we invoke an operation, we always
35
+ // assume it's a template and expand it with the passed parameters
36
+ var href = link.href, templated = link.templated, otherProperties = __rest(link, ["href", "templated"]);
37
+ return new operation_1.Operation(__assign({ rel: (0, de_curie_1.deCurie)(relationship, curies), uri: href }, otherProperties));
38
+ }
39
+ exports.mapHalLinkToOperation = mapHalLinkToOperation;
40
+ //# sourceMappingURL=map-hal-link-to-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-hal-link-to-operation.js","sourceRoot":"","sources":["../../../src/handlers/hal/map-hal-link-to-operation.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2C;AAC3C,uCAAoC;AAEpC;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM;IAC9D,2FAA2F;IAC3F,kEAAkE;IAC1D,IAAA,IAAI,GAAoC,IAAI,KAAxC,EAAE,SAAS,GAAyB,IAAI,UAA7B,EAAK,eAAe,UAAK,IAAI,EAA9C,qBAAuC,CAAF,CAAS;IACpD,OAAO,IAAI,qBAAS,YAAG,GAAG,EAAE,IAAA,kBAAO,EAAC,YAAY,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,IAAK,eAAe,EAAG,CAAA;AAC7F,CAAC;AALD,sDAKC"}
@@ -0,0 +1,7 @@
1
+ import { Operation } from '../../operation';
2
+ /**
3
+ * @param response
4
+ * @param content
5
+ * @param stopper
6
+ */
7
+ export declare function linkHeaderHandler(response: Response, content?: unknown, stopper?: () => void): Array<Operation>;