@nmtjs/http-client 0.15.3 → 0.16.0-beta.1

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.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ClientTransport, ClientTransportFactory, ClientTransportMessageOptions, ClientTransportRpcParams } from '@nmtjs/client';
1
+ import type { ClientTransportFactory, TransportCallContext, TransportCallOptions, TransportRpcParams, UnidirectionalTransport } from '@nmtjs/client';
2
2
  import type { ProtocolVersion } from '@nmtjs/protocol';
3
3
  import type { BaseClientFormat } from '@nmtjs/protocol/client';
4
4
  import { ConnectionType } from '@nmtjs/protocol';
@@ -14,7 +14,7 @@ export type HttpClientTransportOptions = {
14
14
  fetch?: typeof fetch;
15
15
  decodeBase64?: DecodeBase64Function;
16
16
  };
17
- export declare class HttpTransportClient implements ClientTransport<ConnectionType.Unidirectional> {
17
+ export declare class HttpTransportClient implements UnidirectionalTransport {
18
18
  protected readonly format: BaseClientFormat;
19
19
  protected readonly protocol: ProtocolVersion;
20
20
  protected options: HttpClientTransportOptions;
@@ -22,22 +22,32 @@ export declare class HttpTransportClient implements ClientTransport<ConnectionTy
22
22
  decodeBase64: DecodeBase64Function;
23
23
  constructor(format: BaseClientFormat, protocol: ProtocolVersion, options: HttpClientTransportOptions);
24
24
  private getFetch;
25
- url({ procedure, application, payload }: {
25
+ url({ procedure, application }: {
26
26
  procedure: string;
27
27
  application?: string;
28
- payload?: unknown;
29
28
  }): URL;
30
- call(client: ClientTransportRpcParams, rpc: {
31
- callId: number;
32
- procedure: string;
33
- payload: unknown;
34
- }, options: ClientTransportMessageOptions): Promise<{
29
+ call(context: TransportCallContext, rpc: TransportRpcParams, options: TransportCallOptions): Promise<{
30
+ type: "error";
31
+ error: Uint8Array<ArrayBuffer>;
32
+ status: number;
33
+ statusText: string;
34
+ stream?: undefined;
35
+ metadata?: undefined;
36
+ source?: undefined;
37
+ result?: undefined;
38
+ } | {
39
+ error?: undefined;
40
+ status?: undefined;
41
+ statusText?: undefined;
35
42
  type: "rpc_stream";
36
43
  stream: ReadableStream<ArrayBufferView<ArrayBufferLike>>;
37
44
  metadata?: undefined;
38
45
  source?: undefined;
39
46
  result?: undefined;
40
47
  } | {
48
+ error?: undefined;
49
+ status?: undefined;
50
+ statusText?: undefined;
41
51
  stream?: undefined;
42
52
  type: "blob";
43
53
  metadata: {
@@ -48,6 +58,9 @@ export declare class HttpTransportClient implements ClientTransport<ConnectionTy
48
58
  source: ReadableStream<Uint8Array<ArrayBuffer>>;
49
59
  result?: undefined;
50
60
  } | {
61
+ error?: undefined;
62
+ status?: undefined;
63
+ statusText?: undefined;
51
64
  stream?: undefined;
52
65
  metadata?: undefined;
53
66
  source?: undefined;
@@ -55,6 +68,6 @@ export declare class HttpTransportClient implements ClientTransport<ConnectionTy
55
68
  result: Uint8Array<ArrayBuffer>;
56
69
  }>;
57
70
  }
58
- export type HttpTransportFactory = ClientTransportFactory<ConnectionType.Unidirectional, HttpClientTransportOptions, HttpTransportClient>;
71
+ export type HttpTransportFactory = ClientTransportFactory<HttpTransportClient, HttpClientTransportOptions>;
59
72
  export declare const HttpTransportFactory: HttpTransportFactory;
60
73
  export {};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ConnectionType, ErrorCode, ProtocolBlob } from '@nmtjs/protocol';
1
+ import { ConnectionType, ErrorCode } from '@nmtjs/protocol';
2
2
  import { ProtocolError } from '@nmtjs/protocol/client';
3
3
  import { HttpStreamParser } from './http-stream-parser.js';
4
4
  const createDecodeBase64 = (customFn) => {
@@ -39,32 +39,30 @@ export class HttpTransportClient {
39
39
  }
40
40
  return implementation;
41
41
  }
42
- url({ procedure, application, payload, }) {
42
+ url({ procedure, application }) {
43
43
  const base = application ? `/${application}/${procedure}` : `/${procedure}`;
44
44
  const url = new URL(base, this.options.url);
45
- if (payload)
46
- url.searchParams.set('payload', JSON.stringify(payload));
47
45
  return url;
48
46
  }
49
- async call(client, rpc, options) {
47
+ async call(context, rpc, options) {
50
48
  const { procedure, payload } = rpc;
51
49
  const requestHeaders = new Headers();
52
50
  const fetchImpl = this.getFetch();
53
- const url = this.url({ application: client.application, procedure });
54
- if (client.auth)
55
- requestHeaders.set('Authorization', client.auth);
56
- requestHeaders.set('Accept', client.format.contentType);
51
+ const url = this.url({ application: context.application, procedure });
52
+ if (context.auth)
53
+ requestHeaders.set('Authorization', context.auth);
54
+ requestHeaders.set('Accept', context.contentType);
57
55
  let body;
58
- if (payload instanceof ProtocolBlob) {
59
- requestHeaders.set('Content-Type', payload.metadata.type);
56
+ if (rpc.blob) {
57
+ requestHeaders.set('Content-Type', rpc.blob.metadata.type);
60
58
  requestHeaders.set(NEEMATA_BLOB_HEADER, 'true');
59
+ body = rpc.blob.source;
61
60
  }
62
61
  else {
63
- requestHeaders.set('Content-Type', client.format.contentType);
64
- const buffer = client.format.encode(payload);
65
- body = buffer;
62
+ requestHeaders.set('Content-Type', context.contentType);
63
+ body = new Uint8Array(payload.buffer, payload.byteOffset, payload.byteLength);
66
64
  }
67
- if (options._stream_response) {
65
+ if (options.streamResponse) {
68
66
  const response = await fetchImpl(url.toString(), {
69
67
  body,
70
68
  method: 'POST',
@@ -74,16 +72,12 @@ export class HttpTransportClient {
74
72
  keepalive: true,
75
73
  });
76
74
  if (!response.ok) {
77
- try {
78
- const buffer = await response.bytes();
79
- const error = client.format.decode(buffer);
80
- throw new ProtocolError(error.code || ErrorCode.ClientRequestError, error.message || response.statusText, error.data);
81
- }
82
- catch (cause) {
83
- if (cause instanceof ProtocolError)
84
- throw cause;
85
- throw new ProtocolError(ErrorCode.ClientRequestError, `HTTP ${response.status}: ${response.statusText}`);
86
- }
75
+ return {
76
+ type: 'error',
77
+ error: await response.bytes().catch(() => new Uint8Array(0)),
78
+ status: response.status,
79
+ statusText: response.statusText,
80
+ };
87
81
  }
88
82
  if (!response.body) {
89
83
  throw new ProtocolError(ErrorCode.ClientRequestError, 'Empty stream response body');
@@ -161,17 +155,12 @@ export class HttpTransportClient {
161
155
  }
162
156
  }
163
157
  else {
164
- try {
165
- const buffer = await response.bytes();
166
- const error = client.format.decode(buffer);
167
- throw new ProtocolError(error.code || ErrorCode.ClientRequestError, error.message || response.statusText, error.data);
168
- }
169
- catch (cause) {
170
- if (cause instanceof ProtocolError)
171
- throw cause;
172
- // If decoding fails, throw generic error with status info
173
- throw new ProtocolError(ErrorCode.ClientRequestError, `HTTP ${response.status}: ${response.statusText}`);
174
- }
158
+ return {
159
+ type: 'error',
160
+ error: await response.bytes().catch(() => new Uint8Array(0)),
161
+ status: response.status,
162
+ statusText: response.statusText,
163
+ };
175
164
  }
176
165
  }
177
166
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -10,14 +10,14 @@
10
10
  }
11
11
  },
12
12
  "dependencies": {
13
- "@nmtjs/client": "0.15.3",
14
- "@nmtjs/common": "0.15.3",
15
- "@nmtjs/protocol": "0.15.3"
13
+ "@nmtjs/client": "0.16.0-beta.1",
14
+ "@nmtjs/common": "0.16.0-beta.1",
15
+ "@nmtjs/protocol": "0.16.0-beta.1"
16
16
  },
17
17
  "peerDependencies": {
18
- "@nmtjs/common": "0.15.3",
19
- "@nmtjs/protocol": "0.15.3",
20
- "@nmtjs/client": "0.15.3"
18
+ "@nmtjs/client": "0.16.0-beta.1",
19
+ "@nmtjs/common": "0.16.0-beta.1",
20
+ "@nmtjs/protocol": "0.16.0-beta.1"
21
21
  },
22
22
  "files": [
23
23
  "dist",
@@ -25,7 +25,7 @@
25
25
  "LICENSE.md",
26
26
  "README.md"
27
27
  ],
28
- "version": "0.15.3",
28
+ "version": "0.16.0-beta.1",
29
29
  "scripts": {
30
30
  "clean-build": "rm -rf ./dist"
31
31
  }
package/src/index.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import type {
2
- ClientTransport,
3
2
  ClientTransportFactory,
4
- ClientTransportMessageOptions,
5
- ClientTransportRpcParams,
3
+ TransportCallContext,
4
+ TransportCallOptions,
5
+ TransportRpcParams,
6
+ UnidirectionalTransport,
6
7
  } from '@nmtjs/client'
7
8
  import type { ProtocolVersion } from '@nmtjs/protocol'
8
9
  import type { BaseClientFormat } from '@nmtjs/protocol/client'
9
- import { ConnectionType, ErrorCode, ProtocolBlob } from '@nmtjs/protocol'
10
+ import { ConnectionType, ErrorCode } from '@nmtjs/protocol'
10
11
  import { ProtocolError } from '@nmtjs/protocol/client'
11
12
 
12
13
  import { HttpStreamParser } from './http-stream-parser.ts'
@@ -46,9 +47,7 @@ export type HttpClientTransportOptions = {
46
47
  decodeBase64?: DecodeBase64Function
47
48
  }
48
49
 
49
- export class HttpTransportClient
50
- implements ClientTransport<ConnectionType.Unidirectional>
51
- {
50
+ export class HttpTransportClient implements UnidirectionalTransport {
52
51
  type: ConnectionType.Unidirectional = ConnectionType.Unidirectional
53
52
  decodeBase64: DecodeBase64Function
54
53
 
@@ -71,47 +70,42 @@ export class HttpTransportClient
71
70
  return implementation
72
71
  }
73
72
 
74
- url({
75
- procedure,
76
- application,
77
- payload,
78
- }: {
79
- procedure: string
80
- application?: string
81
- payload?: unknown
82
- }) {
73
+ url({ procedure, application }: { procedure: string; application?: string }) {
83
74
  const base = application ? `/${application}/${procedure}` : `/${procedure}`
84
75
  const url = new URL(base, this.options.url)
85
- if (payload) url.searchParams.set('payload', JSON.stringify(payload))
86
76
  return url
87
77
  }
88
78
 
89
79
  async call(
90
- client: ClientTransportRpcParams,
91
- rpc: { callId: number; procedure: string; payload: unknown },
92
- options: ClientTransportMessageOptions,
80
+ context: TransportCallContext,
81
+ rpc: TransportRpcParams,
82
+ options: TransportCallOptions,
93
83
  ) {
94
84
  const { procedure, payload } = rpc
95
85
  const requestHeaders = new Headers()
96
86
  const fetchImpl = this.getFetch()
97
87
 
98
- const url = this.url({ application: client.application, procedure })
88
+ const url = this.url({ application: context.application, procedure })
99
89
 
100
- if (client.auth) requestHeaders.set('Authorization', client.auth)
101
- requestHeaders.set('Accept', client.format.contentType)
90
+ if (context.auth) requestHeaders.set('Authorization', context.auth)
91
+ requestHeaders.set('Accept', context.contentType)
102
92
 
103
93
  let body: any
104
94
 
105
- if (payload instanceof ProtocolBlob) {
106
- requestHeaders.set('Content-Type', payload.metadata.type)
95
+ if (rpc.blob) {
96
+ requestHeaders.set('Content-Type', rpc.blob.metadata.type)
107
97
  requestHeaders.set(NEEMATA_BLOB_HEADER, 'true')
98
+ body = rpc.blob.source
108
99
  } else {
109
- requestHeaders.set('Content-Type', client.format.contentType)
110
- const buffer = client.format.encode(payload)
111
- body = buffer
100
+ requestHeaders.set('Content-Type', context.contentType)
101
+ body = new Uint8Array(
102
+ payload.buffer,
103
+ payload.byteOffset,
104
+ payload.byteLength,
105
+ )
112
106
  }
113
107
 
114
- if (options._stream_response) {
108
+ if (options.streamResponse) {
115
109
  const response = await fetchImpl(url.toString(), {
116
110
  body,
117
111
  method: 'POST',
@@ -122,24 +116,11 @@ export class HttpTransportClient
122
116
  })
123
117
 
124
118
  if (!response.ok) {
125
- try {
126
- const buffer = await response.bytes()
127
- const error = client.format.decode(buffer) as {
128
- code?: string
129
- message?: string
130
- data?: unknown
131
- }
132
- throw new ProtocolError(
133
- error.code || ErrorCode.ClientRequestError,
134
- error.message || response.statusText,
135
- error.data,
136
- )
137
- } catch (cause) {
138
- if (cause instanceof ProtocolError) throw cause
139
- throw new ProtocolError(
140
- ErrorCode.ClientRequestError,
141
- `HTTP ${response.status}: ${response.statusText}`,
142
- )
119
+ return {
120
+ type: 'error' as const,
121
+ error: await response.bytes().catch(() => new Uint8Array(0)),
122
+ status: response.status,
123
+ statusText: response.statusText,
143
124
  }
144
125
  }
145
126
 
@@ -222,25 +203,11 @@ export class HttpTransportClient
222
203
  return { type: 'rpc' as const, result: await response.bytes() }
223
204
  }
224
205
  } else {
225
- try {
226
- const buffer = await response.bytes()
227
- const error = client.format.decode(buffer) as {
228
- code?: string
229
- message?: string
230
- data?: unknown
231
- }
232
- throw new ProtocolError(
233
- error.code || ErrorCode.ClientRequestError,
234
- error.message || response.statusText,
235
- error.data,
236
- )
237
- } catch (cause) {
238
- if (cause instanceof ProtocolError) throw cause
239
- // If decoding fails, throw generic error with status info
240
- throw new ProtocolError(
241
- ErrorCode.ClientRequestError,
242
- `HTTP ${response.status}: ${response.statusText}`,
243
- )
206
+ return {
207
+ type: 'error' as const,
208
+ error: await response.bytes().catch(() => new Uint8Array(0)),
209
+ status: response.status,
210
+ statusText: response.statusText,
244
211
  }
245
212
  }
246
213
  }
@@ -248,9 +215,8 @@ export class HttpTransportClient
248
215
  }
249
216
 
250
217
  export type HttpTransportFactory = ClientTransportFactory<
251
- ConnectionType.Unidirectional,
252
- HttpClientTransportOptions,
253
- HttpTransportClient
218
+ HttpTransportClient,
219
+ HttpClientTransportOptions
254
220
  >
255
221
 
256
222
  export const HttpTransportFactory: HttpTransportFactory = (params, options) => {