@opra/client 0.31.4 → 0.31.6

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.js CHANGED
@@ -3,4 +3,6 @@
3
3
  * http://www.panates.com
4
4
  *****************************************/
5
5
 
6
- var $=Object.defineProperty,se=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var le=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable;var Z=(l,e,r)=>e in l?$(l,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):l[e]=r,x=(l,e)=>{for(var r in e||(e={}))le.call(e,r)&&Z(l,r,e[r]);if(Y)for(var r of Y(e))de.call(e,r)&&Z(l,r,e[r]);return l},k=(l,e)=>se(l,ce(e)),d=(l,e)=>$(l,"name",{value:e,configurable:!0});var A=class A{constructor(e){this.api=e==null?void 0:e.api}};d(A,"Backend");var p=A;var he=Symbol.for("kClient"),f=Symbol.for("kBackend"),n=Symbol.for("kContext");var G=class G{constructor(e){Object.defineProperty(this,f,{enumerable:!1,value:e})}};d(G,"ClientBase");var j=G;var M=class M extends Error{constructor(e,r){super(e.message),this.cause=r,this.issues=e.issues||[],this.status=e.status,r&&(this.cause=r,r.stack&&(this.stack=r.stack))}};d(M,"ClientError");var S=M;import{Observable as me}from"rxjs";import{isReadableStreamLike as fe}from"rxjs/internal/util/isReadableStreamLike";import I from"@browsery/type-is";import{isBlob as ue,OpraURL as ne}from"@opra/common";var z=class z extends p{constructor(e,r){super(r),this.serviceUrl=e}};d(z,"HttpBackend");var R=z;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(x(x({},this),e))}};d(T,"HttpResponse");var v=T;var i;(function(l){l.Sent="Sent",l.UploadProgress="UploadProgress",l.ResponseHeader="ResponseHeader",l.DownloadProgress="DownloadProgress",l.Response="Response",l.User="User"})(i||(i={}));var F=class F extends R{constructor(e,r){var t,s,a,c,h,w;super(e,r),this.interceptors=Array.from(new Set([...(r==null?void 0:r.interceptors)||[]])),this.defaults=k(x({},r==null?void 0:r.defaults),{headers:((t=r==null?void 0:r.defaults)==null?void 0:t.headers)instanceof Headers?(s=r==null?void 0:r.defaults)==null?void 0:s.headers:new Headers((a=r==null?void 0:r.defaults)==null?void 0:a.headers),params:((c=r==null?void 0:r.defaults)==null?void 0:c.params)instanceof URLSearchParams?(h=r==null?void 0:r.defaults)==null?void 0:h.params:new URLSearchParams((w=r==null?void 0:r.defaults)==null?void 0:w.params)})}handle(e){return new me(r=>{(async()=>{let t=this.prepareRequest(e);if(t.body&&e.reportProgress){let C=t.body,O=t.headers.get("content-length")||"0",D=parseInt(O,10)||0,g=0,q=new TransformStream({transform(b,H){H.enqueue(b),g+=b.byteLength,r.next({type:i.UploadProgress,request:t,total:D,loaded:g})}});t=new Request(t.url,{cache:t.cache,credentials:t.credentials,headers:t.headers,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,body:C.pipeThrough(q),window:e.window,duplex:"half"})}let s=this.send(t);r.next({request:t,type:i.Sent});let a=await s,c=this.createResponse({url:a.url,headers:a.headers,status:a.status,statusText:a.statusText,hasBody:!!a.body});r.next({request:t,type:i.ResponseHeader,response:c});let h;if(a.body)if(e.reportProgress){let C=a.body,O=a.headers.get("content-length")||"0",D=parseInt(O,10)||0,g=0,q=new Response(new ReadableStream({async start(b){let H=C.getReader();for(;;){let{done:ae,value:X}=await H.read();if(ae)break;g+=X.byteLength,b.enqueue(X),r.next({type:i.DownloadProgress,request:t,total:D,loaded:g})}b.close()}}));h=await this.parseBody(q)}else h=await this.parseBody(a);let w=this.createResponse({url:a.url,headers:a.headers,status:a.status,statusText:a.statusText,body:h});r.next({request:t,type:i.Response,response:w}),r.complete()})().catch(t=>r.error(t))})}send(e){return fetch(e)}prepareRequest(e){let r=e.headers||new Headers,t=k(x({},e),{headers:r});this.defaults.headers.forEach((c,h)=>{r.has(h)||r.set(h,c)});let s=new ne(t.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((c,h)=>{s.searchParams.has(h)||s.searchParams.set(h,c)}),t.url=s.toString());let a=t.body;if(a){let c;typeof a=="string"||typeof a=="number"||typeof a=="boolean"?(c='text/plain; charset="UTF-8"',t.body=new Blob([String(a)],{type:c}),r.set("Content-Length",String(t.body.size)),delete t.duplex):fe(a)?(c="application/octet-stream",t.duplex="half"):Buffer.isBuffer(a)?(c="application/octet-stream",r.set("Content-Length",String(a.length)),delete t.duplex):ue(a)?(c=a.type||"application/octet-stream",r.set("Content-Length",String(a.size)),delete t.duplex):(c='application/json;charset="UTF-8"',t.body=new Blob([JSON.stringify(a)],{type:c}),r.set("Content-Length",String(t.body.size)),delete t.duplex),c&&!r.has("Content-Type")&&r.set("Content-Type",c)}return new Request(s.toString(),t)}createResponse(e){return new v(e)}async parseBody(e){let r,t=e.headers.get("Content-Type")||"";if(I.is(t,["json","application/*+json"]))r=await e.json(),typeof r=="string"&&(r=JSON.parse(r));else if(I.is(t,["text"]))r=await e.text();else if(I.is(t,["multipart"]))r=await e.formData();else{let s=await e.arrayBuffer();s.byteLength&&(r=s)}return r}};d(F,"FetchBackend");var P=F;import{ApiDocumentFactory as we,ResponsiveMap as re}from"@opra/common";import{toArrayDef as u}from"putil-varhelpers";import{OpraURL as K}from"@opra/common";import{lastValueFrom as ee,Observable as ye}from"rxjs";import oe from"@browsery/type-is";import{OpraURL as xe}from"@opra/common";var y;(function(l){l.ResponseHeader="response-header",l.Response="response",l.Body="body",l.Events="events"})(y||(y={}));var J=class J{constructor(e,r){this.chain=e.reduceRight((t,s)=>(a,c)=>s.intercept(a,{handle:h=>t(h,c)}),ie),this.finalHandler=r}handle(e){return this.chain(e,r=>this.finalHandler.handle(r))}};d(J,"HttpInterceptorHandler");var E=J;function ie(l,e){return e(l)}d(ie,"chainEnd");var B=class B extends ye{constructor(e,r){super(s=>{let a=this[n].observe;new E(e.interceptors||[],this[f]).handle(this[n]).subscribe({next(c){if(a===y.Events){s.next(c);return}if(a===y.ResponseHeader&&c.type===i.ResponseHeader){s.next(c.response),s.complete();return}if(c.type===i.Response){let{response:h}=c;if(a===y.Response){s.next(h),s.complete();return}let w=oe.is(c.response.contentType||"",["application/opra+json"]);if(h.status>=400&&h.status<600){s.error(new S({message:h.status+" "+h.statusText,status:h.status,issues:w?h.body.errors:void 0})),s.complete();return}s.next(c.response.body),s.complete()}},error(c){s.error(c)},complete(){s.complete()}})}),Object.defineProperty(this,f,{enumerable:!1,value:e});let t=new xe(r==null?void 0:r.url,e.serviceUrl.toString());Object.defineProperty(this,n,{enumerable:!1,value:k(x({},r),{observe:y.Body,headers:new Headers(r==null?void 0:r.headers),url:t})})}clone(){return new B(this[f],this[n])}options(e){return Object.assign(this[n],e),this}header(e,r){let t=this[n].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((a,c)=>{c.toLowerCase()==="set-cookie"?t.append(c,a):t.set(c,a)}),this):(r==null||r===""?t.delete(e):t.append(e,String(r)),this)}param(e,r){let t=this[n].url.searchParams;return typeof e=="object"?((e instanceof URLSearchParams?e:new URLSearchParams(e)).forEach((a,c)=>t.set(c,a)),this):(r==null?t.delete(e):t.set(e,String(r)),this)}observe(e){if(e===this[n].observe)return this;let r=this.clone();return r[n].observe=e||y.Body,r}getBody(){return ee(this.observe(y.Body))}getResponse(){return ee(this.observe(y.Response))}};d(B,"HttpRequestObservable");var m=B;var N=class N{constructor(e,r){this._backend=e,this._path=r}create(e,r){let t=new m(this._backend,{method:"POST",url:this._path,body:e});return r!=null&&r.include&&t.param("include",u(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",u(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",u(r.omit,[]).join(",")),t}delete(e){if(e==null||e==="")throw new TypeError("'id' argument must have a value");let r=new K;return r.join({resource:this._path,key:e}),new m(this._backend,{method:"DELETE",url:r})}deleteMany(e){let r=new m(this._backend,{method:"DELETE",url:this._path});return e!=null&&e.filter&&r.param("filter",String(e.filter)),r}get(e,r){if(e==null||e==="")throw new TypeError("'id' argument must have a value");let t=new K;t.join({resource:this._path,key:e});let s=new m(this._backend,{method:"GET",url:t});return r!=null&&r.include&&s.param("include",u(r.include,[]).join(",")),r!=null&&r.pick&&s.param("pick",u(r.pick,[]).join(",")),r!=null&&r.omit&&s.param("omit",u(r.omit,[]).join(",")),s}findMany(e){let r=new m(this._backend,{method:"GET",url:this._path});return e!=null&&e.include&&r.param("include",u(e.include,[]).join(",")),e!=null&&e.pick&&r.param("pick",u(e.pick,[]).join(",")),e!=null&&e.omit&&r.param("omit",u(e.omit,[]).join(",")),e!=null&&e.sort&&r.param("sort",u(e.sort,[]).join(",")),e!=null&&e.filter&&r.param("filter",String(e.filter)),(e==null?void 0:e.limit)!=null&&r.param("limit",String(e.limit)),(e==null?void 0:e.skip)!=null&&r.param("skip",String(e.skip)),(e==null?void 0:e.count)!=null&&r.param("count",String(e.count)),(e==null?void 0:e.distinct)!=null&&r.param("distinct",String(e.distinct)),r}update(e,r,t){if(e==null)throw new TypeError("'id' argument must have a value");let s=new K;s.join({resource:this._path,key:e});let a=new m(this._backend,{method:"PATCH",url:s,body:r});return t!=null&&t.include&&a.param("include",u(t.include,[]).join(",")),t!=null&&t.pick&&a.param("pick",u(t.pick,[]).join(",")),t!=null&&t.omit&&a.param("omit",u(t.omit,[]).join(",")),a}updateMany(e,r){let t=new m(this._backend,{method:"PATCH",url:this._path,body:e});return r!=null&&r.filter&&t.param("filter",String(r.filter)),t}};d(N,"HttpCollectionNode");var L=N;import{toArrayDef as o}from"putil-varhelpers";var V=class V{constructor(e,r){this._backend=e,this._path=r}create(e,r){let t=new m(this._backend,{method:"POST",url:this._path,body:e});return r!=null&&r.include&&t.param("include",o(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",o(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",o(r.omit,[]).join(",")),t}delete(){return new m(this._backend,{method:"DELETE",url:this._path})}get(e){let r=new m(this._backend,{method:"GET",url:this._path});return e!=null&&e.include&&r.param("include",o(e.include,[]).join(",")),e!=null&&e.pick&&r.param("pick",o(e.pick,[]).join(",")),e!=null&&e.omit&&r.param("omit",o(e.omit,[]).join(",")),r}update(e,r){let t=new m(this._backend,{method:"PATCH",url:this._path,body:e});return r!=null&&r.include&&t.param("include",o(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",o(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",o(r.omit,[]).join(",")),t}};d(V,"HttpSingletonNode");var U=V;var Q=class Q extends j{constructor(e){super(e),this._collectionCache=new re,this._singletonCache=new re}get serviceUrl(){return this[f].serviceUrl}async getMetadata(){let e=this._metadataPromise;if(e)return e;let r=new m(this[f],{method:"GET",url:"/",headers:new Headers({accept:"application/json"})});return this._metadataPromise=e=r.getBody(),await e.then(async t=>{if(!t)throw new Error("No response returned.");let s=await we.createDocument(t);return this[f].api=s,s}).catch(t=>{throw t.message="Unable to fetch metadata from service url ("+this.serviceUrl+"). "+t.message,t}).finally(()=>delete this._metadataPromise)}collection(e){let r=this._collectionCache.get(e);return r||(r=new L(this[f],e),this._collectionCache.set(e,r)),r}singleton(e){let r=this._singletonCache.get(e);return r||(r=new U(this[f],e),this._singletonCache.set(e,r)),r}action(e,r){let t=new m(this[f],{method:"GET",url:e});return r&&(Object.keys(r).forEach(s=>r[s]=String(r[s])),t.param(r)),t}};d(Q,"HttpClientBase");var _=Q;var W=class W extends _{constructor(e,r){super(new P(e,r))}get defaults(){return this[f].defaults}};d(W,"OpraHttpClient");var te=W;export{p as Backend,j as ClientBase,S as ClientError,P as FetchBackend,R as HttpBackend,_ as HttpClientBase,L as HttpCollectionNode,i as HttpEventType,y as HttpObserveType,m as HttpRequestObservable,v as HttpResponse,U as HttpSingletonNode,te as OpraHttpClient,f as kBackend,he as kClient,n as kContext};
6
+ var $=Object.defineProperty,se=Object.defineProperties;var ce=Object.getOwnPropertyDescriptors;var Y=Object.getOwnPropertySymbols;var le=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable;var Z=(l,e,r)=>e in l?$(l,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):l[e]=r,x=(l,e)=>{for(var r in e||(e={}))le.call(e,r)&&Z(l,r,e[r]);if(Y)for(var r of Y(e))de.call(e,r)&&Z(l,r,e[r]);return l},k=(l,e)=>se(l,ce(e)),d=(l,e)=>$(l,"name",{value:e,configurable:!0});var A=class A{constructor(e){this.api=e==null?void 0:e.api}};d(A,"Backend");var p=A;var he=Symbol.for("kClient"),f=Symbol.for("kBackend"),n=Symbol.for("kContext");var G=class G{constructor(e){Object.defineProperty(this,f,{enumerable:!1,value:e})}};d(G,"ClientBase");var j=G;var M=class M extends Error{constructor(e,r){super(e.message),this.cause=r,this.issues=e.issues||[],this.status=e.status,r&&(this.cause=r,r.stack&&(this.stack=r.stack))}};d(M,"ClientError");var S=M;import{Observable as me}from"rxjs";import{isReadableStreamLike as fe}from"rxjs/internal/util/isReadableStreamLike";import I from"@browsery/type-is";import{isBlob as ue,OpraURL as ne}from"@opra/common";var z=class z extends p{constructor(e,r){super(r),this.serviceUrl=e}};d(z,"HttpBackend");var R=z;var v=class v{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 v(x(x({},this),e))}};d(v,"HttpResponse");var T=v;var i;(function(l){l.Sent="Sent",l.UploadProgress="UploadProgress",l.ResponseHeader="ResponseHeader",l.DownloadProgress="DownloadProgress",l.Response="Response",l.User="User"})(i||(i={}));var F=class F extends R{constructor(e,r){var t,s,a,c,h,g;super(e,r),this.interceptors=Array.from(new Set([...(r==null?void 0:r.interceptors)||[]])),this.defaults=k(x({},r==null?void 0:r.defaults),{headers:((t=r==null?void 0:r.defaults)==null?void 0:t.headers)instanceof Headers?(s=r==null?void 0:r.defaults)==null?void 0:s.headers:new Headers((a=r==null?void 0:r.defaults)==null?void 0:a.headers),params:((c=r==null?void 0:r.defaults)==null?void 0:c.params)instanceof URLSearchParams?(h=r==null?void 0:r.defaults)==null?void 0:h.params:new URLSearchParams((g=r==null?void 0:r.defaults)==null?void 0:g.params)})}handle(e){return new me(r=>{(async()=>{let t=this.prepareRequest(e);if(t.body&&e.reportProgress){let C=t.body,O=t.headers.get("content-length")||"0",D=parseInt(O,10)||0,w=0,q=new TransformStream({transform(b,H){H.enqueue(b),w+=b.byteLength,r.next({type:i.UploadProgress,request:t,total:D,loaded:w})}});t=new Request(t.url,{cache:t.cache,credentials:t.credentials,headers:t.headers,integrity:t.integrity,keepalive:t.keepalive,method:t.method,mode:t.mode,redirect:t.redirect,referrer:t.referrer,referrerPolicy:t.referrerPolicy,signal:t.signal,body:C.pipeThrough(q),window:e.window,duplex:"half"})}let s=this.send(t);r.next({request:t,type:i.Sent});let a=await s,c=this.createResponse({url:a.url,headers:a.headers,status:a.status,statusText:a.statusText,hasBody:!!a.body});r.next({request:t,type:i.ResponseHeader,response:c});let h;if(a.body)if(e.reportProgress){let C=a.body,O=a.headers.get("content-length")||"0",D=parseInt(O,10)||0,w=0,q=new Response(new ReadableStream({async start(b){let H=C.getReader();for(;;){let{done:ae,value:X}=await H.read();if(ae)break;w+=X.byteLength,b.enqueue(X),r.next({type:i.DownloadProgress,request:t,total:D,loaded:w})}b.close()}}));h=await this.parseBody(q)}else h=await this.parseBody(a);let g=this.createResponse({url:a.url,headers:a.headers,status:a.status,statusText:a.statusText,body:h});r.next({request:t,type:i.Response,response:g}),r.complete()})().catch(t=>r.error(t))})}send(e){return fetch(e)}prepareRequest(e){let r=e.headers||new Headers,t=k(x({},e),{headers:r});this.defaults.headers.forEach((c,h)=>{r.has(h)||r.set(h,c)});let s=new ne(t.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((c,h)=>{s.searchParams.has(h)||s.searchParams.set(h,c)}),t.url=s.toString());let a=t.body;if(a){let c;typeof a=="string"||typeof a=="number"||typeof a=="boolean"?(c='text/plain; charset="UTF-8"',t.body=new Blob([String(a)],{type:c}),r.set("Content-Length",String(t.body.size)),delete t.duplex):fe(a)?(c="application/octet-stream",t.duplex="half"):Buffer.isBuffer(a)?(c="application/octet-stream",r.set("Content-Length",String(a.length)),delete t.duplex):ue(a)?(c=a.type||"application/octet-stream",r.set("Content-Length",String(a.size)),delete t.duplex):(c='application/json;charset="UTF-8"',t.body=new Blob([JSON.stringify(a)],{type:c}),r.set("Content-Length",String(t.body.size)),delete t.duplex),c&&!r.has("Content-Type")&&r.set("Content-Type",c)}return new Request(s.toString(),t)}createResponse(e){return new T(e)}async parseBody(e){let r,t=e.headers.get("Content-Type")||"";if(I.is(t,["json","application/*+json"]))r=await e.json(),typeof r=="string"&&(r=JSON.parse(r));else if(I.is(t,["text"]))r=await e.text();else if(I.is(t,["multipart"]))r=await e.formData();else{let s=await e.arrayBuffer();s.byteLength&&(r=s)}return r}};d(F,"FetchBackend");var P=F;import{ApiDocumentFactory as ge,ResponsiveMap as re}from"@opra/common";import{toArrayDef as u}from"putil-varhelpers";import{OpraURL as K}from"@opra/common";import{lastValueFrom as ee,Observable as ye}from"rxjs";import oe from"@browsery/type-is";import{OpraURL as xe}from"@opra/common";var y;(function(l){l.ResponseHeader="response-header",l.Response="response",l.Body="body",l.Events="events"})(y||(y={}));var J=class J{constructor(e,r){this.chain=e.reduceRight((t,s)=>(a,c)=>s.intercept(a,{handle:h=>t(h,c)}),ie),this.finalHandler=r}handle(e){return this.chain(e,r=>this.finalHandler.handle(r))}};d(J,"HttpInterceptorHandler");var E=J;function ie(l,e){return e(l)}d(ie,"chainEnd");var _=class _ extends ye{constructor(e,r){super(s=>{let a=this[n].observe;new E(e.interceptors||[],this[f]).handle(this[n]).subscribe({next(c){if(a===y.Events){s.next(c);return}if(a===y.ResponseHeader&&c.type===i.ResponseHeader){s.next(c.response),s.complete();return}if(c.type===i.Response){let{response:h}=c;if(a===y.Response){s.next(h),s.complete();return}let g=oe.is(c.response.contentType||"",["application/opra+json"]);if(h.status>=400&&h.status<600){s.error(new S({message:h.status+" "+h.statusText,status:h.status,issues:g?h.body.errors:void 0})),s.complete();return}s.next(c.response.body),s.complete()}},error(c){s.error(c)},complete(){s.complete()}})}),Object.defineProperty(this,f,{enumerable:!1,value:e});let t=new xe(r==null?void 0:r.url,e.serviceUrl.toString());Object.defineProperty(this,n,{enumerable:!1,value:k(x({},r),{observe:y.Body,headers:new Headers(r==null?void 0:r.headers),url:t})})}clone(){return new _(this[f],this[n])}options(e){return Object.assign(this[n],e),this}header(e,r){let t=this[n].headers;return typeof e=="object"?((e instanceof Headers?e:new Headers(e)).forEach((a,c)=>{c.toLowerCase()==="set-cookie"?t.append(c,a):t.set(c,a)}),this):(r==null||r===""?t.delete(e):t.append(e,String(r)),this)}param(e,r){let t=this[n].url.searchParams;return typeof e=="object"?((e instanceof URLSearchParams?e:new URLSearchParams(e)).forEach((a,c)=>t.set(c,a)),this):(r==null?t.delete(e):t.set(e,String(r)),this)}observe(e){if(e===this[n].observe)return this;let r=this.clone();return r[n].observe=e||y.Body,r}getBody(){return ee(this.observe(y.Body))}getResponse(){return ee(this.observe(y.Response))}};d(_,"HttpRequestObservable");var m=_;var V=class V{constructor(e,r){this._backend=e,this._path=r}create(e,r){let t=new m(this._backend,{method:"POST",url:this._path,body:e});return r!=null&&r.include&&t.param("include",u(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",u(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",u(r.omit,[]).join(",")),t}delete(e){if(e==null||e==="")throw new TypeError("'id' argument must have a value");let r=new K;return r.join({resource:this._path,key:e}),new m(this._backend,{method:"DELETE",url:r})}deleteMany(e){let r=new m(this._backend,{method:"DELETE",url:this._path});return e!=null&&e.filter&&r.param("filter",String(e.filter)),r}get(e,r){if(e==null||e==="")throw new TypeError("'id' argument must have a value");let t=new K;t.join({resource:this._path,key:e});let s=new m(this._backend,{method:"GET",url:t});return r!=null&&r.include&&s.param("include",u(r.include,[]).join(",")),r!=null&&r.pick&&s.param("pick",u(r.pick,[]).join(",")),r!=null&&r.omit&&s.param("omit",u(r.omit,[]).join(",")),s}findMany(e){let r=new m(this._backend,{method:"GET",url:this._path});return e!=null&&e.include&&r.param("include",u(e.include,[]).join(",")),e!=null&&e.pick&&r.param("pick",u(e.pick,[]).join(",")),e!=null&&e.omit&&r.param("omit",u(e.omit,[]).join(",")),e!=null&&e.sort&&r.param("sort",u(e.sort,[]).join(",")),e!=null&&e.filter&&r.param("filter",String(e.filter)),(e==null?void 0:e.limit)!=null&&r.param("limit",String(e.limit)),(e==null?void 0:e.skip)!=null&&r.param("skip",String(e.skip)),(e==null?void 0:e.count)!=null&&r.param("count",String(e.count)),(e==null?void 0:e.distinct)!=null&&r.param("distinct",String(e.distinct)),r}update(e,r,t){if(e==null)throw new TypeError("'id' argument must have a value");let s=new K;s.join({resource:this._path,key:e});let a=new m(this._backend,{method:"PATCH",url:s,body:r});return t!=null&&t.include&&a.param("include",u(t.include,[]).join(",")),t!=null&&t.pick&&a.param("pick",u(t.pick,[]).join(",")),t!=null&&t.omit&&a.param("omit",u(t.omit,[]).join(",")),a}updateMany(e,r){let t=new m(this._backend,{method:"PATCH",url:this._path,body:e});return r!=null&&r.filter&&t.param("filter",String(r.filter)),t}};d(V,"HttpCollectionNode");var B=V;import{toArrayDef as o}from"putil-varhelpers";var N=class N{constructor(e,r){this._backend=e,this._path=r}create(e,r){let t=new m(this._backend,{method:"POST",url:this._path,body:e});return r!=null&&r.include&&t.param("include",o(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",o(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",o(r.omit,[]).join(",")),t}delete(){return new m(this._backend,{method:"DELETE",url:this._path})}get(e){let r=new m(this._backend,{method:"GET",url:this._path});return e!=null&&e.include&&r.param("include",o(e.include,[]).join(",")),e!=null&&e.pick&&r.param("pick",o(e.pick,[]).join(",")),e!=null&&e.omit&&r.param("omit",o(e.omit,[]).join(",")),r}update(e,r){let t=new m(this._backend,{method:"PATCH",url:this._path,body:e});return r!=null&&r.include&&t.param("include",o(r.include,[]).join(",")),r!=null&&r.pick&&t.param("pick",o(r.pick,[]).join(",")),r!=null&&r.omit&&t.param("omit",o(r.omit,[]).join(",")),t}};d(N,"HttpSingletonNode");var L=N;var Q=class Q extends j{constructor(e){super(e),this._collectionCache=new re,this._singletonCache=new re}get serviceUrl(){return this[f].serviceUrl}async getMetadata(){if(this._metadataPromise)return this._metadataPromise;let e=new m(this[f],{method:"GET",url:"/",headers:new Headers({accept:"application/json"})}),r;try{this._metadataPromise=e.getBody(),r=await this._metadataPromise}catch(t){throw t.message="Error fetching metadata from url ("+this.serviceUrl+`).
7
+ `+t.message,t}finally{this._metadataPromise=void 0}try{let t=await ge.createDocument(r);return this[f].api=t,t}catch(t){throw t.message=`Error loading api document.
8
+ `+t.message,t}}collection(e){let r=this._collectionCache.get(e);return r||(r=new B(this[f],e),this._collectionCache.set(e,r)),r}singleton(e){let r=this._singletonCache.get(e);return r||(r=new L(this[f],e),this._singletonCache.set(e,r)),r}action(e,r){let t=new m(this[f],{method:"GET",url:e});return r&&(Object.keys(r).forEach(s=>r[s]=String(r[s])),t.param(r)),t}};d(Q,"HttpClientBase");var U=Q;var W=class W extends U{constructor(e,r){super(new P(e,r))}get defaults(){return this[f].defaults}};d(W,"OpraHttpClient");var te=W;export{p as Backend,j as ClientBase,S as ClientError,P as FetchBackend,R as HttpBackend,U as HttpClientBase,B as HttpCollectionNode,i as HttpEventType,y as HttpObserveType,m as HttpRequestObservable,T as HttpResponse,L as HttpSingletonNode,te as OpraHttpClient,f as kBackend,he as kClient,n as kContext};
@@ -22,28 +22,34 @@ class HttpClientBase extends client_base_js_1.ClientBase {
22
22
  return this[constants_js_1.kBackend].serviceUrl;
23
23
  }
24
24
  async getMetadata() {
25
- let promise = this._metadataPromise;
26
- if (promise)
27
- return promise;
25
+ if (this._metadataPromise)
26
+ return this._metadataPromise;
28
27
  const request = new http_request_observable_js_1.HttpRequestObservable(this[constants_js_1.kBackend], {
29
28
  method: 'GET',
30
29
  url: '/',
31
30
  headers: new Headers({ 'accept': 'application/json' })
32
31
  });
33
- this._metadataPromise = promise = request.getBody();
34
- return await promise
35
- .then(async (body) => {
36
- if (!body)
37
- throw new Error(`No response returned.`);
32
+ let body;
33
+ try {
34
+ this._metadataPromise = request.getBody();
35
+ body = await this._metadataPromise;
36
+ }
37
+ catch (e) {
38
+ e.message = 'Error fetching metadata from url (' + this.serviceUrl + ').\n' + e.message;
39
+ throw e;
40
+ }
41
+ finally {
42
+ this._metadataPromise = undefined;
43
+ }
44
+ try {
38
45
  const api = await common_1.ApiDocumentFactory.createDocument(body);
39
46
  this[constants_js_1.kBackend].api = api;
40
47
  return api;
41
- })
42
- .catch((e) => {
43
- e.message = 'Unable to fetch metadata from service url (' + this.serviceUrl + '). ' + e.message;
48
+ }
49
+ catch (e) {
50
+ e.message = 'Error loading api document.\n' + e.message;
44
51
  throw e;
45
- })
46
- .finally(() => delete this._metadataPromise);
52
+ }
47
53
  }
48
54
  collection(path) {
49
55
  let node = this._collectionCache.get(path);
@@ -19,28 +19,34 @@ export class HttpClientBase extends ClientBase {
19
19
  return this[kBackend].serviceUrl;
20
20
  }
21
21
  async getMetadata() {
22
- let promise = this._metadataPromise;
23
- if (promise)
24
- return promise;
22
+ if (this._metadataPromise)
23
+ return this._metadataPromise;
25
24
  const request = new HttpRequestObservable(this[kBackend], {
26
25
  method: 'GET',
27
26
  url: '/',
28
27
  headers: new Headers({ 'accept': 'application/json' })
29
28
  });
30
- this._metadataPromise = promise = request.getBody();
31
- return await promise
32
- .then(async (body) => {
33
- if (!body)
34
- throw new Error(`No response returned.`);
29
+ let body;
30
+ try {
31
+ this._metadataPromise = request.getBody();
32
+ body = await this._metadataPromise;
33
+ }
34
+ catch (e) {
35
+ e.message = 'Error fetching metadata from url (' + this.serviceUrl + ').\n' + e.message;
36
+ throw e;
37
+ }
38
+ finally {
39
+ this._metadataPromise = undefined;
40
+ }
41
+ try {
35
42
  const api = await ApiDocumentFactory.createDocument(body);
36
43
  this[kBackend].api = api;
37
44
  return api;
38
- })
39
- .catch((e) => {
40
- e.message = 'Unable to fetch metadata from service url (' + this.serviceUrl + '). ' + e.message;
45
+ }
46
+ catch (e) {
47
+ e.message = 'Error loading api document.\n' + e.message;
41
48
  throw e;
42
- })
43
- .finally(() => delete this._metadataPromise);
49
+ }
44
50
  }
45
51
  collection(path) {
46
52
  let node = this._collectionCache.get(path);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/client",
3
- "version": "0.31.4",
3
+ "version": "0.31.6",
4
4
  "description": "Opra Client package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -21,8 +21,9 @@
21
21
  "check": "madge --circular src/**",
22
22
  "test": "jest",
23
23
  "cover": "jest --collect-coverage",
24
- "clean": "npm run clean:src && npm run clean:dist && npm run clean:cover",
24
+ "clean": "npm run clean:src && npm run clean:test && npm run clean:dist && npm run clean:cover",
25
25
  "clean:src": "ts-cleanup -s src --all",
26
+ "clean:test": "ts-cleanup -s test --all",
26
27
  "clean:dist": "rimraf ../../build/client",
27
28
  "clean:cover": "rimraf ../../coverage/client"
28
29
  },
@@ -39,7 +40,7 @@
39
40
  "@browsery/stream": "^0.6.0",
40
41
  "@browsery/type-is": "^0.6.3",
41
42
  "@browsery/util": "^0.4.0",
42
- "@opra/common": "^0.31.4",
43
+ "@opra/common": "^0.31.6",
43
44
  "accepts": "^1.3.8",
44
45
  "buffer": "^6.0.3",
45
46
  "cookie": "^0.6.0",