@opra/client 1.13.0 → 1.14.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.
package/browser/index.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
  * http://www.panates.com
4
4
  *****************************************/
5
5
 
6
- "use strict";var _=Object.create;var w=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var re=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var d=(n,e)=>w(n,"name",{value:e,configurable:!0});var ae=(n,e)=>{for(var t in e)w(n,t,{get:e[t],enumerable:!0})},K=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of te(e))!se.call(n,a)&&a!==t&&w(n,a,{get:()=>e[a],enumerable:!(r=ee(e,a))||r.enumerable});return n};var M=(n,e,t)=>(t=n!=null?_(re(n)):{},K(e||!n||!n.__esModule?w(t,"default",{value:n,enumerable:!0}):t,n)),oe=n=>K(w({},"__esModule",{value:!0}),n);var he={};ae(he,{Backend:()=>S,ClientError:()=>b,FetchBackend:()=>P,HttpBackend:()=>R,HttpClientBase:()=>k,HttpEventType:()=>f,HttpObserveType:()=>u,HttpRequestObservable:()=>U,HttpResponse:()=>T,OpraHttpClient:()=>N,kBackend:()=>h,kClient:()=>V,kContext:()=>l,urlPath:()=>ce});module.exports=oe(he);var V=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var O=class O{constructor(e){this.document=e==null?void 0:e.document}};d(O,"Backend");var S=O;var H=class H extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};d(H,"ClientError");var b=H;var u;(function(n){n.ResponseHeader="response-header",n.Response="response",n.Body="body",n.Events="events"})(u||(u={}));var j=M(require("@browsery/type-is"),1),E=require("@opra/common"),W=require("rxjs"),$=require("rxjs/internal/util/isReadableStreamLike");var A=class A extends S{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};d(A,"HttpBackend");var R=A;var L=class L{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new L({...this,...e})}};d(L,"HttpResponse");var T=L;var f;(function(n){n.Sent="Sent",n.UploadProgress="UploadProgress",n.ResponseHeader="ResponseHeader",n.DownloadProgress="DownloadProgress",n.Response="Response",n.User="User"})(f||(f={}));var I=class I extends R{constructor(e,t){var r,a,s,o,c,m;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(a=t==null?void 0:t.defaults)==null?void 0:a.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((o=t==null?void 0:t.defaults)==null?void 0:o.params)instanceof URLSearchParams?(c=t==null?void 0:t.defaults)==null?void 0:c.params:new URLSearchParams((m=t==null?void 0:t.defaults)==null?void 0:m.params)}}handle(e){return new W.Observable(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new TransformStream({transform(g,D){D.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(v),window:e.window,duplex:"half"})}let a=this.send(r);t.next({request:r,type:f.Sent});let s=await a,o=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:o});let c;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new Response(new ReadableStream({async start(g){let D=y.getReader();for(;;){let{done:Z,value:G}=await D.read();if(Z)break;x+=G.byteLength,g.enqueue(G),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));c=await this.parseBody(v)}else c=await this.parseBody(s);let m=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:c});t.next({request:r,type:f.Response,response:m}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,headers:t};this.defaults.headers.forEach((o,c)=>{t.has(c)||t.set(c,o)});let a=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((o,c)=>{a.searchParams.has(c)||a.searchParams.set(c,o)}),r.url=a.toString());let s=r.body;if(s){let o="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(o='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:o}),t.set("Content-Length",String(r.body.size)),delete r.duplex):(0,$.isReadableStreamLike)(s)?(o="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(o="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):(0,E.isBlob)(s)?(o=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):((0,E.isFormData)(s)||(o='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:o}),t.set("Content-Length",String(r.body.size))),delete r.duplex),o&&!t.has("Content-Type")&&t.set("Content-Type",o)}return new Request(a.toString(),r)}createResponse(e){return new T(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(j.default.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(j.default.is(r,["text"]))t=await e.text();else if(j.default.is(r,["multipart"]))t=await e.formData();else{let a=await e.arrayBuffer();a.byteLength&&(t=a)}return t}};d(I,"FetchBackend");var P=I;var Y=require("@opra/common");var Q=M(require("@browsery/type-is"),1),X=require("@opra/common"),B=require("rxjs");var z=class z{constructor(e,t){this.chain=e.reduceRight((r,a)=>(s,o)=>a.intercept(s,{handle:d(c=>r(c,o),"handle")}),ne),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};d(z,"HttpInterceptorHandler");var q=z;function ne(n,e){return e(n)}d(ne,"chainEnd");var C=class C extends B.Observable{constructor(e,t){super(r=>{let a=this[l].observe;new q(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(a===u.Events){r.next(s);return}if(a===u.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:o}=s;if(a===u.Response){r.next(o),r.complete();return}let c=Q.default.is(s.response.contentType||"",[X.MimeTypes.opra_response_json]);if(o.status>=400&&o.status<600){r.error(new b({message:o.status+" "+o.statusText,status:o.status,issues:c?o.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:u.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new C(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,o)=>{o.toLowerCase()==="set-cookie"?r.append(o,s):r.set(o,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((a,s)=>r.set(String(s),String(a))):Object.entries(e).forEach(a=>r.set(String(a[0]),String(a[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||u.Body,t}getBody(){return(0,B.lastValueFrom)(this.observe(u.Body))}getResponse(){return(0,B.lastValueFrom)(this.observe(u.Response))}};d(C,"HttpRequestObservable");var U=C;var de=/^(\/*)(.+)/,F=class F{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=d(async s=>{let o=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&o.param("id",s);let c=await o.getBody().catch(m=>{throw m.message="Error fetching api schema from url ("+this.serviceUrl+`).
7
- `+m.message,m});if(c.references){let m=c.references;c.references={};for(let[y,p]of Object.entries(m)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);c.references[y]=t[p.id]=i}}return c},"getDocument"),a=await r(e==null?void 0:e.documentId);return await Y.ApiDocumentFactory.createDocument(a).catch(s=>{throw s.message=`Error loading api document.
8
- `+s.message,s})}request(e,t){var a;e=((a=de.exec(e))==null?void 0:a[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};d(F,"HttpClientBase");var k=F;var J=class J extends k{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};d(J,"OpraHttpClient");var N=J;function ce(n,...e){let t="",r;for(r=0;r<n.length;r++)t+=n[0]+encodeURIComponent(e[r]);return t}d(ce,"urlPath");
6
+ "use strict";var ee=Object.create;var w=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var d=(n,e)=>w(n,"name",{value:e,configurable:!0});var oe=(n,e)=>{for(var t in e)w(n,t,{get:e[t],enumerable:!0})},K=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of re(e))!ae.call(n,a)&&a!==t&&w(n,a,{get:()=>e[a],enumerable:!(r=te(e,a))||r.enumerable});return n};var M=(n,e,t)=>(t=n!=null?ee(se(n)):{},K(e||!n||!n.__esModule?w(t,"default",{value:n,enumerable:!0}):t,n)),ne=n=>K(w({},"__esModule",{value:!0}),n);var le={};oe(le,{Backend:()=>S,ClientError:()=>b,FetchBackend:()=>P,HttpBackend:()=>R,HttpClientBase:()=>k,HttpEventType:()=>f,HttpObserveType:()=>m,HttpRequestObservable:()=>U,HttpResponse:()=>T,OpraHttpClient:()=>N,kBackend:()=>h,kClient:()=>V,kContext:()=>l,urlPath:()=>he});module.exports=ne(le);var V=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var O=class O{constructor(e){this.document=e==null?void 0:e.document}};d(O,"Backend");var S=O;var H=class H extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};d(H,"ClientError");var b=H;var m;(function(n){n.ResponseHeader="response-header",n.Response="response",n.Body="body",n.Events="events"})(m||(m={}));var j=M(require("@browsery/type-is"),1),W=require("@jsopen/objects"),E=require("@opra/common"),$=require("rxjs"),Q=require("rxjs/internal/util/isReadableStreamLike");var A=class A extends S{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};d(A,"HttpBackend");var R=A;var L=class L{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new L({...this,...e})}};d(L,"HttpResponse");var T=L;var f;(function(n){n.Sent="Sent",n.UploadProgress="UploadProgress",n.ResponseHeader="ResponseHeader",n.DownloadProgress="DownloadProgress",n.Response="Response",n.User="User"})(f||(f={}));var I=class I extends R{constructor(e,t){var r,a,s,o,c,u;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(a=t==null?void 0:t.defaults)==null?void 0:a.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((o=t==null?void 0:t.defaults)==null?void 0:o.params)instanceof URLSearchParams?(c=t==null?void 0:t.defaults)==null?void 0:c.params:new URLSearchParams((u=t==null?void 0:t.defaults)==null?void 0:u.params)}}handle(e){return new $.Observable(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new TransformStream({transform(g,D){D.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(v),window:e.window,duplex:"half"})}let a=this.send(r);t.next({request:r,type:f.Sent});let s=await a,o=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:o});let c;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,v=new Response(new ReadableStream({async start(g){let D=y.getReader();for(;;){let{done:_,value:G}=await D.read();if(_)break;x+=G.byteLength,g.enqueue(G),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));c=await this.parseBody(v)}else c=await this.parseBody(s);let u=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:c});t.next({request:r,type:f.Response,response:u}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,...(0,W.omit)(this.defaults,["headers","params"]),headers:t};this.defaults.headers.forEach((o,c)=>{t.has(c)||t.set(c,o)});let a=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((o,c)=>{a.searchParams.has(c)||a.searchParams.set(c,o)}),r.url=a.toString());let s=r.body;if(s){let o="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(o='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:o}),t.set("Content-Length",String(r.body.size)),delete r.duplex):(0,Q.isReadableStreamLike)(s)?(o="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(o="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):(0,E.isBlob)(s)?(o=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):((0,E.isFormData)(s)||(o='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:o}),t.set("Content-Length",String(r.body.size))),delete r.duplex),o&&!t.has("Content-Type")&&t.set("Content-Type",o)}return new Request(a.toString(),r)}createResponse(e){return new T(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(j.default.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(j.default.is(r,["text"]))t=await e.text();else if(j.default.is(r,["multipart"]))t=await e.formData();else{let a=await e.arrayBuffer();a.byteLength&&(t=a)}return t}};d(I,"FetchBackend");var P=I;var Z=require("@opra/common");var X=M(require("@browsery/type-is"),1),Y=require("@opra/common"),B=require("rxjs");var z=class z{constructor(e,t){this.chain=e.reduceRight((r,a)=>(s,o)=>a.intercept(s,{handle:d(c=>r(c,o),"handle")}),de),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};d(z,"HttpInterceptorHandler");var q=z;function de(n,e){return e(n)}d(de,"chainEnd");var C=class C extends B.Observable{constructor(e,t){super(r=>{let a=this[l].observe;new q(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(a===m.Events){r.next(s);return}if(a===m.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:o}=s;if(a===m.Response){r.next(o),r.complete();return}let c=X.default.is(s.response.contentType||"",[Y.MimeTypes.opra_response_json]);if(o.status>=400&&o.status<600){r.error(new b({message:o.status+" "+o.statusText,status:o.status,issues:c?o.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:m.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new C(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,o)=>{o.toLowerCase()==="set-cookie"?r.append(o,s):r.set(o,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((a,s)=>r.set(String(s),String(a))):Object.entries(e).forEach(a=>r.set(String(a[0]),String(a[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||m.Body,t}getBody(){return(0,B.lastValueFrom)(this.observe(m.Body))}getResponse(){return(0,B.lastValueFrom)(this.observe(m.Response))}};d(C,"HttpRequestObservable");var U=C;var ce=/^(\/*)(.+)/,F=class F{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=d(async s=>{let o=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&o.param("id",s);let c=await o.getBody().catch(u=>{throw u.message="Error fetching api schema from url ("+this.serviceUrl+`).
7
+ `+u.message,u});if(c.references){let u=c.references;c.references={};for(let[y,p]of Object.entries(u)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);c.references[y]=t[p.id]=i}}return c},"getDocument"),a=await r(e==null?void 0:e.documentId);return await Z.ApiDocumentFactory.createDocument(a).catch(s=>{throw s.message=`Error loading api document.
8
+ `+s.message,s})}request(e,t){var a;e=((a=ce.exec(e))==null?void 0:a[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};d(F,"HttpClientBase");var k=F;var J=class J extends k{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};d(J,"OpraHttpClient");var N=J;function he(n,...e){let t="",r;for(r=0;r<n.length;r++)t+=n[0]+encodeURIComponent(e[r]);return t}d(he,"urlPath");
package/browser/index.mjs CHANGED
@@ -3,6 +3,6 @@
3
3
  * http://www.panates.com
4
4
  *****************************************/
5
5
 
6
- var G=Object.defineProperty;var n=(c,e)=>G(c,"name",{value:e,configurable:!0});var K=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var q=class q{constructor(e){this.document=e==null?void 0:e.document}};n(q,"Backend");var w=q;var C=class C extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};n(C,"ClientError");var S=C;var m;(function(c){c.ResponseHeader="response-header",c.Response="response",c.Body="body",c.Events="events"})(m||(m={}));import D from"@browsery/type-is";import{isBlob as M,isFormData as V}from"@opra/common";import{Observable as W}from"rxjs";import{isReadableStreamLike as $}from"rxjs/internal/util/isReadableStreamLike";var v=class v extends w{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};n(v,"HttpBackend");var b=v;var T=class T{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new T({...this,...e})}};n(T,"HttpResponse");var R=T;var f;(function(c){c.Sent="Sent",c.UploadProgress="UploadProgress",c.ResponseHeader="ResponseHeader",c.DownloadProgress="DownloadProgress",c.Response="Response",c.User="User"})(f||(f={}));var O=class O extends b{constructor(e,t){var r,o,s,a,d,u;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(o=t==null?void 0:t.defaults)==null?void 0:o.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((a=t==null?void 0:t.defaults)==null?void 0:a.params)instanceof URLSearchParams?(d=t==null?void 0:t.defaults)==null?void 0:d.params:new URLSearchParams((u=t==null?void 0:t.defaults)==null?void 0:u.params)}}handle(e){return new W(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new TransformStream({transform(g,E){E.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(j),window:e.window,duplex:"half"})}let o=this.send(r);t.next({request:r,type:f.Sent});let s=await o,a=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:a});let d;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new Response(new ReadableStream({async start(g){let E=y.getReader();for(;;){let{done:J,value:z}=await E.read();if(J)break;x+=z.byteLength,g.enqueue(z),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));d=await this.parseBody(j)}else d=await this.parseBody(s);let u=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:d});t.next({request:r,type:f.Response,response:u}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,headers:t};this.defaults.headers.forEach((a,d)=>{t.has(d)||t.set(d,a)});let o=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((a,d)=>{o.searchParams.has(d)||o.searchParams.set(d,a)}),r.url=o.toString());let s=r.body;if(s){let a="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(a='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:a}),t.set("Content-Length",String(r.body.size)),delete r.duplex):$(s)?(a="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(a="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):M(s)?(a=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):(V(s)||(a='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:a}),t.set("Content-Length",String(r.body.size))),delete r.duplex),a&&!t.has("Content-Type")&&t.set("Content-Type",a)}return new Request(o.toString(),r)}createResponse(e){return new R(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(D.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(D.is(r,["text"]))t=await e.text();else if(D.is(r,["multipart"]))t=await e.formData();else{let o=await e.arrayBuffer();o.byteLength&&(t=o)}return t}};n(O,"FetchBackend");var P=O;import{ApiDocumentFactory as _}from"@opra/common";import X from"@browsery/type-is";import{MimeTypes as Y}from"@opra/common";import{lastValueFrom as F,Observable as Z}from"rxjs";var H=class H{constructor(e,t){this.chain=e.reduceRight((r,o)=>(s,a)=>o.intercept(s,{handle:n(d=>r(d,a),"handle")}),Q),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};n(H,"HttpInterceptorHandler");var B=H;function Q(c,e){return e(c)}n(Q,"chainEnd");var k=class k extends Z{constructor(e,t){super(r=>{let o=this[l].observe;new B(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(o===m.Events){r.next(s);return}if(o===m.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:a}=s;if(o===m.Response){r.next(a),r.complete();return}let d=X.is(s.response.contentType||"",[Y.opra_response_json]);if(a.status>=400&&a.status<600){r.error(new S({message:a.status+" "+a.statusText,status:a.status,issues:d?a.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:m.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new k(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,a)=>{a.toLowerCase()==="set-cookie"?r.append(a,s):r.set(a,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((o,s)=>r.set(String(s),String(o))):Object.entries(e).forEach(o=>r.set(String(o[0]),String(o[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||m.Body,t}getBody(){return F(this.observe(m.Body))}getResponse(){return F(this.observe(m.Response))}};n(k,"HttpRequestObservable");var U=k;var ee=/^(\/*)(.+)/,A=class A{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=n(async s=>{let a=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&a.param("id",s);let d=await a.getBody().catch(u=>{throw u.message="Error fetching api schema from url ("+this.serviceUrl+`).
7
- `+u.message,u});if(d.references){let u=d.references;d.references={};for(let[y,p]of Object.entries(u)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);d.references[y]=t[p.id]=i}}return d},"getDocument"),o=await r(e==null?void 0:e.documentId);return await _.createDocument(o).catch(s=>{throw s.message=`Error loading api document.
8
- `+s.message,s})}request(e,t){var o;e=((o=ee.exec(e))==null?void 0:o[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};n(A,"HttpClientBase");var L=A;var I=class I extends L{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};n(I,"OpraHttpClient");var N=I;function Me(c,...e){let t="",r;for(r=0;r<c.length;r++)t+=c[0]+encodeURIComponent(e[r]);return t}n(Me,"urlPath");export{w as Backend,S as ClientError,P as FetchBackend,b as HttpBackend,L as HttpClientBase,f as HttpEventType,m as HttpObserveType,U as HttpRequestObservable,R as HttpResponse,N as OpraHttpClient,h as kBackend,K as kClient,l as kContext,Me as urlPath};
6
+ var G=Object.defineProperty;var n=(c,e)=>G(c,"name",{value:e,configurable:!0});var K=Symbol.for("kClient"),h=Symbol.for("kBackend"),l=Symbol.for("kContext");var q=class q{constructor(e){this.document=e==null?void 0:e.document}};n(q,"Backend");var w=q;var C=class C extends Error{constructor(e,t){super(e.message),this.cause=t,this.issues=e.issues||[],this.status=e.status,t&&(this.cause=t,t.stack&&(this.stack=t.stack))}};n(C,"ClientError");var S=C;var u;(function(c){c.ResponseHeader="response-header",c.Response="response",c.Body="body",c.Events="events"})(u||(u={}));import D from"@browsery/type-is";import{omit as M}from"@jsopen/objects";import{isBlob as V,isFormData as W}from"@opra/common";import{Observable as $}from"rxjs";import{isReadableStreamLike as Q}from"rxjs/internal/util/isReadableStreamLike";var v=class v extends w{constructor(e,t){super(t);let r=new URL(e);this.serviceUrl=r.toString().split("?")[0].split("#")[0],this.serviceUrl.endsWith("/")||(this.serviceUrl+="/")}};n(v,"HttpBackend");var b=v;var T=class T{constructor(e){this.hasBody=!1,this.headers=(e==null?void 0:e.headers)instanceof Headers?e==null?void 0:e.headers:new Headers(e==null?void 0:e.headers),this.status=(e==null?void 0:e.status)||200,this.statusText=(e==null?void 0:e.statusText)||"OK",this.url=(e==null?void 0:e.url)||null,this.ok=this.status>=200&&this.status<300,this.body=e==null?void 0:e.body,this.hasBody=(e==null?void 0:e.body)!=null||!!(e!=null&&e.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(e){return new T({...this,...e})}};n(T,"HttpResponse");var R=T;var f;(function(c){c.Sent="Sent",c.UploadProgress="UploadProgress",c.ResponseHeader="ResponseHeader",c.DownloadProgress="DownloadProgress",c.Response="Response",c.User="User"})(f||(f={}));var O=class O extends b{constructor(e,t){var r,o,s,a,d,m;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults={...t==null?void 0:t.defaults,headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(o=t==null?void 0:t.defaults)==null?void 0:o.headers:new Headers((s=t==null?void 0:t.defaults)==null?void 0:s.headers),params:((a=t==null?void 0:t.defaults)==null?void 0:a.params)instanceof URLSearchParams?(d=t==null?void 0:t.defaults)==null?void 0:d.params:new URLSearchParams((m=t==null?void 0:t.defaults)==null?void 0:m.params)}}handle(e){return new $(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let y=r.body,p=r.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new TransformStream({transform(g,E){E.enqueue(g),x+=g.byteLength,t.next({type:f.UploadProgress,request:r,total:i,loaded:x})}});r=new Request(r.url,{cache:r.cache,credentials:r.credentials,headers:r.headers,integrity:r.integrity,keepalive:r.keepalive,method:r.method,mode:r.mode,redirect:r.redirect,referrer:r.referrer,referrerPolicy:r.referrerPolicy,signal:r.signal,body:y.pipeThrough(j),window:e.window,duplex:"half"})}let o=this.send(r);t.next({request:r,type:f.Sent});let s=await o,a=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:f.ResponseHeader,response:a});let d;if(s.body)if(e.reportProgress){let y=s.body,p=s.headers.get("content-length")||"0",i=parseInt(p,10)||0,x=0,j=new Response(new ReadableStream({async start(g){let E=y.getReader();for(;;){let{done:J,value:z}=await E.read();if(J)break;x+=z.byteLength,g.enqueue(z),t.next({type:f.DownloadProgress,request:r,total:i,loaded:x})}g.close()}}));d=await this.parseBody(j)}else d=await this.parseBody(s);let m=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:d});t.next({request:r,type:f.Response,response:m}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r={...e,...M(this.defaults,["headers","params"]),headers:t};this.defaults.headers.forEach((a,d)=>{t.has(d)||t.set(d,a)});let o=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((a,d)=>{o.searchParams.has(d)||o.searchParams.set(d,a)}),r.url=o.toString());let s=r.body;if(s){let a="";typeof s=="string"||typeof s=="number"||typeof s=="boolean"?(a='text/plain; charset="UTF-8"',r.body=new Blob([String(s)],{type:a}),t.set("Content-Length",String(r.body.size)),delete r.duplex):Q(s)?(a="application/octet-stream",r.duplex="half"):Buffer.isBuffer(s)?(a="application/octet-stream",t.set("Content-Length",String(s.length)),delete r.duplex):V(s)?(a=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):(W(s)||(a='application/json;charset="UTF-8"',r.body=new Blob([JSON.stringify(s)],{type:a}),t.set("Content-Length",String(r.body.size))),delete r.duplex),a&&!t.has("Content-Type")&&t.set("Content-Type",a)}return new Request(o.toString(),r)}createResponse(e){return new R(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(D.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(D.is(r,["text"]))t=await e.text();else if(D.is(r,["multipart"]))t=await e.formData();else{let o=await e.arrayBuffer();o.byteLength&&(t=o)}return t}};n(O,"FetchBackend");var P=O;import{ApiDocumentFactory as ee}from"@opra/common";import Y from"@browsery/type-is";import{MimeTypes as Z}from"@opra/common";import{lastValueFrom as F,Observable as _}from"rxjs";var H=class H{constructor(e,t){this.chain=e.reduceRight((r,o)=>(s,a)=>o.intercept(s,{handle:n(d=>r(d,a),"handle")}),X),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};n(H,"HttpInterceptorHandler");var B=H;function X(c,e){return e(c)}n(X,"chainEnd");var k=class k extends _{constructor(e,t){super(r=>{let o=this[l].observe;new B(e.interceptors||[],this[h]).handle(this[l]).subscribe({next(s){if(o===u.Events){r.next(s);return}if(o===u.ResponseHeader&&s.type===f.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===f.Response){let{response:a}=s;if(o===u.Response){r.next(a),r.complete();return}let d=Y.is(s.response.contentType||"",[Z.opra_response_json]);if(a.status>=400&&a.status<600){r.error(new S({message:a.status+" "+a.statusText,status:a.status,issues:d?a.body.errors:void 0})),r.complete();return}r.next(s.response.body),r.complete()}},error(s){r.error(s)},complete(){r.complete()}})}),Object.defineProperty(this,h,{enumerable:!1,value:e}),Object.defineProperty(this,l,{enumerable:!1,value:{...t,observe:u.Body,headers:new Headers(t==null?void 0:t.headers)}})}clone(){return new k(this[h],this[l])}options(e){return Object.assign(this[l],e),this}header(e,t){let r=this[l].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((s,a)=>{a.toLowerCase()==="set-cookie"?r.append(a,s):r.set(a,s)}),this):(t==null||t===""?r.delete(e):r.append(e,String(t)),this)}param(e,t){t&&typeof t=="object"&&(t=JSON.stringify(t));let r=this[l].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((o,s)=>r.set(String(s),String(o))):Object.entries(e).forEach(o=>r.set(String(o[0]),String(o[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[l].observe)return this;let t=this.clone();return t[l].observe=e||u.Body,t}getBody(){return F(this.observe(u.Body))}getResponse(){return F(this.observe(u.Response))}};n(k,"HttpRequestObservable");var U=k;var te=/^(\/*)(.+)/,A=class A{constructor(e){Object.defineProperty(this,h,{enumerable:!1,value:e})}get serviceUrl(){return this[h].serviceUrl}async fetchDocument(e){let t={},r=n(async s=>{let a=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&a.param("id",s);let d=await a.getBody().catch(m=>{throw m.message="Error fetching api schema from url ("+this.serviceUrl+`).
7
+ `+m.message,m});if(d.references){let m=d.references;d.references={};for(let[y,p]of Object.entries(m)){if(t[p.id]===null)throw new Error("Circular reference detected");t[p.id]=null;let i=await r(p.id);d.references[y]=t[p.id]=i}}return d},"getDocument"),o=await r(e==null?void 0:e.documentId);return await ee.createDocument(o).catch(s=>{throw s.message=`Error loading api document.
8
+ `+s.message,s})}request(e,t){var o;e=((o=te.exec(e))==null?void 0:o[2])||"";let r=new U(this[h],{...t,method:(t==null?void 0:t.method)||"GET",url:new URL(e,this.serviceUrl)});return t!=null&&t.params&&r.param(t.params),r}delete(e,t){return this.request(e,{...t,method:"DELETE"})}get(e,t){return this.request(e,{...t,method:"GET"})}patch(e,t,r){return this.request(e,{...r,method:"PATCH",body:t})}post(e,t,r){return this.request(e,{...r,method:"POST",body:t})}put(e,t,r){return this.request(e,{...r,method:"PUT",body:t})}};n(A,"HttpClientBase");var L=A;var I=class I extends L{constructor(e,t){super(new P(e,t))}get defaults(){return this[h].defaults}};n(I,"OpraHttpClient");var N=I;function We(c,...e){let t="",r;for(r=0;r<c.length;r++)t+=c[0]+encodeURIComponent(e[r]);return t}n(We,"urlPath");export{w as Backend,S as ClientError,P as FetchBackend,b as HttpBackend,L as HttpClientBase,f as HttpEventType,u as HttpObserveType,U as HttpRequestObservable,R as HttpResponse,N as OpraHttpClient,h as kBackend,K as kClient,l as kContext,We as urlPath};
@@ -4,6 +4,7 @@ exports.FetchBackend = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  // /// <reference lib="dom" />
6
6
  const type_is_1 = tslib_1.__importDefault(require("@browsery/type-is"));
7
+ const objects_1 = require("@jsopen/objects");
7
8
  const common_1 = require("@opra/common");
8
9
  const rxjs_1 = require("rxjs");
9
10
  const isReadableStreamLike_1 = require("rxjs/internal/util/isReadableStreamLike");
@@ -150,6 +151,7 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
150
151
  const headers = init.headers || new Headers();
151
152
  const requestInit = {
152
153
  ...init,
154
+ ...(0, objects_1.omit)(this.defaults, ['headers', 'params']),
153
155
  headers,
154
156
  };
155
157
  this.defaults.headers.forEach((val, key) => {
@@ -1,5 +1,6 @@
1
1
  // /// <reference lib="dom" />
2
2
  import typeIs from '@browsery/type-is';
3
+ import { omit } from '@jsopen/objects';
3
4
  import { isBlob, isFormData } from '@opra/common';
4
5
  import { Observable } from 'rxjs';
5
6
  import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
@@ -146,6 +147,7 @@ export class FetchBackend extends HttpBackend {
146
147
  const headers = init.headers || new Headers();
147
148
  const requestInit = {
148
149
  ...init,
150
+ ...omit(this.defaults, ['headers', 'params']),
149
151
  headers,
150
152
  };
151
153
  this.defaults.headers.forEach((val, key) => {
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@opra/client",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Opra Client package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
+ "@jsopen/objects": "^1.5.2",
8
9
  "accepts": "^1.3.8",
9
10
  "tslib": "^2.8.1"
10
11
  },
11
12
  "peerDependencies": {
12
- "@opra/common": "^1.13.0",
13
+ "@opra/common": "^1.14.0",
13
14
  "rxjs": "^7.0.0 || ^8.0.0"
14
15
  },
15
16
  "type": "module",