ketting 7.1.1 → 7.4.0

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 (51) hide show
  1. package/LICENSE +1 -1
  2. package/browser/ketting.min.js +1 -1
  3. package/browser/ketting.min.js.map +1 -1
  4. package/dist/client.d.ts +35 -4
  5. package/dist/client.js +117 -29
  6. package/dist/client.js.map +1 -1
  7. package/dist/http/fetcher.js +1 -1
  8. package/dist/http/fetcher.js.map +1 -1
  9. package/dist/link.js +2 -2
  10. package/dist/link.js.map +1 -1
  11. package/dist/middlewares/cache.js +16 -54
  12. package/dist/middlewares/cache.js.map +1 -1
  13. package/dist/middlewares/warning.js +1 -1
  14. package/dist/middlewares/warning.js.map +1 -1
  15. package/dist/resource.js +7 -6
  16. package/dist/resource.js.map +1 -1
  17. package/dist/src/client.d.ts +35 -4
  18. package/dist/state/base-state.js +3 -3
  19. package/dist/state/base-state.js.map +1 -1
  20. package/dist/state/binary.js +1 -1
  21. package/dist/state/binary.js.map +1 -1
  22. package/dist/state/collection-json.js +1 -1
  23. package/dist/state/collection-json.js.map +1 -1
  24. package/dist/state/hal.js +12 -9
  25. package/dist/state/hal.js.map +1 -1
  26. package/dist/state/head.js +1 -1
  27. package/dist/state/head.js.map +1 -1
  28. package/dist/state/html.js +3 -3
  29. package/dist/state/html.js.map +1 -1
  30. package/dist/state/jsonapi.js +1 -1
  31. package/dist/state/jsonapi.js.map +1 -1
  32. package/dist/state/siren.js +3 -3
  33. package/dist/state/siren.js.map +1 -1
  34. package/dist/state/text.js +1 -1
  35. package/dist/state/text.js.map +1 -1
  36. package/dist/util/html.js +2 -2
  37. package/dist/util/html.js.map +1 -1
  38. package/dist/util/html.web.js +2 -2
  39. package/dist/util/html.web.js.map +1 -1
  40. package/dist/util/uri-template.js +1 -1
  41. package/dist/util/uri-template.js.map +1 -1
  42. package/dist/util/uri.js +3 -3
  43. package/dist/util/uri.js.map +1 -1
  44. package/package.json +10 -9
  45. package/src/action.ts +1 -1
  46. package/src/client.ts +142 -33
  47. package/src/http/fetcher.ts +1 -1
  48. package/src/link.ts +1 -1
  49. package/src/middlewares/cache.ts +15 -61
  50. package/src/resource.ts +2 -1
  51. package/src/state/hal.ts +11 -7
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2016-2020 Evert Pot, https://evertpot.com/
3
+ Copyright (c) 2016-2022 Evert Pot, https://evertpot.com/
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Ketting=t():e.Ketting=t()}(self,(function(){return function(){var e={187:function(e){"use strict";var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,o),n(r)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}y(e,t,o,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&y(e,"error",t,{once:!0})}(e,i)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,o,s,u;if(a(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if("function"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(i=c(e))>0&&s.length>i&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function h(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):p(i,i.length)}function d(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function p(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function y(e,t,r,n){if("function"==typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){n.once&&e.removeEventListener(t,i),r(o)}))}}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return c(this)},o.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,o=this._events;if(void 0!==o)i=i&&void 0===o.error;else if(!i)return!1;if(i){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=p(c,u);for(r=0;r<u;++r)n(l[r],this,t)}return!0},o.prototype.addListener=function(e,t){return u(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return u(this,e,t,!0)},o.prototype.once=function(e,t){return a(t),this.on(e,f(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,f(this,e,t)),this},o.prototype.removeListener=function(e,t){var r,n,i,o,s;if(a(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n<o.length;++n)"removeListener"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},17:function(e){self,e.exports=(()=>{"use strict";var e={909:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.encode=void 0,t.encode=function(e){return btoa(e)}},70:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r extends Error{constructor(e,t,r){super(e),this.oauth2Code=t,this.httpCode=r}}t.default=r},267:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=r(517);t.default=class{constructor(e,t=null){if(!e.grantType&&!t&&!e.accessToken)throw new Error("If no grantType is specified, a token must be provided");this.options=e,e.accessToken&&(console.warn("[fetch-mw-oauth2] Specifying accessToken via the options argument in the constructor of OAuth2 is deprecated. Please supply the options in the second argument. Backwards compatability will be removed in a future version of this library"),t={accessToken:e.accessToken,refreshToken:e.refreshToken||null,expiresAt:null}),this.token=t,this.activeRefresh=null,this.refreshTimer=null,this.scheduleRefresh()}async fetch(e,t){const r=new Request(e,t);return this.fetchMw(r,(e=>fetch(e)))}async fetchMw(e,t){const r=await this.getAccessToken();let n=e.clone();n.headers.set("Authorization","Bearer "+r);let i=await t(n);if(!i.ok&&401===i.status){const r=await this.refreshToken();n=e.clone(),n.headers.set("Authorization","Bearer "+r.accessToken),i=await t(n)}return i}async getToken(){return this.token&&(null===this.token.expiresAt||this.token.expiresAt>Date.now())?this.token:this.refreshToken()}async getAccessToken(){return(await this.getToken()).accessToken}async refreshToken(){if(this.activeRefresh)return this.activeRefresh;this.activeRefresh=n.refreshToken(this.options,this.token);try{const e=await this.activeRefresh;return this.token=e,this.scheduleRefresh(),e}finally{this.activeRefresh=null}}scheduleRefresh(){if(this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),!this.token||!this.token.expiresAt||!this.token.refreshToken)return;const e=this.token.expiresAt-Date.now();e<12e4||(this.refreshTimer=setTimeout((async()=>{try{await this.refreshToken()}catch(e){console.error("[fetch-mw-oauth2] error while doing a background OAuth2 auto-refresh",e)}}),e-6e4))}}},22:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OAuth2Error=t.OAuth2=t.fetchMwOAuth2=t.default=void 0;var i=r(267);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n(i).default}}),Object.defineProperty(t,"fetchMwOAuth2",{enumerable:!0,get:function(){return n(i).default}}),Object.defineProperty(t,"OAuth2",{enumerable:!0,get:function(){return n(i).default}});var o=r(70);Object.defineProperty(t,"OAuth2Error",{enumerable:!0,get:function(){return n(o).default}})},517:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.refreshToken=t.objToQueryString=void 0;const i=r(909),o=n(r(70));function s(e){return Object.entries(e).map((([e,t])=>void 0===t?"":encodeURIComponent(e)+"="+encodeURIComponent(t))).join("&")}t.objToQueryString=s,t.refreshToken=async function e(t,r){let n;const a=r;if(null==a?void 0:a.refreshToken)n={grant_type:"refresh_token",refresh_token:a.refreshToken},void 0===t.clientSecret&&(n.client_id=t.clientId);else switch(t.grantType){case"client_credentials":n={grant_type:"client_credentials"},t.scope&&(n.scope=t.scope.join(" "));break;case"password":n={grant_type:"password",username:t.userName,password:t.password},t.scope&&(n.scope=t.scope.join(" "));break;case"authorization_code":n={grant_type:"authorization_code",code:t.code,redirect_uri:t.redirectUri,client_id:t.clientId,code_verifier:t.codeVerifier};break;default:throw"string"==typeof t.grantType?new Error("Unknown grantType: "+t.grantType):new Error('Cannot obtain an access token if no "grantType" is specified')}const c={"Content-Type":"application/x-www-form-urlencoded"};let u=!1;if(void 0!==t.clientSecret){u=!0;const e=i.encode(t.clientId+":"+t.clientSecret);c.Authorization="Basic "+e}const l=await fetch(t.tokenEndpoint,{method:"POST",headers:c,body:s(n)}),f=await l.json();if(!l.ok){if("refresh_token"===n.grant_type&&t.grantType)return e(t,null);const r=l.status;let i,s;throw f.error?(i="OAuth2 error "+f.error+".",f.error_description&&(i+=" "+f.error_description),s=f.error):(i="HTTP Error "+l.status+" "+l.statusText,401===l.status&&u&&(i+=". It's likely that the clientId and/or clientSecret was incorrect"),s=null),new o.default(i,s,r)}const h={accessToken:f.access_token,expiresAt:f.expires_in?Date.now()+1e3*f.expires_in:null,refreshToken:f.refresh_token?f.refresh_token:null};return t.onTokenUpdate&&t.onTokenUpdate(h),h}}},t={};return function r(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}(22)})()},475:function(e){"use strict";var t=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,r=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,n=/\s|\uFEFF|\xA0/,i=/\r?\n[\x20\x09]+/g,o=/[;,"]/,s=/[;,"]|\s/,a=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/;function c(e){return e.replace(r,"")}function u(e){return n.test(e)}function l(e,t){for(;u(e[t]);)t++;return t}function f(e){return s.test(e)||!a.test(e)}class h{constructor(e){this.refs=[],e&&this.parse(e)}rel(e){for(var t=[],r=e.toLowerCase(),n=0;n<this.refs.length;n++)this.refs[n].rel.toLowerCase()===r&&t.push(this.refs[n]);return t}get(e,t){e=e.toLowerCase();for(var r=[],n=0;n<this.refs.length;n++)this.refs[n][e]===t&&r.push(this.refs[n]);return r}set(e){return this.refs.push(e),this}has(e,t){e=e.toLowerCase();for(var r=0;r<this.refs.length;r++)if(this.refs[r][e]===t)return!0;return!1}parse(e,t){for(var r=1,n=(e=c(e=(t=t||0)?e.slice(t):e).replace(i,"")).length,s=(t=0,null);t<n;)if(1===r){if(u(e[t])){t++;continue}if("<"!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);if(null!=s&&(null!=s.rel?this.refs.push(...h.expandRelations(s)):this.refs.push(s)),-1===(d=e.indexOf(">",t)))throw new Error("Expected end of URI delimiter at offset "+t);s={uri:e.slice(t+1,d)},t=d,r=2,t++}else if(2===r){if(u(e[t])){t++;continue}if(";"===e[t])r=4,t++;else{if(","!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);r=1,t++}}else{if(4!==r)throw new Error('Unknown parser state "'+r+'"');if(";"===e[t]||u(e[t])){t++;continue}if(-1===(d=e.indexOf("=",t)))throw new Error("Expected attribute delimiter at offset "+t);var a=c(e.slice(t,d)).toLowerCase(),f="";if('"'===e[t=l(e,t=d+1)])for(t++;t<n;){if('"'===e[t]){t++;break}"\\"===e[t]&&t++,f+=e[t],t++}else{for(var d=t+1;!o.test(e[d])&&d<n;)d++;f=e.slice(t,d),t=d}switch(s[a]&&h.isSingleOccurenceAttr(a)||("*"===a[a.length-1]?s[a]=h.parseExtendedValue(f):(f="type"===a?f.toLowerCase():f,null!=s[a]?Array.isArray(s[a])?s[a].push(f):s[a]=[s[a],f]:s[a]=f)),e[t]){case",":r=1;break;case";":r=4}t++}return null!=s&&(null!=s.rel?this.refs.push(...h.expandRelations(s)):this.refs.push(s)),s=null,this}toString(){for(var e=[],t="",r=null,n=0;n<this.refs.length;n++)r=this.refs[n],t=Object.keys(this.refs[n]).reduce((function(e,t){return"uri"===t?e:e+"; "+h.formatAttribute(t,r[t])}),"<"+r.uri+">"),e.push(t);return e.join(", ")}}h.isCompatibleEncoding=function(e){return t.test(e)},h.parse=function(e,t){return(new h).parse(e,t)},h.isSingleOccurenceAttr=function(e){return"rel"===e||"type"===e||"media"===e||"title"===e||"title*"===e},h.isTokenAttr=function(e){return"rel"===e||"type"===e||"anchor"===e},h.escapeQuotes=function(e){return e.replace(/"/g,'\\"')},h.expandRelations=function(e){return e.rel.split(" ").map((function(t){var r=Object.assign({},e);return r.rel=t,r}))},h.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']+)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:h.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:h.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}},h.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase();return e+"="+r+"'"+(t.language||"en")+"'"+(Buffer.isBuffer(t.value)&&h.isCompatibleEncoding(r)?t.value.toString(r):Buffer.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):encodeURIComponent(t.value))},h.formatAttribute=function(e,t){return Array.isArray(t)?t.map((t=>h.formatAttribute(e,t))).join("; "):"*"===e[e.length-1]||"string"!=typeof t?h.formatExtendedAttribute(e,t):(h.isTokenAttr(e)?t=f(t)?'"'+h.escapeQuotes(t)+'"':h.escapeQuotes(t):f(t)&&(t='"'+(t=(t=encodeURIComponent(t)).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},e.exports=h},129:function(e){e.exports=function(e){return e=e||/\W/g,function(t){return(t=String(t)).replace(e,(function(e){var t=e[0].charCodeAt(0),r=[];return t<128?r.push(t):128<=t&&t<2048?(r.push(t>>6|192),r.push(63&t|128)):(r.push(t>>12|224),r.push(t>>6&63|128),r.push(63&t|128)),r.map((function(e){return"%"+e.toString(16).toUpperCase()})).join("")}))}}},779:function(e,t,r){"use strict";var n=t,i=r(94).Buffer;function o(e,t){try{return decodeURIComponent(e)}catch(r){return n.unescapeBuffer(e,t).toString()}}n.unescapeBuffer=function(e,t){for(var r,n,o,s=new i(e.length),a=0,c=0,u=0;c<=e.length;c++){var l=c<e.length?e.charCodeAt(c):NaN;switch(a){case 0:switch(l){case 37:r=0,n=0,a=1;break;case 43:t&&(l=32);default:s[u++]=l}break;case 1:if(o=l,l>=48&&l<=57)r=l-48;else if(l>=65&&l<=70)r=l-65+10;else{if(!(l>=97&&l<=102)){s[u++]=37,s[u++]=l,a=0;break}r=l-97+10}a=2;break;case 2:if(a=0,l>=48&&l<=57)n=l-48;else if(l>=65&&l<=70)n=l-65+10;else{if(!(l>=97&&l<=102)){s[u++]=37,s[u++]=o,s[u++]=l;break}n=l-97+10}s[u++]=16*r+n}}return s.slice(0,u-1)},n.unescape=o;for(var s=new Array(256),a=0;a<256;++a)s[a]="%"+((a<16?"0":"")+a.toString(16)).toUpperCase();n.escape=function(e){"string"!=typeof e&&(e+="");for(var t="",r=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);if(!(33===i||45===i||46===i||95===i||126===i||i>=39&&i<=42||i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122))if(n-r>0&&(t+=e.slice(r,n)),i<128)r=n+1,t+=s[i];else if(i<2048)r=n+1,t+=s[192|i>>6]+s[128|63&i];else if(i<55296||i>=57344)r=n+1,t+=s[224|i>>12]+s[128|i>>6&63]+s[128|63&i];else{var o;if(!(++n<e.length))throw new URIError("URI malformed");o=1023&e.charCodeAt(n),r=n+1,t+=s[240|(i=65536+((1023&i)<<10|o))>>18]+s[128|i>>12&63]+s[128|i>>6&63]+s[128|63&i]}}return 0===r?e:r<e.length?t+e.slice(r):t};var c=function(e){return"string"==typeof e?e:"number"==typeof e&&isFinite(e)?""+e:"boolean"==typeof e?e?"true":"false":""};function u(e,t){try{return t(e)}catch(t){return n.unescape(e,!0)}}n.stringify=n.encode=function(e,t,r,i){t=t||"&",r=r||"=";var o=n.escape;if(i&&"function"==typeof i.encodeURIComponent&&(o=i.encodeURIComponent),null!==e&&"object"==typeof e){for(var s=Object.keys(e),a=s.length,u=a-1,l="",f=0;f<a;++f){var h=s[f],d=e[h],p=o(c(h))+r;if(Array.isArray(d)){for(var y=d.length,v=y-1,m=0;m<y;++m)l+=p+o(c(d[m])),m<v&&(l+=t);y&&f<u&&(l+=t)}else l+=p+o(c(d)),f<u&&(l+=t)}return l}return""},n.parse=n.decode=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;"string"!=typeof t&&(t+="");var a=r.length,c=t.length,l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var f=1/0;l>0&&(f=l);var h=n.unescape;i&&"function"==typeof i.decodeURIComponent&&(h=i.decodeURIComponent);for(var d=h!==o,p=[],y=0,v=0,m=0,g="",b="",w=d,_=d,O=0,x=0;x<e.length;++x){var k=e.charCodeAt(x);if(k!==t.charCodeAt(v)){if(v=0,_||(37===k?O=1:O>0&&(k>=48&&k<=57||k>=65&&k<=70||k>=97&&k<=102)?3==++O&&(_=!0):O=0),m<a){if(k===r.charCodeAt(m)){++m===a&&(y<(j=x-m+1)&&(g+=e.slice(y,j)),O=0,y=x+1);continue}m=0,w||(37===k?O=1:O>0&&(k>=48&&k<=57||k>=65&&k<=70||k>=97&&k<=102)?3==++O&&(w=!0):O=0)}43===k&&(m<a?(x-y>0&&(g+=e.slice(y,x)),g+="%20",w=!0):(x-y>0&&(b+=e.slice(y,x)),b+="%20",_=!0),y=x+1)}else if(++v===c){var S,j=x-v+1;if(m<a?y<j&&(g+=e.slice(y,j)):y<j&&(b+=e.slice(y,j)),w&&(g=u(g,h)),_&&(b=u(b,h)),-1===p.indexOf(g)?(s[g]=b,p[p.length]=g):(S=s[g])instanceof Array?S[S.length]=b:s[g]=[S,b],0==--f)break;w=_=d,O=0,g=b="",y=x+1,v=m=0}}return f>0&&(y<e.length||m>0)&&(y<e.length&&(m<a?g+=e.slice(y):v<c&&(b+=e.slice(y))),w&&(g=u(g,h)),_&&(b=u(b,h)),-1===p.indexOf(g)?(s[g]=b,p[p.length]=g):(S=s[g])instanceof Array?S[S.length]=b:s[g]=[S,b]),s}},34:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionNotFound=t.SimpleAction=void 0;const n=r(779);t.SimpleAction=class{constructor(e,t){this.client=e;for(const[e,r]of Object.entries(t))this[e]=r}async submit(e){const t=new URL(this.uri);if("GET"===this.method)return t.search=n.stringify(e),this.client.go(t.toString()).get();let r;switch(this.contentType){case"application/x-www-form-urlencoded":r=n.stringify(e);break;case"application/json":r=JSON.stringify(e);break;default:throw new Error(`Serializing mimetype ${this.contentType} is not yet supported in actions`)}const i=await this.client.fetcher.fetchOrThrow(t.toString(),{method:this.method,body:r,headers:{"Content-Type":this.contentType}});return this.client.getStateForResponse(t.toString(),i)}};class i extends Error{}t.ActionNotFound=i},651:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ForeverCache=void 0,t.ForeverCache=class{constructor(){this.cache=new Map}store(e){this.cache.set(e.uri,e.clone())}get(e){const t=this.cache.get(e);return t?t.clone():null}has(e){return this.cache.has(e)}delete(e){this.cache.delete(e)}clear(){this.cache.clear()}}},689:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NeverCache=t.ShortCache=t.ForeverCache=void 0;var n=r(651);Object.defineProperty(t,"ForeverCache",{enumerable:!0,get:function(){return n.ForeverCache}});var i=r(478);Object.defineProperty(t,"ShortCache",{enumerable:!0,get:function(){return i.ShortCache}});var o=r(575);Object.defineProperty(t,"NeverCache",{enumerable:!0,get:function(){return o.NeverCache}})},575:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NeverCache=void 0,t.NeverCache=class{store(e){}get(e){return null}has(e){return!1}delete(e){}clear(){}}},478:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShortCache=void 0;const n=r(651);class i extends n.ForeverCache{constructor(e=3e4){super(),this.cacheTimeout=e,this.activeTimers=new Map}store(e){super.store(e),this.setTimer(e.uri)}setTimer(e){this.activeTimers.has(e)&&clearTimeout(this.activeTimers.get(e)),this.activeTimers.set(e,setTimeout((()=>{this.delete(e),this.activeTimers.delete(e)}),this.cacheTimeout))}}t.ShortCache=i},934:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(66),i=r(871),o=r(24),s=r(963),a=r(289),c=r(689),u=r(549),l=r(736),f=r(941);t.default=class{constructor(e){this.contentTypeMap={"application/prs.hal-forms+json":[o.halStateFactory,"1.0"],"application/hal+json":[o.halStateFactory,"0.9"],"application/vnd.api+json":[o.jsonApiStateFactory,"0.8"],"application/vnd.siren+json":[o.sirenStateFactory,"0.8"],"application/vnd.collection+json":[o.cjStateFactory,"0.8"],"application/json":[o.halStateFactory,"0.7"],"text/html":[o.htmlStateFactory,"0.6"]},this.bookmarkUri=e,this.fetcher=new n.Fetcher,this.fetcher.use(u.default(this)),this.fetcher.use(l.default(this)),this.fetcher.use(f.default()),this.cache=new c.ForeverCache,this.resources=new Map}follow(e,t){return this.go().follow(e,t)}go(e){let t;if(t=void 0!==e?a.resolve(this.bookmarkUri,e):this.bookmarkUri,!this.resources.has(t)){const e=new i.default(this,t);return this.resources.set(t,e),e}return this.resources.get(t)}use(e,t="*"){this.fetcher.use(e,t)}clearCache(){this.cache.clear()}async getStateForResponse(e,t){const r=s.parseContentType(t.headers.get("Content-Type"));let n;return r?(n=r in this.contentTypeMap?await this.contentTypeMap[r][0](this,e,t):r.startsWith("text/")?await o.textStateFactory(this,e,t):r.match(/^application\/[A-Za-z-.]+\+json/)?await o.halStateFactory(this,e,t):await o.binaryStateFactory(this,e,t),n):o.binaryStateFactory(this,e,t)}cacheState(e){this.cache.store(e);const t=this.resources.get(e.uri);t&&t.emit("update",e);for(const t of e.getEmbedded())this.cacheState(t)}}},761:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FollowPromiseMany=t.FollowPromiseOne=void 0;class r{constructor(){this.prefetchEnabled=!1,this.preferTranscludeEnabled=!1,this.useHeadEnabled=!1}preFetch(){return this.prefetchEnabled=!0,this}preferTransclude(){return this.preferTranscludeEnabled=!0,this}useHead(){return this.useHeadEnabled=!0,this}}class n extends r{constructor(e,t,r){super(),this.resource=e,this.rel=t,this.variables=r}then(e,t){return this.fetchLinkedResource().then(e,t)}catch(e){return this.fetchLinkedResource().then(void 0,e)}finally(e){return this.then((()=>e()),(()=>e()))}follow(e,t){return new n(this.fetchLinkedResource(),e,t)}followAll(e){return new i(this.fetchLinkedResource(),e)}async fetchLinkedResource(){const e=await this.resource,t={};let r;!this.useHeadEnabled&&this.preferTranscludeEnabled&&(t.Prefer="transclude="+this.rel),r=this.useHeadEnabled?await e.head({headers:t}):await e.get({headers:t});const n=r.follow(this.rel,this.variables);return this.prefetchEnabled&&n.get().catch((e=>{console.warn("Error while prefetching linked resource",e)})),n}}t.FollowPromiseOne=n;class i extends r{constructor(e,t){super(),this.resource=e,this.rel=t}then(e,t){return this.fetchLinkedResources().then(e,t)}catch(e){return this.fetchLinkedResources().then(void 0,e)}finally(e){return this.then((()=>e()),(()=>e()))}async fetchLinkedResources(){const e=await this.resource,t={};let r;!this.useHeadEnabled&&this.preferTranscludeEnabled&&(t.Prefer="transclude="+this.rel),r=this.useHeadEnabled?await e.head({headers:t}):await e.get({headers:t});const n=r.followAll(this.rel);return this.prefetchEnabled&&n.map((e=>{e.get().catch((e=>{console.warn("Error while prefetching linked resource",e)}))})),n}}t.FollowPromiseMany=i},530:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(699);t.default=(e,t)=>{const r="Basic "+n.encode(e+":"+t);return(e,t)=>(e.headers.set("Authorization",r),t(e))}},409:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{const t="Bearer "+e;return(e,r)=>(e.headers.set("Authorization",t),r(e))}},682:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Problem=t.HttpError=void 0;class r extends Error{constructor(e){super("HTTP error "+e.status),this.response=e,this.status=e.status}}t.HttpError=r;class n extends r{constructor(e,t){var r,n;super(e),this.body=Object.assign({type:null!==(r=t.type)&&void 0!==r?r:"about:blank",status:null!==(n=t.status)&&void 0!==n?n:this.status},t),this.body.title&&(this.message="HTTP Error "+this.status+": "+this.body.title)}}t.Problem=n,t.default=async function(e){const t=e.headers.get("Content-Type");if(null==t?void 0:t.match(/^application\/problem\+json/i)){const t=await e.json();return new n(e,t)}return new r(e)}},525:function(){},66:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Fetcher=void 0;const n=r(682);r(525);class i{constructor(){this.middlewares=[],this.advertiseKetting=!0}fetch(e,t){const n=new Request(e,t),i=new URL(n.url).origin,s=this.getMiddlewaresByOrigin(i);return s.push((e=>(!e.headers.has("User-Agent")&&this.advertiseKetting&&e.headers.set("User-Agent","Ketting/"+r(306).i8),fetch(e)))),o(s,n)}getMiddlewaresByOrigin(e){return this.middlewares.filter((([t])=>t.test(e))).map((([,e])=>e))}use(e,t="*"){const r=t.split("*").map((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))).join("(.*)"),n=new RegExp("^"+r+"$");this.middlewares.push([n,e])}async fetchOrThrow(e,t){const r=await this.fetch(e,t);if(r.ok)return r;throw await n.default(r)}}function o(e,t){return e[0](t,(t=>o(e.slice(1),t)))}t.Fetcher=i,t.default=i},686:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(17);t.default=(e,t)=>{const r=new n.OAuth2(e,t);return r.fetchMw.bind(r)}},963:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.entityHeaderNames=t.isSafeMethod=t.parseLink=t.parseContentType=void 0;const n=r(475),i=r(173);t.parseContentType=function(e){return e?(e.includes(";")&&(e=e.split(";")[0]),e.trim()):null},t.parseLink=function(e,t){const r=new i.Links(e);if(!t)return r;for(const i of n.parse(t).refs)for(const t of i.rel.split(" ")){const n={rel:t,href:i.uri,context:e,title:i.title,hreflang:i.hreflang,type:i.type};r.add(n)}return r};const o=["GET","HEAD","OPTIONS","PRI","PROPFIND","REPORT","SEARCH","TRACE"];t.isSafeMethod=function(e){return o.includes(e)},t.entityHeaderNames=["Content-Type","Content-Language","Content-Location","Deprecation","ETag","Expires","Last-Modified","Sunset","Title","Warning"]},173:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkNotFound=t.Links=void 0;const n=r(289);class i{constructor(e,t){if(this.defaultContext=e,this.store=new Map,t)if(t instanceof i)this.add(...t.getAll());else for(const e of t)this.add(e)}add(...e){let t;t="string"==typeof e[0]?[{rel:e[0],href:e[1],context:this.defaultContext}]:e.map((e=>Object.assign({context:this.defaultContext},e)));for(const e of t)this.store.has(e.rel)?this.store.get(e.rel).push(e):this.store.set(e.rel,[e])}set(e,t){let r;r="string"==typeof e?{rel:e,href:t,context:this.defaultContext}:Object.assign({context:this.defaultContext},e),this.store.set(r.rel,[r])}get(e){const t=this.store.get(e);if(t&&!(t.length<0))return t[0]}delete(e,t){if(void 0===t)return void this.store.delete(e);const r=this.store.get(e);if(!r)return;this.store.delete(e);const i=n.resolve(this.defaultContext,t);this.store.set(e,r.filter((e=>n.resolve(e)!==i)))}getMany(e){return this.store.get(e)||[]}getAll(){const e=[];for(const t of this.store.values())e.push(...t);return e}has(e){return this.store.has(e)}}t.Links=i;class o extends Error{}t.LinkNotFound=o},736:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return async(t,r)=>{if(!t.headers.has("Accept")){const r=Object.entries(e.contentTypeMap).map((([e,[,t]])=>e+";q="+t)).join(", ");t.headers.set("Accept",r)}return r(t)}}},549:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(963),i=r(475),o=r(289);function s(e,t,r){r||(r=new Set);for(const n of e)r.has(n)||(r.add(n),t.has(n)&&s(t.get(n),t,r));return r}t.default=function(e){const t=new Map;return async(r,a)=>{let c=!1;r.headers.has("X-KETTING-NO-STALE")&&(c=!0,r.headers.delete("X-KETTING-NO-STALE"));const u=await a(r);if(u.headers.has("Link"))for(const e of i.parse(u.headers.get("Link")).rel("inv-by")){const n=o.resolve(r.url,e.uri);t.has(n)?t.get(n).add(r.url):t.set(n,new Set([r.url]))}if(n.isSafeMethod(r.method))return u;if(!u.ok)return u;let l=new Set;if(c||"DELETE"===r.method||l.add(r.url),u.headers.has("Link"))for(const e of i.parse(u.headers.get("Link")).rel("invalidates")){const t=o.resolve(r.url,e.uri);l.add(t)}if(u.headers.has("Location")&&l.add(o.resolve(r.url,u.headers.get("Location"))),u.headers.has("Content-Location")){const t=o.resolve(r.url,u.headers.get("Content-Location")),n=await e.getStateForResponse(t,u);e.cacheState(n)}l=s(l,t);for(const t of l){e.cache.delete(t);const r=e.resources.get(t);r&&r.emit("stale")}if("DELETE"===r.method){e.cache.delete(r.url);const t=e.resources.get(r.url);t&&t.emit("delete")}return u}}},941:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(475),i=r(289);t.default=function(){return async(e,t)=>{const r=await t(e);if(r.headers.get("Deprecation")){const t=r.headers.get("Sunset");let o=`[Ketting] The resource ${e.url} is deprecated.`;if(t&&(o+=" It will no longer respond "+t),r.headers.has("Link"))for(const t of n.parse(r.headers.get("Link")).rel("deprecation"))o+=`See ${i.resolve(e.url,t.uri)} for more information.`;console.warn(o)}return r}}},871:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Resource=void 0;const n=r(24),i=r(289),o=r(761),s=r(173),a=r(187),c=r(595);class u extends a.EventEmitter{constructor(e,t){super(),this.client=e,this.uri=t,this.activeRefresh=null}get(e){const t=this.getCache();if(t)return Promise.resolve(t);const r=l("GET",e);return this.activeRefresh||(this.activeRefresh=(async()=>{try{const e=await this.fetchOrThrow(r),t=await this.client.getStateForResponse(this.uri,e);return this.updateCache(t),t}finally{this.activeRefresh=null}})()),this.activeRefresh}async head(e){let t=this.client.cache.get(this.uri);if(t)return t;const r=await this.fetchOrThrow(l("HEAD",e));return t=await n.headStateFactory(this.client,this.uri,r),t}refresh(e){const t=l("GET",e);return t.cache="no-cache",this.activeRefresh||(this.activeRefresh=(async()=>{try{const e=await this.fetchOrThrow(t),r=await this.client.getStateForResponse(this.uri,e);return this.updateCache(r),r}finally{this.activeRefresh=null}})()),this.activeRefresh}async put(e){const t=l("PUT",e);n.isState(e)&&t.headers.set("X-KETTING-NO-STALE","1"),await this.fetchOrThrow(t),n.isState(e)&&this.updateCache(e)}async delete(){await this.fetchOrThrow({method:"DELETE"})}async post(e){const t=await this.fetchOrThrow(l("POST",e));return this.client.getStateForResponse(this.uri,t)}async postFollow(e){const t=await this.fetchOrThrow(l("POST",e));switch(t.status){case 201:if(t.headers.has("location"))return this.go(t.headers.get("location"));throw new Error('Could not follow after a 201 request, because the server did not reply with a Location header. If you sent a Location header, check if your service is returning "Access-Control-Expose-Headers: Location".');case 204:case 205:return this;default:throw new Error("Did not receive a 201, 204 or 205 status code so we could not follow to the next resource")}}async patch(e){const t=await this.fetchOrThrow(l("PATCH",e));if(200===t.status)return await this.client.getStateForResponse(this.uri,t)}follow(e,t){return new o.FollowPromiseOne(this,e,t)}followAll(e){return new o.FollowPromiseMany(this,e)}go(e){return e=i.resolve(this.uri,e),this.client.go(e)}fetch(e){return this.client.fetcher.fetch(this.uri,e)}fetchOrThrow(e){return this.client.fetcher.fetchOrThrow(this.uri,e)}updateCache(e){if(e.uri!==this.uri)throw new Error("When calling updateCache on a resource, the uri of the State object must match the uri of the Resource");this.client.cacheState(e)}clearCache(){this.client.cache.delete(this.uri)}getCache(){return this.client.cache.get(this.uri)}async link(e){const t=(await this.get()).links.get(e);if(!t)throw new s.LinkNotFound(`Link with rel: ${e} not found on ${this.uri}`);return t}async links(e){const t=await this.get();return e?t.links.getMany(e):t.links.getAll()}async hasLink(e){return(await this.get()).links.has(e)}}function l(e,t){if(!t)return{method:e,headers:new Headers};let r,n;return r=t.getContentHeaders?new Headers(t.getContentHeaders()):t.headers?new Headers(t.headers):new Headers,r.has("Content-Type")||r.set("Content-Type","application/json"),void 0!==t.serializeBody?n=t.serializeBody():t.data?(n=t.data,c.needsJsonStringify(n)&&(n=JSON.stringify(n))):n=null,{method:e,body:n,headers:r}}t.Resource=u,t.default=u},0:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseState=t.BaseHeadState=void 0;const n=r(173),i=r(34),o=r(289),s=r(640),a=r(963);class c{constructor(e){this.client=e.client,this.uri=e.uri,this.headers=e.headers,this.timestamp=Date.now(),this.links=e.links}follow(e,t){var r;const i=this.links.get(e);if(!i)throw new n.LinkNotFound(`Link with rel ${e} on ${this.uri} not found`);let a;return a=i.templated?s.expand(i,t||{}):o.resolve(i),"deprecated"===(null===(r=i.hints)||void 0===r?void 0:r.status)&&console.warn(`[ketting] The ${i.rel} link on ${this.uri} is marked deprecated.`,i),this.client.go(a)}followAll(e){return this.links.getMany(e).map((e=>{var t;"deprecated"===(null===(t=e.hints)||void 0===t?void 0:t.status)&&console.warn(`[ketting] The ${e.rel} link on ${this.uri} is marked deprecated.`,e);const r=o.resolve(e);return this.client.go(r)}))}contentHeaders(){const e={};for(const t of a.entityHeaderNames)this.headers.has(t)&&(e[t]=this.headers.get(t));return new Headers(e)}}t.BaseHeadState=c;class u extends c{constructor(e){super(e),this.data=e.data,this.actionInfo=e.actions||[],this.embedded=e.embedded||[]}action(e){if(!this.actionInfo.length)throw new i.ActionNotFound("This State does not define any actions");if(void 0===e)return new i.SimpleAction(this.client,this.actionInfo[0]);for(const t of this.actionInfo)if(t.name===e)return new i.SimpleAction(this.client,t);throw new i.ActionNotFound("This State defines no action")}actions(){return this.actionInfo.map((e=>new i.SimpleAction(this.client,e)))}hasAction(e){if(void 0===e)return this.actionInfo.length>0;for(const t of this.actionInfo)if(e===t.name)return!0;return!1}serializeBody(){return r.g.Buffer&&this.data instanceof Buffer||r.g.Blob&&this.data instanceof Blob||"string"==typeof this.data?this.data:JSON.stringify(this.data)}getEmbedded(){return this.embedded}clone(){return new u({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new n.Links(this.links.defaultContext,this.links.getAll()),actions:this.actionInfo})}}t.BaseState=u},909:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>new n.BaseState({client:e,uri:t,data:await r.blob(),headers:r.headers,links:i.parseLink(t,r.headers.get("Link"))})},287:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.CjState=void 0;const i=r(0),o=r(963);class s extends i.BaseState{serializeBody(){throw new Error("Reserializing Collection+JSON states is not yet supported. Please log an issue in the Ketting project to help figure out how this should be done")}}t.CjState=s,t.factory=async(e,t,r)=>{const i=await r.json(),a=o.parseLink(t,r.headers.get("Link"));a.add(...function(e,t){const r=[];if(void 0!==t.collection.links)for(const n of t.collection.links)r.push({context:e,href:n.href,rel:n.rel,title:n.name});if(void 0!==t.collection.items)for(const n of t.collection.items)n.href&&r.push({context:e,href:n.href,rel:"item"});if(void 0!==t.collection.queries)for(const n of t.collection.queries)n.data?r.push({context:e,href:n.href+n.data.map((e=>"{?"+e.name+"}")).join(""),templated:!0,rel:n.rel,title:n.name}):r.push({context:e,href:n.href,rel:n.rel,title:n.name});return r}(t,i));const{_embedded:c,_links:u}=i,l=n(i,["_embedded","_links"]);return new s({client:e,uri:t,data:l,headers:r.headers,links:a})}},842:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.HalState=void 0;const i=r(0),o=r(963),s=r(173),a=r(289);class c extends i.BaseState{serializeBody(){return JSON.stringify(Object.assign({_links:this.serializeLinks()},this.data))}serializeLinks(){const e={self:{href:this.uri}};for(const t of this.links.getAll()){const{rel:r,context:i}=t,o=n(t,["rel","context"]);"self"!==r&&(void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o])}return e}clone(){return new c({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new s.Links(this.links.defaultContext,this.links.getAll()),actions:this.actionInfo})}}function u(e,t){var r,n;if(void 0===t._links)return[];const i=[],o=new Set;for(const[r,n]of Object.entries(t._links)){const t=Array.isArray(n)?n:[n];for(const e of t)o.add(r+";"+e.href);i.push(...l(e,r,t))}if(t._embedded)for(let[s,a]of Object.entries(t._embedded)){Array.isArray(a)||(a=[a]);for(const t of a){const a=null===(n=null===(r=null==t?void 0:t._links)||void 0===r?void 0:r.self)||void 0===n?void 0:n.href;a&&(o.has(s+";"+a)||i.push({rel:s,href:a,context:e}))}}return i}function l(e,t,r){const n=[];for(const i of r)n.push(Object.assign({rel:t,context:e},i));return n}function f(e,t,r,i){if(void 0===r._embedded)return[];const o=[];for(const l of Object.values(r._embedded)){let r;r=Array.isArray(l)?l:[l];for(const l of r){if(void 0===l._links||void 0===l._links.self||Array.isArray(l._links.self))continue;const{_embedded:r,_links:d}=l,p=n(l,["_embedded","_links"]);o.push(new c({client:e,uri:a.resolve(t,l._links.self.href),data:p,headers:new Headers({"Content-Type":i.get("Content-Type")}),links:new s.Links(t,u(t,l)),embedded:f(e,t,l,i),actions:h(t,l)}))}}return o}function h(e,t){return t._templates?Object.entries(t._templates).map((([t,r])=>({uri:a.resolve(e,r.target||""),name:t,title:r.title,method:r.method,contentType:r.contentType||"application/json",fields:r.properties?r.properties.map((e=>function(e){var t;switch(e.type){case void 0:case"text":case"search":case"tel":case"url":case"email":if(e.options){const t={name:e.name,type:"select",label:e.prompt,required:e.required||!1,readOnly:e.readOnly||!1,multiple:e.options.multiple,value:e.options.selectedValues||e.value},r=e.options.promptField||"prompt",n=e.options.valueField||"value";if(void 0!==e.options.inline){const i={};for(const t of e.options.inline)"string"==typeof t?i[t]=t:i[t[n]]=t[r];return Object.assign(Object.assign({},t),{options:i})}return Object.assign(Object.assign({},t),{dataSource:{href:e.options.link.href,type:e.options.link.type,labelField:r,valueField:n}})}return{name:e.name,type:null!==(t=e.type)&&void 0!==t?t:"text",required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,pattern:e.regex?new RegExp(e.regex):void 0,label:e.prompt,placeholder:e.placeHolder};case"hidden":return{name:e.name,type:"hidden",required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,label:e.prompt,placeholder:e.placeHolder};case"textarea":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,label:e.prompt,placeholder:e.placeHolder,cols:e.cols,rows:e.rows};case"password":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,placeholder:e.placeHolder};case"date":case"month":case"week":case"time":return{name:e.name,type:e.type,value:e.value,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"number":case"range":return{name:e.name,type:e.type,value:e.value?+e.value:void 0,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"datetime-local":return{name:e.name,type:e.type,value:e.value?new Date(e.value):void 0,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"radio":case"checkbox":case"color":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt}}}(e))):[]}))):[]}t.HalState=c,t.factory=async(e,t,r)=>{const i=await r.json(),s=o.parseLink(t,r.headers.get("Link"));if(Array.isArray(i))return new c({client:e,uri:t,data:i,headers:r.headers,links:s});s.add(...u(t,i));const{_embedded:a,_links:l,_templates:d}=i,p=n(i,["_embedded","_links","_templates"]);return new c({client:e,uri:t,data:p,headers:r.headers,links:s,embedded:f(e,t,i,r.headers),actions:h(t,i)})}},770:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>{const o=i.parseLink(t,r.headers.get("Link"));return new n.BaseHeadState({client:e,uri:t,headers:r.headers,links:o})}},154:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963),o=r(730),s=r(289);t.factory=async(e,t,r)=>{const a=await r.text(),c=i.parseLink(t,r.headers.get("Link")),u=o.parseHtml(t,a);return c.add(...u.links),new n.BaseState({client:e,uri:t,data:a,headers:r.headers,links:c,actions:u.forms.map((e=>function(e,t){return{uri:s.resolve(e,t.action),name:t.rel||t.id||"",method:t.method||"GET",contentType:t.enctype||"application/x-www-form-urlencoded",fields:[]}}(t,e)))})}},24:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.headStateFactory=t.htmlStateFactory=t.CjState=t.cjStateFactory=t.textStateFactory=t.SirenState=t.sirenStateFactory=t.jsonApiStateFactory=t.binaryStateFactory=t.HalState=t.halStateFactory=t.BaseHeadState=t.BaseState=t.isState=void 0;var n=r(269);Object.defineProperty(t,"isState",{enumerable:!0,get:function(){return n.isState}});var i=r(0);Object.defineProperty(t,"BaseState",{enumerable:!0,get:function(){return i.BaseState}}),Object.defineProperty(t,"BaseHeadState",{enumerable:!0,get:function(){return i.BaseHeadState}});var o=r(842);Object.defineProperty(t,"halStateFactory",{enumerable:!0,get:function(){return o.factory}}),Object.defineProperty(t,"HalState",{enumerable:!0,get:function(){return o.HalState}});var s=r(909);Object.defineProperty(t,"binaryStateFactory",{enumerable:!0,get:function(){return s.factory}});var a=r(60);Object.defineProperty(t,"jsonApiStateFactory",{enumerable:!0,get:function(){return a.factory}});var c=r(389);Object.defineProperty(t,"sirenStateFactory",{enumerable:!0,get:function(){return c.factory}}),Object.defineProperty(t,"SirenState",{enumerable:!0,get:function(){return c.SirenState}});var u=r(945);Object.defineProperty(t,"textStateFactory",{enumerable:!0,get:function(){return u.factory}});var l=r(287);Object.defineProperty(t,"cjStateFactory",{enumerable:!0,get:function(){return l.factory}}),Object.defineProperty(t,"CjState",{enumerable:!0,get:function(){return l.CjState}});var f=r(154);Object.defineProperty(t,"htmlStateFactory",{enumerable:!0,get:function(){return f.factory}});var h=r(770);Object.defineProperty(t,"headStateFactory",{enumerable:!0,get:function(){return h.factory}})},269:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isState=void 0;const n=r(173);t.isState=function(e){return"string"==typeof e.uri&&e.links instanceof n.Links&&e.headers instanceof Headers}},60:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);function o(e,t,r){return{context:e,rel:t,href:"string"==typeof r?r:r.href}}t.factory=async(e,t,r)=>{const s=await r.json(),a=i.parseLink(t,r.headers.get("Link"));return a.add(...function(e,t){const r=[];if(void 0===t.links)return r;for(const[n,i]of Object.entries(t.links))Array.isArray(i)?r.push(...i.map((t=>o(e,n,t)))):r.push(o(e,n,i));return r}(t,s),...function(e,t){if(!Array.isArray(t.data))return[];const r=[];for(const n of t.data)if("links"in n&&"self"in n.links){const t=o(e,"self",n.links.self);r.push({context:e,href:t.href,rel:"item"})}return r}(t,s)),new n.BaseState({client:e,uri:t,data:s,headers:r.headers,links:a})}},389:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.SirenState=void 0;const i=r(0),o=r(963),s=r(173),a=r(289);class c extends i.BaseState{serializeBody(){throw new Error("Reserializing Siren states is not yet supported. Please log an issue in the Ketting project to help figure out how this should be done")}clone(){return new c({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new s.Links(this.uri,this.links),actions:this.actionInfo})}}function u(e,t){const r=[];if(void 0!==t.links)for(const n of t.links)r.push(...l(e,n));if(void 0!==t.entities)for(const n of t.entities)void 0!==n.href?r.push(...l(e,n)):r.push(...h(e,n));return r}function l(e,t){const r=[],{rel:i}=t,o=n(t,["rel"]);for(const t of i){const n=Object.assign({rel:t,context:e},o);r.push(n)}return r}function f(e,t,r,n){if(void 0===r.entities)return[];const i=[];for(const o of r.entities)if(void 0===o.href){const r=d(e,t,o,n);null!==r&&i.push(r)}return i}function h(e,t){if(void 0===t.links)return[];let r=null;for(const e of t.links)e.rel.includes("self")&&(r=e.href);return null===r?[]:t.rel.map((n=>{const i=t.title,o={href:r,rel:n,context:e};return i&&(o.title=i),o}))}function d(e,t,r,n){if(void 0===r.links)return null;let i=null;for(const e of r.links)e.rel.includes("self")&&(i=e.href);if(!i)return null;const o=a.resolve(t,i);return new c({client:e,uri:o,data:r.properties,headers:n,links:new s.Links(i,u(i,r))})}t.SirenState=c,t.factory=async(e,t,r)=>{const n=await r.json(),i=o.parseLink(t,r.headers.get("Link"));return i.add(...u(t,n)),new c({client:e,uri:t,data:n.properties,headers:r.headers,links:i,embedded:f(e,t,n,r.headers),actions:n.actions?n.actions.map((e=>function(e,t){return{uri:a.resolve(e,t.href),name:t.name,title:t.title,method:t.method||"GET",contentType:t.type||"application/x-www-form-urlencoded",fields:t.fields?t.fields.map((e=>function(e){const t={name:e.name,type:e.type||"text",required:!1,readOnly:!1};return e.value&&(t.value=e.value),e.title&&(t.label=e.title),t}(e))):[]}}(t,e))):[]})}},945:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>new n.BaseState({client:e,uri:t,data:await r.text(),headers:r.headers,links:i.parseLink(t,r.headers.get("Link"))})},699:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encode=void 0,t.encode=function(e){return btoa(e)}},595:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.needsJsonStringify=void 0,t.needsJsonStringify=function(e){return"string"!=typeof e&&!(e instanceof Blob)}},730:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseHtml=void 0;const n=r(289);function i(e,t){const r=[];for(const n of t){const t=n.getAttribute("rel"),i=n.getAttribute("href"),o=n.getAttribute("type")||void 0;if(t&&i)for(const n of t.split(" ")){const t={rel:n,context:e,href:i};o&&(t.type=o),r.push(t)}}return r}function o(e,t){const r=[];for(const i of t){const t=i.getAttribute("rel"),o=i.getAttribute("action"),s=i.getAttribute("enctype")||"application/x-www-form-urlencoded",a=i.getAttribute("id"),c=i.getAttribute("method")||"GET";if(t)for(const i of t.split(" ")){const t={rel:i,action:n.resolve(e,o),enctype:s,id:a,method:c};r.push(t)}else r.push({rel:null,action:n.resolve(e,o),enctype:s,id:a,method:c})}return r}t.parseHtml=function(e,t){const r=(new DOMParser).parseFromString(t,"text/html");return{forms:o(e,r.getElementsByTagName("form")),links:[...i(e,r.getElementsByTagName("link")),...i(e,r.getElementsByTagName("a"))]}}},640:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expand=void 0;const n=r(496),i=r(289);t.expand=function(e,t,r){let o,s,a;"string"==typeof e?(o=e,s=t,a=r):(o=e.context,s=e.href,a=t);const c=n.parse(s).expand(a);return i.resolve(o,c)}},289:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=t.resolve=void 0,t.resolve=function(e,t){var r;if("string"!=typeof e)t=e.href,e=e.context;else if(!t)return e;if("undefined"!=typeof URL&&0===(null===(r=/https?:\/\//.exec(e))||void 0===r?void 0:r.index))return new URL(t,e).toString();const n=document,i=n.getElementsByTagName("base")[0],o=null==i?void 0:i.href,s=n.head||n.getElementsByTagName("head")[0],a=i||s.appendChild(n.createElement("base")),c=n.createElement("a");a.href=e,c.href=t;const u=c.href;return i?i.href=o:s.removeChild(a),u},t.parse=function(e){return{host:new URL(e).host}}},496:function(e,t,r){e.exports=function(){function e(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var t={parse:function(t,n){var i={uriTemplate:function(){var e,t,r;for(r=o,e=[],null===(t=v())&&(t=u());null!==t;)e.push(t),null===(t=v())&&(t=u());return null!==e&&(e=new b(e)),null===e&&(o=r),e},expression:u,op:l,pathExpression:function(){var e;return"{/"===t.substr(o,2)?(e="{/",o+=2):(e=null,c('"{/"')),e},paramList:f,param:h,cut:d,listMarker:p,substr:y,nonexpression:v,extension:m};if(void 0!==n){if(void 0===i[n])throw new Error("Invalid rule name: "+e(n)+".")}else n="uriTemplate";var o=0,s=0,a=[];function c(e){o<s||(o>s&&(s=o,a=[]),a.push(e))}function u(){var e,r,n,i,s,a,u,h;return s=o,a=o,123===t.charCodeAt(o)?(e="{",o++):(e=null,c('"{"')),null!==e&&null!==(r=l())&&null!==(n=f())?(125===t.charCodeAt(o)?(i="}",o++):(i=null,c('"}"')),null!==i?e=[e,r,n,i]:(e=null,o=a)):(e=null,o=a),null!==e&&(u=e[1],h=e[2],e=w(u,h)),null===e&&(o=s),e}function l(){var e;return/^[\/;:.?&+#]/.test(t.charAt(o))?(e=t.charAt(o),o++):(e=null,c("[\\/;:.?&+#]")),null===e&&(e=""),e}function f(){var e,r,n,i,s,a,u,l,f,d;if(s=o,a=o,null!==(e=h())){for(r=[],u=o,l=o,44===t.charCodeAt(o)?(n=",",o++):(n=null,c('","')),null!==n&&null!==(i=h())?n=[n,i]:(n=null,o=l),null!==n&&(n=n[1]),null===n&&(o=u);null!==n;)r.push(n),u=o,l=o,44===t.charCodeAt(o)?(n=",",o++):(n=null,c('","')),null!==n&&null!==(i=h())?n=[n,i]:(n=null,o=l),null!==n&&(n=n[1]),null===n&&(o=u);null!==r?e=[e,r]:(e=null,o=a)}else e=null,o=a;return null!==e&&(f=e[0],(d=e[1]).unshift(f),e=d),null===e&&(o=s),e}function h(){var e,r,n,i,s,a,u,l;for(i=o,s=o,e=[],/^[a-zA-Z0-9_.%]/.test(t.charAt(o))?(r=t.charAt(o),o++):(r=null,c("[a-zA-Z0-9_.%]"));null!==r;)e.push(r),/^[a-zA-Z0-9_.%]/.test(t.charAt(o))?(r=t.charAt(o),o++):(r=null,c("[a-zA-Z0-9_.%]"));return null!==e?(null===(r=d())&&(r=p()),null!==(r=null!==r?r:"")&&null!==(n=null!==(n=m())?n:"")?e=[e,r,n]:(e=null,o=s)):(e=null,o=s),null!==e&&(a=e[0],u=e[1],l=e[2],u=u||{},e={name:a.join(""),explode:u.listMarker,cut:u.cut,extended:l}),null===e&&(o=i),e}function d(){var e,t;return t=o,null!==(e=y())&&(e={cut:e}),null===e&&(o=t),e}function p(){var e,r;return r=o,42===t.charCodeAt(o)?(e="*",o++):(e=null,c('"*"')),null!==e&&(e={listMarker:e}),null===e&&(o=r),e}function y(){var e,r,n,i,s,a;if(i=o,s=o,58===t.charCodeAt(o)?(e=":",o++):(e=null,c('":"')),null!==e){if(/^[0-9]/.test(t.charAt(o))?(n=t.charAt(o),o++):(n=null,c("[0-9]")),null!==n)for(r=[];null!==n;)r.push(n),/^[0-9]/.test(t.charAt(o))?(n=t.charAt(o),o++):(n=null,c("[0-9]"));else r=null;null!==r?e=[e,r]:(e=null,o=s)}else e=null,o=s;return null!==e&&(a=e[1],e=parseInt(a.join(""))),null===e&&(o=i),e}function v(){var e,r,n;if(n=o,/^[^{]/.test(t.charAt(o))?(r=t.charAt(o),o++):(r=null,c("[^{]")),null!==r)for(e=[];null!==r;)e.push(r),/^[^{]/.test(t.charAt(o))?(r=t.charAt(o),o++):(r=null,c("[^{]"));else e=null;return null!==e&&(e=e.join("")),null===e&&(o=n),e}function m(){var e,r,n,i,s;if(i=o,s=o,40===t.charCodeAt(o)?(e="(",o++):(e=null,c('"("')),null!==e){if(/^[^)]/.test(t.charAt(o))?(n=t.charAt(o),o++):(n=null,c("[^)]")),null!==n)for(r=[];null!==n;)r.push(n),/^[^)]/.test(t.charAt(o))?(n=t.charAt(o),o++):(n=null,c("[^)]"));else r=null;null!==r?(41===t.charCodeAt(o)?(n=")",o++):(n=null,c('")"')),null!==n?e=[e,r,n]:(e=null,o=s)):(e=null,o=s)}else e=null,o=s;return null!==e&&(e=e[1].join("")),null===e&&(o=i),e}var g=r(353),b=g.Template,w=g.expression,_=i[n]();if(null===_||o!==t.length){var O=Math.max(o,s),x=O<t.length?t.charAt(O):null,k=function(){for(var e=1,r=1,n=!1,i=0;i<Math.max(o,s);i++){var a=t.charAt(i);"\n"===a?(n||e++,r=1,n=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(e++,r=1,n=!0):(r++,n=!1)}return{line:e,column:r}}();throw new this.SyntaxError(function(e){e.sort();for(var t=null,r=[],n=0;n<e.length;n++)e[n]!==t&&(r.push(e[n]),t=e[n]);return r}(a),x,O,k.line,k.column)}return _},toSource:function(){return this._source},SyntaxError:function(t,r,n,i,o){this.name="SyntaxError",this.expected=t,this.found=r,this.message=function(t,r){var n;switch(t.length){case 0:n="end of input";break;case 1:n=t[0];break;default:n=t.slice(0,t.length-1).join(", ")+" or "+t[t.length-1]}return"Expected "+n+" but "+(r?e(r):"end of input")+" found."}(t,r),this.offset=n,this.line=i,this.column=o}};return t.SyntaxError.prototype=Error.prototype,t}()},353:function(e,t,r){(function(){var t,n,i,o,s,a,c,u,l,f,h,d=function(e,t){return function(){return e.apply(t,arguments)}},p={}.hasOwnProperty,y=function(e,t){for(var r in t)p.call(t,r)&&(e[r]=t[r]);function n(){this.constructor=e}return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e};h=r(669),f=f=function(){function e(e){var t,r=this;this.expressions=[],this.prefix="string"==typeof e[0]?e.shift():"",t=0,e.forEach((function(e){switch(typeof e){case"object":return r.expressions[t++]=e;case"string":return r.expressions[t-1].suffix=e}}))}return e.prototype.expand=function(e){return this.prefix+this.expressions.map((function(t){return t.expand(e)})).join("")},e.prototype.toString=function(){return this.prefix+this.expressions.join("")},e.prototype.toJSON=function(){return this.toString()},e}(),s=function(e){function t(){return this.explodeArray=d(this.explodeArray,this),this.stringifySingle=d(this.stringifySingle,this),t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.stringifySingle=function(e,r){return r=(r=t.__super__.stringifySingle.apply(this,arguments))?"="+r:this.empty,""+e.name+r},t.prototype.explodeArray=function(e,t){var r=this;return t.map((function(t){return e.name+"="+r.encode(t)})).join(this.sep)},t}(l=function(){var e;function t(e){this.params=e,this.explodeObject=d(this.explodeObject,this),this.explodeArray=d(this.explodeArray,this),this._expandPair=d(this._expandPair,this),this.stringifySingle=d(this.stringifySingle,this),this.encode=d(this.encode,this),null==this.params&&(this.params=[]),this.suffix=""}return t.prototype.first="",t.prototype.sep=",",t.prototype.named=!1,t.prototype.empty="",t.prototype.allow="U",t.prototype.encode=function(e){return h[this.allow](e)},t.prototype.stringifySingle=function(e,t){var r,n,i;if("string"==(n=typeof t)||"boolean"===n||"number"===n)return t=t.toString(),this.encode(t.substring(0,e.cut||t.length));if(Array.isArray(t)){if(e.cut)throw new Error("Prefixed Values do not support lists. Check "+e.name);return t.map(this.encode).join(",")}if(e.cut)throw new Error("Prefixed Values do not support maps. Check "+e.name);return function(){var e;for(r in e=[],t)i=t[r],e.push([r,i].map(this.encode).join(","));return e}.call(this).join(",")},t.prototype.expand=function(t){var r,n,i=this;return(n=(r=e(this.params,t)).map((function(e){return i._expandPair.apply(i,e)})).join(this.sep))?this.first+n+this.suffix:this.empty&&r.length?this.empty+this.suffix:this.suffix},e=function(e,t){return e.map((function(e){return[e,t[e.name]]})).filter((function(e){var t,r;switch(typeof(r=e[1])){case"undefined":return!1;case"object":for(t in Array.isArray(r)&&r.length,r)if(r[t])return!0;return!1;default:return!0}}))},t.prototype._expandPair=function(e,t){return e.name,e.explode?Array.isArray(t)?this.explodeArray(e,t):"string"==typeof t?this.stringifySingle(e,t):this.explodeObject(t):this.stringifySingle(e,t)},t.prototype.explodeArray=function(e,t){return t.map(this.encode).join(this.sep)},t.prototype.explodeObject=function(e){var t,r,n,i,o,s;for(t in r=[],e)if(n=e[t],t=this.encode(t),Array.isArray(n))for(o=0,s=n.length;o<s;o++)i=n[o],r.push([t,this.encode(i)]);else r.push([t,this.encode(n)]);return r.map((function(e){return e.join("=")})).join(this.sep)},t.prototype.toString=function(){var e;return e=this.params.map((function(e){return e.name+e.explode})).join(","),"{"+this.first+e+"}"+this.suffix},t.prototype.toJSON=function(){return this.toString()},t}()),u=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.encode=function(e){return h["U+R"](e)},t.prototype.toString=function(){return"{+"+t.__super__.toString.apply(this,arguments).substring(1)},t}(l),i=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first="#",t.prototype.empty="#",t.prototype.encode=function(e){return h["U+R"](e)},t}(l),o=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first=".",t.prototype.sep=".",t.prototype.empty=".",t}(l),c=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first="/",t.prototype.sep="/",t}(l),a=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first=";",t.prototype.sep=";",t}(s),n=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first="?",t.prototype.sep="&",t.prototype.empty="=",t}(s),t=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return y(t,e),t.prototype.first="&",t}(n),e.exports={Template:f,SimpleExpression:l,NamedExpression:s,ReservedExpression:u,FragmentExpression:i,LabelExpression:o,PathSegmentExpression:c,PathParamExpression:a,FormStartExpression:n,FormContinuationExpression:t,expression:function(e,r){return new(function(){switch(e){case"":return l;case"+":return u;case"#":return i;case".":return o;case"/":return c;case";":return a;case"?":return n;case"&":return t}}())(r)}}}).call(this)},669:function(e,t,r){(function(){var e;e=r(129),t.U=e(/[^\w~.-]/g),t["U+R"]=e(/[^\w.~:\/\?#\[\]@!\$&'()*+,;=%-]|%(?!\d\d)/g)}).call(this)},306:function(e){"use strict";e.exports={i8:"7.1.1"}},94:function(){}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var n={};return function(){"use strict";var e=n;Object.defineProperty(e,"__esModule",{value:!0}),e.FollowPromiseMany=e.FollowPromiseOne=e.Problem=e.oauth2=e.bearerAuth=e.basicAuth=e.NeverCache=e.ShortCache=e.ForeverCache=e.isState=e.CjState=e.SirenState=e.HalState=e.BaseHeadState=e.BaseState=e.resolve=e.Links=e.LinkNotFound=e.Resource=e.default=e.Ketting=e.Client=void 0;var t=r(934);Object.defineProperty(e,"Client",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Ketting",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}});var i=r(871);Object.defineProperty(e,"Resource",{enumerable:!0,get:function(){return i.default}});var o=r(173);Object.defineProperty(e,"LinkNotFound",{enumerable:!0,get:function(){return o.LinkNotFound}}),Object.defineProperty(e,"Links",{enumerable:!0,get:function(){return o.Links}});var s=r(289);Object.defineProperty(e,"resolve",{enumerable:!0,get:function(){return s.resolve}});var a=r(24);Object.defineProperty(e,"BaseState",{enumerable:!0,get:function(){return a.BaseState}}),Object.defineProperty(e,"BaseHeadState",{enumerable:!0,get:function(){return a.BaseHeadState}}),Object.defineProperty(e,"HalState",{enumerable:!0,get:function(){return a.HalState}}),Object.defineProperty(e,"SirenState",{enumerable:!0,get:function(){return a.SirenState}}),Object.defineProperty(e,"CjState",{enumerable:!0,get:function(){return a.CjState}}),Object.defineProperty(e,"isState",{enumerable:!0,get:function(){return a.isState}});var c=r(651);Object.defineProperty(e,"ForeverCache",{enumerable:!0,get:function(){return c.ForeverCache}});var u=r(478);Object.defineProperty(e,"ShortCache",{enumerable:!0,get:function(){return u.ShortCache}});var l=r(575);Object.defineProperty(e,"NeverCache",{enumerable:!0,get:function(){return l.NeverCache}});var f=r(530);Object.defineProperty(e,"basicAuth",{enumerable:!0,get:function(){return f.default}});var h=r(409);Object.defineProperty(e,"bearerAuth",{enumerable:!0,get:function(){return h.default}});var d=r(686);Object.defineProperty(e,"oauth2",{enumerable:!0,get:function(){return d.default}});var p=r(682);Object.defineProperty(e,"Problem",{enumerable:!0,get:function(){return p.Problem}});var y=r(761);Object.defineProperty(e,"FollowPromiseOne",{enumerable:!0,get:function(){return y.FollowPromiseOne}}),Object.defineProperty(e,"FollowPromiseMany",{enumerable:!0,get:function(){return y.FollowPromiseMany}})}(),n}()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Ketting=t():e.Ketting=t()}(self,(function(){return function(){var e={187:function(e){"use strict";var t,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};t=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise((function(r,n){function i(r){e.removeListener(t,o),n(r)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",i),r([].slice.call(arguments))}y(e,t,o,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&y(e,"error",t,{once:!0})}(e,i)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var i,o,s,u;if(a(r),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),o=e._events),s=o[t]),void 0===s)s=o[t]=r,++e._eventsCount;else if("function"==typeof s?s=o[t]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),(i=c(e))>0&&s.length>i&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=l.bind(n);return i.listener=r,n.wrapFn=i,i}function h(e,t,r){var n=e._events;if(void 0===n)return[];var i=n[t];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):p(i,i.length)}function d(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function p(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}function y(e,t,r,n){if("function"==typeof e.on)n.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function i(o){n.once&&e.removeEventListener(t,i),r(o)}))}}Object.defineProperty(o,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return c(this)},o.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,o=this._events;if(void 0!==o)i=i&&void 0===o.error;else if(!i)return!1;if(i){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var u=c.length,l=p(c,u);for(r=0;r<u;++r)n(l[r],this,t)}return!0},o.prototype.addListener=function(e,t){return u(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return u(this,e,t,!0)},o.prototype.once=function(e,t){return a(t),this.on(e,f(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,f(this,e,t)),this},o.prototype.removeListener=function(e,t){var r,n,i,o,s;if(a(t),void 0===(n=this._events))return this;if(void 0===(r=n[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,o=r.length-1;o>=0;o--)if(r[o]===t||r[o].listener===t){s=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,i),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,s||t)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,r,n;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n<o.length;++n)"removeListener"!==(i=o[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},o.prototype.listeners=function(e){return h(this,e,!0)},o.prototype.rawListeners=function(e){return h(this,e,!1)},o.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},17:function(e){self,e.exports=(()=>{"use strict";var e={681:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.encode=void 0,t.encode=function(e){return btoa(e)}},443:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});class r extends Error{constructor(e,t,r){super(e),this.oauth2Code=t,this.httpCode=r}}t.default=r},13:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=r(882);t.default=class{constructor(e,t=null){if(!e.grantType&&!t&&!e.accessToken)throw new Error("If no grantType is specified, a token must be provided");this.options=e,e.accessToken&&(console.warn("[fetch-mw-oauth2] Specifying accessToken via the options argument in the constructor of OAuth2 is deprecated. Please supply the options in the second argument. Backwards compatability will be removed in a future version of this library"),t={accessToken:e.accessToken,refreshToken:e.refreshToken||null,expiresAt:null}),this.token=t,this.activeRefresh=null,this.refreshTimer=null,this.scheduleRefresh()}async fetch(e,t){const r=new Request(e,t);return this.fetchMw(r,(e=>fetch(e)))}async fetchMw(e,t){const r=await this.getAccessToken();let n=e.clone();n.headers.set("Authorization","Bearer "+r);let i=await t(n);if(!i.ok&&401===i.status){const r=await this.refreshToken();n=e.clone(),n.headers.set("Authorization","Bearer "+r.accessToken),i=await t(n)}return i}async getToken(){return this.token&&(null===this.token.expiresAt||this.token.expiresAt>Date.now())?this.token:this.refreshToken()}async getAccessToken(){return(await this.getToken()).accessToken}async refreshToken(){if(this.activeRefresh)return this.activeRefresh;this.activeRefresh=(0,n.refreshToken)(this.options,this.token);try{const e=await this.activeRefresh;return this.token=e,this.scheduleRefresh(),e}catch(e){throw this.options.onAuthError&&this.options.onAuthError(e),e}finally{this.activeRefresh=null}}scheduleRefresh(){if(this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),!this.token||!this.token.expiresAt||!this.token.refreshToken)return;const e=this.token.expiresAt-Date.now();e<12e4||(this.refreshTimer=setTimeout((async()=>{try{await this.refreshToken()}catch(e){console.error("[fetch-mw-oauth2] error while doing a background OAuth2 auto-refresh",e)}}),e-6e4))}}},882:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.refreshToken=t.objToQueryString=void 0;const n=r(681),i=r(443);function o(e){return Object.entries(e).map((([e,t])=>void 0===t?"":encodeURIComponent(e)+"="+encodeURIComponent(t))).join("&")}t.objToQueryString=o,t.refreshToken=async function e(t,r){let s;const a=r;if(null==a?void 0:a.refreshToken)s={grant_type:"refresh_token",refresh_token:a.refreshToken},void 0===t.clientSecret&&(s.client_id=t.clientId);else switch(t.grantType){case"client_credentials":s={grant_type:"client_credentials"},t.scope&&(s.scope=t.scope.join(" "));break;case"password":s={grant_type:"password",username:t.userName,password:t.password},t.scope&&(s.scope=t.scope.join(" "));break;case"authorization_code":s={grant_type:"authorization_code",code:t.code,redirect_uri:t.redirectUri,client_id:t.clientId,code_verifier:t.codeVerifier};break;default:throw"string"==typeof t.grantType?new Error("Unknown grantType: "+t.grantType):new Error('Cannot obtain an access token if no "grantType" is specified')}const c={"Content-Type":"application/x-www-form-urlencoded"};let u=!1;if(void 0!==t.clientSecret){u=!0;const e=(0,n.encode)(t.clientId+":"+t.clientSecret);c.Authorization="Basic "+e}const l=await fetch(t.tokenEndpoint,{method:"POST",headers:c,body:o(s)}),f=await l.json();if(!l.ok){if("refresh_token"===s.grant_type&&t.grantType)return e(t,null);const r=l.status;let n,o;throw f.error?(n="OAuth2 error "+f.error+".",f.error_description&&(n+=" "+f.error_description),o=f.error):(n="HTTP Error "+l.status+" "+l.statusText,401===l.status&&u&&(n+=". It's likely that the clientId and/or clientSecret was incorrect"),o=null),new i.default(n,o,r)}const h={accessToken:f.access_token,expiresAt:f.expires_in?Date.now()+1e3*f.expires_in:null,refreshToken:f.refresh_token?f.refresh_token:null};return t.onTokenUpdate&&t.onTokenUpdate(h),h}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}var n={};return(()=>{var e=n;Object.defineProperty(e,"__esModule",{value:!0}),e.OAuth2Error=e.OAuth2=e.fetchMwOAuth2=e.default=void 0;var t=r(13);Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"fetchMwOAuth2",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"OAuth2",{enumerable:!0,get:function(){return t.default}});var i=r(443);Object.defineProperty(e,"OAuth2Error",{enumerable:!0,get:function(){return i.default}})})(),n})()},475:function(e){"use strict";var t=/^utf-?8|ascii|utf-?16-?le|ucs-?2|base-?64|latin-?1$/i,r=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,n=/\s|\uFEFF|\xA0/,i=/\r?\n[\x20\x09]+/g,o=/[;,"]/,s=/[;,"]|\s/,a=/^[!#$%&'*+\-\.^_`|~\da-zA-Z]+$/;function c(e){return e.replace(r,"")}function u(e){return n.test(e)}function l(e,t){for(;u(e[t]);)t++;return t}function f(e){return s.test(e)||!a.test(e)}class h{constructor(e){this.refs=[],e&&this.parse(e)}rel(e){for(var t=[],r=e.toLowerCase(),n=0;n<this.refs.length;n++)this.refs[n].rel.toLowerCase()===r&&t.push(this.refs[n]);return t}get(e,t){e=e.toLowerCase();for(var r=[],n=0;n<this.refs.length;n++)this.refs[n][e]===t&&r.push(this.refs[n]);return r}set(e){return this.refs.push(e),this}has(e,t){e=e.toLowerCase();for(var r=0;r<this.refs.length;r++)if(this.refs[r][e]===t)return!0;return!1}parse(e,t){for(var r=1,n=(e=c(e=(t=t||0)?e.slice(t):e).replace(i,"")).length,s=(t=0,null);t<n;)if(1===r){if(u(e[t])){t++;continue}if("<"!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);if(null!=s&&(null!=s.rel?this.refs.push(...h.expandRelations(s)):this.refs.push(s)),-1===(d=e.indexOf(">",t)))throw new Error("Expected end of URI delimiter at offset "+t);s={uri:e.slice(t+1,d)},t=d,r=2,t++}else if(2===r){if(u(e[t])){t++;continue}if(";"===e[t])r=4,t++;else{if(","!==e[t])throw new Error('Unexpected character "'+e[t]+'" at offset '+t);r=1,t++}}else{if(4!==r)throw new Error('Unknown parser state "'+r+'"');if(";"===e[t]||u(e[t])){t++;continue}if(-1===(d=e.indexOf("=",t)))throw new Error("Expected attribute delimiter at offset "+t);var a=c(e.slice(t,d)).toLowerCase(),f="";if('"'===e[t=l(e,t=d+1)])for(t++;t<n;){if('"'===e[t]){t++;break}"\\"===e[t]&&t++,f+=e[t],t++}else{for(var d=t+1;!o.test(e[d])&&d<n;)d++;f=e.slice(t,d),t=d}switch(s[a]&&h.isSingleOccurenceAttr(a)||("*"===a[a.length-1]?s[a]=h.parseExtendedValue(f):(f="type"===a?f.toLowerCase():f,null!=s[a]?Array.isArray(s[a])?s[a].push(f):s[a]=[s[a],f]:s[a]=f)),e[t]){case",":r=1;break;case";":r=4}t++}return null!=s&&(null!=s.rel?this.refs.push(...h.expandRelations(s)):this.refs.push(s)),s=null,this}toString(){for(var e=[],t="",r=null,n=0;n<this.refs.length;n++)r=this.refs[n],t=Object.keys(this.refs[n]).reduce((function(e,t){return"uri"===t?e:e+"; "+h.formatAttribute(t,r[t])}),"<"+r.uri+">"),e.push(t);return e.join(", ")}}h.isCompatibleEncoding=function(e){return t.test(e)},h.parse=function(e,t){return(new h).parse(e,t)},h.isSingleOccurenceAttr=function(e){return"rel"===e||"type"===e||"media"===e||"title"===e||"title*"===e},h.isTokenAttr=function(e){return"rel"===e||"type"===e||"anchor"===e},h.escapeQuotes=function(e){return e.replace(/"/g,'\\"')},h.expandRelations=function(e){return e.rel.split(" ").map((function(t){var r=Object.assign({},e);return r.rel=t,r}))},h.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']+)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:h.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:h.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}},h.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase();return e+"="+r+"'"+(t.language||"en")+"'"+(Buffer.isBuffer(t.value)&&h.isCompatibleEncoding(r)?t.value.toString(r):Buffer.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):encodeURIComponent(t.value))},h.formatAttribute=function(e,t){return Array.isArray(t)?t.map((t=>h.formatAttribute(e,t))).join("; "):"*"===e[e.length-1]||"string"!=typeof t?h.formatExtendedAttribute(e,t):(h.isTokenAttr(e)?t=f(t)?'"'+h.escapeQuotes(t)+'"':h.escapeQuotes(t):f(t)&&(t='"'+(t=(t=encodeURIComponent(t)).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},e.exports=h},129:function(e){e.exports=function(e){return e=e||/\W/g,function(t){return(t=String(t)).replace(e,(function(e){var t=e[0].charCodeAt(0),r=[];return t<128?r.push(t):128<=t&&t<2048?(r.push(t>>6|192),r.push(63&t|128)):(r.push(t>>12|224),r.push(t>>6&63|128),r.push(63&t|128)),r.map((function(e){return"%"+e.toString(16).toUpperCase()})).join("")}))}}},779:function(e,t,r){"use strict";var n=t,i=r(94).Buffer;function o(e,t){try{return decodeURIComponent(e)}catch(r){return n.unescapeBuffer(e,t).toString()}}n.unescapeBuffer=function(e,t){for(var r,n,o,s=new i(e.length),a=0,c=0,u=0;c<=e.length;c++){var l=c<e.length?e.charCodeAt(c):NaN;switch(a){case 0:switch(l){case 37:r=0,n=0,a=1;break;case 43:t&&(l=32);default:s[u++]=l}break;case 1:if(o=l,l>=48&&l<=57)r=l-48;else if(l>=65&&l<=70)r=l-65+10;else{if(!(l>=97&&l<=102)){s[u++]=37,s[u++]=l,a=0;break}r=l-97+10}a=2;break;case 2:if(a=0,l>=48&&l<=57)n=l-48;else if(l>=65&&l<=70)n=l-65+10;else{if(!(l>=97&&l<=102)){s[u++]=37,s[u++]=o,s[u++]=l;break}n=l-97+10}s[u++]=16*r+n}}return s.slice(0,u-1)},n.unescape=o;for(var s=new Array(256),a=0;a<256;++a)s[a]="%"+((a<16?"0":"")+a.toString(16)).toUpperCase();n.escape=function(e){"string"!=typeof e&&(e+="");for(var t="",r=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);if(!(33===i||45===i||46===i||95===i||126===i||i>=39&&i<=42||i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122))if(n-r>0&&(t+=e.slice(r,n)),i<128)r=n+1,t+=s[i];else if(i<2048)r=n+1,t+=s[192|i>>6]+s[128|63&i];else if(i<55296||i>=57344)r=n+1,t+=s[224|i>>12]+s[128|i>>6&63]+s[128|63&i];else{var o;if(!(++n<e.length))throw new URIError("URI malformed");o=1023&e.charCodeAt(n),r=n+1,t+=s[240|(i=65536+((1023&i)<<10|o))>>18]+s[128|i>>12&63]+s[128|i>>6&63]+s[128|63&i]}}return 0===r?e:r<e.length?t+e.slice(r):t};var c=function(e){return"string"==typeof e?e:"number"==typeof e&&isFinite(e)?""+e:"boolean"==typeof e?e?"true":"false":""};function u(e,t){try{return t(e)}catch(t){return n.unescape(e,!0)}}n.stringify=n.encode=function(e,t,r,i){t=t||"&",r=r||"=";var o=n.escape;if(i&&"function"==typeof i.encodeURIComponent&&(o=i.encodeURIComponent),null!==e&&"object"==typeof e){for(var s=Object.keys(e),a=s.length,u=a-1,l="",f=0;f<a;++f){var h=s[f],d=e[h],p=o(c(h))+r;if(Array.isArray(d)){for(var y=d.length,v=y-1,m=0;m<y;++m)l+=p+o(c(d[m])),m<v&&(l+=t);y&&f<u&&(l+=t)}else l+=p+o(c(d)),f<u&&(l+=t)}return l}return""},n.parse=n.decode=function(e,t,r,i){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;"string"!=typeof t&&(t+="");var a=r.length,c=t.length,l=1e3;i&&"number"==typeof i.maxKeys&&(l=i.maxKeys);var f=1/0;l>0&&(f=l);var h=n.unescape;i&&"function"==typeof i.decodeURIComponent&&(h=i.decodeURIComponent);for(var d=h!==o,p=[],y=0,v=0,m=0,g="",b="",w=d,O=d,k=0,j=0;j<e.length;++j){var x=e.charCodeAt(j);if(x!==t.charCodeAt(v)){if(v=0,O||(37===x?k=1:k>0&&(x>=48&&x<=57||x>=65&&x<=70||x>=97&&x<=102)?3==++k&&(O=!0):k=0),m<a){if(x===r.charCodeAt(m)){++m===a&&(y<(_=j-m+1)&&(g+=e.slice(y,_)),k=0,y=j+1);continue}m=0,w||(37===x?k=1:k>0&&(x>=48&&x<=57||x>=65&&x<=70||x>=97&&x<=102)?3==++k&&(w=!0):k=0)}43===x&&(m<a?(j-y>0&&(g+=e.slice(y,j)),g+="%20",w=!0):(j-y>0&&(b+=e.slice(y,j)),b+="%20",O=!0),y=j+1)}else if(++v===c){var S,_=j-v+1;if(m<a?y<_&&(g+=e.slice(y,_)):y<_&&(b+=e.slice(y,_)),w&&(g=u(g,h)),O&&(b=u(b,h)),-1===p.indexOf(g)?(s[g]=b,p[p.length]=g):(S=s[g])instanceof Array?S[S.length]=b:s[g]=[S,b],0==--f)break;w=O=d,k=0,g=b="",y=j+1,v=m=0}}return f>0&&(y<e.length||m>0)&&(y<e.length&&(m<a?g+=e.slice(y):v<c&&(b+=e.slice(y))),w&&(g=u(g,h)),O&&(b=u(b,h)),-1===p.indexOf(g)?(s[g]=b,p[p.length]=g):(S=s[g])instanceof Array?S[S.length]=b:s[g]=[S,b]),s}},34:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionNotFound=t.SimpleAction=void 0;const n=r(779);t.SimpleAction=class{constructor(e,t){this.client=e;for(const[e,r]of Object.entries(t))this[e]=r}async submit(e){const t=new URL(this.uri);if("GET"===this.method)return t.search=n.stringify(e),this.client.go(t.toString()).get();let r;switch(this.contentType){case"application/x-www-form-urlencoded":r=n.stringify(e);break;case"application/json":r=JSON.stringify(e);break;default:throw new Error(`Serializing mimetype ${this.contentType} is not yet supported in actions`)}const i=await this.client.fetcher.fetchOrThrow(t.toString(),{method:this.method,body:r,headers:{"Content-Type":this.contentType}});return this.client.getStateForResponse(t.toString(),i)}};class i extends Error{}t.ActionNotFound=i},651:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ForeverCache=void 0,t.ForeverCache=class{constructor(){this.cache=new Map}store(e){this.cache.set(e.uri,e.clone())}get(e){const t=this.cache.get(e);return t?t.clone():null}has(e){return this.cache.has(e)}delete(e){this.cache.delete(e)}clear(){this.cache.clear()}}},689:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NeverCache=t.ShortCache=t.ForeverCache=void 0;var n=r(651);Object.defineProperty(t,"ForeverCache",{enumerable:!0,get:function(){return n.ForeverCache}});var i=r(478);Object.defineProperty(t,"ShortCache",{enumerable:!0,get:function(){return i.ShortCache}});var o=r(575);Object.defineProperty(t,"NeverCache",{enumerable:!0,get:function(){return o.NeverCache}})},575:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NeverCache=void 0,t.NeverCache=class{store(e){}get(e){return null}has(e){return!1}delete(e){}clear(){}}},478:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShortCache=void 0;const n=r(651);class i extends n.ForeverCache{constructor(e=3e4){super(),this.cacheTimeout=e,this.activeTimers=new Map}store(e){super.store(e),this.setTimer(e.uri)}setTimer(e){this.activeTimers.has(e)&&clearTimeout(this.activeTimers.get(e)),this.activeTimers.set(e,setTimeout((()=>{this.delete(e),this.activeTimers.delete(e)}),this.cacheTimeout))}}t.ShortCache=i},934:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(66),i=r(871),o=r(24),s=r(963),a=r(289),c=r(689),u=r(549),l=r(736),f=r(941);function h(e,t,r){r||(r=new Set);for(const n of e)r.has(n)||(r.add(n),t.has(n)&&h(t.get(n),t,r));return r}t.default=class{constructor(e){this.contentTypeMap={"application/prs.hal-forms+json":[o.halStateFactory,"1.0"],"application/hal+json":[o.halStateFactory,"0.9"],"application/vnd.api+json":[o.jsonApiStateFactory,"0.8"],"application/vnd.siren+json":[o.sirenStateFactory,"0.8"],"application/vnd.collection+json":[o.cjStateFactory,"0.8"],"application/json":[o.halStateFactory,"0.7"],"text/html":[o.htmlStateFactory,"0.6"]},this.cacheDependencies=new Map,this.bookmarkUri=e,this.fetcher=new n.Fetcher,this.fetcher.use((0,u.default)(this)),this.fetcher.use((0,l.default)(this)),this.fetcher.use((0,f.default)()),this.cache=new c.ForeverCache,this.resources=new Map}follow(e,t){return this.go().follow(e,t)}go(e){let t;if(t=void 0!==e?(0,a.resolve)(this.bookmarkUri,e):this.bookmarkUri,!this.resources.has(t)){const e=new i.default(this,t);return this.resources.set(t,e),e}return this.resources.get(t)}use(e,t="*"){this.fetcher.use(e,t)}clearCache(){this.cache.clear(),this.cacheDependencies=new Map}cacheState(e){this.cache.store(e);for(const t of e.links.getMany("inv-by"))this.addCacheDependency((0,a.resolve)(t),e.uri);const t=this.resources.get(e.uri);t&&t.emit("update",e);for(const t of e.getEmbedded())this.cacheState(t)}addCacheDependency(e,t){this.cacheDependencies.has(e)?this.cacheDependencies.get(e).add(t):this.cacheDependencies.set(e,new Set([t]))}clearResourceCache(e,t){let r=new Set;const n=new Set;for(const t of e)r.add((0,a.resolve)(this.bookmarkUri,t));for(const e of t)r.add((0,a.resolve)(this.bookmarkUri,e)),n.add((0,a.resolve)(this.bookmarkUri,e));r=h(new Set([...r,...n]),this.cacheDependencies);for(const e of r){this.cache.delete(e);const t=this.resources.get(e);t&&(n.has(e)?t.emit("delete"):t.emit("stale"))}}async getStateForResponse(e,t){const r=(0,s.parseContentType)(t.headers.get("Content-Type"));return r&&204!==t.status?r in this.contentTypeMap?this.contentTypeMap[r][0](this,e,t):r.startsWith("text/")?(0,o.textStateFactory)(this,e,t):r.match(/^application\/[A-Za-z-.]+\+json/)?(0,o.halStateFactory)(this,e,t):(0,o.binaryStateFactory)(this,e,t):(0,o.binaryStateFactory)(this,e,t)}}},761:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FollowPromiseMany=t.FollowPromiseOne=void 0;class r{constructor(){this.prefetchEnabled=!1,this.preferTranscludeEnabled=!1,this.useHeadEnabled=!1}preFetch(){return this.prefetchEnabled=!0,this}preferTransclude(){return this.preferTranscludeEnabled=!0,this}useHead(){return this.useHeadEnabled=!0,this}}class n extends r{constructor(e,t,r){super(),this.resource=e,this.rel=t,this.variables=r}then(e,t){return this.fetchLinkedResource().then(e,t)}catch(e){return this.fetchLinkedResource().then(void 0,e)}finally(e){return this.then((()=>e()),(()=>e()))}follow(e,t){return new n(this.fetchLinkedResource(),e,t)}followAll(e){return new i(this.fetchLinkedResource(),e)}async fetchLinkedResource(){const e=await this.resource,t={};let r;!this.useHeadEnabled&&this.preferTranscludeEnabled&&(t.Prefer="transclude="+this.rel),r=this.useHeadEnabled?await e.head({headers:t}):await e.get({headers:t});const n=r.follow(this.rel,this.variables);return this.prefetchEnabled&&n.get().catch((e=>{console.warn("Error while prefetching linked resource",e)})),n}}t.FollowPromiseOne=n;class i extends r{constructor(e,t){super(),this.resource=e,this.rel=t}then(e,t){return this.fetchLinkedResources().then(e,t)}catch(e){return this.fetchLinkedResources().then(void 0,e)}finally(e){return this.then((()=>e()),(()=>e()))}async fetchLinkedResources(){const e=await this.resource,t={};let r;!this.useHeadEnabled&&this.preferTranscludeEnabled&&(t.Prefer="transclude="+this.rel),r=this.useHeadEnabled?await e.head({headers:t}):await e.get({headers:t});const n=r.followAll(this.rel);return this.prefetchEnabled&&n.map((e=>{e.get().catch((e=>{console.warn("Error while prefetching linked resource",e)}))})),n}}t.FollowPromiseMany=i},530:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(699);t.default=(e,t)=>{const r="Basic "+n.encode(e+":"+t);return(e,t)=>(e.headers.set("Authorization",r),t(e))}},409:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{const t="Bearer "+e;return(e,r)=>(e.headers.set("Authorization",t),r(e))}},682:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Problem=t.HttpError=void 0;class r extends Error{constructor(e){super("HTTP error "+e.status),this.response=e,this.status=e.status}}t.HttpError=r;class n extends r{constructor(e,t){var r,n;super(e),this.body=Object.assign({type:null!==(r=t.type)&&void 0!==r?r:"about:blank",status:null!==(n=t.status)&&void 0!==n?n:this.status},t),this.body.title&&(this.message="HTTP Error "+this.status+": "+this.body.title)}}t.Problem=n,t.default=async function(e){const t=e.headers.get("Content-Type");if(null==t?void 0:t.match(/^application\/problem\+json/i)){const t=await e.json();return new n(e,t)}return new r(e)}},525:function(){},66:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Fetcher=void 0;const n=r(682);r(525);class i{constructor(){this.middlewares=[],this.advertiseKetting=!0}fetch(e,t){const n=new Request(e,t),i=new URL(n.url).origin,s=this.getMiddlewaresByOrigin(i);return s.push((e=>(!e.headers.has("User-Agent")&&this.advertiseKetting&&e.headers.set("User-Agent","Ketting/"+r(147).i8),fetch(e)))),o(s,n)}getMiddlewaresByOrigin(e){return this.middlewares.filter((([t])=>t.test(e))).map((([,e])=>e))}use(e,t="*"){const r=t.split("*").map((e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"))).join("(.*)"),n=new RegExp("^"+r+"$");this.middlewares.push([n,e])}async fetchOrThrow(e,t){const r=await this.fetch(e,t);if(r.ok)return r;throw await(0,n.default)(r)}}function o(e,t){return e[0](t,(t=>o(e.slice(1),t)))}t.Fetcher=i,t.default=i},686:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(17);t.default=(e,t)=>{const r=new n.OAuth2(e,t);return r.fetchMw.bind(r)}},963:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.entityHeaderNames=t.isSafeMethod=t.parseLink=t.parseContentType=void 0;const n=r(475),i=r(173);t.parseContentType=function(e){return e?(e.includes(";")&&(e=e.split(";")[0]),e.trim()):null},t.parseLink=function(e,t){const r=new i.Links(e);if(!t)return r;for(const i of n.parse(t).refs)for(const t of i.rel.split(" ")){const n={rel:t,href:i.uri,context:e,title:i.title,hreflang:i.hreflang,type:i.type};r.add(n)}return r};const o=["GET","HEAD","OPTIONS","PRI","PROPFIND","REPORT","SEARCH","TRACE"];t.isSafeMethod=function(e){return o.includes(e)},t.entityHeaderNames=["Content-Type","Content-Language","Content-Location","Deprecation","ETag","Expires","Last-Modified","Sunset","Title","Warning"]},173:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkNotFound=t.Links=void 0;const n=r(289);class i{constructor(e,t){if(this.defaultContext=e,this.store=new Map,t)if(t instanceof i)this.add(...t.getAll());else for(const e of t)this.add(e)}add(...e){let t;t="string"==typeof e[0]?[{rel:e[0],href:e[1],context:this.defaultContext}]:e.map((e=>Object.assign({context:this.defaultContext},e)));for(const e of t)this.store.has(e.rel)?this.store.get(e.rel).push(e):this.store.set(e.rel,[e])}set(e,t){let r;r="string"==typeof e?{rel:e,href:t,context:this.defaultContext}:Object.assign({context:this.defaultContext},e),this.store.set(r.rel,[r])}get(e){const t=this.store.get(e);if(t&&!(t.length<0))return t[0]}delete(e,t){if(void 0===t)return void this.store.delete(e);const r=this.store.get(e);if(!r)return;this.store.delete(e);const i=(0,n.resolve)(this.defaultContext,t);this.store.set(e,r.filter((e=>(0,n.resolve)(e)!==i)))}getMany(e){return this.store.get(e)||[]}getAll(){const e=[];for(const t of this.store.values())e.push(...t);return e}has(e){return this.store.has(e)}}t.Links=i;class o extends Error{}t.LinkNotFound=o},736:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return async(t,r)=>{if(!t.headers.has("Accept")){const r=Object.entries(e.contentTypeMap).map((([e,[,t]])=>e+";q="+t)).join(", ");t.headers.set("Accept",r)}return r(t)}}},549:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(963),i=r(475),o=r(289);t.default=function(e){return async(t,r)=>{let s=!1;t.headers.has("X-KETTING-NO-STALE")&&(s=!0,t.headers.delete("X-KETTING-NO-STALE"));const a=await r(t);if((0,n.isSafeMethod)(t.method))return a;if(!a.ok)return a;const c=[],u=[];if("DELETE"===t.method?u.push(t.url):s||c.push(t.url),a.headers.has("Link"))for(const e of i.parse(a.headers.get("Link")).rel("invalidates")){const r=(0,o.resolve)(t.url,e.uri);c.push(r)}if(a.headers.has("Location")&&c.push((0,o.resolve)(t.url,a.headers.get("Location"))),e.clearResourceCache(c,u),a.headers.has("Content-Location")){const r=(0,o.resolve)(t.url,a.headers.get("Content-Location")),n=await e.getStateForResponse(r,a);e.cacheState(n)}return a}}},941:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(475),i=r(289);t.default=function(){return async(e,t)=>{const r=await t(e);if(r.headers.get("Deprecation")){const t=r.headers.get("Sunset");let o=`[Ketting] The resource ${e.url} is deprecated.`;if(t&&(o+=" It will no longer respond "+t),r.headers.has("Link"))for(const t of n.parse(r.headers.get("Link")).rel("deprecation"))o+=`See ${(0,i.resolve)(e.url,t.uri)} for more information.`;console.warn(o)}return r}}},871:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Resource=void 0;const n=r(24),i=r(289),o=r(761),s=r(173),a=r(187),c=r(595);class u extends a.EventEmitter{constructor(e,t){super(),this.client=e,this.uri=t,this.activeRefresh=null,this.setMaxListeners(500)}get(e){const t=this.getCache();if(t)return Promise.resolve(t);const r=l("GET",e);return this.activeRefresh||(this.activeRefresh=(async()=>{try{const e=await this.fetchOrThrow(r),t=await this.client.getStateForResponse(this.uri,e);return this.updateCache(t),t}finally{this.activeRefresh=null}})()),this.activeRefresh}async head(e){let t=this.client.cache.get(this.uri);if(t)return t;const r=await this.fetchOrThrow(l("HEAD",e));return t=await(0,n.headStateFactory)(this.client,this.uri,r),t}refresh(e){const t=l("GET",e);return t.cache="no-cache",this.activeRefresh||(this.activeRefresh=(async()=>{try{const e=await this.fetchOrThrow(t),r=await this.client.getStateForResponse(this.uri,e);return this.updateCache(r),r}finally{this.activeRefresh=null}})()),this.activeRefresh}async put(e){const t=l("PUT",e);(0,n.isState)(e)&&t.headers.set("X-KETTING-NO-STALE","1"),await this.fetchOrThrow(t),(0,n.isState)(e)&&this.updateCache(e)}async delete(){await this.fetchOrThrow({method:"DELETE"})}async post(e){const t=await this.fetchOrThrow(l("POST",e));return this.client.getStateForResponse(this.uri,t)}async postFollow(e){const t=await this.fetchOrThrow(l("POST",e));switch(t.status){case 201:if(t.headers.has("location"))return this.go(t.headers.get("location"));throw new Error('Could not follow after a 201 request, because the server did not reply with a Location header. If you sent a Location header, check if your service is returning "Access-Control-Expose-Headers: Location".');case 204:case 205:return this;default:throw new Error("Did not receive a 201, 204 or 205 status code so we could not follow to the next resource")}}async patch(e){const t=await this.fetchOrThrow(l("PATCH",e));if(200===t.status)return await this.client.getStateForResponse(this.uri,t)}follow(e,t){return new o.FollowPromiseOne(this,e,t)}followAll(e){return new o.FollowPromiseMany(this,e)}go(e){return e=(0,i.resolve)(this.uri,e),this.client.go(e)}fetch(e){return this.client.fetcher.fetch(this.uri,e)}fetchOrThrow(e){return this.client.fetcher.fetchOrThrow(this.uri,e)}updateCache(e){if(e.uri!==this.uri)throw new Error("When calling updateCache on a resource, the uri of the State object must match the uri of the Resource");this.client.cacheState(e)}clearCache(){this.client.clearResourceCache([this.uri],[])}getCache(){return this.client.cache.get(this.uri)}async link(e){const t=(await this.get()).links.get(e);if(!t)throw new s.LinkNotFound(`Link with rel: ${e} not found on ${this.uri}`);return t}async links(e){const t=await this.get();return e?t.links.getMany(e):t.links.getAll()}async hasLink(e){return(await this.get()).links.has(e)}}function l(e,t){if(!t)return{method:e,headers:new Headers};let r,n;return r=t.getContentHeaders?new Headers(t.getContentHeaders()):t.headers?new Headers(t.headers):new Headers,r.has("Content-Type")||r.set("Content-Type","application/json"),void 0!==t.serializeBody?n=t.serializeBody():t.data?(n=t.data,(0,c.needsJsonStringify)(n)&&(n=JSON.stringify(n))):n=null,{method:e,body:n,headers:r}}t.Resource=u,t.default=u},0:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseState=t.BaseHeadState=void 0;const n=r(173),i=r(34),o=r(289),s=r(640),a=r(963);class c{constructor(e){this.client=e.client,this.uri=e.uri,this.headers=e.headers,this.timestamp=Date.now(),this.links=e.links}follow(e,t){var r;const i=this.links.get(e);if(!i)throw new n.LinkNotFound(`Link with rel ${e} on ${this.uri} not found`);let a;return a=i.templated?(0,s.expand)(i,t||{}):(0,o.resolve)(i),"deprecated"===(null===(r=i.hints)||void 0===r?void 0:r.status)&&console.warn(`[ketting] The ${i.rel} link on ${this.uri} is marked deprecated.`,i),this.client.go(a)}followAll(e){return this.links.getMany(e).map((e=>{var t;"deprecated"===(null===(t=e.hints)||void 0===t?void 0:t.status)&&console.warn(`[ketting] The ${e.rel} link on ${this.uri} is marked deprecated.`,e);const r=(0,o.resolve)(e);return this.client.go(r)}))}contentHeaders(){const e={};for(const t of a.entityHeaderNames)this.headers.has(t)&&(e[t]=this.headers.get(t));return new Headers(e)}}t.BaseHeadState=c;class u extends c{constructor(e){super(e),this.data=e.data,this.actionInfo=e.actions||[],this.embedded=e.embedded||[]}action(e){if(!this.actionInfo.length)throw new i.ActionNotFound("This State does not define any actions");if(void 0===e)return new i.SimpleAction(this.client,this.actionInfo[0]);for(const t of this.actionInfo)if(t.name===e)return new i.SimpleAction(this.client,t);throw new i.ActionNotFound("This State defines no action")}actions(){return this.actionInfo.map((e=>new i.SimpleAction(this.client,e)))}hasAction(e){if(void 0===e)return this.actionInfo.length>0;for(const t of this.actionInfo)if(e===t.name)return!0;return!1}serializeBody(){return r.g.Buffer&&this.data instanceof Buffer||r.g.Blob&&this.data instanceof Blob||"string"==typeof this.data?this.data:JSON.stringify(this.data)}getEmbedded(){return this.embedded}clone(){return new u({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new n.Links(this.links.defaultContext,this.links.getAll()),actions:this.actionInfo})}}t.BaseState=u},909:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>new n.BaseState({client:e,uri:t,data:await r.blob(),headers:r.headers,links:(0,i.parseLink)(t,r.headers.get("Link"))})},287:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.CjState=void 0;const i=r(0),o=r(963);class s extends i.BaseState{serializeBody(){throw new Error("Reserializing Collection+JSON states is not yet supported. Please log an issue in the Ketting project to help figure out how this should be done")}}t.CjState=s,t.factory=async(e,t,r)=>{const i=await r.json(),a=(0,o.parseLink)(t,r.headers.get("Link"));a.add(...function(e,t){const r=[];if(void 0!==t.collection.links)for(const n of t.collection.links)r.push({context:e,href:n.href,rel:n.rel,title:n.name});if(void 0!==t.collection.items)for(const n of t.collection.items)n.href&&r.push({context:e,href:n.href,rel:"item"});if(void 0!==t.collection.queries)for(const n of t.collection.queries)n.data?r.push({context:e,href:n.href+n.data.map((e=>"{?"+e.name+"}")).join(""),templated:!0,rel:n.rel,title:n.name}):r.push({context:e,href:n.href,rel:n.rel,title:n.name});return r}(t,i));const{_embedded:c,_links:u}=i,l=n(i,["_embedded","_links"]);return new s({client:e,uri:t,data:l,headers:r.headers,links:a})}},842:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.HalState=void 0;const i=r(0),o=r(963),s=r(173),a=r(289);class c extends i.BaseState{serializeBody(){return JSON.stringify(Object.assign({_links:this.serializeLinks()},this.data))}serializeLinks(){const e={self:{href:this.uri}};for(const t of this.links.getAll()){const{rel:r,context:i}=t,o=n(t,["rel","context"]);"self"!==r&&(void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o])}return e}clone(){return new c({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new s.Links(this.links.defaultContext,this.links.getAll()),actions:this.actionInfo})}}function u(e,t){var r,n;if(void 0===t._links)return[];const i=[],o=new Set;for(const[r,n]of Object.entries(t._links)){const t=Array.isArray(n)?n:[n];for(const e of t)o.add(r+";"+e.href);i.push(...l(e,r,t))}if(t._embedded)for(let[s,a]of Object.entries(t._embedded)){Array.isArray(a)||(a=[a]);for(const t of a){const a=null===(n=null===(r=null==t?void 0:t._links)||void 0===r?void 0:r.self)||void 0===n?void 0:n.href;a&&(o.has(s+";"+a)||i.push({rel:s,href:a,context:e}))}}return i}function l(e,t,r){const n=[];for(const i of r)n.push(Object.assign({rel:t,context:e},i));return n}function f(e,t,r,i){var o,l;if(void 0===r._embedded||!r._embedded)return[];const d=[];for(const p of Object.values(r._embedded)){let r;r=Array.isArray(p)?p:[p];for(const p of r){if(void 0===(null===(l=null===(o=p._links)||void 0===o?void 0:o.self)||void 0===l?void 0:l.href)){console.warn('An item in _embedded was ignored. Each item must have a single "self" link');continue}const r=(0,a.resolve)(t,p._links.self.href),{_embedded:y,_links:v}=p,m=n(p,["_embedded","_links"]);d.push(new c({client:e,uri:r,data:m,headers:new Headers({"Content-Type":i.get("Content-Type")}),links:new s.Links(r,u(t,p)),embedded:f(e,r,p,i),actions:h(r,p)}))}}return d}function h(e,t){return t._templates?Object.entries(t._templates).map((([t,r])=>({uri:(0,a.resolve)(e,r.target||""),name:t,title:r.title,method:r.method,contentType:r.contentType||"application/json",fields:r.properties?r.properties.map((e=>function(e){var t;switch(e.type){case void 0:case"text":case"search":case"tel":case"url":case"email":if(e.options){const t={name:e.name,type:"select",label:e.prompt,required:e.required||!1,readOnly:e.readOnly||!1,multiple:e.options.multiple,value:e.options.selectedValues||e.value},r=e.options.promptField||"prompt",n=e.options.valueField||"value";if(void 0!==e.options.inline){const i={};for(const t of e.options.inline)"string"==typeof t?i[t]=t:i[t[n]]=t[r];return Object.assign(Object.assign({},t),{options:i})}return Object.assign(Object.assign({},t),{dataSource:{href:e.options.link.href,type:e.options.link.type,labelField:r,valueField:n}})}return{name:e.name,type:null!==(t=e.type)&&void 0!==t?t:"text",required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,pattern:e.regex?new RegExp(e.regex):void 0,label:e.prompt,placeholder:e.placeHolder};case"hidden":return{name:e.name,type:"hidden",required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,label:e.prompt,placeholder:e.placeHolder};case"textarea":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,value:e.value,label:e.prompt,placeholder:e.placeHolder,cols:e.cols,rows:e.rows};case"password":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,placeholder:e.placeHolder};case"date":case"month":case"week":case"time":return{name:e.name,type:e.type,value:e.value,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"number":case"range":return{name:e.name,type:e.type,value:e.value?+e.value:void 0,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"datetime-local":return{name:e.name,type:e.type,value:e.value?new Date(e.value):void 0,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt,min:e.min,max:e.max,step:e.step};case"radio":case"checkbox":case"color":return{name:e.name,type:e.type,required:e.required||!1,readOnly:e.readOnly||!1,label:e.prompt}}}(e))):[]}))):[]}t.HalState=c,t.factory=async(e,t,r)=>{const i=await r.json(),s=(0,o.parseLink)(t,r.headers.get("Link"));if(Array.isArray(i))return new c({client:e,uri:t,data:i,headers:r.headers,links:s});s.add(...u(t,i));const{_embedded:a,_links:l,_templates:d}=i,p=n(i,["_embedded","_links","_templates"]);return new c({client:e,uri:t,data:p,headers:r.headers,links:s,embedded:f(e,t,i,r.headers),actions:h(t,i)})}},770:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>{const o=(0,i.parseLink)(t,r.headers.get("Link"));return new n.BaseHeadState({client:e,uri:t,headers:r.headers,links:o})}},154:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963),o=r(730),s=r(289);t.factory=async(e,t,r)=>{const a=await r.text(),c=(0,i.parseLink)(t,r.headers.get("Link")),u=(0,o.parseHtml)(t,a);return c.add(...u.links),new n.BaseState({client:e,uri:t,data:a,headers:r.headers,links:c,actions:u.forms.map((e=>function(e,t){return{uri:(0,s.resolve)(e,t.action),name:t.rel||t.id||"",method:t.method||"GET",contentType:t.enctype||"application/x-www-form-urlencoded",fields:[]}}(t,e)))})}},24:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.headStateFactory=t.htmlStateFactory=t.CjState=t.cjStateFactory=t.textStateFactory=t.SirenState=t.sirenStateFactory=t.jsonApiStateFactory=t.binaryStateFactory=t.HalState=t.halStateFactory=t.BaseHeadState=t.BaseState=t.isState=void 0;var n=r(269);Object.defineProperty(t,"isState",{enumerable:!0,get:function(){return n.isState}});var i=r(0);Object.defineProperty(t,"BaseState",{enumerable:!0,get:function(){return i.BaseState}}),Object.defineProperty(t,"BaseHeadState",{enumerable:!0,get:function(){return i.BaseHeadState}});var o=r(842);Object.defineProperty(t,"halStateFactory",{enumerable:!0,get:function(){return o.factory}}),Object.defineProperty(t,"HalState",{enumerable:!0,get:function(){return o.HalState}});var s=r(909);Object.defineProperty(t,"binaryStateFactory",{enumerable:!0,get:function(){return s.factory}});var a=r(60);Object.defineProperty(t,"jsonApiStateFactory",{enumerable:!0,get:function(){return a.factory}});var c=r(389);Object.defineProperty(t,"sirenStateFactory",{enumerable:!0,get:function(){return c.factory}}),Object.defineProperty(t,"SirenState",{enumerable:!0,get:function(){return c.SirenState}});var u=r(945);Object.defineProperty(t,"textStateFactory",{enumerable:!0,get:function(){return u.factory}});var l=r(287);Object.defineProperty(t,"cjStateFactory",{enumerable:!0,get:function(){return l.factory}}),Object.defineProperty(t,"CjState",{enumerable:!0,get:function(){return l.CjState}});var f=r(154);Object.defineProperty(t,"htmlStateFactory",{enumerable:!0,get:function(){return f.factory}});var h=r(770);Object.defineProperty(t,"headStateFactory",{enumerable:!0,get:function(){return h.factory}})},269:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isState=void 0;const n=r(173);t.isState=function(e){return"string"==typeof e.uri&&e.links instanceof n.Links&&e.headers instanceof Headers}},60:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);function o(e,t,r){return{context:e,rel:t,href:"string"==typeof r?r:r.href}}t.factory=async(e,t,r)=>{const s=await r.json(),a=(0,i.parseLink)(t,r.headers.get("Link"));return a.add(...function(e,t){const r=[];if(void 0===t.links)return r;for(const[n,i]of Object.entries(t.links))Array.isArray(i)?r.push(...i.map((t=>o(e,n,t)))):r.push(o(e,n,i));return r}(t,s),...function(e,t){if(!Array.isArray(t.data))return[];const r=[];for(const n of t.data)if("links"in n&&"self"in n.links){const t=o(e,"self",n.links.self);r.push({context:e,href:t.href,rel:"item"})}return r}(t,s)),new n.BaseState({client:e,uri:t,data:s,headers:r.headers,links:a})}},389:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.SirenState=void 0;const i=r(0),o=r(963),s=r(173),a=r(289);class c extends i.BaseState{serializeBody(){throw new Error("Reserializing Siren states is not yet supported. Please log an issue in the Ketting project to help figure out how this should be done")}clone(){return new c({client:this.client,uri:this.uri,data:this.data,headers:new Headers(this.headers),links:new s.Links(this.uri,this.links),actions:this.actionInfo})}}function u(e,t){const r=[];if(void 0!==t.links)for(const n of t.links)r.push(...l(e,n));if(void 0!==t.entities)for(const n of t.entities)void 0!==n.href?r.push(...l(e,n)):r.push(...h(e,n));return r}function l(e,t){const r=[],{rel:i}=t,o=n(t,["rel"]);for(const t of i){const n=Object.assign({rel:t,context:e},o);r.push(n)}return r}function f(e,t,r,n){if(void 0===r.entities)return[];const i=[];for(const o of r.entities)if(void 0===o.href){const r=d(e,t,o,n);null!==r&&i.push(r)}return i}function h(e,t){if(void 0===t.links)return[];let r=null;for(const e of t.links)e.rel.includes("self")&&(r=e.href);return null===r?[]:t.rel.map((n=>{const i=t.title,o={href:r,rel:n,context:e};return i&&(o.title=i),o}))}function d(e,t,r,n){if(void 0===r.links)return null;let i=null;for(const e of r.links)e.rel.includes("self")&&(i=e.href);if(!i)return null;const o=(0,a.resolve)(t,i);return new c({client:e,uri:o,data:r.properties,headers:n,links:new s.Links(i,u(i,r))})}t.SirenState=c,t.factory=async(e,t,r)=>{const n=await r.json(),i=(0,o.parseLink)(t,r.headers.get("Link"));return i.add(...u(t,n)),new c({client:e,uri:t,data:n.properties,headers:r.headers,links:i,embedded:f(e,t,n,r.headers),actions:n.actions?n.actions.map((e=>function(e,t){return{uri:(0,a.resolve)(e,t.href),name:t.name,title:t.title,method:t.method||"GET",contentType:t.type||"application/x-www-form-urlencoded",fields:t.fields?t.fields.map((e=>function(e){const t={name:e.name,type:e.type||"text",required:!1,readOnly:!1};return e.value&&(t.value=e.value),e.title&&(t.label=e.title),t}(e))):[]}}(t,e))):[]})}},945:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(0),i=r(963);t.factory=async(e,t,r)=>new n.BaseState({client:e,uri:t,data:await r.text(),headers:r.headers,links:(0,i.parseLink)(t,r.headers.get("Link"))})},699:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encode=void 0,t.encode=function(e){return btoa(e)}},595:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.needsJsonStringify=void 0,t.needsJsonStringify=function(e){return"string"!=typeof e&&!(e instanceof Blob)}},730:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseHtml=void 0;const n=r(289);function i(e,t){const r=[];for(const n of t){const t=n.getAttribute("rel"),i=n.getAttribute("href"),o=n.getAttribute("type")||void 0;if(t&&i)for(const n of t.split(" ")){const t={rel:n,context:e,href:i};o&&(t.type=o),r.push(t)}}return r}function o(e,t){const r=[];for(const i of t){const t=i.getAttribute("rel"),o=i.getAttribute("action"),s=i.getAttribute("enctype")||"application/x-www-form-urlencoded",a=i.getAttribute("id"),c=i.getAttribute("method")||"GET";if(t)for(const i of t.split(" ")){const t={rel:i,action:(0,n.resolve)(e,o),enctype:s,id:a,method:c};r.push(t)}else r.push({rel:null,action:(0,n.resolve)(e,o),enctype:s,id:a,method:c})}return r}t.parseHtml=function(e,t){const r=(new DOMParser).parseFromString(t,"text/html");return{forms:o(e,r.getElementsByTagName("form")),links:[...i(e,r.getElementsByTagName("link")),...i(e,r.getElementsByTagName("a"))]}}},640:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expand=void 0;const n=r(493),i=r(289);t.expand=function(e,t,r){let o,s,a;"string"==typeof e?(o=e,s=t,a=r):(o=e.context,s=e.href,a=t);const c=n.parse(s).expand(a);return(0,i.resolve)(o,c)}},289:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=t.resolve=void 0,t.resolve=function(e,t){var r;if("string"!=typeof e)t=e.href,e=e.context;else if(!t)return e;if("undefined"!=typeof URL&&0===(null===(r=/https?:\/\//.exec(e))||void 0===r?void 0:r.index))return new URL(t,e).toString();const n=document,i=n.getElementsByTagName("base")[0],o=null==i?void 0:i.href,s=n.head||n.getElementsByTagName("head")[0],a=i||s.appendChild(n.createElement("base")),c=n.createElement("a");a.href=e,c.href=t;const u=c.href;return i?i.href=o:s.removeChild(a),u},t.parse=function(e){return{host:new URL(e).host}}},9:function(e,t){"use strict";t.__esModule=!0,t.toString=void 0,t.toString=function e(t){var r,n;switch(t.type){case"template":return t.parts.map(e).join("");case"literal":return t.value;case"expression":return"{"+t.operator+t.variables.map(e).join(",")+"}";case"variable":var i=t.name;return"explode"==(null===(r=t.modifier)||void 0===r?void 0:r.type)?i+="*":"substr"==(null===(n=t.modifier)||void 0===n?void 0:n.type)&&(i+=":"+t.modifier.length),t.extension&&(i+="("+t.extension+")"),i}}},644:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n.apply(this,arguments)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};t.__esModule=!0,t.expandExpression=t.expandTemplate=void 0;var o=i(r(129)),s={UrlSafe:(0,o.default)(/[^\w~.-]/g),Restricted:(0,o.default)(/[^\w.~:\/\?#\[\]@!\$&'()*+,;=%-]|%(?!\d\d)/g)};t.expandTemplate=function(e,t){return e.parts.map((function(e){switch(e.type){case"literal":return e.value;case"expression":return u(e,t)}})).join("")};var a={first:"",sep:",",empty:"",encode:s.UrlSafe,named:!1},c={"":n({},a),"+":n(n({},a),{encode:s.Restricted}),"#":n(n({},a),{encode:s.Restricted,first:"#",empty:"#"}),"/":n(n({},a),{first:"/",sep:"/"}),".":n(n({},a),{first:".",sep:".",empty:"."}),";":n(n({},a),{first:";",sep:";",named:!0}),"?":n(n({},a),{first:"?",sep:"&",empty:"=",named:!0}),"&":n(n({},a),{first:"&",sep:"&",empty:"=",named:!0})};function u(e,t){var r=c[e.operator],n=[];if(e.variables.forEach((function(e){var i=t[e.name];if(function(e){switch(typeof e){case"undefined":return!1;case"object":if(null==e)return!1;if(Array.isArray(e))return e.length>0;for(var t in e)if(null!=e[t])return!0;return!1;default:return!0}}(i)){var o=function(e,t,r){var n;if(null==t)throw new TypeError("tried to expand null value for variable "+e.name+", this is a bug in uri-template");return"explode"===(null===(n=e.modifier)||void 0===n?void 0:n.type)?function(e,t,r){var n=r.encode,i=r.named,o=r.sep;if(Array.isArray(t)){var s=t.map(n);return i&&(s=s.map((function(t){return e.name+"="+t}))),s.join(o)}if("object"==typeof t){var a=[];return Object.entries(t).forEach((function(e){var t=e[0],r=e[1];t=n(t),Array.isArray(r)?r.forEach((function(e){a.push(t+"="+n(e))})):a.push(t+"="+n(r))})),a.join(o)}var c=t.toString();return n(c)}(e,t,r):function(e,t,r){var n,i,o,s=r.empty,a=r.encode,c=r.named;if("object"==typeof t&&"substr"===(null===(n=e.modifier)||void 0===n?void 0:n.type))throw new Error("Prefixed variables do not support lists/maps. Check "+e.name);return Array.isArray(t)?o=t.map(a).join(","):"object"==typeof t?o=Object.entries(t).map((function(e){return e.map(a).join(",")})).join(","):(o=t.toString(),"substr"===(null===(i=e.modifier)||void 0===i?void 0:i.type)&&(o=o.substring(0,e.modifier.length)),o=a(o)),c&&(o=o?e.name+"="+o:""+e.name+s),o}(e,t,r)}(e,i,r);n.push(o||"")}})),0===n.length)return"";var i=n.join(r.sep);return 0===i.length?r.empty:r.first+i}t.expandExpression=u},115:function(e){"use strict";function t(e,r,n,i){var o=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(o,t.prototype),o.expected=r,o.found=n,o.location=i,o.name="SyntaxError",o}function r(e,t,r){return r=r||" ",e.length>t?e:(t-=e.length,e+(r+=r.repeat(t)).slice(0,t))}!function(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}(t,Error),t.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var n,i=null;for(n=0;n<e.length;n++)if(e[n].source===this.location.source){i=e[n].text.split(/\r\n|\n|\r/g);break}var o=this.location.start,s=this.location.source+":"+o.line+":"+o.column;if(i){var a=this.location.end,c=r("",o.line.toString().length),u=i[o.line-1],l=o.line===a.line?a.column:u.length+1;t+="\n --\x3e "+s+"\n"+c+" |\n"+o.line+" | "+u+"\n"+c+" | "+r("",o.column-1)+r("",l-o.column,"^")}else t+="\n at "+s}return t},t.buildMessage=function(e,t){var r={literal:function(e){return'"'+i(e.text)+'"'},class:function(e){var t=e.parts.map((function(e){return Array.isArray(e)?o(e[0])+"-"+o(e[1]):o(e)}));return"["+(e.inverted?"^":"")+t+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(e){return e.description}};function n(e){return e.charCodeAt(0).toString(16).toUpperCase()}function i(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+n(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+n(e)}))}function o(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+n(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+n(e)}))}function s(e){return r[e.type](e)}return"Expected "+function(e){var t,r,n=e.map(s);if(n.sort(),n.length>0){for(t=1,r=1;t<n.length;t++)n[t-1]!==n[t]&&(n[r]=n[t],r++);n.length=r}switch(n.length){case 1:return n[0];case 2:return n[0]+" or "+n[1];default:return n.slice(0,-1).join(", ")+", or "+n[n.length-1]}}(e)+" but "+function(e){return e?'"'+i(e)+'"':"end of input"}(t)+" found."},e.exports={SyntaxError:t,parse:function(e,r){var n,i,o,s,a={},c=(r=void 0!==r?r:{}).grammarSource,u={template:N},l=N,f=/^[\/;.?&+#]/,h=/^[a-zA-Z0-9_.%]/,d=/^[0-9]/,p=/^[^{]/,y=/^[^)]/,v=F("{",!1),m=F("}",!1),g=R(["/",";",".","?","&","+","#"],!1,!1),b=F(",",!1),w=R([["a","z"],["A","Z"],["0","9"],"_",".","%"],!1,!1),O=F("*",!1),k=F(":",!1),j=R([["0","9"]],!1,!1),x=R(["{"],!0,!1),S=F("(",!1),_=R([")"],!0,!1),A=F(")",!1),T=function(e,t){return t},C=0,P=[{line:1,column:1}],E=0,L=[];if("startRule"in r){if(!(r.startRule in u))throw new Error("Can't start parsing from rule \""+r.startRule+'".');l=u[r.startRule]}function F(e,t){return{type:"literal",text:e,ignoreCase:t}}function R(e,t,r){return{type:"class",parts:e,inverted:t,ignoreCase:r}}function M(t){var r,n=P[t];if(n)return n;for(r=t-1;!P[r];)r--;for(n={line:(n=P[r]).line,column:n.column};r<t;)10===e.charCodeAt(r)?(n.line++,n.column=1):n.column++,r++;return P[t]=n,n}function B(e,t){var r=M(e),n=M(t);return{source:c,start:{offset:e,line:r.line,column:r.column},end:{offset:t,line:n.line,column:n.column}}}function H(e){C<E||(C>E&&(E=C,L=[]),L.push(e))}function N(){var e,t;for(C,e=[],(t=q())===a&&(t=I());t!==a;)e.push(t),(t=q())===a&&(t=I());return{type:"template",parts:e}}function I(){var t,r,n,i,o;return t=C,123===e.charCodeAt(C)?(r="{",C++):(r=a,H(v)),r!==a?(n=function(){var t;return f.test(e.charAt(C))?(t=e.charAt(C),C++):(t=a,H(g)),t===a&&(t=""),t}(),n!==a?(i=function(){var t,r,n,i,o,s,c,u;if(t=C,(r=U())!==a){for(n=[],i=C,44===e.charCodeAt(C)?(o=",",C++):(o=a,H(b)),o!==a&&(s=U())!==a?i=T(0,s):(C=i,i=a);i!==a;)n.push(i),i=C,44===e.charCodeAt(C)?(o=",",C++):(o=a,H(b)),o!==a&&(s=U())!==a?i=T(0,s):(C=i,i=a);c=r,(u=n).unshift(c),t=u}else C=t,t=a;return t}(),i!==a?(125===e.charCodeAt(C)?(o="}",C++):(o=a,H(m)),o!==a?t={type:"expression",operator:n,variables:i}:(C=t,t=a)):(C=t,t=a)):(C=t,t=a)):(C=t,t=a),t}function U(){var t,r,n,i;if(t=C,r=C,n=[],h.test(e.charAt(C))?(i=e.charAt(C),C++):(i=a,H(w)),i!==a)for(;i!==a;)n.push(i),h.test(e.charAt(C))?(i=e.charAt(C),C++):(i=a,H(w));else n=a;return(r=n!==a?e.substring(r,C):n)!==a?(n=function(){var t,r,n,i,o;if(t=C,58===e.charCodeAt(C)?(r=":",C++):(r=a,H(k)),r!==a){if(n=C,i=[],d.test(e.charAt(C))?(o=e.charAt(C),C++):(o=a,H(j)),o!==a)for(;o!==a;)i.push(o),d.test(e.charAt(C))?(o=e.charAt(C),C++):(o=a,H(j));else i=a;(n=i!==a?e.substring(n,C):i)!==a?t={type:"substr",length:parseInt(n)}:(C=t,t=a)}else C=t,t=a;return t}(),n===a&&(n=function(){var t;return C,42===e.charCodeAt(C)?(t="*",C++):(t=a,H(O)),t!==a&&(t={type:"explode"}),t}()),n===a&&(n=null),i=function(){var t,r,n,i,o;if(t=C,40===e.charCodeAt(C)?(r="(",C++):(r=a,H(S)),r!==a){if(n=C,i=[],y.test(e.charAt(C))?(o=e.charAt(C),C++):(o=a,H(_)),o!==a)for(;o!==a;)i.push(o),y.test(e.charAt(C))?(o=e.charAt(C),C++):(o=a,H(_));else i=a;(n=i!==a?e.substring(n,C):i)!==a?(41===e.charCodeAt(C)?(i=")",C++):(i=a,H(A)),i!==a?t=n:(C=t,t=a)):(C=t,t=a)}else C=t,t=a;return t}(),i===a&&(i=null),t={type:"variable",name:r,modifier:n,extension:i}):(C=t,t=a),t}function q(){var t,r,n;if(C,t=C,r=[],p.test(e.charAt(C))?(n=e.charAt(C),C++):(n=a,H(x)),n!==a)for(;n!==a;)r.push(n),p.test(e.charAt(C))?(n=e.charAt(C),C++):(n=a,H(x));else r=a;return(t=r!==a?e.substring(t,C):r)!==a&&(t={type:"literal",value:t}),t}if((n=l())!==a&&C===e.length)return n;throw n!==a&&C<e.length&&H({type:"end"}),i=L,o=E<e.length?e.charAt(E):null,s=E<e.length?B(E,E+1):B(E,E),new t(t.buildMessage(i,o),i,o,s)}}},493:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t},s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};t.__esModule=!0,t.parseRule=t.parse=void 0;var a=o(r(115)),c=o(r(9)),u=r(644);function l(e,t){return void 0===t&&(t="template"),a.parse(e,{startRule:t})}t.parse=function(e){var t=l(e,"template");return{ast:t,expand:function(e){return(0,u.expandTemplate)(t,e)},toString:function(){return c.toString(t)}}},t.parseRule=l,s(r(644),t)},94:function(){},147:function(e){"use strict";e.exports={i8:"7.4.0"}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var n={};return function(){"use strict";var e=n;Object.defineProperty(e,"__esModule",{value:!0}),e.FollowPromiseMany=e.FollowPromiseOne=e.Problem=e.oauth2=e.bearerAuth=e.basicAuth=e.NeverCache=e.ShortCache=e.ForeverCache=e.isState=e.CjState=e.SirenState=e.HalState=e.BaseHeadState=e.BaseState=e.resolve=e.Links=e.LinkNotFound=e.Resource=e.default=e.Ketting=e.Client=void 0;var t=r(934);Object.defineProperty(e,"Client",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Ketting",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}});var i=r(871);Object.defineProperty(e,"Resource",{enumerable:!0,get:function(){return i.default}});var o=r(173);Object.defineProperty(e,"LinkNotFound",{enumerable:!0,get:function(){return o.LinkNotFound}}),Object.defineProperty(e,"Links",{enumerable:!0,get:function(){return o.Links}});var s=r(289);Object.defineProperty(e,"resolve",{enumerable:!0,get:function(){return s.resolve}});var a=r(24);Object.defineProperty(e,"BaseState",{enumerable:!0,get:function(){return a.BaseState}}),Object.defineProperty(e,"BaseHeadState",{enumerable:!0,get:function(){return a.BaseHeadState}}),Object.defineProperty(e,"HalState",{enumerable:!0,get:function(){return a.HalState}}),Object.defineProperty(e,"SirenState",{enumerable:!0,get:function(){return a.SirenState}}),Object.defineProperty(e,"CjState",{enumerable:!0,get:function(){return a.CjState}}),Object.defineProperty(e,"isState",{enumerable:!0,get:function(){return a.isState}});var c=r(651);Object.defineProperty(e,"ForeverCache",{enumerable:!0,get:function(){return c.ForeverCache}});var u=r(478);Object.defineProperty(e,"ShortCache",{enumerable:!0,get:function(){return u.ShortCache}});var l=r(575);Object.defineProperty(e,"NeverCache",{enumerable:!0,get:function(){return l.NeverCache}});var f=r(530);Object.defineProperty(e,"basicAuth",{enumerable:!0,get:function(){return f.default}});var h=r(409);Object.defineProperty(e,"bearerAuth",{enumerable:!0,get:function(){return h.default}});var d=r(686);Object.defineProperty(e,"oauth2",{enumerable:!0,get:function(){return d.default}});var p=r(682);Object.defineProperty(e,"Problem",{enumerable:!0,get:function(){return p.Problem}});var y=r(761);Object.defineProperty(e,"FollowPromiseOne",{enumerable:!0,get:function(){return y.FollowPromiseOne}}),Object.defineProperty(e,"FollowPromiseMany",{enumerable:!0,get:function(){return y.FollowPromiseMany}})}(),n}()}));
2
2
  //# sourceMappingURL=ketting.min.js.map