@opra/client 1.0.0-alpha.1 → 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.
- package/browser.js +3 -3
- package/cjs/http/fetch-backend.js +2 -2
- package/cjs/http/http-client-base.js +23 -12
- package/cjs/http/http-request-observable.js +1 -1
- package/cjs/index.js +6 -6
- package/esm/http/fetch-backend.js +2 -2
- package/esm/http/http-client-base.js +23 -12
- package/esm/http/http-request-observable.js +1 -1
- package/esm/index.js +2 -2
- package/package.json +11 -6
- package/types/core/backend.d.ts +1 -1
- package/types/http/http-backend.d.ts +0 -2
- package/types/http/http-client-base.d.ts +4 -3
- package/types/http/http-request-observable.d.ts +1 -1
- package/types/index.d.ts +2 -2
package/browser.js
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
* http://www.panates.com
|
|
4
4
|
*****************************************/
|
|
5
5
|
|
|
6
|
-
var
|
|
7
|
-
`+
|
|
8
|
-
`+
|
|
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,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");
|
|
@@ -19,25 +19,36 @@ class HttpClientBase {
|
|
|
19
19
|
get serviceUrl() {
|
|
20
20
|
return this[constants_js_1.kBackend].serviceUrl;
|
|
21
21
|
}
|
|
22
|
-
async
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
async fetchDocument(options) {
|
|
23
|
+
const documentMap = {};
|
|
24
|
+
const getDocument = async (documentId) => {
|
|
25
|
+
const req = this.request('$schema', {
|
|
25
26
|
headers: new Headers({ accept: 'application/json' }),
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
.
|
|
27
|
+
});
|
|
28
|
+
if (documentId)
|
|
29
|
+
req.param('id', documentId);
|
|
30
|
+
const body = await req.getBody().catch(e => {
|
|
29
31
|
e.message = 'Error fetching api schema from url (' + this.serviceUrl + ').\n' + e.message;
|
|
30
32
|
throw e;
|
|
31
33
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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 => {
|
|
35
49
|
e.message = 'Error loading api document.\n' + e.message;
|
|
36
50
|
throw e;
|
|
37
51
|
});
|
|
38
|
-
this[constants_js_1.kBackend].document = document;
|
|
39
|
-
this._schemaRequest = undefined;
|
|
40
|
-
return document;
|
|
41
52
|
}
|
|
42
53
|
request(path, options) {
|
|
43
54
|
const observable = new http_request_observable_js_1.HttpRequestObservable(this[constants_js_1.kBackend], {
|
|
@@ -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");
|
package/cjs/index.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.kContext = exports.kClient = exports.kBackend = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
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; } });
|
|
5
9
|
tslib_1.__exportStar(require("./core/backend.js"), exports);
|
|
6
10
|
tslib_1.__exportStar(require("./core/client-error.js"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./http/enums/http-observable-type.enum.js"), exports);
|
|
7
12
|
tslib_1.__exportStar(require("./http/fetch-backend.js"), exports);
|
|
8
13
|
tslib_1.__exportStar(require("./http/http-backend.js"), exports);
|
|
9
14
|
tslib_1.__exportStar(require("./http/http-client.js"), exports);
|
|
@@ -11,11 +16,6 @@ tslib_1.__exportStar(require("./http/http-client-base.js"), exports);
|
|
|
11
16
|
tslib_1.__exportStar(require("./http/http-request-observable.js"), exports);
|
|
12
17
|
tslib_1.__exportStar(require("./http/http-response.js"), exports);
|
|
13
18
|
tslib_1.__exportStar(require("./http/http-utils.js"), exports);
|
|
14
|
-
tslib_1.__exportStar(require("./http/enums/http-observable-type.enum.js"), exports);
|
|
15
19
|
tslib_1.__exportStar(require("./http/interfaces/http-event.js"), exports);
|
|
16
20
|
tslib_1.__exportStar(require("./http/interfaces/http-handler.js"), exports);
|
|
17
21
|
tslib_1.__exportStar(require("./http/interfaces/http-interceptor.js"), exports);
|
|
18
|
-
var constants_js_1 = require("./constants.js");
|
|
19
|
-
Object.defineProperty(exports, "kBackend", { enumerable: true, get: function () { return constants_js_1.kBackend; } });
|
|
20
|
-
Object.defineProperty(exports, "kContext", { enumerable: true, get: function () { return constants_js_1.kContext; } });
|
|
21
|
-
Object.defineProperty(exports, "kClient", { enumerable: true, get: function () { return constants_js_1.kClient; } });
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// /// <reference lib="dom" />
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
|
|
4
2
|
import typeIs from '@browsery/type-is';
|
|
5
3
|
import { isBlob, isFormData } from '@opra/common';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
import { isReadableStreamLike } from 'rxjs/internal/util/isReadableStreamLike';
|
|
6
6
|
import { HttpBackend } from './http-backend.js';
|
|
7
7
|
import { HttpResponse } from './http-response.js';
|
|
8
8
|
import { HttpEventType, } from './interfaces/http-event.js';
|
|
@@ -16,25 +16,36 @@ export class HttpClientBase {
|
|
|
16
16
|
get serviceUrl() {
|
|
17
17
|
return this[kBackend].serviceUrl;
|
|
18
18
|
}
|
|
19
|
-
async
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
async fetchDocument(options) {
|
|
20
|
+
const documentMap = {};
|
|
21
|
+
const getDocument = async (documentId) => {
|
|
22
|
+
const req = this.request('$schema', {
|
|
22
23
|
headers: new Headers({ accept: 'application/json' }),
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
.
|
|
24
|
+
});
|
|
25
|
+
if (documentId)
|
|
26
|
+
req.param('id', documentId);
|
|
27
|
+
const body = await req.getBody().catch(e => {
|
|
26
28
|
e.message = 'Error fetching api schema from url (' + this.serviceUrl + ').\n' + e.message;
|
|
27
29
|
throw e;
|
|
28
30
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
if (body.references) {
|
|
32
|
+
const oldReferences = body.references;
|
|
33
|
+
body.references = {};
|
|
34
|
+
for (const [ns, obj] of Object.entries(oldReferences)) {
|
|
35
|
+
if (documentMap[obj.id] === null)
|
|
36
|
+
throw new Error('Circular reference detected');
|
|
37
|
+
documentMap[obj.id] = null;
|
|
38
|
+
const x = await getDocument(obj.id);
|
|
39
|
+
body.references[ns] = documentMap[obj.id] = x;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return body;
|
|
43
|
+
};
|
|
44
|
+
const body = await getDocument(options?.documentId);
|
|
45
|
+
return await ApiDocumentFactory.createDocument(body).catch(e => {
|
|
32
46
|
e.message = 'Error loading api document.\n' + e.message;
|
|
33
47
|
throw e;
|
|
34
48
|
});
|
|
35
|
-
this[kBackend].document = document;
|
|
36
|
-
this._schemaRequest = undefined;
|
|
37
|
-
return document;
|
|
38
49
|
}
|
|
39
50
|
request(path, options) {
|
|
40
51
|
const observable = new HttpRequestObservable(this[kBackend], {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { lastValueFrom, Observable } from 'rxjs';
|
|
2
1
|
import typeIs from '@browsery/type-is';
|
|
3
2
|
import { MimeTypes } from '@opra/common';
|
|
3
|
+
import { lastValueFrom, Observable } from 'rxjs';
|
|
4
4
|
import { kBackend, kContext } from '../constants.js';
|
|
5
5
|
import { ClientError } from '../core/client-error.js';
|
|
6
6
|
import { HttpObserveType } from './enums/http-observable-type.enum.js';
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { kBackend, kClient, kContext } from './constants.js';
|
|
1
2
|
export * from './core/backend.js';
|
|
2
3
|
export * from './core/client-error.js';
|
|
4
|
+
export * from './http/enums/http-observable-type.enum.js';
|
|
3
5
|
export * from './http/fetch-backend.js';
|
|
4
6
|
export * from './http/http-backend.js';
|
|
5
7
|
export * from './http/http-client.js';
|
|
@@ -7,8 +9,6 @@ export * from './http/http-client-base.js';
|
|
|
7
9
|
export * from './http/http-request-observable.js';
|
|
8
10
|
export * from './http/http-response.js';
|
|
9
11
|
export * from './http/http-utils.js';
|
|
10
|
-
export * from './http/enums/http-observable-type.enum.js';
|
|
11
12
|
export * from './http/interfaces/http-event.js';
|
|
12
13
|
export * from './http/interfaces/http-handler.js';
|
|
13
14
|
export * from './http/interfaces/http-interceptor.js';
|
|
14
|
-
export { kBackend, kContext, kClient } from './constants.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opra/client",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.10",
|
|
4
4
|
"description": "Opra Client package",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
"build:browser": "node esbuild.mjs",
|
|
19
19
|
"postbuild": "cp README.md package.json ../../LICENSE ../../build/client && cp ../../package.cjs.json ../../build/client/cjs/package.json",
|
|
20
20
|
"lint": "eslint . --max-warnings=0",
|
|
21
|
-
"
|
|
21
|
+
"lint:fix": "eslint . --max-warnings=0 --fix",
|
|
22
22
|
"format": "prettier . --write --log-level=warn",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"check": "madge --circular src/**",
|
|
24
|
+
"test": "jest --passWithNoTests",
|
|
25
|
+
"cover": "jest --passWithNoTests --collect-coverage",
|
|
25
26
|
"clean": "npm run clean:src && npm run clean:test && npm run clean:dist && npm run clean:cover",
|
|
26
27
|
"clean:src": "ts-cleanup -s src --all",
|
|
27
28
|
"clean:test": "ts-cleanup -s test --all",
|
|
@@ -37,11 +38,11 @@
|
|
|
37
38
|
"@browsery/fs": "^0.4.0",
|
|
38
39
|
"@browsery/highland": "^2.13.5",
|
|
39
40
|
"@browsery/http-parser": "^0.5.8",
|
|
40
|
-
"@browsery/i18next": "^23.
|
|
41
|
+
"@browsery/i18next": "^23.11.5",
|
|
41
42
|
"@browsery/stream": "^4.3.0",
|
|
42
43
|
"@browsery/type-is": "^1.6.18-r2",
|
|
43
44
|
"@browsery/util": "^0.12.5",
|
|
44
|
-
"@opra/common": "^0.
|
|
45
|
+
"@opra/common": "^1.0.0-alpha.10",
|
|
45
46
|
"accepts": "^1.3.8",
|
|
46
47
|
"buffer": "^6.0.3",
|
|
47
48
|
"cookie": "^0.6.0",
|
|
@@ -62,6 +63,10 @@
|
|
|
62
63
|
"ts-lib": "^0.0.5",
|
|
63
64
|
"uid": "^2.0.1"
|
|
64
65
|
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"body-parser": "^1.20.2",
|
|
68
|
+
"express": "^4.19.2"
|
|
69
|
+
},
|
|
65
70
|
"sideEffects": false,
|
|
66
71
|
"files": [
|
|
67
72
|
"cjs/",
|
package/types/core/backend.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ApiDocument } from '@opra/common';
|
|
2
1
|
import { Backend } from '../core/backend.js';
|
|
3
2
|
import type { HttpHandler } from './interfaces/http-handler.js';
|
|
4
3
|
import type { HttpInterceptor } from './interfaces/http-interceptor.js';
|
|
@@ -9,7 +8,6 @@ import type { HttpInterceptor } from './interfaces/http-interceptor.js';
|
|
|
9
8
|
export declare abstract class HttpBackend extends Backend implements HttpHandler {
|
|
10
9
|
readonly serviceUrl: string;
|
|
11
10
|
interceptors: HttpInterceptor<any>[];
|
|
12
|
-
document?: ApiDocument;
|
|
13
11
|
protected constructor(serviceUrl: string, options?: HttpBackend.Options);
|
|
14
12
|
}
|
|
15
13
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { StrictOmit } from 'ts-gems';
|
|
2
1
|
import { ApiDocument, URLSearchParamsInit } from '@opra/common';
|
|
2
|
+
import { StrictOmit } from 'ts-gems';
|
|
3
3
|
import { kBackend } from '../constants.js';
|
|
4
4
|
import { HttpBackend } from './http-backend.js';
|
|
5
5
|
import { HttpRequestObservable } from './http-request-observable.js';
|
|
@@ -22,10 +22,11 @@ export declare namespace OpraClientBase {
|
|
|
22
22
|
*/
|
|
23
23
|
export declare abstract class HttpClientBase<TRequestOptions = {}, TResponseExt = {}> {
|
|
24
24
|
protected [kBackend]: HttpBackend;
|
|
25
|
-
protected _schemaRequest?: Promise<any>;
|
|
26
25
|
protected constructor(backend: HttpBackend);
|
|
27
26
|
get serviceUrl(): string;
|
|
28
|
-
|
|
27
|
+
fetchDocument(options?: {
|
|
28
|
+
documentId?: string;
|
|
29
|
+
}): Promise<ApiDocument>;
|
|
29
30
|
request<TBody = any>(path: string, options?: OpraClientBase.RequestOptions): HttpRequestObservable<TBody, TBody, TRequestOptions, TResponseExt>;
|
|
30
31
|
delete<TBody = any>(path: string, options?: StrictOmit<OpraClientBase.RequestOptions, 'method' | 'body'>): HttpRequestObservable<TBody, TBody, TRequestOptions, TResponseExt>;
|
|
31
32
|
get<TBody = any>(path: string, options?: StrictOmit<OpraClientBase.RequestOptions, 'method' | 'body'>): HttpRequestObservable<TBody, TBody, TRequestOptions, TResponseExt>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
1
|
import { URLSearchParamsInit } from '@opra/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
3
|
import { kBackend, kContext } from '../constants.js';
|
|
4
4
|
import { HttpObserveType } from './enums/http-observable-type.enum.js';
|
|
5
5
|
import { HttpBackend } from './http-backend.js';
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { kBackend, kClient, kContext } from './constants.js';
|
|
1
2
|
export * from './core/backend.js';
|
|
2
3
|
export * from './core/client-error.js';
|
|
4
|
+
export * from './http/enums/http-observable-type.enum.js';
|
|
3
5
|
export * from './http/fetch-backend.js';
|
|
4
6
|
export * from './http/http-backend.js';
|
|
5
7
|
export * from './http/http-client.js';
|
|
@@ -7,8 +9,6 @@ export * from './http/http-client-base.js';
|
|
|
7
9
|
export * from './http/http-request-observable.js';
|
|
8
10
|
export * from './http/http-response.js';
|
|
9
11
|
export * from './http/http-utils.js';
|
|
10
|
-
export * from './http/enums/http-observable-type.enum.js';
|
|
11
12
|
export * from './http/interfaces/http-event.js';
|
|
12
13
|
export * from './http/interfaces/http-handler.js';
|
|
13
14
|
export * from './http/interfaces/http-interceptor.js';
|
|
14
|
-
export { kBackend, kContext, kClient } from './constants.js';
|