@nmtjs/http-client 0.1.5 → 0.1.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/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/package.json +12 -8
package/dist/index.js
CHANGED
|
@@ -5,10 +5,7 @@ export class HttpClient extends ClientTransport {
|
|
|
5
5
|
type;
|
|
6
6
|
attempts;
|
|
7
7
|
constructor(options){
|
|
8
|
-
super();
|
|
9
|
-
this.options = options;
|
|
10
|
-
this.type = TransportType.HTTP;
|
|
11
|
-
this.attempts = 0;
|
|
8
|
+
super(), this.options = options, this.type = TransportType.HTTP, this.attempts = 0;
|
|
12
9
|
}
|
|
13
10
|
async healthCheck() {
|
|
14
11
|
while(true){
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../index.ts"],"sourcesContent":["import {\n ClientTransport,\n type ClientTransportRpcCall,\n type ClientTransportRpcResult,\n} from '@nmtjs/client'\nimport { ErrorCode, TransportType } from '@nmtjs/common'\n\nexport type ClientOptions = {\n /**\n * The origin of the server\n * @example 'http://localhost:3000'\n */\n origin: string\n debug?: boolean\n}\n\nexport type HttpRpcOptions = {\n timeout?: number\n headers?: Record<string, string>\n signal?: AbortSignal\n}\n\nexport class HttpClient extends ClientTransport {\n type = TransportType.HTTP\n private attempts = 0\n\n constructor(private readonly options: ClientOptions) {\n super()\n }\n\n async healthCheck() {\n while (true) {\n try {\n const signal = AbortSignal.timeout(10000)\n const url = this.getURL('healthy')\n const { ok } = await fetch(url, { signal })\n if (ok) break\n } catch (e) {}\n this.attempts++\n const seconds = Math.min(this.attempts, 15)\n await new Promise((r) => setTimeout(r, seconds * 1000))\n }\n }\n\n async connect() {}\n async disconnect() {}\n\n async rpc(params: ClientTransportRpcCall): Promise<ClientTransportRpcResult> {\n const { service, procedure, payload, signal } = params\n const url = this.getURL(`api/${service}/${procedure}`)\n const body = this.client.format.encode(payload)\n\n const response = await fetch(url, {\n method: 'POST',\n body,\n signal,\n keepalive: true,\n credentials: 'include',\n cache: 'no-cache',\n headers: {\n 'Content-Type': this.client.format.contentType,\n Accept: this.client.format.contentType,\n ...(this.client.auth ? { Authorization: this.client.auth } : {}),\n },\n })\n\n if (!response.ok) {\n return {\n success: false,\n error: {\n code: ErrorCode.InternalServerError,\n data: { status: response.status, statusText: response.statusText },\n message: await response.text(),\n },\n }\n } else {\n const buf = await response.arrayBuffer()\n const { error, result } = this.client.format.decode(buf)\n if (error) {\n return { success: false, error }\n } else {\n return { success: true, value: result }\n }\n }\n }\n\n private getURL(path = '', params = '') {\n const url = new URL(path, this.options.origin)\n url.search = params\n return url\n }\n}\n"],"names":["ClientTransport","ErrorCode","TransportType","HttpClient","type","attempts","constructor","options","HTTP","healthCheck","signal","AbortSignal","timeout","url","getURL","ok","fetch","e","seconds","Math","min","Promise","r","setTimeout","connect","disconnect","rpc","params","service","procedure","payload","body","client","format","encode","response","method","keepalive","credentials","cache","headers","contentType","Accept","auth","Authorization","success","error","code","InternalServerError","data","status","statusText","message","text","buf","arrayBuffer","result","decode","value","path","URL","origin","search"],"mappings":"AAAA,SACEA,eAAe,QAGV,gBAAe;AACtB,SAASC,SAAS,EAAEC,aAAa,QAAQ,gBAAe;AAiBxD,OAAO,MAAMC,mBAAmBH;;IAC9BI,KAAyB;IACjBC,SAAY;IAEpBC,YAAY,AAAiBC,OAAsB,CAAE;QACnD,KAAK
|
|
1
|
+
{"version":3,"sources":["../../index.ts"],"sourcesContent":["import {\n ClientTransport,\n type ClientTransportRpcCall,\n type ClientTransportRpcResult,\n} from '@nmtjs/client'\nimport { ErrorCode, TransportType } from '@nmtjs/common'\n\nexport type ClientOptions = {\n /**\n * The origin of the server\n * @example 'http://localhost:3000'\n */\n origin: string\n debug?: boolean\n}\n\nexport type HttpRpcOptions = {\n timeout?: number\n headers?: Record<string, string>\n signal?: AbortSignal\n}\n\nexport class HttpClient extends ClientTransport {\n type = TransportType.HTTP\n private attempts = 0\n\n constructor(private readonly options: ClientOptions) {\n super()\n }\n\n async healthCheck() {\n while (true) {\n try {\n const signal = AbortSignal.timeout(10000)\n const url = this.getURL('healthy')\n const { ok } = await fetch(url, { signal })\n if (ok) break\n } catch (e) {}\n this.attempts++\n const seconds = Math.min(this.attempts, 15)\n await new Promise((r) => setTimeout(r, seconds * 1000))\n }\n }\n\n async connect() {}\n async disconnect() {}\n\n async rpc(params: ClientTransportRpcCall): Promise<ClientTransportRpcResult> {\n const { service, procedure, payload, signal } = params\n const url = this.getURL(`api/${service}/${procedure}`)\n const body = this.client.format.encode(payload)\n\n const response = await fetch(url, {\n method: 'POST',\n body,\n signal,\n keepalive: true,\n credentials: 'include',\n cache: 'no-cache',\n headers: {\n 'Content-Type': this.client.format.contentType,\n Accept: this.client.format.contentType,\n ...(this.client.auth ? { Authorization: this.client.auth } : {}),\n },\n })\n\n if (!response.ok) {\n return {\n success: false,\n error: {\n code: ErrorCode.InternalServerError,\n data: { status: response.status, statusText: response.statusText },\n message: await response.text(),\n },\n }\n } else {\n const buf = await response.arrayBuffer()\n const { error, result } = this.client.format.decode(buf)\n if (error) {\n return { success: false, error }\n } else {\n return { success: true, value: result }\n }\n }\n }\n\n private getURL(path = '', params = '') {\n const url = new URL(path, this.options.origin)\n url.search = params\n return url\n }\n}\n"],"names":["ClientTransport","ErrorCode","TransportType","HttpClient","type","attempts","constructor","options","HTTP","healthCheck","signal","AbortSignal","timeout","url","getURL","ok","fetch","e","seconds","Math","min","Promise","r","setTimeout","connect","disconnect","rpc","params","service","procedure","payload","body","client","format","encode","response","method","keepalive","credentials","cache","headers","contentType","Accept","auth","Authorization","success","error","code","InternalServerError","data","status","statusText","message","text","buf","arrayBuffer","result","decode","value","path","URL","origin","search"],"mappings":"AAAA,SACEA,eAAe,QAGV,gBAAe;AACtB,SAASC,SAAS,EAAEC,aAAa,QAAQ,gBAAe;AAiBxD,OAAO,MAAMC,mBAAmBH;;IAC9BI,KAAyB;IACjBC,SAAY;IAEpBC,YAAY,AAAiBC,OAAsB,CAAE;QACnD,KAAK,SADsBA,UAAAA,cAH7BH,OAAOF,cAAcM,IAAI,OACjBH,WAAW;IAInB;IAEA,MAAMI,cAAc;QAClB,MAAO,KAAM;YACX,IAAI;gBACF,MAAMC,SAASC,YAAYC,OAAO,CAAC;gBACnC,MAAMC,MAAM,IAAI,CAACC,MAAM,CAAC;gBACxB,MAAM,EAAEC,EAAE,EAAE,GAAG,MAAMC,MAAMH,KAAK;oBAAEH;gBAAO;gBACzC,IAAIK,IAAI;YACV,EAAE,OAAOE,GAAG,CAAC;YACb,IAAI,CAACZ,QAAQ;YACb,MAAMa,UAAUC,KAAKC,GAAG,CAAC,IAAI,CAACf,QAAQ,EAAE;YACxC,MAAM,IAAIgB,QAAQ,CAACC,IAAMC,WAAWD,GAAGJ,UAAU;QACnD;IACF;IAEA,MAAMM,UAAU,CAAC;IACjB,MAAMC,aAAa,CAAC;IAEpB,MAAMC,IAAIC,MAA8B,EAAqC;QAC3E,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,OAAO,EAAEpB,MAAM,EAAE,GAAGiB;QAChD,MAAMd,MAAM,IAAI,CAACC,MAAM,CAAC,CAAC,IAAI,EAAEc,QAAQ,CAAC,EAAEC,UAAU,CAAC;QACrD,MAAME,OAAO,IAAI,CAACC,MAAM,CAACC,MAAM,CAACC,MAAM,CAACJ;QAEvC,MAAMK,WAAW,MAAMnB,MAAMH,KAAK;YAChCuB,QAAQ;YACRL;YACArB;YACA2B,WAAW;YACXC,aAAa;YACbC,OAAO;YACPC,SAAS;gBACP,gBAAgB,IAAI,CAACR,MAAM,CAACC,MAAM,CAACQ,WAAW;gBAC9CC,QAAQ,IAAI,CAACV,MAAM,CAACC,MAAM,CAACQ,WAAW;gBACtC,GAAI,IAAI,CAACT,MAAM,CAACW,IAAI,GAAG;oBAAEC,eAAe,IAAI,CAACZ,MAAM,CAACW,IAAI;gBAAC,IAAI,CAAC,CAAC;YACjE;QACF;QAEA,IAAI,CAACR,SAASpB,EAAE,EAAE;YAChB,OAAO;gBACL8B,SAAS;gBACTC,OAAO;oBACLC,MAAM9C,UAAU+C,mBAAmB;oBACnCC,MAAM;wBAAEC,QAAQf,SAASe,MAAM;wBAAEC,YAAYhB,SAASgB,UAAU;oBAAC;oBACjEC,SAAS,MAAMjB,SAASkB,IAAI;gBAC9B;YACF;QACF,OAAO;YACL,MAAMC,MAAM,MAAMnB,SAASoB,WAAW;YACtC,MAAM,EAAET,KAAK,EAAEU,MAAM,EAAE,GAAG,IAAI,CAACxB,MAAM,CAACC,MAAM,CAACwB,MAAM,CAACH;YACpD,IAAIR,OAAO;gBACT,OAAO;oBAAED,SAAS;oBAAOC;gBAAM;YACjC,OAAO;gBACL,OAAO;oBAAED,SAAS;oBAAMa,OAAOF;gBAAO;YACxC;QACF;IACF;IAEQ1C,OAAO6C,OAAO,EAAE,EAAEhC,SAAS,EAAE,EAAE;QACrC,MAAMd,MAAM,IAAI+C,IAAID,MAAM,IAAI,CAACpD,OAAO,CAACsD,MAAM;QAC7ChD,IAAIiD,MAAM,GAAGnC;QACb,OAAOd;IACT;AACF"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmtjs/http-client",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"
|
|
4
|
+
"exports": {
|
|
5
|
+
".": {
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./index.ts"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
5
10
|
"peerDependencies": {
|
|
6
|
-
"@nmtjs/common": "^0.
|
|
7
|
-
"@nmtjs/client": "^0.
|
|
11
|
+
"@nmtjs/common": "^0.3.8",
|
|
12
|
+
"@nmtjs/client": "^0.3.8"
|
|
8
13
|
},
|
|
9
14
|
"devDependencies": {
|
|
10
|
-
"@nmtjs/common": "^0.
|
|
11
|
-
"@nmtjs/client": "^0.
|
|
15
|
+
"@nmtjs/common": "^0.3.8",
|
|
16
|
+
"@nmtjs/client": "^0.3.8"
|
|
12
17
|
},
|
|
13
18
|
"files": [
|
|
14
19
|
"index.ts",
|
|
@@ -17,10 +22,9 @@
|
|
|
17
22
|
"LICENSE.md",
|
|
18
23
|
"README.md"
|
|
19
24
|
],
|
|
20
|
-
"version": "0.1.
|
|
25
|
+
"version": "0.1.6",
|
|
21
26
|
"scripts": {
|
|
22
27
|
"build": "neemata-build -p neutral ./index.ts",
|
|
23
28
|
"type-check": "tsc --noEmit"
|
|
24
|
-
}
|
|
25
|
-
"types": "./index.ts"
|
|
29
|
+
}
|
|
26
30
|
}
|