UNPKG

ketting

Version:

Opiniated HATEAOS / Rest client.

1 lines 59.2 kB
!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 e={65:(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 s=await this.client.fetcher.fetchOrThrow(t.toString(),{method:this.method,body:r,headers:{"Content-Type":this.contentType}});return this.client.getStateForResponse(t.toString(),s)}};class s extends Error{}t.ActionNotFound=s},899:(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()}}},602:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NeverCache=t.ShortCache=t.ForeverCache=void 0;var n=r(899);Object.defineProperty(t,"ForeverCache",{enumerable:!0,get:function(){return n.ForeverCache}});var s=r(100);Object.defineProperty(t,"ShortCache",{enumerable:!0,get:function(){return s.ShortCache}});var i=r(17);Object.defineProperty(t,"NeverCache",{enumerable:!0,get:function(){return i.NeverCache}})},17:(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(){}}},100:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ShortCache=void 0;const n=r(899);class s 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=s},361:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(255),s=r(393),i=r(242),o=r(182),a=r(294),c=r(602),u=r(475);t.default=class{constructor(e){this.contentTypeMap={"application/prs.hal-forms+json":[i.halStateFactory,"1.0"],"application/hal+json":[i.halStateFactory,"0.9"],"application/vnd.api+json":[i.jsonApiStateFactory,"0.8"],"application/vnd.siren+json":[i.sirenStateFactory,"0.8"],"application/vnd.collection+json":[i.cjStateFactory,"0.8"],"application/json":[i.halStateFactory,"0.7"],"text/html":[i.htmlStateFactory,"0.6"]},this.acceptHeader=(e,t)=>{if(!e.headers.has("Accept")){const t=Object.entries(this.contentTypeMap).map((([e,[t,r]])=>e+";q="+r)).join(", ");e.headers.set("Accept",t)}return t(e)},this.cacheExpireHandler=async(e,t)=>{let r=!1;e.headers.has("X-KETTING-NO-STALE")&&(r=!0,e.headers.delete("X-KETTING-NO-STALE"));const n=await t(e);if(o.isSafeMethod(e.method))return n;if(!n.ok)return n;const s=[];if(r||"DELETE"===e.method||s.push(e.url),n.headers.has("Link"))for(const t of u.parse(n.headers.get("Link")).rel("invalidates")){const r=a.resolve(e.url,t.uri);s.push(r)}n.headers.has("Location")&&s.push(a.resolve(e.url,n.headers.get("Location"))),n.headers.has("Content-Location")&&s.push(a.resolve(e.url,n.headers.get("Content-Location")));for(const t of s){this.cache.delete(e.url);const r=this.resources.get(t);r&&r.emit("stale")}if("DELETE"===e.method){this.cache.delete(e.url);const t=this.resources.get(e.url);t&&t.emit("delete")}return n},this.bookmarkUri=e,this.fetcher=new n.Fetcher,this.fetcher.use(this.cacheExpireHandler),this.fetcher.use(this.acceptHeader),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 s.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=o.parseContentType(t.headers.get("Content-Type"));let n;return r?(n=r in this.contentTypeMap?await this.contentTypeMap[r][0](e,t):r.startsWith("text/")?await i.textStateFactory(e,t):r.match(/^application\/[A-Za-z-.]+\+json/)?await i.halStateFactory(e,t):await i.binaryStateFactory(e,t),n.client=this,n):i.binaryStateFactory(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)}}},213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},330:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FollowPromiseMany=t.FollowPromiseOne=void 0;const n=r(3),s=r(294),i=r(6);class o{constructor(){this.prefetchEnabled=!1,this.preferPushEnabled=!1,this.preferTranscludeEnabled=!1,this.useHeadEnabled=!1}preFetch(){return this.prefetchEnabled=!0,this}preferPush(){return this.preferPushEnabled=!0,this}preferTransclude(){return this.preferTranscludeEnabled=!0,this}useHead(){return this.useHeadEnabled=!0,this}}class a extends o{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 a(this.fetchLinkedResource(),e,t)}followAll(e){return new c(this.fetchLinkedResource(),e)}async fetchLinkedResource(){const e=await this.resource,t={};let r;this.preferPushEnabled&&(t["Prefer-Push"]=this.rel),!this.useHeadEnabled&&this.preferTranscludeEnabled&&(t.Prefer="transclude="+this.rel),r=this.useHeadEnabled?await e.head({headers:t}):await e.get({headers:t});const o=r.links.get(this.rel);if(!o)throw new n.LinkNotFound(`Link with rel ${this.rel} on ${r.uri} not found`);let a;a=o.templated?i.expand(o,this.variables||{}):s.resolve(o);const c=e.go(a);return this.prefetchEnabled&&c.get().catch((e=>{console.warn("Error while prefetching linked resource",e)})),c}}t.FollowPromiseOne=a;class c extends o{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.preferPushEnabled&&(t["Prefer-Push"]=this.rel),!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.links.getMany(this.rel);let i;const o=[];for(const t of n){i=s.resolve(t);const r=e.go(i);o.push(r),this.prefetchEnabled&&r.get().catch((e=>{console.warn("Error while prefetching linked resource",e)}))}return o}}t.FollowPromiseMany=c},388:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(155);t.default=(e,t)=>{const r="Basic "+n.encode(e+":"+t);return(e,t)=>(e.headers.set("Authorization",r),t(e))}},250:(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))}},76:(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){super(e),this.body=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(t&&t.match(/^application\/problem\+json/i)){const t=await e.json();return new n(e,t)}return new r(e)}},617:()=>{},255:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Fetcher=void 0;const n=r(76);r(617);class s{constructor(){this.middlewares=[],this.advertiseKetting=!0}fetch(e,t){const n=new Request(e,t),s=new URL(n.url).origin,o=this.getMiddlewaresByOrigin(s);return o.push((e=>(!e.headers.has("User-Agent")&&this.advertiseKetting&&e.headers.set("User-Agent","Ketting/"+r(306).i8),fetch(e)))),i(o,n)}getMiddlewaresByOrigin(e){return this.middlewares.filter((([t,r])=>t.test(e))).map((([e,t])=>t))}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 i(e,t){return e[0](t,(t=>i(e.slice(1),t)))}t.Fetcher=s,t.default=s},458:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=r(766);t.default=(e,t)=>{const r=new n.OAuth2(e,t);return r.fetchMw.bind(r)}},182:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSafeMethod=t.parseLink=t.parseContentType=void 0;const n=r(475),s=r(3);t.parseContentType=function(e){return e?(e.includes(";")&&(e=e.split(";")[0]),e.trim()):null},t.parseLink=function(e,t){const r=new s.Links(e);if(!t)return r;for(const s of n.parse(t).refs)for(const t of s.rel.split(" ")){const n={rel:t,href:s.uri,context:e,title:s.title,hreflang:s.hreflang,type:s.type};r.add(n)}return r};const i=["GET","HEAD","OPTIONS","PRI","PROPFIND","REPORT","SEARCH","TRACE"];t.isSafeMethod=function(e){return i.includes(e)}},22:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FollowPromiseMany=t.FollowPromiseOne=t.Field=t.Problem=t.oauth2=t.bearerAuth=t.basicAuth=t.ShortCache=t.NeverCache=t.ForeverCache=t.isState=t.HtmlState=t.CjState=t.TextState=t.SirenState=t.JsonApiState=t.BinaryState=t.HalState=t.resolve=t.Links=t.LinkNotFound=t.Resource=t.default=t.Ketting=t.Client=void 0;var n=r(361);Object.defineProperty(t,"Client",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"Ketting",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.default}});var s=r(393);Object.defineProperty(t,"Resource",{enumerable:!0,get:function(){return s.default}});var i=r(3);Object.defineProperty(t,"LinkNotFound",{enumerable:!0,get:function(){return i.LinkNotFound}}),Object.defineProperty(t,"Links",{enumerable:!0,get:function(){return i.Links}});var o=r(294);Object.defineProperty(t,"resolve",{enumerable:!0,get:function(){return o.resolve}});var a=r(242);Object.defineProperty(t,"HalState",{enumerable:!0,get:function(){return a.HalState}}),Object.defineProperty(t,"BinaryState",{enumerable:!0,get:function(){return a.BinaryState}}),Object.defineProperty(t,"JsonApiState",{enumerable:!0,get:function(){return a.JsonApiState}}),Object.defineProperty(t,"SirenState",{enumerable:!0,get:function(){return a.SirenState}}),Object.defineProperty(t,"TextState",{enumerable:!0,get:function(){return a.TextState}}),Object.defineProperty(t,"CjState",{enumerable:!0,get:function(){return a.CjState}}),Object.defineProperty(t,"HtmlState",{enumerable:!0,get:function(){return a.HtmlState}}),Object.defineProperty(t,"isState",{enumerable:!0,get:function(){return a.isState}});var c=r(602);Object.defineProperty(t,"ForeverCache",{enumerable:!0,get:function(){return c.ForeverCache}}),Object.defineProperty(t,"NeverCache",{enumerable:!0,get:function(){return c.NeverCache}}),Object.defineProperty(t,"ShortCache",{enumerable:!0,get:function(){return c.ShortCache}});var u=r(388);Object.defineProperty(t,"basicAuth",{enumerable:!0,get:function(){return u.default}});var l=r(250);Object.defineProperty(t,"bearerAuth",{enumerable:!0,get:function(){return l.default}});var h=r(458);Object.defineProperty(t,"oauth2",{enumerable:!0,get:function(){return h.default}});var f=r(76);Object.defineProperty(t,"Problem",{enumerable:!0,get:function(){return f.Problem}}),t.Field=r(213);var d=r(330);Object.defineProperty(t,"FollowPromiseOne",{enumerable:!0,get:function(){return d.FollowPromiseOne}}),Object.defineProperty(t,"FollowPromiseMany",{enumerable:!0,get:function(){return d.FollowPromiseMany}})},3:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkNotFound=t.Links=void 0;const n=r(294);class s{constructor(e,t){if(this.defaultContext=e,this.store=new Map,t)if(t instanceof s)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 s=n.resolve(this.defaultContext,t);this.store.set(e,r.filter((e=>n.resolve(e)!==s)))}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=s;class i extends Error{}t.LinkNotFound=i},393:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Resource=void 0;const n=r(242),s=r(294),i=r(330),o=r(3),a=r(187),c=r(70);class u extends a.EventEmitter{constructor(e,t){super(),this.client=e,this.uri=t,this.activeRefresh=null}get(e){const t=this.getCache();return t?Promise.resolve(t):this.refresh(e)}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.uri,r),t}refresh(e){const t={cache:"reload"};return(null==e?void 0:e.getContentHeaders)&&!(null==e?void 0:e.headers)?t.headers=e.getContentHeaders():!(null==e?void 0:e.getContentHeaders)&&(null==e?void 0:e.headers)?t.headers=e.headers:(null==e?void 0:e.getContentHeaders)&&(null==e?void 0:e.headers)&&(t.headers=e.getContentHeaders(),t.headers=Object.assign(Object.assign({},e.headers),t.headers)),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 i.FollowPromiseOne(this,e,t)}followAll(e){return new i.FollowPromiseMany(this,e)}go(e){return e=s.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 o.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},773:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseState=void 0;const n=r(65);t.BaseState=class{constructor(e,t,r,n,s=[],i=[]){this.uri=e,this.data=t,this.headers=r,this.links=n,this.embedded=s,this.actionInfo=i,this.timestamp=Date.now()}contentHeaders(){const e=["Content-Type","Content-Language","ETag","Last-Modified"],t={};for(const r of e)this.headers.has(r)&&(t[r]=this.headers.get(r));return new Headers(t)}action(e){if(!this.actionInfo.length)throw new n.ActionNotFound("This State does not define any actions");if(void 0===e)return new n.SimpleAction(this.client,this.actionInfo[0]);for(const t of this.actionInfo)if(t.name===e)return new n.SimpleAction(this.client,this.actionInfo[0]);throw new n.ActionNotFound("This State defines no action")}actions(){return this.actionInfo.map((e=>new n.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}getEmbedded(){return this.embedded}}},197:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.BinaryState=void 0;const n=r(773),s=r(182),i=r(3);class o extends n.BaseState{serializeBody(){return this.data}clone(){return new o(this.uri,this.data,new Headers(this.headers),new i.Links(this.uri,this.links))}}t.BinaryState=o,t.factory=async(e,t)=>new o(e,await t.blob(),t.headers,s.parseLink(e,t.headers.get("Link")))},826: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 s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)t.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(r[n[s]]=e[n[s]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.CjState=void 0;const s=r(773),i=r(182),o=r(3);class a extends s.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")}clone(){return new a(this.uri,this.data,new Headers(this.headers),new o.Links(this.uri,this.links))}}t.CjState=a,t.factory=async(e,t)=>{const r=await t.json(),s=i.parseLink(e,t.headers.get("Link"));s.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}(e,r));const{_embedded:o,_links:c}=r,u=n(r,["_embedded","_links"]);return new a(e,u,t.headers,s)}},336: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 s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)t.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(r[n[s]]=e[n[s]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.HalState=void 0;const s=r(773),i=r(182),o=r(3),a=r(294);class c extends s.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:s}=t,i=n(t,["rel","context"]);"self"!==r&&(void 0===e[r]?e[r]=i:Array.isArray(e[r])?e[r].push(i):e[r]=[e[r],i])}return e}clone(){return new c(this.uri,this.data,new Headers(this.headers),new o.Links(this.uri,this.links),[],this.actionInfo)}}function u(e,t){var r,n;if(void 0===t._links)return[];const s=[],i=new Set;for(const[r,n]of Object.entries(t._links)){const t=Array.isArray(n)?n:[n];for(const e of t)i.add(r+";"+e.href);s.push(...l(e,r,t))}if(t._embedded)for(let[o,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&&(i.has(o+";"+a)||s.push({rel:o,href:a,context:e}))}}return s}function l(e,t,r){const n=[];for(const s of r)n.push(Object.assign({rel:t,context:e},s));return n}function h(e,t,r){if(void 0===t._embedded)return[];const s=[];for(const i of Object.values(t._embedded)){let t;t=Array.isArray(i)?i:[i];for(const i of t){if(void 0===i._links||void 0===i._links.self||Array.isArray(i._links.self))continue;const{_embedded:t,_links:l}=i,f=n(i,["_embedded","_links"]);s.push(new c(a.resolve(e,i._links.self.href),f,new Headers({"Content-Type":r.get("Content-Type")}),new o.Links(e,u(e,i)),h(e,i,r)))}}return s}t.HalState=c,t.factory=async(e,t)=>{var r;const s=await t.json(),o=i.parseLink(e,t.headers.get("Link"));if(Array.isArray(s))return new c(e,s,t.headers,o,[]);o.add(...u(e,s));const{_embedded:a,_links:l,_templates:f}=s,d=n(s,["_embedded","_links","_templates"]),p=null===(r=s._templates)||void 0===r?void 0:r.default;return new c(e,d,t.headers,o,h(e,s,t.headers),p?[(y=e,v=p,{uri:y,name:"default",title:v.title,method:v.method,contentType:v.contentType||"application/json",fields:v.properties?v.properties.map((e=>{return{name:(t=e).name,type:"text",required:t.required||!1,readOnly:t.readOnly||!1,value:t.value,pattern:t.regex?new RegExp(t.regex):void 0,label:t.prompt};var t})):[]})]:[]);var y,v}},985:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=void 0;const n=r(182);t.factory=async(e,t)=>{const r=n.parseLink(e,t.headers.get("Link"));return{uri:e,headers:t.headers,contentHeaders:()=>{const e=["Content-Type","Content-Language"],r={};for(const n of e)t.headers.has(n)&&(r[n]=t.headers.get(n));return new Headers(r)},links:r,timestamp:Date.now()}}},966:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.HtmlState=void 0;const n=r(773),s=r(182),i=r(891),o=r(3),a=r(294);class c extends n.BaseState{serializeBody(){return this.data}clone(){const e=new c(this.uri,this.data,new Headers(this.headers),new o.Links(this.uri,this.links),[],this.actionInfo);return e.client=this.client,e}}t.HtmlState=c,t.factory=async(e,t)=>{const r=await t.text(),n=s.parseLink(e,t.headers.get("Link")),o=i.parseHtml(e,r);return n.add(...o.links),new c(e,r,t.headers,n,[],o.forms.map((t=>function(e,t){return{uri:a.resolve(e,t.action),name:t.rel||t.id||"",method:t.method||"GET",contentType:t.enctype||"application/x-www-form-urlencoded",fields:[]}}(e,t))))}},242:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.headStateFactory=t.HtmlState=t.htmlStateFactory=t.CjState=t.cjStateFactory=t.TextState=t.textStateFactory=t.SirenState=t.sirenStateFactory=t.JsonApiState=t.jsonApiStateFactory=t.BinaryState=t.binaryStateFactory=t.HalState=t.halStateFactory=t.BaseState=t.isState=void 0;var n=r(431);Object.defineProperty(t,"isState",{enumerable:!0,get:function(){return n.isState}});var s=r(773);Object.defineProperty(t,"BaseState",{enumerable:!0,get:function(){return s.BaseState}});var i=r(336);Object.defineProperty(t,"halStateFactory",{enumerable:!0,get:function(){return i.factory}}),Object.defineProperty(t,"HalState",{enumerable:!0,get:function(){return i.HalState}});var o=r(197);Object.defineProperty(t,"binaryStateFactory",{enumerable:!0,get:function(){return o.factory}}),Object.defineProperty(t,"BinaryState",{enumerable:!0,get:function(){return o.BinaryState}});var a=r(184);Object.defineProperty(t,"jsonApiStateFactory",{enumerable:!0,get:function(){return a.factory}}),Object.defineProperty(t,"JsonApiState",{enumerable:!0,get:function(){return a.JsonApiState}});var c=r(121);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(876);Object.defineProperty(t,"textStateFactory",{enumerable:!0,get:function(){return u.factory}}),Object.defineProperty(t,"TextState",{enumerable:!0,get:function(){return u.TextState}});var l=r(826);Object.defineProperty(t,"cjStateFactory",{enumerable:!0,get:function(){return l.factory}}),Object.defineProperty(t,"CjState",{enumerable:!0,get:function(){return l.CjState}});var h=r(966);Object.defineProperty(t,"htmlStateFactory",{enumerable:!0,get:function(){return h.factory}}),Object.defineProperty(t,"HtmlState",{enumerable:!0,get:function(){return h.HtmlState}});var f=r(985);Object.defineProperty(t,"headStateFactory",{enumerable:!0,get:function(){return f.factory}})},431:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isState=void 0;const n=r(3);t.isState=function(e){return"string"==typeof e.uri&&e.links instanceof n.Links&&e.headers instanceof Headers}},184:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.JsonApiState=void 0;const n=r(773),s=r(182),i=r(3);class o extends n.BaseState{serializeBody(){return JSON.stringify(this.data)}clone(){return new o(this.uri,this.data,new Headers(this.headers),new i.Links(this.uri,this.links))}}function a(e,t,r){return{context:e,rel:t,href:"string"==typeof r?r:r.href}}t.JsonApiState=o,t.factory=async(e,t)=>{const r=await t.json(),n=s.parseLink(e,t.headers.get("Link"));return n.add(...function(e,t){const r=[];if(void 0===t.links)return r;for(const[n,s]of Object.entries(t.links))Array.isArray(s)?r.push(...s.map((t=>a(e,n,t)))):r.push(a(e,n,s));return r}(e,r),...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=a(e,"self",n.links.self);r.push({context:e,href:t.href,rel:"item"})}return r}(e,r)),new o(e,r,t.headers,n)}},121: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 s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)t.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(r[n[s]]=e[n[s]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.SirenState=void 0;const s=r(773),i=r(182),o=r(3),a=r(294);class c extends s.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(this.uri,this.data,new Headers(this.headers),new o.Links(this.uri,this.links),[],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:s}=t,i=n(t,["rel"]);for(const t of s){const n=Object.assign({rel:t,context:e},i);r.push(n)}return r}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 s=t.title,i={href:r,rel:n,context:e};return s&&(i.title=s),i}))}function f(e,t,r){if(void 0===t.links)return null;let n=null;for(const e of t.links)e.rel.includes("self")&&(n=e.href);if(!n)return null;const s=a.resolve(e,n);return new c(s,t.properties,r,new o.Links(n,u(n,t)))}t.SirenState=c,t.factory=async(e,t)=>{const r=await t.json(),n=i.parseLink(e,t.headers.get("Link"));return n.add(...u(e,r)),new c(e,r.properties,t.headers,n,function(e,t,r){if(void 0===t.entities)return[];const n=[];for(const s of t.entities)if(void 0===s.href){const t=f(e,s,r);null!==t&&n.push(t)}return n}(e,r,t.headers),r.actions?r.actions.map((t=>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),t}(e))):[]}}(e,t))):[])}},876:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.factory=t.TextState=void 0;const n=r(773),s=r(182),i=r(3);class o extends n.BaseState{serializeBody(){return this.data}clone(){return new o(this.uri,this.data,new Headers(this.headers),new i.Links(this.uri,this.links))}}t.TextState=o,t.factory=async(e,t)=>new o(e,await t.text(),t.headers,s.parseLink(e,t.headers.get("Link")))},155:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encode=void 0,t.encode=function(e){return btoa(e)}},70:(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)}},891:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseHtml=void 0;const n=r(294);function s(e,t){const r=[];for(const n of t){const t=n.getAttribute("rel"),s=n.getAttribute("href"),i=n.getAttribute("type")||void 0;if(t&&s)for(const n of t.split(" ")){const t={rel:n,context:e,href:s};i&&(t.type=i),r.push(t)}}return r}function i(e,t){const r=[];for(const s of t){const t=s.getAttribute("rel"),i=s.getAttribute("action"),o=s.getAttribute("enctype")||"application/x-www-form-urlencoded",a=s.getAttribute("id"),c=s.getAttribute("method")||"GET";if(t)for(const s of t.split(" ")){const t={rel:s,action:n.resolve(e,i),enctype:o,id:a,method:c};r.push(t)}else r.push({rel:null,action:n.resolve(e,i),enctype:o,id:a,method:c})}return r}t.parseHtml=function(e,t){const r=(new DOMParser).parseFromString(t,"text/html");return{forms:i(e,r.getElementsByTagName("form")),links:[...s(e,r.getElementsByTagName("link")),...s(e,r.getElementsByTagName("a"))]}}},6:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.expand=void 0;const n=r(496),s=r(294);t.expand=function(e,t,r){let i,o,a;"string"==typeof e?(i=e,o=t,a=r):(i=e.context,o=e.href,a=t);const c=n.parse(o).expand(a);return s.resolve(i,c)}},294:(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),"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,s=n.getElementsByTagName("base")[0],i=s&&s.href,o=n.head||n.getElementsByTagName("head")[0],a=s||o.appendChild(n.createElement("base")),c=n.createElement("a");a.href=e,c.href=t;const u=c.href;return s?s.href=i:o.removeChild(a),u},t.parse=function(e){return{host:new URL(e).host}}},187: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 s=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(r,n){function s(){void 0!==i&&e.removeListener("error",i),r([].slice.call(arguments))}var i;"error"!==t&&(i=function(r){e.removeListener(t,s),n(r)},e.once("error",i)),e.once(t,s)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var o=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?i.defaultMaxListeners:e._maxListeners}function u(e,t,r,n){var s,i,o,u;if(a(r),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),i=e._events),o=i[t]),void 0===o)o=i[t]=r,++e._eventsCount;else if("function"==typeof o?o=i[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(s=c(e))>0&&o.length>s&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.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 h(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=l.bind(n);return s.listener=r,n.wrapFn=s,s}function f(e,t,r){var n=e._events;if(void 0===n)return[];var s=n[t];return void 0===s?[]:"function"==typeof s?r?[s.listener||s]:[s]: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}(s):p(s,s.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}Object.defineProperty(i,"defaultMaxListeners",{enumerable:!0,get:function(){return o},set:function(e){if("number"!=typeof e||e<0||s(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");o=e}}),i.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},i.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||s(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},i.prototype.getMaxListeners=function(){return c(this)},i.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var s="error"===e,i=this._events;if(void 0!==i)s=s&&void 0===i.error;else if(!s)return!1;if(s){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var c=i[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},i.prototype.addListener=function(e,t){return u(this,e,t,!1)},i.prototype.on=i.prototype.addListener,i.prototype.prependListener=function(e,t){return u(this,e,t,!0)},i.prototype.once=function(e,t){return a(t),this.on(e,h(this,e,t)),this},i.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,h(this,e,t)),this},i.prototype.removeListener=function(e,t){var r,n,s,i,o;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(s=-1,i=r.length-1;i>=0;i--)if(r[i]===t||r[i].listener===t){o=r[i].listener,s=i;break}if(s<0)return this;0===s?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,s),1===r.length&&(n[e]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},i.prototype.off=i.prototype.removeListener,i.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 s,i=Object.keys(r);for(n=0;n<i.length;++n)"removeListener"!==(s=i[n])&&this.removeAllListeners(s);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},i.prototype.listeners=function(e){return f(this,e,!0)},i.prototype.rawListeners=function(e){return f(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},i.prototype.listenerCount=d,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},766: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 s=await t(n);if(!s.ok&&401===s.status){const r=await this.refreshToken();n=e.clone(),n.headers.set("Authorization","Bearer "+r.accessToken),s=await t(n)}return s}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 s=r(267);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n(s).default}}),Object.defineProperty(t,"fetchMwOAuth2",{enumerable:!0,get:function(){return n(s).default}}),Object.defineProperty(t,"OAuth2",{enumerable:!0,get:function(){return n(s).default}});var i=r(70);Object.defineProperty(t,"OAuth2Error",{enumerable:!0,get:function(){return n(i).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 s=r(909),i=n(r(70));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 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"};if(void 0!==t.clientSecret){const e=s.encode(t.clientId+":"+t.clientSecret);c.Authorization="Basic "+e}const u=await fetch(t.tokenEndpoint,{method:"POST",headers:c,body:o(n)}),l=await u.json();if(!u.ok){if("refresh_token"===n.grant_type&&t.grantType)return e(t,null);let r="OAuth2 error "+l.error+".";throw l.error_description&&(r+=" "+l.error_description),new i.default(r,l.error,401)}const h={accessToken:l.access_token,expiresAt:l.expires_in?Date.now()+1e3*l.expires_in:null,refreshToken:l.refresh_token?l.refresh_token:null};return t.onTokenUpdate&&t.onTokenUpdate(h),h}}},t={};return function r(n){if(t[n])return t[n].exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}(22)})()},475: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/,s=/\r?\n[\x20\x09]+/g,i=/[;,"]/,o=/[;,"]|\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 h(e){return o.test(e)||!a.test(e)}class f{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(s,"")).length,o=(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!=o&&(null!=o.rel?this.refs.push(...f.expandRelations(o)):this.refs.push(o)),-1===(d=e.indexOf(">",t)))throw new Error("Expected end of URI delimiter at offset "+t);o={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(),h="";if('"'===e[t=l(e,t=d+1)])for(t++;t<n;){if('"'===e[t]){t++;break}"\\"===e[t]&&t++,h+=e[t],t++}else{for(var d=t+1;!i.test(e[d])&&d<n;)d++;h=e.slice(t,d),t=d}switch(o[a]&&f.isSingleOccurenceAttr(a)||("*"===a[a.length-1]?o[a]=f.parseExtendedValue(h):(h="type"===a?h.toLowerCase():h,null!=o[a]?Array.isArray(o[a])?o[a].push(h):o[a]=[o[a],h]:o[a]=h)),e[t]){case",":r=1;break;case";":r=4}t++}return null!=o&&(null!=o.rel?this.refs.push(...f.expandRelations(o)):this.refs.push(o)),o=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+"; "+f.formatAttribute(t,r[t])}),"<"+r.uri+">"),e.push(t);return e.join(", ")}}f.isCompatibleEncoding=function(e){return t.test(e)},f.parse=function(e,t){return(new f).parse(e,t)},f.isSingleOccurenceAttr=function(e){return"rel"===e||"type"===e||"media"===e||"title"===e||"title*"===e},f.isTokenAttr=function(e){return"rel"===e||"type"===e||"anchor"===e},f.escapeQuotes=function(e){return e.replace(/"/g,'\\"')},f.expandRelations=function(e){return e.rel.split(" ").map((function(t){var r=Object.assign({},e);return r.rel=t,r}))},f.parseExtendedValue=function(e){var t=/([^']+)?(?:'([^']+)')?(.+)/.exec(e);return{language:t[2].toLowerCase(),encoding:f.isCompatibleEncoding(t[1])?null:t[1].toLowerCase(),value:f.isCompatibleEncoding(t[1])?decodeURIComponent(t[3]):t[3]}},f.formatExtendedAttribute=function(e,t){var r=(t.encoding||"utf-8").toUpperCase();return e+"="+r+"'"+(t.language||"en")+"'"+(Buffer.isBuffer(t.value)&&f.isCompatibleEncoding(r)?t.value.toString(r):Buffer.isBuffer(t.value)?t.value.toString("hex").replace(/[0-9a-f]{2}/gi,"%$1"):encodeURIComponent(t.value))},f.formatAttribute=function(e,t){return Array.isArray(t)?t.map((t=>f.formatAttribute(e,t))).join("; "):"*"===e[e.length-1]||"string"!=typeof t?f.formatExtendedAttribute(e,t):(f.isTokenAttr(e)?t=h(t)?'"'+f.escapeQuotes(t)+'"':f.escapeQuotes(t):h(t)&&(t='"'+(t=(t=encodeURIComponent(t)).replace(/%20/g," ").replace(/%2C/g,",").replace(/%3B/g,";"))+'"'),e+"="+t)},e.exports=f},129: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:(e,t,r)=>{"use strict";var n=t,s=r(574).Buffer;function i(e,t){try{return decodeURIComponent(e)}catch(r){return n.unescapeBuffer(e,t).toString()}}n.unescapeBuffer=function(e,t){for(var r,n,i,o=new s(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:o[u++]=l}break;case 1:if(i=l,l>=48&&l<=57)r=l-48;else if(l>=65&&l<=70)r=l-65+10;else{if(!(l>=97&&l<=102)){o[u++]=37,o[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)){o[u++]=37,o[u++]=i,o[u++]=l;break}n=l-97+10}o[u++]=16*r+n}}return o.slice(0,u-1)},n.unescape=i;for(var o=new Array(256),a=0;a<256;++a)o[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 s=e.charCodeAt(n);if(!(33===s||45===s||46===s||95===s||126===s||s>=39&&s<=42||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122))if(n-r>0&&(t+=e.slice(r,n)),s<128)r=n+1,t+=o[s];else if(s<2048)r=n+1,t+=o[192|s>>6]+o[128|63&s];else if(s<55296||s>=57344)r=n+1,t+=o[224|s>>12]+o[128|s>>6&63]+o[128|63&s];else{var i;if(!(++n<e.length))throw new URIError("URI malformed");i=1023&e.charCodeAt(n),r=n+1,t+=o[240|(s=65536+((1023&s)<<10|i))>>18]+o[128|s>>12&63]+o[128|s>>6&63]+o[128|63&s]}}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,s){t=t||"&",r=r||"=";var i=n.escape;if(s&&"function"==typeof s.encodeURIComponent&&(i=s.encodeURIComponent),null!==e&&"object"==typeof e){for(var o=Object.keys(e),a=o.length,u=a-1,l="",h=0;h<a;++h){var f=o[h],d=e[f],p=i(c(f))+r;if(Array.isArray(d)){for(var y=d.length,v=y-1,g=0;g<y;++g)l+=p+i(c(d[g])),g<v&&(l+=t);y&&h<u&&(l+=t)}else l+=p+i(c(d)),h<u&&(l+=t)}return l}return""},n.parse=n.decode=function(e,t,r,s){t=t||"&",r=r||"=";var o={};if("string"!=typeof e||0===e.length)return o;"string"!=typeof t&&(t+="");var a=r.length,c=t.length,l=1e3;s&&"number"==typeof s.maxKeys&&(l=s.maxKeys);var h=1/0;l>0&&(h=l);var f=n.unescape;s&&"function"==typeof s.decodeURIComponent&&(f=s.decodeURIComponent);for(var d=f!==i,p=[],y=0,v=0,g=0,m="",b="",w=d,_=d,x=0,S=0;S<e.length;++S){var O=e.charCodeAt(S);if(O!==t.charCodeAt(v)){if(v=0,_||(37===O?x=1:x>0&&(O>=48&&O<=57||O>=65&&O<=70||O>=97&&O<=102)?3==++x&&(_=!0):x=0),g<a){if(O===r.charCodeAt(g)){++g===a&&(y<(k=S-g+1)&&(m+=e.slice(y,k)),x=0,y=S+1);continue}g=0,w||(37===O?x=1:x>0&&(O>=48&&O<=57||O>=65&&O<=70||O>=97&&O<=102)?3==++x&&(w=!0):x=0)}43===O&&(g<a?(S-y>0&&(m+=e.slice(y,S)),m+="%20",w=!0):(S-y>0&&(b+=e.slice(y,S)),b+="%20",_=!0),y=S+1)}else if(++v===c){var j,k=S-v+1;if(g<a?y<k&&(m+=e.slice(y,k)):y<k&&(b+=e.slice(y,k)),w&&(m=u(m,f)),_&&(b=u(b,f)),-1===p.indexOf(m)?(o[m]=b,p[p.length]=m):(j=o[m])instanceof Array?j[j.length]=b:o[m]=[j,b],0==--h)break;w=_=d,x=0,m=b="",y=S+1,v=g=0}}return h>0&&(y<e.length||g>0)&&(y<e.length&&(g<a?m+=e.slice(y):v<c&&(b+=e.slice(y))),w&&(m=u(m,f)),_&&(b=u(b,f)),-1===p.indexOf(m)?(o[m]=b,p[p.length]=m):(j=o[m])instanceof Array?j[j.length]=b:o[m]=[j,b]),o}},496:(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 s={uriTemplate:function(){var e,t,r;for(r=i,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&&(i=r),e},expression:u,op:l,pathExpression:function(){var e;return"{/"===t.substr(i,2)?(e="{/",i+=2):(e=null,c('"{/"')),e},paramList:h,param:f,cut:d,listMarker:p,substr:y,nonexpression:v,extension:g};if(void 0!==n){if(void 0===s[n])throw new Error("Invalid rule name: "+e(n)+".")}else n="uriTemplat