@vishalsharma7nov/react-native-proto 0.2.2
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/android/src/main/java/com/vishalsharma7nov/reactnativeproto/ReactNativeProtoNativeGrpcModule.java +142 -0
- package/app.plugin.js +63 -0
- package/bin/react-native-proto.js +956 -0
- package/ios/ReactNativeProtoNativeGrpc.m +129 -0
- package/lib/commonjs/auth.js +72 -0
- package/lib/commonjs/auth.js.map +1 -0
- package/lib/commonjs/client-factory.js +81 -0
- package/lib/commonjs/client-factory.js.map +1 -0
- package/lib/commonjs/codecs.js +41 -0
- package/lib/commonjs/codecs.js.map +1 -0
- package/lib/commonjs/connect/envelope.js +100 -0
- package/lib/commonjs/connect/envelope.js.map +1 -0
- package/lib/commonjs/connect/errors.js +71 -0
- package/lib/commonjs/connect/errors.js.map +1 -0
- package/lib/commonjs/errors.js +54 -0
- package/lib/commonjs/errors.js.map +1 -0
- package/lib/commonjs/generated/create-api.js +29 -0
- package/lib/commonjs/generated/create-api.js.map +1 -0
- package/lib/commonjs/generated/message-types.js +2 -0
- package/lib/commonjs/generated/message-types.js.map +1 -0
- package/lib/commonjs/generated/messages.js +47 -0
- package/lib/commonjs/generated/messages.js.map +1 -0
- package/lib/commonjs/generated/messages.pb.js +2787 -0
- package/lib/commonjs/generated/messages.pb.js.map +1 -0
- package/lib/commonjs/generated/method-map.js +68 -0
- package/lib/commonjs/generated/method-map.js.map +1 -0
- package/lib/commonjs/index.js +283 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/interceptors.js +19 -0
- package/lib/commonjs/interceptors.js.map +1 -0
- package/lib/commonjs/logging.js +54 -0
- package/lib/commonjs/logging.js.map +1 -0
- package/lib/commonjs/metro/index.js +35 -0
- package/lib/commonjs/metro/index.js.map +1 -0
- package/lib/commonjs/metro/transformer.js +33 -0
- package/lib/commonjs/metro/transformer.js.map +1 -0
- package/lib/commonjs/mock-server/index.js +125 -0
- package/lib/commonjs/mock-server/index.js.map +1 -0
- package/lib/commonjs/native-grpc/index.js +242 -0
- package/lib/commonjs/native-grpc/index.js.map +1 -0
- package/lib/commonjs/offline-queue.js +137 -0
- package/lib/commonjs/offline-queue.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/path-templates.js +44 -0
- package/lib/commonjs/path-templates.js.map +1 -0
- package/lib/commonjs/react-query/index.js +30 -0
- package/lib/commonjs/react-query/index.js.map +1 -0
- package/lib/commonjs/streaming.js +251 -0
- package/lib/commonjs/streaming.js.map +1 -0
- package/lib/commonjs/transport.js +323 -0
- package/lib/commonjs/transport.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/validation/zod.js +48 -0
- package/lib/commonjs/validation/zod.js.map +1 -0
- package/lib/commonjs/version-check.js +102 -0
- package/lib/commonjs/version-check.js.map +1 -0
- package/lib/module/auth.js +67 -0
- package/lib/module/auth.js.map +1 -0
- package/lib/module/client-factory.js +77 -0
- package/lib/module/client-factory.js.map +1 -0
- package/lib/module/codecs.js +36 -0
- package/lib/module/codecs.js.map +1 -0
- package/lib/module/connect/envelope.js +93 -0
- package/lib/module/connect/envelope.js.map +1 -0
- package/lib/module/connect/errors.js +65 -0
- package/lib/module/connect/errors.js.map +1 -0
- package/lib/module/errors.js +46 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/generated/create-api.js +13 -0
- package/lib/module/generated/create-api.js.map +1 -0
- package/lib/module/generated/message-types.js +2 -0
- package/lib/module/generated/message-types.js.map +1 -0
- package/lib/module/generated/messages.js +43 -0
- package/lib/module/generated/messages.js.map +1 -0
- package/lib/module/generated/messages.pb.js +2787 -0
- package/lib/module/generated/messages.pb.js.map +1 -0
- package/lib/module/generated/method-map.js +64 -0
- package/lib/module/generated/method-map.js.map +1 -0
- package/lib/module/index.js +53 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/interceptors.js +15 -0
- package/lib/module/interceptors.js.map +1 -0
- package/lib/module/logging.js +50 -0
- package/lib/module/logging.js.map +1 -0
- package/lib/module/metro/index.js +25 -0
- package/lib/module/metro/index.js.map +1 -0
- package/lib/module/metro/transformer.js +29 -0
- package/lib/module/metro/transformer.js.map +1 -0
- package/lib/module/mock-server/index.js +120 -0
- package/lib/module/mock-server/index.js.map +1 -0
- package/lib/module/native-grpc/index.js +233 -0
- package/lib/module/native-grpc/index.js.map +1 -0
- package/lib/module/offline-queue.js +132 -0
- package/lib/module/offline-queue.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/path-templates.js +39 -0
- package/lib/module/path-templates.js.map +1 -0
- package/lib/module/react-query/index.js +25 -0
- package/lib/module/react-query/index.js.map +1 -0
- package/lib/module/streaming.js +246 -0
- package/lib/module/streaming.js.map +1 -0
- package/lib/module/transport.js +316 -0
- package/lib/module/transport.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/validation/zod.js +43 -0
- package/lib/module/validation/zod.js.map +1 -0
- package/lib/module/version-check.js +93 -0
- package/lib/module/version-check.js.map +1 -0
- package/lib/typescript/src/auth.d.ts +26 -0
- package/lib/typescript/src/auth.d.ts.map +1 -0
- package/lib/typescript/src/client-factory.d.ts +7 -0
- package/lib/typescript/src/client-factory.d.ts.map +1 -0
- package/lib/typescript/src/codecs.d.ts +5 -0
- package/lib/typescript/src/codecs.d.ts.map +1 -0
- package/lib/typescript/src/connect/envelope.d.ts +18 -0
- package/lib/typescript/src/connect/envelope.d.ts.map +1 -0
- package/lib/typescript/src/connect/errors.d.ts +11 -0
- package/lib/typescript/src/connect/errors.d.ts.map +1 -0
- package/lib/typescript/src/errors.d.ts +21 -0
- package/lib/typescript/src/errors.d.ts.map +1 -0
- package/lib/typescript/src/generated/create-api.d.ts +34 -0
- package/lib/typescript/src/generated/create-api.d.ts.map +1 -0
- package/lib/typescript/src/generated/message-types.d.ts +54 -0
- package/lib/typescript/src/generated/message-types.d.ts.map +1 -0
- package/lib/typescript/src/generated/messages.d.ts +17 -0
- package/lib/typescript/src/generated/messages.d.ts.map +1 -0
- package/lib/typescript/src/generated/method-map.d.ts +7 -0
- package/lib/typescript/src/generated/method-map.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +53 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/interceptors.d.ts +17 -0
- package/lib/typescript/src/interceptors.d.ts.map +1 -0
- package/lib/typescript/src/logging.d.ts +16 -0
- package/lib/typescript/src/logging.d.ts.map +1 -0
- package/lib/typescript/src/metro/index.d.ts +15 -0
- package/lib/typescript/src/metro/index.d.ts.map +1 -0
- package/lib/typescript/src/metro/transformer.d.ts +16 -0
- package/lib/typescript/src/metro/transformer.d.ts.map +1 -0
- package/lib/typescript/src/mock-server/index.d.ts +27 -0
- package/lib/typescript/src/mock-server/index.d.ts.map +1 -0
- package/lib/typescript/src/native-grpc/index.d.ts +36 -0
- package/lib/typescript/src/native-grpc/index.d.ts.map +1 -0
- package/lib/typescript/src/offline-queue.d.ts +47 -0
- package/lib/typescript/src/offline-queue.d.ts.map +1 -0
- package/lib/typescript/src/path-templates.d.ts +17 -0
- package/lib/typescript/src/path-templates.d.ts.map +1 -0
- package/lib/typescript/src/react-query/index.d.ts +14 -0
- package/lib/typescript/src/react-query/index.d.ts.map +1 -0
- package/lib/typescript/src/streaming.d.ts +10 -0
- package/lib/typescript/src/streaming.d.ts.map +1 -0
- package/lib/typescript/src/transport.d.ts +19 -0
- package/lib/typescript/src/transport.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +78 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/validation/zod.d.ts +33 -0
- package/lib/typescript/src/validation/zod.d.ts.map +1 -0
- package/lib/typescript/src/version-check.d.ts +40 -0
- package/lib/typescript/src/version-check.d.ts.map +1 -0
- package/metro/index.js +23 -0
- package/metro/transformer.js +21 -0
- package/package.json +144 -0
- package/react-native-proto.podspec +15 -0
- package/src/auth.ts +97 -0
- package/src/client-factory.ts +109 -0
- package/src/codecs.ts +42 -0
- package/src/connect/envelope.ts +112 -0
- package/src/connect/errors.ts +86 -0
- package/src/errors.ts +81 -0
- package/src/generated/create-api.ts +40 -0
- package/src/generated/message-types.ts +63 -0
- package/src/generated/messages.pb.js +3207 -0
- package/src/generated/messages.ts +45 -0
- package/src/generated/method-map.ts +71 -0
- package/src/index.ts +113 -0
- package/src/interceptors.ts +32 -0
- package/src/logging.ts +67 -0
- package/src/metro/index.ts +27 -0
- package/src/metro/transformer.ts +38 -0
- package/src/mock-server/index.ts +164 -0
- package/src/native-grpc/index.ts +302 -0
- package/src/offline-queue.ts +160 -0
- package/src/path-templates.ts +65 -0
- package/src/react-query/index.ts +40 -0
- package/src/streaming.ts +326 -0
- package/src/transport.ts +427 -0
- package/src/types.ts +94 -0
- package/src/validation/zod.ts +75 -0
- package/src/version-check.ts +121 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useProtoMutation = useProtoMutation;
|
|
7
|
+
exports.useProtoQuery = useProtoQuery;
|
|
8
|
+
var _reactQuery = require("@tanstack/react-query");
|
|
9
|
+
/**
|
|
10
|
+
* Thin React Query wrapper around a generated unary client method.
|
|
11
|
+
*/
|
|
12
|
+
function useProtoQuery(method, request, options) {
|
|
13
|
+
const queryKey = options?.queryKey ?? ['proto', method.name, request];
|
|
14
|
+
return (0, _reactQuery.useQuery)({
|
|
15
|
+
...options,
|
|
16
|
+
queryKey,
|
|
17
|
+
queryFn: () => method(request)
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Thin React Query mutation wrapper around a generated unary client method.
|
|
23
|
+
*/
|
|
24
|
+
function useProtoMutation(method, options) {
|
|
25
|
+
return (0, _reactQuery.useMutation)({
|
|
26
|
+
...options,
|
|
27
|
+
mutationFn: request => method(request)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactQuery","require","useProtoQuery","method","request","options","queryKey","name","useQuery","queryFn","useProtoMutation","useMutation","mutationFn"],"sourceRoot":"../../../src","sources":["react-query/index.ts"],"mappings":";;;;;;;AAKA,IAAAA,WAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACO,SAASC,aAAaA,CAC3BC,MAA2B,EAC3BC,OAAa,EACbC,OAG2B,EAC3B;EACA,MAAMC,QAAQ,GAAGD,OAAO,EAAEC,QAAQ,IAAI,CAAC,OAAO,EAAEH,MAAM,CAACI,IAAI,EAAEH,OAAO,CAAC;EACrE,OAAO,IAAAI,oBAAQ,EAAC;IACd,GAAGH,OAAO;IACVC,QAAQ;IACRG,OAAO,EAAEA,CAAA,KAAMN,MAAM,CAACC,OAAO;EAC/B,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACO,SAASM,gBAAgBA,CAC9BP,MAA2B,EAC3BE,OAA+C,EAC/C;EACA,OAAO,IAAAM,uBAAW,EAAC;IACjB,GAAGN,OAAO;IACVO,UAAU,EAAGR,OAAa,IAAKD,MAAM,CAACC,OAAO;EAC/C,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.streamCall = streamCall;
|
|
7
|
+
var _envelope = require("./connect/envelope");
|
|
8
|
+
var _errors = require("./connect/errors");
|
|
9
|
+
var _errors2 = require("./errors");
|
|
10
|
+
var _transport = require("./transport");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
+
async function collectRequests(input) {
|
|
13
|
+
if (input.requests) {
|
|
14
|
+
const list = [];
|
|
15
|
+
for await (const item of input.requests) {
|
|
16
|
+
list.push(item);
|
|
17
|
+
}
|
|
18
|
+
return list;
|
|
19
|
+
}
|
|
20
|
+
return [input.request ?? {}];
|
|
21
|
+
}
|
|
22
|
+
function buildConnectRequestBody(entryKind, requests, requestCodec) {
|
|
23
|
+
const useEnvelopedRequest = entryKind === 'clientStreaming' || entryKind === 'bidi' || requests.length > 1;
|
|
24
|
+
if (!useEnvelopedRequest) {
|
|
25
|
+
return requestCodec.encode(requests[0] ?? {});
|
|
26
|
+
}
|
|
27
|
+
const frames = [];
|
|
28
|
+
for (let i = 0; i < requests.length; i += 1) {
|
|
29
|
+
frames.push((0, _envelope.encodeConnectEnvelope)(requestCodec.encode(requests[i] ?? {}), 0));
|
|
30
|
+
}
|
|
31
|
+
if (entryKind === 'clientStreaming' || entryKind === 'bidi') {
|
|
32
|
+
frames.push((0, _envelope.encodeConnectEnvelope)(new Uint8Array(0), _envelope.CONNECT_FLAG_END_STREAM));
|
|
33
|
+
}
|
|
34
|
+
let bodyLength = 0;
|
|
35
|
+
for (let i = 0; i < frames.length; i += 1) {
|
|
36
|
+
bodyLength += frames[i].byteLength;
|
|
37
|
+
}
|
|
38
|
+
const body = new Uint8Array(bodyLength);
|
|
39
|
+
let offset = 0;
|
|
40
|
+
for (let i = 0; i < frames.length; i += 1) {
|
|
41
|
+
body.set(frames[i], offset);
|
|
42
|
+
offset += frames[i].byteLength;
|
|
43
|
+
}
|
|
44
|
+
return body;
|
|
45
|
+
}
|
|
46
|
+
function throwIfEndStreamError(data, rpcPath, status) {
|
|
47
|
+
if (data.byteLength === 0) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const json = JSON.parse((0, _errors.bytesToUtf8)(data));
|
|
51
|
+
const errBody = json.error ?? json;
|
|
52
|
+
if (errBody.code || errBody.message) {
|
|
53
|
+
throw (0, _errors.connectErrorFromJson)(errBody, rpcPath, status);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async function* yieldConnectEnvelopes(envelopes, responseCodec, input, status) {
|
|
57
|
+
for (let i = 0; i < envelopes.length; i += 1) {
|
|
58
|
+
const envelope = envelopes[i];
|
|
59
|
+
if (envelope.flags & _envelope.CONNECT_FLAG_END_STREAM) {
|
|
60
|
+
throwIfEndStreamError(envelope.data, input.entry.rpcPath, status);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const message = responseCodec.decode(envelope.data);
|
|
64
|
+
if (input.onMessage) {
|
|
65
|
+
input.onMessage(message);
|
|
66
|
+
}
|
|
67
|
+
yield message;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function fetchConnectStreamResponse(config, input, requestBody) {
|
|
71
|
+
const path = config.pathForMethod(input.entry);
|
|
72
|
+
const url = `${config.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
|
|
73
|
+
const headers = await (0, _transport.buildHeaders)(config, 'application/connect+proto', input.entry.rpcPath, input.headers);
|
|
74
|
+
headers['Connect-Protocol-Version'] = '1';
|
|
75
|
+
headers.Accept = 'application/connect+proto';
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timeoutId = setTimeout(() => controller.abort(), config.timeoutMs);
|
|
78
|
+
const onAbort = () => controller.abort();
|
|
79
|
+
if (input.signal) {
|
|
80
|
+
if (input.signal.aborted) {
|
|
81
|
+
clearTimeout(timeoutId);
|
|
82
|
+
throw new _errors2.ProtoClientError({
|
|
83
|
+
code: 'ABORTED',
|
|
84
|
+
message: 'Request was aborted before send',
|
|
85
|
+
rpcPath: input.entry.rpcPath
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
input.signal.addEventListener('abort', onAbort, {
|
|
89
|
+
once: true
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
try {
|
|
94
|
+
return await config.fetchImpl(url, {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers,
|
|
97
|
+
body: requestBody,
|
|
98
|
+
signal: controller.signal
|
|
99
|
+
});
|
|
100
|
+
} catch (cause) {
|
|
101
|
+
if (controller.signal.aborted) {
|
|
102
|
+
throw new _errors2.ProtoClientError({
|
|
103
|
+
code: input.signal?.aborted ? 'ABORTED' : 'TIMEOUT',
|
|
104
|
+
message: input.signal?.aborted ? 'Request was aborted' : `Stream timed out after ${config.timeoutMs}ms`,
|
|
105
|
+
rpcPath: input.entry.rpcPath,
|
|
106
|
+
cause,
|
|
107
|
+
retryable: !input.signal?.aborted
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
throw new _errors2.ProtoClientError({
|
|
111
|
+
code: 'NETWORK',
|
|
112
|
+
message: `Network error streaming ${input.entry.rpcPath}`,
|
|
113
|
+
rpcPath: input.entry.rpcPath,
|
|
114
|
+
cause,
|
|
115
|
+
retryable: true
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
} finally {
|
|
119
|
+
clearTimeout(timeoutId);
|
|
120
|
+
if (input.signal) {
|
|
121
|
+
input.signal.removeEventListener('abort', onAbort);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function assertOkConnectResponse(response, rpcPath) {
|
|
126
|
+
if (response.ok) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// Body already consumed by caller via text() if needed — here we only throw generic.
|
|
130
|
+
throw new _errors2.ProtoClientError({
|
|
131
|
+
code: 'HTTP',
|
|
132
|
+
message: `HTTP ${response.status} for ${rpcPath}`,
|
|
133
|
+
status: response.status,
|
|
134
|
+
rpcPath,
|
|
135
|
+
retryable: response.status >= 500
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
async function* streamConnect(config, codecs, input) {
|
|
139
|
+
const {
|
|
140
|
+
entry
|
|
141
|
+
} = input;
|
|
142
|
+
const requestCodec = codecs.get(entry.requestType);
|
|
143
|
+
const responseCodec = codecs.get(entry.responseType);
|
|
144
|
+
if (!requestCodec || !responseCodec) {
|
|
145
|
+
throw new _errors2.ProtoClientError({
|
|
146
|
+
code: 'INVALID_ARGUMENT',
|
|
147
|
+
message: `Missing codec for ${entry.requestType} or ${entry.responseType}`,
|
|
148
|
+
rpcPath: entry.rpcPath
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const requests = await collectRequests(input);
|
|
152
|
+
if ((entry.kind === 'clientStreaming' || entry.kind === 'bidi') && requests.length === 0) {
|
|
153
|
+
throw new _errors2.ProtoClientError({
|
|
154
|
+
code: 'INVALID_ARGUMENT',
|
|
155
|
+
message: 'Client streaming requires at least one request message',
|
|
156
|
+
rpcPath: entry.rpcPath
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
const requestBody = buildConnectRequestBody(entry.kind, requests, requestCodec);
|
|
160
|
+
const response = await fetchConnectStreamResponse(config, input, requestBody);
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
let text = '';
|
|
163
|
+
try {
|
|
164
|
+
text = await response.text();
|
|
165
|
+
} catch {
|
|
166
|
+
text = '';
|
|
167
|
+
}
|
|
168
|
+
const connectErr = (0, _errors.tryParseConnectError)(text, entry.rpcPath, response.status);
|
|
169
|
+
if (connectErr) {
|
|
170
|
+
throw connectErr;
|
|
171
|
+
}
|
|
172
|
+
assertOkConnectResponse(response, entry.rpcPath);
|
|
173
|
+
}
|
|
174
|
+
const contentType = response.headers.get('content-type') || '';
|
|
175
|
+
if (response.body && typeof response.body.getReader === 'function') {
|
|
176
|
+
for await (const envelope of (0, _envelope.readConnectEnvelopeStream)(response.body, config.maxResponseBytes)) {
|
|
177
|
+
if (envelope.flags & _envelope.CONNECT_FLAG_END_STREAM) {
|
|
178
|
+
throwIfEndStreamError(envelope.data, entry.rpcPath, response.status);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const message = responseCodec.decode(envelope.data);
|
|
182
|
+
if (input.onMessage) {
|
|
183
|
+
input.onMessage(message);
|
|
184
|
+
}
|
|
185
|
+
yield message;
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
190
|
+
if (buffer.byteLength > config.maxResponseBytes) {
|
|
191
|
+
throw new _errors2.ProtoClientError({
|
|
192
|
+
code: 'PAYLOAD_TOO_LARGE',
|
|
193
|
+
message: 'Stream response exceeds maxResponseBytes',
|
|
194
|
+
rpcPath: entry.rpcPath
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
const looksLikeRawProto = contentType.includes('proto') && !contentType.includes('connect') && buffer.byteLength > 0 && buffer[0] > 2;
|
|
198
|
+
if (looksLikeRawProto) {
|
|
199
|
+
const message = await (0, _transport.unaryCall)(config, codecs, input);
|
|
200
|
+
if (input.onMessage) {
|
|
201
|
+
input.onMessage(message);
|
|
202
|
+
}
|
|
203
|
+
yield message;
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const envelopes = (0, _envelope.decodeConnectEnvelopes)(buffer);
|
|
207
|
+
if (envelopes.length === 0 && buffer.byteLength > 0) {
|
|
208
|
+
const message = responseCodec.decode(buffer);
|
|
209
|
+
if (input.onMessage) {
|
|
210
|
+
input.onMessage(message);
|
|
211
|
+
}
|
|
212
|
+
yield message;
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
yield* yieldConnectEnvelopes(envelopes, responseCodec, input, response.status);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Streaming helpers.
|
|
220
|
+
* - HTTP+protobuf: unary only
|
|
221
|
+
* - Connect: server-streaming via envelope frames; client/bidi send enveloped requests
|
|
222
|
+
* - native-grpc: bridge streaming when available
|
|
223
|
+
*/
|
|
224
|
+
async function* streamCall(config, codecs, input) {
|
|
225
|
+
const {
|
|
226
|
+
entry
|
|
227
|
+
} = input;
|
|
228
|
+
if (entry.kind === 'unary') {
|
|
229
|
+
throw new _errors2.ProtoClientError({
|
|
230
|
+
code: 'UNSUPPORTED',
|
|
231
|
+
message: `Method ${entry.rpcPath} is unary; use the promise API`,
|
|
232
|
+
rpcPath: entry.rpcPath
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
if (config.transport === 'http') {
|
|
236
|
+
throw new _errors2.ProtoClientError({
|
|
237
|
+
code: 'UNSUPPORTED',
|
|
238
|
+
message: 'Streaming requires transport "connect" or "native-grpc". HTTP+protobuf is unary-only.',
|
|
239
|
+
rpcPath: entry.rpcPath
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
if (config.transport === 'native-grpc') {
|
|
243
|
+
const {
|
|
244
|
+
nativeGrpcStream
|
|
245
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require('./native-grpc')));
|
|
246
|
+
yield* nativeGrpcStream(config, codecs, input);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
yield* streamConnect(config, codecs, input);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_envelope","require","_errors","_errors2","_transport","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","collectRequests","input","requests","list","item","push","request","buildConnectRequestBody","entryKind","requestCodec","useEnvelopedRequest","length","encode","frames","encodeConnectEnvelope","Uint8Array","CONNECT_FLAG_END_STREAM","bodyLength","byteLength","body","offset","throwIfEndStreamError","data","rpcPath","status","json","JSON","parse","bytesToUtf8","errBody","error","code","message","connectErrorFromJson","yieldConnectEnvelopes","envelopes","responseCodec","envelope","flags","entry","decode","onMessage","fetchConnectStreamResponse","config","requestBody","path","pathForMethod","url","baseUrl","startsWith","headers","buildHeaders","Accept","controller","AbortController","timeoutId","setTimeout","abort","timeoutMs","onAbort","signal","aborted","clearTimeout","ProtoClientError","addEventListener","once","fetchImpl","method","cause","retryable","removeEventListener","assertOkConnectResponse","response","ok","streamConnect","codecs","requestType","responseType","kind","text","connectErr","tryParseConnectError","contentType","getReader","readConnectEnvelopeStream","maxResponseBytes","buffer","arrayBuffer","looksLikeRawProto","includes","unaryCall","decodeConnectEnvelopes","streamCall","transport","nativeGrpcStream","Promise","resolve","then"],"sourceRoot":"../../src","sources":["streaming.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildHeaders = buildHeaders;
|
|
7
|
+
exports.resolveConfig = resolveConfig;
|
|
8
|
+
exports.unaryCall = unaryCall;
|
|
9
|
+
var _errors = require("./errors");
|
|
10
|
+
var _errors2 = require("./connect/errors");
|
|
11
|
+
var _interceptors = require("./interceptors");
|
|
12
|
+
var _pathTemplates = require("./path-templates");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
15
|
+
const DEFAULT_MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
|
|
16
|
+
const MAX_HEADER_ENTRIES = 64;
|
|
17
|
+
function resolveConfig(config) {
|
|
18
|
+
if (!config || typeof config !== "object") {
|
|
19
|
+
throw new _errors.ProtoClientError({
|
|
20
|
+
code: "INVALID_CONFIG",
|
|
21
|
+
message: "createClient requires a config object"
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const baseUrl = typeof config.baseUrl === "string" ? config.baseUrl.trim() : "";
|
|
25
|
+
if (!baseUrl) {
|
|
26
|
+
throw new _errors.ProtoClientError({
|
|
27
|
+
code: "INVALID_CONFIG",
|
|
28
|
+
message: "baseUrl is required and must be a non-empty string"
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
// Throws if baseUrl is not absolute
|
|
33
|
+
// eslint-disable-next-line no-new
|
|
34
|
+
new URL(baseUrl);
|
|
35
|
+
} catch (cause) {
|
|
36
|
+
throw new _errors.ProtoClientError({
|
|
37
|
+
code: "INVALID_CONFIG",
|
|
38
|
+
message: `baseUrl must be an absolute URL, received: ${baseUrl}`,
|
|
39
|
+
cause
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const timeoutMs = typeof config.timeoutMs === "number" && config.timeoutMs > 0 ? Math.min(config.timeoutMs, 600_000) : DEFAULT_TIMEOUT_MS;
|
|
43
|
+
const maxResponseBytes = typeof config.maxResponseBytes === "number" && config.maxResponseBytes > 0 ? Math.min(config.maxResponseBytes, 50 * 1024 * 1024) : DEFAULT_MAX_RESPONSE_BYTES;
|
|
44
|
+
const transport = config.transport ?? "http";
|
|
45
|
+
if (transport !== "http" && transport !== "connect" && transport !== "native-grpc") {
|
|
46
|
+
throw new _errors.ProtoClientError({
|
|
47
|
+
code: "INVALID_CONFIG",
|
|
48
|
+
message: `Unsupported transport: ${String(transport)}`
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
52
|
+
if (typeof fetchImpl !== "function") {
|
|
53
|
+
throw new _errors.ProtoClientError({
|
|
54
|
+
code: "INVALID_CONFIG",
|
|
55
|
+
message: "fetch is not available; pass config.fetch"
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
const pathForMethod = config.pathForMethod ?? (0, _pathTemplates.createPathForMethod)(config.pathPreset ?? "connect");
|
|
59
|
+
return {
|
|
60
|
+
baseUrl: baseUrl.replace(/\/$/, ""),
|
|
61
|
+
timeoutMs,
|
|
62
|
+
maxResponseBytes,
|
|
63
|
+
transport,
|
|
64
|
+
getHeaders: config.getHeaders,
|
|
65
|
+
fetchImpl,
|
|
66
|
+
onError: config.onError,
|
|
67
|
+
pathForMethod,
|
|
68
|
+
interceptors: config.interceptors ?? [],
|
|
69
|
+
retryOnUnauthorized: config.retryOnUnauthorized !== false
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function buildHeaders(config, contentType, rpcPath, extra) {
|
|
73
|
+
const headers = {
|
|
74
|
+
"Content-Type": contentType,
|
|
75
|
+
Accept: contentType
|
|
76
|
+
};
|
|
77
|
+
const merge = source => {
|
|
78
|
+
if (!source || typeof source !== "object") return;
|
|
79
|
+
const keys = Object.keys(source);
|
|
80
|
+
if (keys.length > MAX_HEADER_ENTRIES) {
|
|
81
|
+
throw new _errors.ProtoClientError({
|
|
82
|
+
code: "INVALID_ARGUMENT",
|
|
83
|
+
message: `Too many headers (max ${MAX_HEADER_ENTRIES})`,
|
|
84
|
+
rpcPath
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
88
|
+
const key = keys[i];
|
|
89
|
+
if (!key) continue;
|
|
90
|
+
const value = source[key];
|
|
91
|
+
if (typeof value === "string") {
|
|
92
|
+
headers[key] = value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
if (config.getHeaders) {
|
|
97
|
+
let fromConfig;
|
|
98
|
+
try {
|
|
99
|
+
fromConfig = await config.getHeaders();
|
|
100
|
+
} catch (cause) {
|
|
101
|
+
throw new _errors.ProtoClientError({
|
|
102
|
+
code: "INVALID_ARGUMENT",
|
|
103
|
+
message: "getHeaders() failed",
|
|
104
|
+
rpcPath,
|
|
105
|
+
cause
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
merge(fromConfig);
|
|
109
|
+
}
|
|
110
|
+
merge(extra);
|
|
111
|
+
return headers;
|
|
112
|
+
}
|
|
113
|
+
function mapHttpStatus(status, rpcPath, bodyText) {
|
|
114
|
+
if (bodyText) {
|
|
115
|
+
const connectErr = (0, _errors2.tryParseConnectError)(bodyText, rpcPath, status);
|
|
116
|
+
if (connectErr) {
|
|
117
|
+
return connectErr;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const retryable = status === 408 || status === 429 || status >= 500;
|
|
121
|
+
return new _errors.ProtoClientError({
|
|
122
|
+
code: "HTTP",
|
|
123
|
+
message: `HTTP ${status} for ${rpcPath}${bodyText ? `: ${bodyText.slice(0, 200)}` : ""}`,
|
|
124
|
+
status,
|
|
125
|
+
rpcPath,
|
|
126
|
+
retryable
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async function readBodyBytes(response, maxResponseBytes, rpcPath) {
|
|
130
|
+
const lengthHeader = response.headers.get("content-length");
|
|
131
|
+
if (lengthHeader) {
|
|
132
|
+
const declared = Number(lengthHeader);
|
|
133
|
+
if (Number.isFinite(declared) && declared > maxResponseBytes) {
|
|
134
|
+
throw new _errors.ProtoClientError({
|
|
135
|
+
code: "PAYLOAD_TOO_LARGE",
|
|
136
|
+
message: `Response Content-Length ${declared} exceeds maxResponseBytes ${maxResponseBytes}`,
|
|
137
|
+
rpcPath,
|
|
138
|
+
status: response.status
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const buffer = await response.arrayBuffer();
|
|
143
|
+
if (buffer.byteLength > maxResponseBytes) {
|
|
144
|
+
throw new _errors.ProtoClientError({
|
|
145
|
+
code: "PAYLOAD_TOO_LARGE",
|
|
146
|
+
message: `Response size ${buffer.byteLength} exceeds maxResponseBytes ${maxResponseBytes}`,
|
|
147
|
+
rpcPath,
|
|
148
|
+
status: response.status
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return new Uint8Array(buffer);
|
|
152
|
+
}
|
|
153
|
+
async function unaryCallCore(config, codecs, input) {
|
|
154
|
+
const {
|
|
155
|
+
entry,
|
|
156
|
+
request,
|
|
157
|
+
signal
|
|
158
|
+
} = input;
|
|
159
|
+
const rpcPath = entry.rpcPath;
|
|
160
|
+
if (config.transport === "native-grpc") {
|
|
161
|
+
const {
|
|
162
|
+
nativeGrpcUnary
|
|
163
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require("./native-grpc")));
|
|
164
|
+
return nativeGrpcUnary(config, codecs, input);
|
|
165
|
+
}
|
|
166
|
+
const requestCodec = codecs.get(entry.requestType);
|
|
167
|
+
const responseCodec = codecs.get(entry.responseType);
|
|
168
|
+
if (!requestCodec || !responseCodec) {
|
|
169
|
+
throw new _errors.ProtoClientError({
|
|
170
|
+
code: "INVALID_ARGUMENT",
|
|
171
|
+
message: `Missing codec for ${entry.requestType} or ${entry.responseType}`,
|
|
172
|
+
rpcPath
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
let body;
|
|
176
|
+
try {
|
|
177
|
+
body = requestCodec.encode(request ?? {});
|
|
178
|
+
} catch (cause) {
|
|
179
|
+
throw new _errors.ProtoClientError({
|
|
180
|
+
code: "INVALID_ARGUMENT",
|
|
181
|
+
message: `Failed to encode request for ${rpcPath}`,
|
|
182
|
+
rpcPath,
|
|
183
|
+
cause
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
const path = config.pathForMethod(entry);
|
|
187
|
+
const url = `${config.baseUrl}${path.startsWith("/") ? path : `/${path}`}`;
|
|
188
|
+
const contentType = config.transport === "connect" ? "application/proto" : "application/x-protobuf";
|
|
189
|
+
const controller = new AbortController();
|
|
190
|
+
const timeoutId = setTimeout(() => controller.abort(), config.timeoutMs);
|
|
191
|
+
const onAbort = () => controller.abort();
|
|
192
|
+
if (signal) {
|
|
193
|
+
if (signal.aborted) {
|
|
194
|
+
clearTimeout(timeoutId);
|
|
195
|
+
throw new _errors.ProtoClientError({
|
|
196
|
+
code: "ABORTED",
|
|
197
|
+
message: "Request was aborted before send",
|
|
198
|
+
rpcPath
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
signal.addEventListener("abort", onAbort, {
|
|
202
|
+
once: true
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
const headers = await buildHeaders(config, contentType, rpcPath, input.headers);
|
|
207
|
+
if (config.transport === "connect") {
|
|
208
|
+
headers["Connect-Protocol-Version"] = "1";
|
|
209
|
+
}
|
|
210
|
+
let response;
|
|
211
|
+
try {
|
|
212
|
+
response = await config.fetchImpl(url, {
|
|
213
|
+
method: "POST",
|
|
214
|
+
headers,
|
|
215
|
+
body: body,
|
|
216
|
+
signal: controller.signal
|
|
217
|
+
});
|
|
218
|
+
} catch (cause) {
|
|
219
|
+
if (controller.signal.aborted) {
|
|
220
|
+
const abortedByCaller = Boolean(signal?.aborted);
|
|
221
|
+
throw new _errors.ProtoClientError({
|
|
222
|
+
code: abortedByCaller ? "ABORTED" : "TIMEOUT",
|
|
223
|
+
message: abortedByCaller ? "Request was aborted" : `Request timed out after ${config.timeoutMs}ms`,
|
|
224
|
+
rpcPath,
|
|
225
|
+
cause,
|
|
226
|
+
retryable: !abortedByCaller
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
throw new _errors.ProtoClientError({
|
|
230
|
+
code: "NETWORK",
|
|
231
|
+
message: `Network error calling ${rpcPath}`,
|
|
232
|
+
rpcPath,
|
|
233
|
+
cause,
|
|
234
|
+
retryable: true
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (!response.ok) {
|
|
238
|
+
let text = "";
|
|
239
|
+
try {
|
|
240
|
+
text = await response.text();
|
|
241
|
+
} catch {
|
|
242
|
+
text = "";
|
|
243
|
+
}
|
|
244
|
+
throw mapHttpStatus(response.status, rpcPath, text);
|
|
245
|
+
}
|
|
246
|
+
const bytes = await readBodyBytes(response, config.maxResponseBytes, rpcPath);
|
|
247
|
+
|
|
248
|
+
// Connect unary may still return raw proto; if JSON end-stream sneaks in, map it.
|
|
249
|
+
const contentTypeHeader = response.headers.get("content-type") || "";
|
|
250
|
+
if (config.transport === "connect" && contentTypeHeader.includes("json") && bytes.byteLength > 0) {
|
|
251
|
+
const text = new TextDecoder().decode(bytes);
|
|
252
|
+
const connectErr = (0, _errors2.tryParseConnectError)(text, rpcPath, response.status);
|
|
253
|
+
if (connectErr) {
|
|
254
|
+
throw connectErr;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
return responseCodec.decode(bytes);
|
|
259
|
+
} catch (cause) {
|
|
260
|
+
throw new _errors.ProtoClientError({
|
|
261
|
+
code: "DECODE",
|
|
262
|
+
message: `Failed to decode response for ${rpcPath}`,
|
|
263
|
+
rpcPath,
|
|
264
|
+
cause,
|
|
265
|
+
status: response.status
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
} finally {
|
|
269
|
+
clearTimeout(timeoutId);
|
|
270
|
+
if (signal) {
|
|
271
|
+
signal.removeEventListener("abort", onAbort);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function notifyOnError(config, error) {
|
|
276
|
+
if (!config.onError) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
try {
|
|
280
|
+
config.onError(error);
|
|
281
|
+
} catch {
|
|
282
|
+
// Logging hooks must not replace throw behavior
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
async function unaryCall(config, codecs, input) {
|
|
286
|
+
const {
|
|
287
|
+
entry,
|
|
288
|
+
request,
|
|
289
|
+
signal
|
|
290
|
+
} = input;
|
|
291
|
+
const rpcPath = entry.rpcPath;
|
|
292
|
+
const core = async ctx => unaryCallCore(config, codecs, {
|
|
293
|
+
entry: ctx.entry,
|
|
294
|
+
request: ctx.request,
|
|
295
|
+
signal: ctx.signal,
|
|
296
|
+
headers: ctx.headers
|
|
297
|
+
});
|
|
298
|
+
const pipeline = config.interceptors.length > 0 ? (0, _interceptors.composeInterceptors)(config.interceptors, core) : core;
|
|
299
|
+
try {
|
|
300
|
+
return await pipeline({
|
|
301
|
+
entry,
|
|
302
|
+
request: request ?? {},
|
|
303
|
+
headers: input.headers ?? {},
|
|
304
|
+
signal
|
|
305
|
+
});
|
|
306
|
+
} catch (error) {
|
|
307
|
+
const wrapped = (0, _errors.wrapUnknownError)(error, rpcPath);
|
|
308
|
+
|
|
309
|
+
// Optional transport-level single retry on 401 when no auth interceptor handled it
|
|
310
|
+
if (config.retryOnUnauthorized && config.interceptors.length === 0 && wrapped.status === 401 && config.getHeaders) {
|
|
311
|
+
try {
|
|
312
|
+
return await unaryCallCore(config, codecs, input);
|
|
313
|
+
} catch (retryError) {
|
|
314
|
+
const retryWrapped = (0, _errors.wrapUnknownError)(retryError, rpcPath);
|
|
315
|
+
notifyOnError(config, retryWrapped);
|
|
316
|
+
throw retryWrapped;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
notifyOnError(config, wrapped);
|
|
320
|
+
throw wrapped;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","_errors2","_interceptors","_pathTemplates","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_TIMEOUT_MS","DEFAULT_MAX_RESPONSE_BYTES","MAX_HEADER_ENTRIES","resolveConfig","config","ProtoClientError","code","message","baseUrl","trim","URL","cause","timeoutMs","Math","min","maxResponseBytes","transport","String","fetchImpl","fetch","globalThis","pathForMethod","createPathForMethod","pathPreset","replace","getHeaders","onError","interceptors","retryOnUnauthorized","buildHeaders","contentType","rpcPath","extra","headers","Accept","merge","source","keys","length","key","value","fromConfig","mapHttpStatus","status","bodyText","connectErr","tryParseConnectError","retryable","slice","readBodyBytes","response","lengthHeader","declared","Number","isFinite","buffer","arrayBuffer","byteLength","Uint8Array","unaryCallCore","codecs","input","entry","request","signal","nativeGrpcUnary","Promise","resolve","then","requestCodec","requestType","responseCodec","responseType","body","encode","path","url","startsWith","controller","AbortController","timeoutId","setTimeout","abort","onAbort","aborted","clearTimeout","addEventListener","once","method","abortedByCaller","Boolean","ok","text","bytes","contentTypeHeader","includes","TextDecoder","decode","removeEventListener","notifyOnError","error","unaryCall","core","ctx","pipeline","composeInterceptors","wrapped","wrapUnknownError","retryError","retryWrapped"],"sourceRoot":"../../src","sources":["transport.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|