@opra/client 0.33.13 → 1.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/browser.js +3 -3
  2. package/cjs/core/backend.js +1 -1
  3. package/cjs/http/fetch-backend.js +17 -15
  4. package/cjs/http/http-backend.js +4 -1
  5. package/cjs/http/http-client-base.js +71 -66
  6. package/cjs/http/http-interceptor-handler.js +2 -2
  7. package/cjs/http/http-request-observable.js +15 -19
  8. package/cjs/http/http-response.js +2 -2
  9. package/cjs/http/http-utils.js +12 -0
  10. package/cjs/index.js +7 -11
  11. package/esm/core/backend.js +1 -1
  12. package/esm/http/fetch-backend.js +18 -16
  13. package/esm/http/http-backend.js +4 -1
  14. package/esm/http/http-client-base.js +72 -67
  15. package/esm/http/http-interceptor-handler.js +2 -2
  16. package/esm/http/http-request-observable.js +16 -20
  17. package/esm/http/http-response.js +2 -2
  18. package/esm/http/http-utils.js +8 -0
  19. package/esm/index.js +3 -7
  20. package/package.json +21 -14
  21. package/types/core/backend.d.ts +3 -3
  22. package/types/http/http-backend.d.ts +1 -2
  23. package/types/http/http-client-base.d.ts +25 -25
  24. package/types/http/http-request-observable.d.ts +3 -4
  25. package/types/http/http-response.d.ts +1 -0
  26. package/types/http/http-utils.d.ts +1 -0
  27. package/types/index.d.ts +3 -7
  28. package/cjs/core/client-base.js +0 -18
  29. package/cjs/http/http-collection-node.js +0 -119
  30. package/cjs/http/http-singleton-node.js +0 -62
  31. package/cjs/http/http-storage-node.js +0 -55
  32. package/cjs/types.js +0 -3
  33. package/esm/core/client-base.js +0 -14
  34. package/esm/http/http-collection-node.js +0 -115
  35. package/esm/http/http-singleton-node.js +0 -58
  36. package/esm/http/http-storage-node.js +0 -51
  37. package/esm/types.js +0 -2
  38. package/types/core/client-base.d.ts +0 -21
  39. package/types/http/http-collection-node.d.ts +0 -55
  40. package/types/http/http-singleton-node.d.ts +0 -35
  41. package/types/http/http-storage-node.d.ts +0 -14
  42. package/types/types.d.ts +0 -1
package/browser.js CHANGED
@@ -3,6 +3,6 @@
3
3
  * http://www.panates.com
4
4
  *****************************************/
5
5
 
6
- var ae=Object.defineProperty,de=Object.defineProperties;var he=Object.getOwnPropertyDescriptors;var re=Object.getOwnPropertySymbols;var me=Object.prototype.hasOwnProperty,fe=Object.prototype.propertyIsEnumerable;var te=(d,r,e)=>r in d?ae(d,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[r]=e,g=(d,r)=>{for(var e in r||(r={}))me.call(r,e)&&te(d,e,r[e]);if(re)for(var e of re(r))fe.call(r,e)&&te(d,e,r[e]);return d},k=(d,r)=>de(d,he(r)),l=(d,r)=>ae(d,"name",{value:r,configurable:!0});var G=class G{constructor(r){this.api=r==null?void 0:r.api}};l(G,"Backend");var p=G;var ne=Symbol.for("kClient"),f=Symbol.for("kBackend"),u=Symbol.for("kContext");var M=class M{constructor(r){Object.defineProperty(this,f,{enumerable:!1,value:r})}};l(M,"ClientBase");var j=M;var z=class z extends Error{constructor(r,e){super(r.message),this.cause=e,this.issues=r.issues||[],this.status=r.status,e&&(this.cause=e,e.stack&&(this.stack=e.stack))}};l(z,"ClientError");var S=z;import{Observable as ue}from"rxjs";import{isReadableStreamLike as ie}from"rxjs/internal/util/isReadableStreamLike";import I from"@browsery/type-is";import{isBlob as oe,isFormData as ye,OpraURL as ge}from"@opra/common";var F=class F extends p{constructor(r,e){super(e),this.serviceUrl=r}};l(F,"HttpBackend");var _=F;var T=class T{constructor(r){this.hasBody=!1,this.headers=(r==null?void 0:r.headers)instanceof Headers?r==null?void 0:r.headers:new Headers(r==null?void 0:r.headers),this.status=(r==null?void 0:r.status)||200,this.statusText=(r==null?void 0:r.statusText)||"OK",this.url=(r==null?void 0:r.url)||null,this.ok=this.status>=200&&this.status<300,this.body=r==null?void 0:r.body,this.hasBody=(r==null?void 0:r.body)!=null||!!(r!=null&&r.hasBody),this.contentType=(this.headers.get("content-type")||"").split(";")[0]}clone(r){return new T(g(g({},this),r))}};l(T,"HttpResponse");var R=T;var i;(function(d){d.Sent="Sent",d.UploadProgress="UploadProgress",d.ResponseHeader="ResponseHeader",d.DownloadProgress="DownloadProgress",d.Response="Response",d.User="User"})(i||(i={}));var J=class J extends _{constructor(r,e){var t,s,a,c,h,w;super(r,e),this.interceptors=Array.from(new Set([...(e==null?void 0:e.interceptors)||[]])),this.defaults=k(g({},e==null?void 0:e.defaults),{headers:((t=e==null?void 0:e.defaults)==null?void 0:t.headers)instanceof Headers?(s=e==null?void 0:e.defaults)==null?void 0:s.headers:new Headers((a=e==null?void 0:e.defaults)==null?void 0:a.headers),params:((c=e==null?void 0:e.defaults)==null?void 0:c.params)instanceof URLSearchParams?(h=e==null?void 0:e.defaults)==null?void 0:h.params:new URLSearchParams((w=e==null?void 0:e.defaults)==null?void 0:w.params)})}handle(r){return new ue(e=>{(async()=>{let t=this.prepareRequest(r);if(t.body&&r.reportProgress){let O=t.body,D=t.headers.get("content-length")||"0",q=parseInt(D,10)||0,x=0,H=new TransformStream({transform(b,A){A.enqueue(b),x+=b.byteLength,e.next({type:i.UploadProgress,request:t,total:q,loaded:x})}});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:O.pipeThrough(H),window:r.window,duplex:"half"})}let s=this.send(t);e.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});e.next({request:t,type:i.ResponseHeader,response:c});let h;if(a.body)if(r.reportProgress){let O=a.body,D=a.headers.get("content-length")||"0",q=parseInt(D,10)||0,x=0,H=new Response(new ReadableStream({async start(b){let A=O.getReader();for(;;){let{done:le,value:ee}=await A.read();if(le)break;x+=ee.byteLength,b.enqueue(ee),e.next({type:i.DownloadProgress,request:t,total:q,loaded:x})}b.close()}}));h=await this.parseBody(H)}else h=await this.parseBody(a);let w=this.createResponse({url:a.url,headers:a.headers,status:a.status,statusText:a.statusText,body:h});e.next({request:t,type:i.Response,response:w}),e.complete()})().catch(t=>e.error(t))})}send(r){return fetch(r)}prepareRequest(r){let e=r.headers||new Headers,t=k(g({},r),{headers:e});this.defaults.headers.forEach((c,h)=>{e.has(h)||e.set(h,c)});let s=new ge(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}),e.set("Content-Length",String(t.body.size)),delete t.duplex):ie(a)?(c="application/octet-stream",t.duplex="half"):Buffer.isBuffer(a)?(c="application/octet-stream",e.set("Content-Length",String(a.length)),delete t.duplex):oe(a)?(c=a.type||"application/octet-stream",e.set("Content-Length",String(a.size)),delete t.duplex):(ye(a)||(c='application/json;charset="UTF-8"',t.body=new Blob([JSON.stringify(a)],{type:c}),e.set("Content-Length",String(t.body.size))),delete t.duplex),c&&!e.has("Content-Type")&&e.set("Content-Type",c)}return new Request(s.toString(),t)}createResponse(r){return new R(r)}async parseBody(r){let e,t=r.headers.get("Content-Type")||"";if(I.is(t,["json","application/*+json"]))e=await r.json(),typeof e=="string"&&(e=JSON.parse(e));else if(I.is(t,["text"]))e=await r.text();else if(I.is(t,["multipart"]))e=await r.formData();else{let s=await r.arrayBuffer();s.byteLength&&(e=s)}return e}};l(J,"FetchBackend");var P=J;import{ApiDocumentFactory as pe,ResponsiveMap as Y}from"@opra/common";import{toArrayDef as n}from"putil-varhelpers";import{OpraURL as V}from"@opra/common";import{lastValueFrom as se,Observable as xe}from"rxjs";import be from"@browsery/type-is";import{OpraURL as ke}from"@opra/common";var o;(function(d){d.ResponseHeader="response-header",d.Response="response",d.Body="body",d.Events="events"})(o||(o={}));var K=class K{constructor(r,e){this.chain=r.reduceRight((t,s)=>(a,c)=>s.intercept(a,{handle:h=>t(h,c)}),we),this.finalHandler=e}handle(r){return this.chain(r,e=>this.finalHandler.handle(e))}};l(K,"HttpInterceptorHandler");var E=K;function we(d,r){return r(d)}l(we,"chainEnd");var v=class v extends xe{constructor(r,e){super(s=>{let a=this[u].observe;new E(r.interceptors||[],this[f]).handle(this[u]).subscribe({next(c){if(a===o.Events){s.next(c);return}if(a===o.ResponseHeader&&c.type===i.ResponseHeader){s.next(c.response),s.complete();return}if(c.type===i.Response){let{response:h}=c;if(a===o.Response){s.next(h),s.complete();return}let w=be.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:r});let t=new ke(e==null?void 0:e.url);Object.defineProperty(this,u,{enumerable:!1,value:k(g({},e),{observe:o.Body,headers:new Headers(e==null?void 0:e.headers),url:t})})}clone(){return new v(this[f],this[u])}options(r){return Object.assign(this[u],r),this}header(r,e){let t=this[u].headers;return typeof r=="object"?((r instanceof Headers?r:new Headers(r)).forEach((a,c)=>{c.toLowerCase()==="set-cookie"?t.append(c,a):t.set(c,a)}),this):(e==null||e===""?t.delete(r):t.append(r,String(e)),this)}param(r,e){e&&typeof e=="object"&&(e=JSON.stringify(e));let t=this[u].url.searchParams;return typeof r=="object"?((r instanceof URLSearchParams?r:new URLSearchParams(r)).forEach((a,c)=>t.set(c,a)),this):(e==null?t.delete(r):t.set(r,String(e)),this)}observe(r){if(r===this[u].observe)return this;let e=this.clone();return e[u].observe=r||o.Body,e}getBody(){return se(this.observe(o.Body))}getResponse(){return se(this.observe(o.Response))}};l(v,"HttpRequestObservable");var m=v;var N=class N{constructor(r,e){this._backend=r,this._path=e}create(r,e){let t=new m(this._backend,{method:"POST",url:this._path,body:r});return e!=null&&e.include&&t.param("include",n(e.include,[]).join(",")),e!=null&&e.pick&&t.param("pick",n(e.pick,[]).join(",")),e!=null&&e.omit&&t.param("omit",n(e.omit,[]).join(",")),t}delete(r){if(r==null||r==="")throw new TypeError("'id' argument must have a value");let e=new V;return e.join({resource:this._path,key:r}),new m(this._backend,{method:"DELETE",url:e})}deleteMany(r){let e=new m(this._backend,{method:"DELETE",url:this._path});return r!=null&&r.filter&&e.param("filter",String(r.filter)),e}get(r,e){if(r==null||r==="")throw new TypeError("'id' argument must have a value");let t=new V;t.join({resource:this._path,key:r});let s=new m(this._backend,{method:"GET",url:t});return e!=null&&e.include&&s.param("include",n(e.include,[]).join(",")),e!=null&&e.pick&&s.param("pick",n(e.pick,[]).join(",")),e!=null&&e.omit&&s.param("omit",n(e.omit,[]).join(",")),s}findMany(r){let e=new m(this._backend,{method:"GET",url:this._path});return r!=null&&r.include&&e.param("include",n(r.include,[]).join(",")),r!=null&&r.pick&&e.param("pick",n(r.pick,[]).join(",")),r!=null&&r.omit&&e.param("omit",n(r.omit,[]).join(",")),r!=null&&r.sort&&e.param("sort",n(r.sort,[]).join(",")),r!=null&&r.filter&&e.param("filter",String(r.filter)),(r==null?void 0:r.limit)!=null&&e.param("limit",String(r.limit)),(r==null?void 0:r.skip)!=null&&e.param("skip",String(r.skip)),(r==null?void 0:r.count)!=null&&e.param("count",String(r.count)),(r==null?void 0:r.distinct)!=null&&e.param("distinct",String(r.distinct)),e}update(r,e,t){if(r==null)throw new TypeError("'id' argument must have a value");let s=new V;s.join({resource:this._path,key:r});let a=new m(this._backend,{method:"PATCH",url:s,body:e});return t!=null&&t.include&&a.param("include",n(t.include,[]).join(",")),t!=null&&t.pick&&a.param("pick",n(t.pick,[]).join(",")),t!=null&&t.omit&&a.param("omit",n(t.omit,[]).join(",")),a}updateMany(r,e){let t=new m(this._backend,{method:"PATCH",url:this._path,body:r});return e!=null&&e.filter&&t.param("filter",String(e.filter)),t}};l(N,"HttpCollectionNode");var L=N;import{toArrayDef as y}from"putil-varhelpers";var Q=class Q{constructor(r,e){this._backend=r,this._path=e}create(r,e){let t=new m(this._backend,{method:"POST",url:this._path,body:r});return e!=null&&e.include&&t.param("include",y(e.include,[]).join(",")),e!=null&&e.pick&&t.param("pick",y(e.pick,[]).join(",")),e!=null&&e.omit&&t.param("omit",y(e.omit,[]).join(",")),t}delete(){return new m(this._backend,{method:"DELETE",url:this._path})}get(r){let e=new m(this._backend,{method:"GET",url:this._path});return r!=null&&r.include&&e.param("include",y(r.include,[]).join(",")),r!=null&&r.pick&&e.param("pick",y(r.pick,[]).join(",")),r!=null&&r.omit&&e.param("omit",y(r.omit,[]).join(",")),e}update(r,e){let t=new m(this._backend,{method:"PATCH",url:this._path,body:r});return e!=null&&e.include&&t.param("include",y(e.include,[]).join(",")),e!=null&&e.pick&&t.param("pick",y(e.pick,[]).join(",")),e!=null&&e.omit&&t.param("omit",y(e.omit,[]).join(",")),t}};l(Q,"HttpSingletonNode");var B=Q;import{OpraURL as W}from"@opra/common";var X=class X{constructor(r,e){this._backend=r,this._path=e}delete(r){if(r){let e=new W(this._path);e.join(r),r=e.toString()}else r=this._path;return new m(this._backend,{method:"DELETE",url:r})}get(r){if(r){let e=new W(this._path);e.join(r),r=e.toString()}else r=this._path;return new m(this._backend,{method:"GET",url:r})}post(r,e){if(e){let t=new W(this._path);t.join(e),e=t.toString()}else e=this._path;return new m(this._backend,{method:"POST",url:e,body:r})}};l(X,"HttpStorageNode");var C=X;var Z=class Z extends j{constructor(r){super(r),this._collectionCache=new Y,this._singletonCache=new Y,this._storageCache=new Y}get serviceUrl(){return this[f].serviceUrl}async getMetadata(){if(this._metadataPromise)return this._metadataPromise;let r=new m(this[f],{method:"GET",url:"/",headers:new Headers({accept:"application/json"})}),e;try{this._metadataPromise=r.getBody(),e=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 pe.createDocument(e);return this[f].api=t,t}catch(t){throw t.message=`Error loading api document.
8
- `+t.message,t}}collection(r){let e=this._collectionCache.get(r);return e||(e=new L(this[f],r),this._collectionCache.set(r,e)),e}singleton(r){let e=this._singletonCache.get(r);return e||(e=new B(this[f],r),this._singletonCache.set(r,e)),e}storage(r){let e=this._storageCache.get(r);return e||(e=new C(this[f],r),this._storageCache.set(r,e)),e}action(r,e){let t=new m(this[f],{method:"GET",url:r});return e&&(Object.keys(e).forEach(s=>e[s]=String(e[s])),t.param(e)),t}};l(Z,"HttpClientBase");var U=Z;var $=class $ extends U{constructor(r,e){super(new P(r,e))}get defaults(){return this[f].defaults}};l($,"OpraHttpClient");var ce=$;export{p as Backend,j as ClientBase,S as ClientError,P as FetchBackend,_ as HttpBackend,U as HttpClientBase,L as HttpCollectionNode,i as HttpEventType,o as HttpObserveType,m as HttpRequestObservable,R as HttpResponse,B as HttpSingletonNode,C as HttpStorageNode,ce as OpraHttpClient,f as kBackend,ne as kClient,u as kContext};
6
+ var M=Object.defineProperty,$=Object.defineProperties;var Q=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var X=Object.prototype.hasOwnProperty,Y=Object.prototype.propertyIsEnumerable;var G=(o,e,t)=>e in o?M(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,h=(o,e)=>{for(var t in e||(e={}))X.call(e,t)&&G(o,t,e[t]);if(N)for(var t of N(e))Y.call(e,t)&&G(o,t,e[t]);return o},l=(o,e)=>$(o,Q(e)),d=(o,e)=>M(o,"name",{value:e,configurable:!0});var Z=Symbol.for("kClient"),f=Symbol.for("kBackend"),u=Symbol.for("kContext");var v=class v{constructor(e){this.document=e==null?void 0:e.document}};d(v,"Backend");var S=v;var D=class D 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(D,"ClientError");var R=D;var y;(function(o){o.ResponseHeader="response-header",o.Response="response",o.Body="body",o.Events="events"})(y||(y={}));import H from"@browsery/type-is";import{isBlob as _,isFormData as ee}from"@opra/common";import{Observable as te}from"rxjs";import{isReadableStreamLike as re}from"rxjs/internal/util/isReadableStreamLike";var O=class O 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(O,"HttpBackend");var P=O;var B=class B{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 B(h(h({},this),e))}};d(B,"HttpResponse");var T=B;var m;(function(o){o.Sent="Sent",o.UploadProgress="UploadProgress",o.ResponseHeader="ResponseHeader",o.DownloadProgress="DownloadProgress",o.Response="Response",o.User="User"})(m||(m={}));var I=class I extends P{constructor(e,t){var r,n,s,a,c,p;super(e,t),this.interceptors=Array.from(new Set([...(t==null?void 0:t.interceptors)||[]])),this.defaults=l(h({},t==null?void 0:t.defaults),{headers:((r=t==null?void 0:t.defaults)==null?void 0:r.headers)instanceof Headers?(n=t==null?void 0:t.defaults)==null?void 0:n.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?(c=t==null?void 0:t.defaults)==null?void 0:c.params:new URLSearchParams((p=t==null?void 0:t.defaults)==null?void 0:p.params)})}handle(e){return new te(t=>{(async()=>{let r=this.prepareRequest(e);if(r.body&&e.reportProgress){let x=r.body,i=r.headers.get("content-length")||"0",g=parseInt(i,10)||0,w=0,E=new TransformStream({transform(b,C){C.enqueue(b),w+=b.byteLength,t.next({type:m.UploadProgress,request:r,total:g,loaded:w})}});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:x.pipeThrough(E),window:e.window,duplex:"half"})}let n=this.send(r);t.next({request:r,type:m.Sent});let s=await n,a=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,hasBody:!!s.body});t.next({request:r,type:m.ResponseHeader,response:a});let c;if(s.body)if(e.reportProgress){let x=s.body,i=s.headers.get("content-length")||"0",g=parseInt(i,10)||0,w=0,E=new Response(new ReadableStream({async start(b){let C=x.getReader();for(;;){let{done:W,value:J}=await C.read();if(W)break;w+=J.byteLength,b.enqueue(J),t.next({type:m.DownloadProgress,request:r,total:g,loaded:w})}b.close()}}));c=await this.parseBody(E)}else c=await this.parseBody(s);let p=this.createResponse({url:s.url,headers:s.headers,status:s.status,statusText:s.statusText,body:c});t.next({request:r,type:m.Response,response:p}),t.complete()})().catch(r=>t.error(r))})}send(e){return fetch(e)}prepareRequest(e){let t=e.headers||new Headers,r=l(h({},e),{headers:t});this.defaults.headers.forEach((a,c)=>{t.has(c)||t.set(c,a)});let n=new URL(r.url,this.serviceUrl);this.defaults.params.size&&(this.defaults.params.forEach((a,c)=>{n.searchParams.has(c)||n.searchParams.set(c,a)}),r.url=n.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):re(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):_(s)?(a=s.type||"application/octet-stream",t.set("Content-Length",String(s.size)),delete r.duplex):(ee(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(n.toString(),r)}createResponse(e){return new T(e)}async parseBody(e){let t,r=e.headers.get("Content-Type")||"";if(H.is(r,["json","application/*+json"]))t=await e.json(),typeof t=="string"&&(t=JSON.parse(t));else if(H.is(r,["text"]))t=await e.text();else if(H.is(r,["multipart"]))t=await e.formData();else{let n=await e.arrayBuffer();n.byteLength&&(t=n)}return t}};d(I,"FetchBackend");var U=I;import{ApiDocumentFactory as de}from"@opra/common";import ae from"@browsery/type-is";import{MimeTypes as oe}from"@opra/common";import{lastValueFrom as K,Observable as ne}from"rxjs";var z=class z{constructor(e,t){this.chain=e.reduceRight((r,n)=>(s,a)=>n.intercept(s,{handle:d(c=>r(c,a),"handle")}),se),this.finalHandler=t}handle(e){return this.chain(e,t=>this.finalHandler.handle(t))}};d(z,"HttpInterceptorHandler");var k=z;function se(o,e){return e(o)}d(se,"chainEnd");var j=class j extends ne{constructor(e,t){super(r=>{let n=this[u].observe;new k(e.interceptors||[],this[f]).handle(this[u]).subscribe({next(s){if(n===y.Events){r.next(s);return}if(n===y.ResponseHeader&&s.type===m.ResponseHeader){r.next(s.response),r.complete();return}if(s.type===m.Response){let{response:a}=s;if(n===y.Response){r.next(a),r.complete();return}let c=ae.is(s.response.contentType||"",[oe.opra_response_json]);if(a.status>=400&&a.status<600){r.error(new R({message:a.status+" "+a.statusText,status:a.status,issues:c?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,f,{enumerable:!1,value:e}),Object.defineProperty(this,u,{enumerable:!1,value:l(h({},t),{observe:y.Body,headers:new Headers(t==null?void 0:t.headers)})})}clone(){return new j(this[f],this[u])}options(e){return Object.assign(this[u],e),this}header(e,t){let r=this[u].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[u].url.searchParams;return typeof e=="object"?(typeof e.forEach=="function"?e.forEach((n,s)=>r.set(String(s),String(n))):Object.entries(e).forEach(n=>r.set(String(n[0]),String(n[1]))),this):(t==null?r.delete(e):r.set(e,String(t)),this)}observe(e){if(e===this[u].observe)return this;let t=this.clone();return t[u].observe=e||y.Body,t}getBody(){return K(this.observe(y.Body))}getResponse(){return K(this.observe(y.Response))}};d(j,"HttpRequestObservable");var L=j;var F=class F{constructor(e){Object.defineProperty(this,f,{enumerable:!1,value:e})}get serviceUrl(){return this[f].serviceUrl}async fetchDocument(e){let t={},r=d(async s=>{let a=this.request("$schema",{headers:new Headers({accept:"application/json"})});s&&a.param("id",s);let c=await a.getBody().catch(p=>{throw p.message="Error fetching api schema from url ("+this.serviceUrl+`).
7
+ `+p.message,p});if(c.references){let p=c.references;c.references={};for(let[x,i]of Object.entries(p)){if(t[i.id]===null)throw new Error("Circular reference detected");t[i.id]=null;let g=await r(i.id);c.references[x]=t[i.id]=g}}return c},"getDocument"),n=await r(e==null?void 0:e.documentId);return await de.createDocument(n).catch(s=>{throw s.message=`Error loading api document.
8
+ `+s.message,s})}request(e,t){let r=new L(this[f],l(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,l(h({},t),{method:"DELETE"}))}get(e,t){return this.request(e,l(h({},t),{method:"GET"}))}patch(e,t,r){return this.request(e,l(h({},r),{method:"PATCH",body:t}))}post(e,t,r){return this.request(e,l(h({},r),{method:"POST",body:t}))}put(e,t,r){return this.request(e,l(h({},r),{method:"PUT",body:t}))}};d(F,"HttpClientBase");var q=F;var A=class A extends q{constructor(e,t){super(new U(e,t))}get defaults(){return this[f].defaults}};d(A,"OpraHttpClient");var V=A;function Ze(o,...e){let t="",r;for(r=0;r<o.length;r++)t+=o[0]+encodeURIComponent(e[r]);return t}d(Ze,"urlPath");export{S as Backend,R as ClientError,U as FetchBackend,P as HttpBackend,q as HttpClientBase,m as HttpEventType,y as HttpObserveType,L as HttpRequestObservable,T as HttpResponse,V as OpraHttpClient,f as kBackend,Z as kClient,u as kContext,Ze as urlPath};
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Backend = void 0;
4
4
  class Backend {
5
5
  constructor(options) {
6
- this.api = options?.api;
6
+ this.document = options?.document;
7
7
  }
8
8
  }
9
9
  exports.Backend = Backend;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FetchBackend = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  // /// <reference lib="dom" />
6
- const rxjs_1 = require("rxjs");
7
- const isReadableStreamLike_1 = require("rxjs/internal/util/isReadableStreamLike");
8
6
  const type_is_1 = tslib_1.__importDefault(require("@browsery/type-is"));
9
7
  const common_1 = require("@opra/common");
8
+ const rxjs_1 = require("rxjs");
9
+ const isReadableStreamLike_1 = require("rxjs/internal/util/isReadableStreamLike");
10
10
  const http_backend_js_1 = require("./http-backend.js");
11
11
  const http_response_js_1 = require("./http-response.js");
12
12
  const http_event_js_1 = require("./interfaces/http-event.js");
@@ -22,13 +22,15 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
22
22
  this.defaults = {
23
23
  ...options?.defaults,
24
24
  headers: options?.defaults?.headers instanceof Headers
25
- ? options?.defaults?.headers : new Headers(options?.defaults?.headers),
25
+ ? options?.defaults?.headers
26
+ : new Headers(options?.defaults?.headers),
26
27
  params: options?.defaults?.params instanceof URLSearchParams
27
- ? options?.defaults?.params : new URLSearchParams(options?.defaults?.params)
28
+ ? options?.defaults?.params
29
+ : new URLSearchParams(options?.defaults?.params),
28
30
  };
29
31
  }
30
32
  handle(init) {
31
- return new rxjs_1.Observable((subscriber) => {
33
+ return new rxjs_1.Observable(subscriber => {
32
34
  (async () => {
33
35
  let request = this.prepareRequest(init);
34
36
  if (request.body && init.reportProgress) {
@@ -45,9 +47,9 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
45
47
  type: http_event_js_1.HttpEventType.UploadProgress,
46
48
  request,
47
49
  total,
48
- loaded
50
+ loaded,
49
51
  });
50
- }
52
+ },
51
53
  });
52
54
  request = new Request(request.url, {
53
55
  cache: request.cache,
@@ -65,7 +67,7 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
65
67
  window: init.window,
66
68
  ...{
67
69
  // undici library requires
68
- duplex: 'half'
70
+ duplex: 'half',
69
71
  },
70
72
  });
71
73
  }
@@ -83,12 +85,12 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
83
85
  headers: fetchResponse.headers,
84
86
  status: fetchResponse.status,
85
87
  statusText: fetchResponse.statusText,
86
- hasBody: !!fetchResponse.body
88
+ hasBody: !!fetchResponse.body,
87
89
  });
88
90
  subscriber.next({
89
91
  request,
90
92
  type: http_event_js_1.HttpEventType.ResponseHeader,
91
- response: headersResponse
93
+ response: headersResponse,
92
94
  });
93
95
  // Parse body
94
96
  let body;
@@ -112,7 +114,7 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
112
114
  type: http_event_js_1.HttpEventType.DownloadProgress,
113
115
  request,
114
116
  total,
115
- loaded
117
+ loaded,
116
118
  });
117
119
  }
118
120
  controller.close();
@@ -135,7 +137,7 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
135
137
  subscriber.next({
136
138
  request,
137
139
  type: http_event_js_1.HttpEventType.Response,
138
- response
140
+ response,
139
141
  });
140
142
  subscriber.complete();
141
143
  })().catch(error => subscriber.error(error));
@@ -148,13 +150,13 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
148
150
  const headers = init.headers || new Headers();
149
151
  const requestInit = {
150
152
  ...init,
151
- headers
153
+ headers,
152
154
  };
153
155
  this.defaults.headers.forEach((val, key) => {
154
156
  if (!headers.has(key))
155
157
  headers.set(key, val);
156
158
  });
157
- const url = new common_1.OpraURL(requestInit.url, this.serviceUrl);
159
+ const url = new URL(requestInit.url, this.serviceUrl);
158
160
  if (this.defaults.params.size) {
159
161
  this.defaults.params.forEach((val, key) => {
160
162
  if (!url.searchParams.has(key))
@@ -204,7 +206,7 @@ class FetchBackend extends http_backend_js_1.HttpBackend {
204
206
  }
205
207
  async parseBody(fetchResponse) {
206
208
  let body;
207
- const contentType = (fetchResponse.headers.get('Content-Type') || '');
209
+ const contentType = fetchResponse.headers.get('Content-Type') || '';
208
210
  if (type_is_1.default.is(contentType, ['json', 'application/*+json'])) {
209
211
  body = await fetchResponse.json();
210
212
  if (typeof body === 'string')
@@ -9,7 +9,10 @@ const backend_js_1 = require("../core/backend.js");
9
9
  class HttpBackend extends backend_js_1.Backend {
10
10
  constructor(serviceUrl, options) {
11
11
  super(options);
12
- this.serviceUrl = serviceUrl;
12
+ const u = new URL(serviceUrl);
13
+ this.serviceUrl = u.toString().split('?')[0].split('#')[0];
14
+ if (!this.serviceUrl.endsWith('/'))
15
+ this.serviceUrl += '/';
13
16
  }
14
17
  }
15
18
  exports.HttpBackend = HttpBackend;
@@ -3,90 +3,95 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HttpClientBase = void 0;
4
4
  const common_1 = require("@opra/common");
5
5
  const constants_js_1 = require("../constants.js");
6
- const client_base_js_1 = require("../core/client-base.js");
7
- const http_collection_node_js_1 = require("./http-collection-node.js");
8
6
  const http_request_observable_js_1 = require("./http-request-observable.js");
9
- const http_singleton_node_js_1 = require("./http-singleton-node.js");
10
- const http_storage_node_js_1 = require("./http-storage-node.js");
11
7
  /**
12
8
  *
13
9
  * @class OpraClientBase
14
10
  * @abstract
15
11
  */
16
- class HttpClientBase extends client_base_js_1.ClientBase {
12
+ class HttpClientBase {
17
13
  constructor(backend) {
18
- super(backend);
19
- this._collectionCache = new common_1.ResponsiveMap();
20
- this._singletonCache = new common_1.ResponsiveMap();
21
- this._storageCache = new common_1.ResponsiveMap();
14
+ Object.defineProperty(this, constants_js_1.kBackend, {
15
+ enumerable: false,
16
+ value: backend,
17
+ });
22
18
  }
23
19
  get serviceUrl() {
24
20
  return this[constants_js_1.kBackend].serviceUrl;
25
21
  }
26
- async getMetadata() {
27
- if (this._metadataPromise)
28
- return this._metadataPromise;
29
- const request = new http_request_observable_js_1.HttpRequestObservable(this[constants_js_1.kBackend], {
30
- method: 'GET',
31
- url: '/',
32
- headers: new Headers({ 'accept': 'application/json' })
33
- });
34
- let body;
35
- try {
36
- this._metadataPromise = request.getBody();
37
- body = await this._metadataPromise;
38
- }
39
- catch (e) {
40
- e.message = 'Error fetching metadata from url (' + this.serviceUrl + ').\n' + e.message;
41
- throw e;
42
- }
43
- finally {
44
- this._metadataPromise = undefined;
45
- }
46
- try {
47
- const api = await common_1.ApiDocumentFactory.createDocument(body);
48
- this[constants_js_1.kBackend].api = api;
49
- return api;
50
- }
51
- catch (e) {
22
+ async fetchDocument(options) {
23
+ const documentMap = {};
24
+ const getDocument = async (documentId) => {
25
+ const req = this.request('$schema', {
26
+ headers: new Headers({ accept: 'application/json' }),
27
+ });
28
+ if (documentId)
29
+ req.param('id', documentId);
30
+ const body = await req.getBody().catch(e => {
31
+ e.message = 'Error fetching api schema from url (' + this.serviceUrl + ').\n' + e.message;
32
+ throw e;
33
+ });
34
+ if (body.references) {
35
+ const oldReferences = body.references;
36
+ body.references = {};
37
+ for (const [ns, obj] of Object.entries(oldReferences)) {
38
+ if (documentMap[obj.id] === null)
39
+ throw new Error('Circular reference detected');
40
+ documentMap[obj.id] = null;
41
+ const x = await getDocument(obj.id);
42
+ body.references[ns] = documentMap[obj.id] = x;
43
+ }
44
+ }
45
+ return body;
46
+ };
47
+ const body = await getDocument(options?.documentId);
48
+ return await common_1.ApiDocumentFactory.createDocument(body).catch(e => {
52
49
  e.message = 'Error loading api document.\n' + e.message;
53
50
  throw e;
54
- }
55
- }
56
- collection(path) {
57
- let node = this._collectionCache.get(path);
58
- if (!node) {
59
- node = new http_collection_node_js_1.HttpCollectionNode(this[constants_js_1.kBackend], path);
60
- this._collectionCache.set(path, node);
61
- }
62
- return node;
51
+ });
63
52
  }
64
- singleton(path) {
65
- let node = this._singletonCache.get(path);
66
- if (!node) {
67
- node = new http_singleton_node_js_1.HttpSingletonNode(this[constants_js_1.kBackend], path);
68
- this._singletonCache.set(path, node);
69
- }
70
- return node;
53
+ request(path, options) {
54
+ const observable = new http_request_observable_js_1.HttpRequestObservable(this[constants_js_1.kBackend], {
55
+ ...options,
56
+ method: options?.method || 'GET',
57
+ url: new URL(path, this.serviceUrl),
58
+ });
59
+ if (options?.params)
60
+ observable.param(options.params);
61
+ return observable;
71
62
  }
72
- storage(path) {
73
- let node = this._storageCache.get(path);
74
- if (!node) {
75
- node = new http_storage_node_js_1.HttpStorageNode(this[constants_js_1.kBackend], path);
76
- this._storageCache.set(path, node);
77
- }
78
- return node;
63
+ delete(path, options) {
64
+ return this.request(path, {
65
+ ...options,
66
+ method: 'DELETE',
67
+ });
79
68
  }
80
- action(path, params) {
81
- const observable = new http_request_observable_js_1.HttpRequestObservable(this[constants_js_1.kBackend], {
69
+ get(path, options) {
70
+ return this.request(path, {
71
+ ...options,
82
72
  method: 'GET',
83
- url: path
84
73
  });
85
- if (params) {
86
- Object.keys(params).forEach(k => params[k] = String(params[k]));
87
- observable.param(params);
88
- }
89
- return observable;
74
+ }
75
+ patch(path, requestBody, options) {
76
+ return this.request(path, {
77
+ ...options,
78
+ method: 'PATCH',
79
+ body: requestBody,
80
+ });
81
+ }
82
+ post(path, requestBody, options) {
83
+ return this.request(path, {
84
+ ...options,
85
+ method: 'POST',
86
+ body: requestBody,
87
+ });
88
+ }
89
+ put(path, requestBody, options) {
90
+ return this.request(path, {
91
+ ...options,
92
+ method: 'PUT',
93
+ body: requestBody,
94
+ });
90
95
  }
91
96
  }
92
97
  exports.HttpClientBase = HttpClientBase;
@@ -4,12 +4,12 @@ exports.HttpInterceptorHandler = void 0;
4
4
  class HttpInterceptorHandler {
5
5
  constructor(interceptors, finalHandler) {
6
6
  this.chain = interceptors.reduceRight((chainTailFn, interceptor) => (initialRequest, handler) => interceptor.intercept(initialRequest, {
7
- handle: (downstreamRequest) => chainTailFn(downstreamRequest, handler)
7
+ handle: downstreamRequest => chainTailFn(downstreamRequest, handler),
8
8
  }), chainEnd);
9
9
  this.finalHandler = finalHandler;
10
10
  }
11
11
  handle(initialRequest) {
12
- return this.chain(initialRequest, (req) => this.finalHandler.handle(req));
12
+ return this.chain(initialRequest, req => this.finalHandler.handle(req));
13
13
  }
14
14
  }
15
15
  exports.HttpInterceptorHandler = HttpInterceptorHandler;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HttpRequestObservable = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const rxjs_1 = require("rxjs");
6
5
  const type_is_1 = tslib_1.__importDefault(require("@browsery/type-is"));
7
6
  const common_1 = require("@opra/common");
7
+ const rxjs_1 = require("rxjs");
8
8
  const constants_js_1 = require("../constants.js");
9
9
  const client_error_js_1 = require("../core/client-error.js");
10
10
  const http_observable_type_enum_js_1 = require("./enums/http-observable-type.enum.js");
@@ -16,11 +16,9 @@ const http_event_js_1 = require("./interfaces/http-event.js");
16
16
  */
17
17
  class HttpRequestObservable extends rxjs_1.Observable {
18
18
  constructor(backend, init) {
19
- super((subscriber) => {
19
+ super(subscriber => {
20
20
  const observe = this[constants_js_1.kContext].observe;
21
- new http_interceptor_handler_js_1.HttpInterceptorHandler(backend.interceptors || [], this[constants_js_1.kBackend])
22
- .handle(this[constants_js_1.kContext])
23
- .subscribe({
21
+ new http_interceptor_handler_js_1.HttpInterceptorHandler(backend.interceptors || [], this[constants_js_1.kBackend]).handle(this[constants_js_1.kContext]).subscribe({
24
22
  next(event) {
25
23
  if (observe === http_observable_type_enum_js_1.HttpObserveType.Events) {
26
24
  subscriber.next(event);
@@ -38,12 +36,12 @@ class HttpRequestObservable extends rxjs_1.Observable {
38
36
  subscriber.complete();
39
37
  return;
40
38
  }
41
- const isOpraResponse = type_is_1.default.is(event.response.contentType || '', ['application/opra+json']);
39
+ const isOpraResponse = type_is_1.default.is(event.response.contentType || '', [common_1.MimeTypes.opra_response_json]);
42
40
  if (response.status >= 400 && response.status < 600) {
43
41
  subscriber.error(new client_error_js_1.ClientError({
44
42
  message: response.status + ' ' + response.statusText,
45
43
  status: response.status,
46
- issues: isOpraResponse ? response.body.errors : undefined
44
+ issues: isOpraResponse ? response.body.errors : undefined,
47
45
  }));
48
46
  subscriber.complete();
49
47
  return;
@@ -57,22 +55,20 @@ class HttpRequestObservable extends rxjs_1.Observable {
57
55
  },
58
56
  complete() {
59
57
  subscriber.complete();
60
- }
58
+ },
61
59
  });
62
60
  });
63
61
  Object.defineProperty(this, constants_js_1.kBackend, {
64
62
  enumerable: false,
65
- value: backend
63
+ value: backend,
66
64
  });
67
- const url = new common_1.OpraURL(init?.url);
68
65
  Object.defineProperty(this, constants_js_1.kContext, {
69
66
  enumerable: false,
70
67
  value: {
71
68
  ...init,
72
69
  observe: http_observable_type_enum_js_1.HttpObserveType.Body,
73
70
  headers: new Headers(init?.headers),
74
- url,
75
- }
71
+ },
76
72
  });
77
73
  }
78
74
  clone() {
@@ -85,9 +81,7 @@ class HttpRequestObservable extends rxjs_1.Observable {
85
81
  header(arg0, value) {
86
82
  const target = this[constants_js_1.kContext].headers;
87
83
  if (typeof arg0 === 'object') {
88
- const h = arg0 instanceof Headers
89
- ? arg0
90
- : new Headers(arg0);
84
+ const h = arg0 instanceof Headers ? arg0 : new Headers(arg0);
91
85
  h.forEach((v, k) => {
92
86
  if (k.toLowerCase() === 'set-cookie') {
93
87
  target.append(k, v);
@@ -109,10 +103,12 @@ class HttpRequestObservable extends rxjs_1.Observable {
109
103
  }
110
104
  const target = this[constants_js_1.kContext].url.searchParams;
111
105
  if (typeof arg0 === 'object') {
112
- const h = arg0 instanceof URLSearchParams
113
- ? arg0
114
- : new URLSearchParams(arg0);
115
- h.forEach((v, k) => target.set(k, v));
106
+ if (typeof arg0.forEach === 'function') {
107
+ arg0.forEach((v, k) => target.set(String(k), String(v)));
108
+ }
109
+ else {
110
+ Object.entries(arg0).forEach(entry => target.set(String(entry[0]), String(entry[1])));
111
+ }
116
112
  return this;
117
113
  }
118
114
  if (value == null)
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ /// <reference lib="dom" />
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.HttpResponse = void 0;
4
5
  class HttpResponse {
@@ -7,8 +8,7 @@ class HttpResponse {
7
8
  * Returns true if response has body to be received
8
9
  */
9
10
  this.hasBody = false;
10
- this.headers = init?.headers instanceof Headers ? init?.headers
11
- : new Headers(init?.headers);
11
+ this.headers = init?.headers instanceof Headers ? init?.headers : new Headers(init?.headers);
12
12
  this.status = init?.status || 200;
13
13
  this.statusText = init?.statusText || 'OK';
14
14
  this.url = init?.url || null;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.urlPath = void 0;
4
+ function urlPath(strings, ...values) {
5
+ let str = '';
6
+ let i;
7
+ for (i = 0; i < strings.length; i++) {
8
+ str += strings[0] + encodeURIComponent(values[i]);
9
+ }
10
+ return str;
11
+ }
12
+ exports.urlPath = urlPath;
package/cjs/index.js CHANGED
@@ -1,25 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.kClient = exports.kContext = exports.kBackend = void 0;
3
+ exports.kContext = exports.kClient = exports.kBackend = void 0;
4
4
  const tslib_1 = require("tslib");
5
- tslib_1.__exportStar(require("./types.js"), exports);
5
+ var constants_js_1 = require("./constants.js");
6
+ Object.defineProperty(exports, "kBackend", { enumerable: true, get: function () { return constants_js_1.kBackend; } });
7
+ Object.defineProperty(exports, "kClient", { enumerable: true, get: function () { return constants_js_1.kClient; } });
8
+ Object.defineProperty(exports, "kContext", { enumerable: true, get: function () { return constants_js_1.kContext; } });
6
9
  tslib_1.__exportStar(require("./core/backend.js"), exports);
7
- tslib_1.__exportStar(require("./core/client-base.js"), exports);
8
10
  tslib_1.__exportStar(require("./core/client-error.js"), exports);
11
+ tslib_1.__exportStar(require("./http/enums/http-observable-type.enum.js"), exports);
9
12
  tslib_1.__exportStar(require("./http/fetch-backend.js"), exports);
10
13
  tslib_1.__exportStar(require("./http/http-backend.js"), exports);
11
14
  tslib_1.__exportStar(require("./http/http-client.js"), exports);
12
15
  tslib_1.__exportStar(require("./http/http-client-base.js"), exports);
13
- tslib_1.__exportStar(require("./http/http-collection-node.js"), exports);
14
16
  tslib_1.__exportStar(require("./http/http-request-observable.js"), exports);
15
17
  tslib_1.__exportStar(require("./http/http-response.js"), exports);
16
- tslib_1.__exportStar(require("./http/http-singleton-node.js"), exports);
17
- tslib_1.__exportStar(require("./http/http-storage-node.js"), exports);
18
- tslib_1.__exportStar(require("./http/enums/http-observable-type.enum.js"), exports);
18
+ tslib_1.__exportStar(require("./http/http-utils.js"), exports);
19
19
  tslib_1.__exportStar(require("./http/interfaces/http-event.js"), exports);
20
20
  tslib_1.__exportStar(require("./http/interfaces/http-handler.js"), exports);
21
21
  tslib_1.__exportStar(require("./http/interfaces/http-interceptor.js"), exports);
22
- var constants_js_1 = require("./constants.js");
23
- Object.defineProperty(exports, "kBackend", { enumerable: true, get: function () { return constants_js_1.kBackend; } });
24
- Object.defineProperty(exports, "kContext", { enumerable: true, get: function () { return constants_js_1.kContext; } });
25
- Object.defineProperty(exports, "kClient", { enumerable: true, get: function () { return constants_js_1.kClient; } });
@@ -1,5 +1,5 @@
1
1
  export class Backend {
2
2
  constructor(options) {
3
- this.api = options?.api;
3
+ this.document = options?.document;
4
4
  }
5
5
  }