@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,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.withZodValidation = withZodValidation;
|
|
7
|
+
exports.wrapCodecRegistryWithZod = wrapCodecRegistryWithZod;
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a protobuf codec with optional Zod (or Zod-compatible) request/response
|
|
10
|
+
* validation. Peer dependency: install `zod` in your app.
|
|
11
|
+
*/
|
|
12
|
+
function withZodValidation(codec, options) {
|
|
13
|
+
return {
|
|
14
|
+
encode(message) {
|
|
15
|
+
const value = options.request ? options.request.parse(message) : message;
|
|
16
|
+
return codec.encode(value);
|
|
17
|
+
},
|
|
18
|
+
decode(bytes) {
|
|
19
|
+
const decoded = codec.decode(bytes);
|
|
20
|
+
return options.response ? options.response.parse(decoded) : decoded;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Apply Zod schemas to selected type names in a codec registry.
|
|
27
|
+
*/
|
|
28
|
+
function wrapCodecRegistryWithZod(registry, schemas) {
|
|
29
|
+
return {
|
|
30
|
+
has(typeName) {
|
|
31
|
+
return registry.has(typeName);
|
|
32
|
+
},
|
|
33
|
+
get(typeName) {
|
|
34
|
+
const base = registry.get(typeName);
|
|
35
|
+
if (!base) return undefined;
|
|
36
|
+
const entry = schemas[typeName];
|
|
37
|
+
if (!entry) return base;
|
|
38
|
+
if ("parse" in entry && typeof entry.parse === "function") {
|
|
39
|
+
return withZodValidation(base, {
|
|
40
|
+
request: entry,
|
|
41
|
+
response: entry
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return withZodValidation(base, entry);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["withZodValidation","codec","options","encode","message","value","request","parse","decode","bytes","decoded","response","wrapCodecRegistryWithZod","registry","schemas","has","typeName","get","base","undefined","entry"],"sourceRoot":"../../../src","sources":["validation/zod.ts"],"mappings":";;;;;;;AASA;AACA;AACA;AACA;AACO,SAASA,iBAAiBA,CAC/BC,KAAmB,EACnBC,OAGC,EACa;EACd,OAAO;IACLC,MAAMA,CAACC,OAAO,EAAE;MACd,MAAMC,KAAK,GAAGH,OAAO,CAACI,OAAO,GAAGJ,OAAO,CAACI,OAAO,CAACC,KAAK,CAACH,OAAO,CAAC,GAAGA,OAAO;MACxE,OAAOH,KAAK,CAACE,MAAM,CAACE,KAAgC,CAAC;IACvD,CAAC;IACDG,MAAMA,CAACC,KAAK,EAAE;MACZ,MAAMC,OAAO,GAAGT,KAAK,CAACO,MAAM,CAACC,KAAK,CAAC;MACnC,OAAOP,OAAO,CAACS,QAAQ,GAClBT,OAAO,CAACS,QAAQ,CAACJ,KAAK,CAACG,OAAO,CAAC,GAChCA,OAAO;IACb;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASE,wBAAwBA,CACtCC,QAGC,EACDC,OAGC,EAID;EACA,OAAO;IACLC,GAAGA,CAACC,QAAQ,EAAE;MACZ,OAAOH,QAAQ,CAACE,GAAG,CAACC,QAAQ,CAAC;IAC/B,CAAC;IACDC,GAAGA,CAACD,QAAQ,EAAE;MACZ,MAAME,IAAI,GAAGL,QAAQ,CAACI,GAAG,CAACD,QAAQ,CAAC;MACnC,IAAI,CAACE,IAAI,EAAE,OAAOC,SAAS;MAC3B,MAAMC,KAAK,GAAGN,OAAO,CAACE,QAAQ,CAAC;MAC/B,IAAI,CAACI,KAAK,EAAE,OAAOF,IAAI;MACvB,IAAI,OAAO,IAAIE,KAAK,IAAI,OAAOA,KAAK,CAACb,KAAK,KAAK,UAAU,EAAE;QACzD,OAAOP,iBAAiB,CAACkB,IAAI,EAAE;UAC7BZ,OAAO,EAAEc,KAA+C;UACxDT,QAAQ,EAAES;QACZ,CAAC,CAAC;MACJ;MACA,OAAOpB,iBAAiB,CACtBkB,IAAI,EACJE,KAIF,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SERVER_MIN_CLIENT_HEADER = exports.METHOD_MAP_HASH_HEADER = exports.CLIENT_VERSION_HEADER = void 0;
|
|
7
|
+
exports.assertServerMinClient = assertServerMinClient;
|
|
8
|
+
exports.compareDottedVersions = compareDottedVersions;
|
|
9
|
+
exports.createVersionAwareFetch = createVersionAwareFetch;
|
|
10
|
+
exports.createVersionInterceptor = createVersionInterceptor;
|
|
11
|
+
exports.versionHeaders = versionHeaders;
|
|
12
|
+
var _errors = require("./errors");
|
|
13
|
+
const CLIENT_VERSION_HEADER = exports.CLIENT_VERSION_HEADER = 'X-React-Native-Proto-Client-Version';
|
|
14
|
+
const SERVER_MIN_CLIENT_HEADER = exports.SERVER_MIN_CLIENT_HEADER = 'X-React-Native-Proto-Min-Client-Version';
|
|
15
|
+
const METHOD_MAP_HASH_HEADER = exports.METHOD_MAP_HASH_HEADER = 'X-React-Native-Proto-Method-Map-Hash';
|
|
16
|
+
/** Simple dotted numeric compare: 1.2.0 vs 1.10.0. Non-numeric falls back to string cmp. */
|
|
17
|
+
function compareDottedVersions(a, b) {
|
|
18
|
+
const pa = a.split('.').map(p => Number.parseInt(p, 10));
|
|
19
|
+
const pb = b.split('.').map(p => Number.parseInt(p, 10));
|
|
20
|
+
if (pa.some(n => Number.isNaN(n)) || pb.some(n => Number.isNaN(n))) {
|
|
21
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
22
|
+
}
|
|
23
|
+
const len = Math.max(pa.length, pb.length);
|
|
24
|
+
for (let i = 0; i < len; i += 1) {
|
|
25
|
+
const av = pa[i] ?? 0;
|
|
26
|
+
const bv = pb[i] ?? 0;
|
|
27
|
+
if (av < bv) return -1;
|
|
28
|
+
if (av > bv) return 1;
|
|
29
|
+
}
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
function versionHeaders(options) {
|
|
33
|
+
const headers = {
|
|
34
|
+
[CLIENT_VERSION_HEADER]: options.clientVersion
|
|
35
|
+
};
|
|
36
|
+
if (options.methodMapHash) {
|
|
37
|
+
headers[METHOD_MAP_HASH_HEADER] = options.methodMapHash;
|
|
38
|
+
}
|
|
39
|
+
return headers;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Attaches client version headers. Pair with `assertServerMinClient` after responses
|
|
44
|
+
* if you read response headers in a custom transport; for the default HTTP path,
|
|
45
|
+
* use `createVersionInterceptor` which only sends headers (response check needs
|
|
46
|
+
* fetch wrapper — see createVersionAwareFetch).
|
|
47
|
+
*/
|
|
48
|
+
function createVersionInterceptor(options) {
|
|
49
|
+
return async (ctx, next) => {
|
|
50
|
+
const headers = {
|
|
51
|
+
...ctx.headers,
|
|
52
|
+
...versionHeaders({
|
|
53
|
+
clientVersion: options.clientVersion,
|
|
54
|
+
methodMapHash: options.methodMapHash
|
|
55
|
+
})
|
|
56
|
+
};
|
|
57
|
+
return next({
|
|
58
|
+
...ctx,
|
|
59
|
+
headers
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function assertServerMinClient(serverMinClientVersion, options) {
|
|
64
|
+
if (!serverMinClientVersion) return;
|
|
65
|
+
const compare = options.compareVersions ?? compareDottedVersions;
|
|
66
|
+
if (compare(options.clientVersion, serverMinClientVersion) < 0) {
|
|
67
|
+
const info = {
|
|
68
|
+
clientVersion: options.clientVersion,
|
|
69
|
+
serverMinClientVersion
|
|
70
|
+
};
|
|
71
|
+
if (options.onMismatch) {
|
|
72
|
+
options.onMismatch(info);
|
|
73
|
+
}
|
|
74
|
+
if (options.mode === 'warn') {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
throw new _errors.ProtoClientError({
|
|
78
|
+
code: 'INVALID_CONFIG',
|
|
79
|
+
message: `Client version ${options.clientVersion} is older than server minimum ${serverMinClientVersion}`
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Wraps fetch to validate SERVER_MIN_CLIENT_HEADER on each response.
|
|
86
|
+
*/
|
|
87
|
+
function createVersionAwareFetch(baseFetch, options) {
|
|
88
|
+
return async (input, init) => {
|
|
89
|
+
const headers = new Headers(init?.headers);
|
|
90
|
+
headers.set(CLIENT_VERSION_HEADER, options.clientVersion);
|
|
91
|
+
if (options.methodMapHash) {
|
|
92
|
+
headers.set(METHOD_MAP_HASH_HEADER, options.methodMapHash);
|
|
93
|
+
}
|
|
94
|
+
const response = await baseFetch(input, {
|
|
95
|
+
...init,
|
|
96
|
+
headers
|
|
97
|
+
});
|
|
98
|
+
assertServerMinClient(response.headers.get(SERVER_MIN_CLIENT_HEADER), options);
|
|
99
|
+
return response;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","CLIENT_VERSION_HEADER","exports","SERVER_MIN_CLIENT_HEADER","METHOD_MAP_HASH_HEADER","compareDottedVersions","a","b","pa","split","map","p","Number","parseInt","pb","some","n","isNaN","len","Math","max","length","i","av","bv","versionHeaders","options","headers","clientVersion","methodMapHash","createVersionInterceptor","ctx","next","assertServerMinClient","serverMinClientVersion","compare","compareVersions","info","onMismatch","mode","ProtoClientError","code","message","createVersionAwareFetch","baseFetch","input","init","Headers","set","response","get"],"sourceRoot":"../../src","sources":["version-check.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { isProtoClientError } from "./errors";
|
|
4
|
+
function defaultIsUnauthorized(error) {
|
|
5
|
+
if (!isProtoClientError(error)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
if (error.status === 401) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
const msg = error.message.toLowerCase();
|
|
12
|
+
return error.code === "RPC" && (msg.includes("unauthenticated") || msg.includes("unauthorized"));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Adds Authorization (or custom) headers and optionally retries once after refresh.
|
|
17
|
+
*/
|
|
18
|
+
export function createAuthInterceptor(options) {
|
|
19
|
+
const headerName = options.headerName ?? "Authorization";
|
|
20
|
+
const scheme = options.scheme ?? "Bearer ";
|
|
21
|
+
const isUnauthorized = options.isUnauthorized ?? defaultIsUnauthorized;
|
|
22
|
+
return async (ctx, next) => {
|
|
23
|
+
const applyToken = (headers, token) => {
|
|
24
|
+
if (!token) {
|
|
25
|
+
return headers;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
...headers,
|
|
29
|
+
[headerName]: token.startsWith(scheme) ? token : `${scheme}${token}`
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const token = await options.getAccessToken();
|
|
33
|
+
const firstCtx = {
|
|
34
|
+
...ctx,
|
|
35
|
+
headers: applyToken(ctx.headers, token)
|
|
36
|
+
};
|
|
37
|
+
try {
|
|
38
|
+
return await next(firstCtx);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
if (!options.refreshAccessToken || !isUnauthorized(error)) {
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
const refreshed = await options.refreshAccessToken();
|
|
44
|
+
const retryCtx = {
|
|
45
|
+
...ctx,
|
|
46
|
+
headers: applyToken(ctx.headers, refreshed)
|
|
47
|
+
};
|
|
48
|
+
return next(retryCtx);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Simple helper that only injects a static or async token (no refresh).
|
|
55
|
+
*/
|
|
56
|
+
export function createBearerTokenHeaders(getToken) {
|
|
57
|
+
return async () => {
|
|
58
|
+
const token = await getToken();
|
|
59
|
+
if (!token) {
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
Authorization: token.startsWith('Bearer ') ? token : `Bearer ${token}`
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isProtoClientError","defaultIsUnauthorized","error","status","msg","message","toLowerCase","code","includes","createAuthInterceptor","options","headerName","scheme","isUnauthorized","ctx","next","applyToken","headers","token","startsWith","getAccessToken","firstCtx","refreshAccessToken","refreshed","retryCtx","createBearerTokenHeaders","getToken","Authorization"],"sourceRoot":"../../src","sources":["auth.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,UAAU;AAoB7C,SAASC,qBAAqBA,CAACC,KAAc,EAAW;EACtD,IAAI,CAACF,kBAAkB,CAACE,KAAK,CAAC,EAAE;IAC9B,OAAO,KAAK;EACd;EACA,IAAIA,KAAK,CAACC,MAAM,KAAK,GAAG,EAAE;IACxB,OAAO,IAAI;EACb;EACA,MAAMC,GAAG,GAAGF,KAAK,CAACG,OAAO,CAACC,WAAW,CAAC,CAAC;EACvC,OACEJ,KAAK,CAACK,IAAI,KAAK,KAAK,KACnBH,GAAG,CAACI,QAAQ,CAAC,iBAAiB,CAAC,IAAIJ,GAAG,CAACI,QAAQ,CAAC,cAAc,CAAC,CAAC;AAErE;;AAEA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CACnCC,OAA+B,EAClB;EACb,MAAMC,UAAU,GAAGD,OAAO,CAACC,UAAU,IAAI,eAAe;EACxD,MAAMC,MAAM,GAAGF,OAAO,CAACE,MAAM,IAAI,SAAS;EAC1C,MAAMC,cAAc,GAAGH,OAAO,CAACG,cAAc,IAAIZ,qBAAqB;EAEtE,OAAO,OAAOa,GAAG,EAAEC,IAAI,KAAK;IAC1B,MAAMC,UAAU,GAAGA,CACjBC,OAAkB,EAClBC,KAAoB,KACN;MACd,IAAI,CAACA,KAAK,EAAE;QACV,OAAOD,OAAO;MAChB;MACA,OAAO;QACL,GAAGA,OAAO;QACV,CAACN,UAAU,GAAGO,KAAK,CAACC,UAAU,CAACP,MAAM,CAAC,GAAGM,KAAK,GAAG,GAAGN,MAAM,GAAGM,KAAK;MACpE,CAAC;IACH,CAAC;IAED,MAAMA,KAAK,GAAG,MAAMR,OAAO,CAACU,cAAc,CAAC,CAAC;IAC5C,MAAMC,QAAQ,GAAG;MACf,GAAGP,GAAG;MACNG,OAAO,EAAED,UAAU,CAACF,GAAG,CAACG,OAAO,EAAEC,KAAK;IACxC,CAAC;IAED,IAAI;MACF,OAAO,MAAMH,IAAI,CAACM,QAAQ,CAAC;IAC7B,CAAC,CAAC,OAAOnB,KAAK,EAAE;MACd,IAAI,CAACQ,OAAO,CAACY,kBAAkB,IAAI,CAACT,cAAc,CAACX,KAAK,CAAC,EAAE;QACzD,MAAMA,KAAK;MACb;MAEA,MAAMqB,SAAS,GAAG,MAAMb,OAAO,CAACY,kBAAkB,CAAC,CAAC;MACpD,MAAME,QAAQ,GAAG;QACf,GAAGV,GAAG;QACNG,OAAO,EAAED,UAAU,CAACF,GAAG,CAACG,OAAO,EAAEM,SAAS;MAC5C,CAAC;MACD,OAAOR,IAAI,CAACS,QAAQ,CAAC;IACvB;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CACtCC,QAAsD,EAC5B;EAC1B,OAAO,YAAgC;IACrC,MAAMR,KAAK,GAAG,MAAMQ,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAACR,KAAK,EAAE;MACV,OAAO,CAAC,CAAC;IACX;IACA,OAAO;MACLS,aAAa,EAAET,KAAK,CAACC,UAAU,CAAC,SAAS,CAAC,GAAGD,KAAK,GAAG,UAAUA,KAAK;IACtE,CAAC;EACH,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ProtoClientError } from './errors';
|
|
4
|
+
import { streamCall } from './streaming';
|
|
5
|
+
import { resolveConfig, unaryCall } from './transport';
|
|
6
|
+
const MAX_METHODS = 2_000;
|
|
7
|
+
function toCamelServiceName(serviceName) {
|
|
8
|
+
if (!serviceName) {
|
|
9
|
+
return serviceName;
|
|
10
|
+
}
|
|
11
|
+
return serviceName.charAt(0).toLowerCase() + serviceName.slice(1);
|
|
12
|
+
}
|
|
13
|
+
function assertMethodMap(methodMap) {
|
|
14
|
+
if (!Array.isArray(methodMap)) {
|
|
15
|
+
throw new ProtoClientError({
|
|
16
|
+
code: 'INVALID_CONFIG',
|
|
17
|
+
message: 'methodMap must be an array'
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (methodMap.length === 0) {
|
|
21
|
+
throw new ProtoClientError({
|
|
22
|
+
code: 'INVALID_CONFIG',
|
|
23
|
+
message: 'methodMap is empty — generate from your .proto files first'
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (methodMap.length > MAX_METHODS) {
|
|
27
|
+
throw new ProtoClientError({
|
|
28
|
+
code: 'INVALID_CONFIG',
|
|
29
|
+
message: `methodMap exceeds max methods (${MAX_METHODS})`
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function createMethodHandler(entry, config, codecs) {
|
|
34
|
+
if (entry.kind === 'unary') {
|
|
35
|
+
return async (request = {}, options) => unaryCall(config, codecs, {
|
|
36
|
+
entry,
|
|
37
|
+
request,
|
|
38
|
+
signal: options?.signal
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return (request = {}, options) => streamCall(config, codecs, {
|
|
42
|
+
entry,
|
|
43
|
+
request,
|
|
44
|
+
signal: options?.signal
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Builds a dynamic client from a generated method map and message codecs.
|
|
50
|
+
* Apps typically call `createClient(config)` which uses the package defaults.
|
|
51
|
+
*/
|
|
52
|
+
export function createClientFromMap(config, methodMap, codecs) {
|
|
53
|
+
const resolved = resolveConfig(config);
|
|
54
|
+
assertMethodMap(methodMap);
|
|
55
|
+
const services = {};
|
|
56
|
+
for (let i = 0; i < methodMap.length; i += 1) {
|
|
57
|
+
const entry = methodMap[i];
|
|
58
|
+
if (!entry) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const serviceKey = toCamelServiceName(entry.serviceName);
|
|
62
|
+
const existing = services[serviceKey] ?? {};
|
|
63
|
+
const methodKey = entry.methodName.charAt(0).toLowerCase() + entry.methodName.slice(1);
|
|
64
|
+
existing[methodKey] = createMethodHandler(entry, resolved, codecs);
|
|
65
|
+
services[serviceKey] = existing;
|
|
66
|
+
}
|
|
67
|
+
return Object.assign(services, {
|
|
68
|
+
config: {
|
|
69
|
+
...config,
|
|
70
|
+
baseUrl: resolved.baseUrl,
|
|
71
|
+
timeoutMs: resolved.timeoutMs,
|
|
72
|
+
maxResponseBytes: resolved.maxResponseBytes,
|
|
73
|
+
transport: resolved.transport
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=client-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ProtoClientError","streamCall","resolveConfig","unaryCall","MAX_METHODS","toCamelServiceName","serviceName","charAt","toLowerCase","slice","assertMethodMap","methodMap","Array","isArray","code","message","length","createMethodHandler","entry","config","codecs","kind","request","options","signal","createClientFromMap","resolved","services","i","serviceKey","existing","methodKey","methodName","Object","assign","baseUrl","timeoutMs","maxResponseBytes","transport"],"sourceRoot":"../../src","sources":["client-factory.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export function codecFromType(type) {
|
|
4
|
+
return {
|
|
5
|
+
encode(message) {
|
|
6
|
+
const value = type.fromObject ? type.fromObject(message) : type.create(message);
|
|
7
|
+
return type.encode(value).finish();
|
|
8
|
+
},
|
|
9
|
+
decode(bytes) {
|
|
10
|
+
return type.decode(bytes);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function createCodecRegistry(types) {
|
|
15
|
+
const map = new Map();
|
|
16
|
+
const keys = Object.keys(types);
|
|
17
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
18
|
+
const key = keys[i];
|
|
19
|
+
if (!key) {
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const type = types[key];
|
|
23
|
+
if (type) {
|
|
24
|
+
map.set(key, codecFromType(type));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
get(typeName) {
|
|
29
|
+
return map.get(typeName);
|
|
30
|
+
},
|
|
31
|
+
has(typeName) {
|
|
32
|
+
return map.has(typeName);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=codecs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["codecFromType","type","encode","message","value","fromObject","create","finish","decode","bytes","createCodecRegistry","types","map","Map","keys","Object","i","length","key","set","get","typeName","has"],"sourceRoot":"../../src","sources":["codecs.ts"],"mappings":";;AAGA,OAAO,SAASA,aAAaA,CAACC,IAAsB,EAAgB;EAClE,OAAO;IACLC,MAAMA,CAACC,OAAgC,EAAE;MACvC,MAAMC,KAAK,GAAGH,IAAI,CAACI,UAAU,GACzBJ,IAAI,CAACI,UAAU,CAACF,OAAO,CAAC,GACxBF,IAAI,CAACK,MAAM,CAACH,OAAO,CAAC;MACxB,OAAOF,IAAI,CAACC,MAAM,CAACE,KAAK,CAAC,CAACG,MAAM,CAAC,CAAC;IACpC,CAAC;IACDC,MAAMA,CAACC,KAAiB,EAAE;MACxB,OAAOR,IAAI,CAACO,MAAM,CAACC,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;AAEA,OAAO,SAASC,mBAAmBA,CACjCC,KAA8C,EAC/B;EACf,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAuB,CAAC;EAC3C,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACH,KAAK,CAAC;EAC/B,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACvC,MAAME,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC;IACnB,IAAI,CAACE,GAAG,EAAE;MACR;IACF;IACA,MAAMjB,IAAI,GAAGU,KAAK,CAACO,GAAG,CAAC;IACvB,IAAIjB,IAAI,EAAE;MACRW,GAAG,CAACO,GAAG,CAACD,GAAG,EAAElB,aAAa,CAACC,IAAI,CAAC,CAAC;IACnC;EACF;EAEA,OAAO;IACLmB,GAAGA,CAACC,QAAgB,EAAE;MACpB,OAAOT,GAAG,CAACQ,GAAG,CAACC,QAAQ,CAAC;IAC1B,CAAC;IACDC,GAAGA,CAACD,QAAgB,EAAE;MACpB,OAAOT,GAAG,CAACU,GAAG,CAACD,QAAQ,CAAC;IAC1B;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Connect protocol envelope framing (unary streaming / server streaming).
|
|
5
|
+
* Spec: 1 flag byte + 4-byte big-endian length + payload.
|
|
6
|
+
*
|
|
7
|
+
* Flag bits:
|
|
8
|
+
* - 0x01 compressed
|
|
9
|
+
* - 0x02 end-stream (JSON trailer / error)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const CONNECT_FLAG_COMPRESSED = 0x01;
|
|
13
|
+
export const CONNECT_FLAG_END_STREAM = 0x02;
|
|
14
|
+
export function encodeConnectEnvelope(data, flags = 0) {
|
|
15
|
+
const out = new Uint8Array(5 + data.byteLength);
|
|
16
|
+
out[0] = flags & 0xff;
|
|
17
|
+
const len = data.byteLength;
|
|
18
|
+
out[1] = len >>> 24 & 0xff;
|
|
19
|
+
out[2] = len >>> 16 & 0xff;
|
|
20
|
+
out[3] = len >>> 8 & 0xff;
|
|
21
|
+
out[4] = len & 0xff;
|
|
22
|
+
out.set(data, 5);
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
export function decodeConnectEnvelopes(buffer) {
|
|
26
|
+
const envelopes = [];
|
|
27
|
+
let offset = 0;
|
|
28
|
+
while (offset + 5 <= buffer.byteLength) {
|
|
29
|
+
const flags = buffer[offset];
|
|
30
|
+
const len = (buffer[offset + 1] << 24 | buffer[offset + 2] << 16 | buffer[offset + 3] << 8 | buffer[offset + 4]) >>> 0;
|
|
31
|
+
offset += 5;
|
|
32
|
+
if (offset + len > buffer.byteLength) {
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
envelopes.push({
|
|
36
|
+
flags,
|
|
37
|
+
data: buffer.subarray(offset, offset + len)
|
|
38
|
+
});
|
|
39
|
+
offset += len;
|
|
40
|
+
}
|
|
41
|
+
return envelopes;
|
|
42
|
+
}
|
|
43
|
+
export async function* readConnectEnvelopeStream(body, maxBytes) {
|
|
44
|
+
if (!body) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const reader = body.getReader();
|
|
48
|
+
let pending = new Uint8Array(0);
|
|
49
|
+
let total = 0;
|
|
50
|
+
const append = chunk => {
|
|
51
|
+
total += chunk.byteLength;
|
|
52
|
+
if (total > maxBytes) {
|
|
53
|
+
throw new Error(`Connect stream exceeded maxResponseBytes (${maxBytes})`);
|
|
54
|
+
}
|
|
55
|
+
const next = new Uint8Array(pending.byteLength + chunk.byteLength);
|
|
56
|
+
next.set(pending, 0);
|
|
57
|
+
next.set(chunk, pending.byteLength);
|
|
58
|
+
pending = next;
|
|
59
|
+
};
|
|
60
|
+
try {
|
|
61
|
+
while (true) {
|
|
62
|
+
while (pending.byteLength >= 5) {
|
|
63
|
+
const len = (pending[1] << 24 | pending[2] << 16 | pending[3] << 8 | pending[4]) >>> 0;
|
|
64
|
+
if (pending.byteLength < 5 + len) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
const flags = pending[0];
|
|
68
|
+
const data = pending.subarray(5, 5 + len);
|
|
69
|
+
pending = pending.subarray(5 + len);
|
|
70
|
+
yield {
|
|
71
|
+
flags,
|
|
72
|
+
data
|
|
73
|
+
};
|
|
74
|
+
if (flags & CONNECT_FLAG_END_STREAM) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const {
|
|
79
|
+
done,
|
|
80
|
+
value
|
|
81
|
+
} = await reader.read();
|
|
82
|
+
if (done) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
if (value) {
|
|
86
|
+
append(value);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
} finally {
|
|
90
|
+
reader.releaseLock();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CONNECT_FLAG_COMPRESSED","CONNECT_FLAG_END_STREAM","encodeConnectEnvelope","data","flags","out","Uint8Array","byteLength","len","set","decodeConnectEnvelopes","buffer","envelopes","offset","push","subarray","readConnectEnvelopeStream","body","maxBytes","reader","getReader","pending","total","append","chunk","Error","next","done","value","read","releaseLock"],"sourceRoot":"../../../src","sources":["connect/envelope.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ProtoClientError } from '../errors';
|
|
4
|
+
|
|
5
|
+
/** Connect / gRPC-like code strings → client error codes */
|
|
6
|
+
const CONNECT_CODE_MAP = {
|
|
7
|
+
canceled: 'ABORTED',
|
|
8
|
+
unknown: 'RPC',
|
|
9
|
+
invalid_argument: 'INVALID_ARGUMENT',
|
|
10
|
+
deadline_exceeded: 'TIMEOUT',
|
|
11
|
+
not_found: 'RPC',
|
|
12
|
+
already_exists: 'RPC',
|
|
13
|
+
permission_denied: 'RPC',
|
|
14
|
+
resource_exhausted: 'RPC',
|
|
15
|
+
failed_precondition: 'RPC',
|
|
16
|
+
aborted: 'ABORTED',
|
|
17
|
+
out_of_range: 'INVALID_ARGUMENT',
|
|
18
|
+
unimplemented: 'UNSUPPORTED',
|
|
19
|
+
internal: 'INTERNAL',
|
|
20
|
+
unavailable: 'NETWORK',
|
|
21
|
+
data_loss: 'DECODE',
|
|
22
|
+
unauthenticated: 'RPC'
|
|
23
|
+
};
|
|
24
|
+
export function mapConnectCode(code) {
|
|
25
|
+
if (!code) return 'RPC';
|
|
26
|
+
return CONNECT_CODE_MAP[code.toLowerCase()] ?? 'RPC';
|
|
27
|
+
}
|
|
28
|
+
export function connectErrorFromJson(body, rpcPath, status) {
|
|
29
|
+
const connectCode = (body.code ?? 'unknown').toLowerCase();
|
|
30
|
+
const retryable = connectCode === 'unavailable' || connectCode === 'resource_exhausted' || connectCode === 'deadline_exceeded';
|
|
31
|
+
return new ProtoClientError({
|
|
32
|
+
code: mapConnectCode(connectCode),
|
|
33
|
+
message: body.message ? `Connect ${connectCode}: ${body.message}` : `Connect error ${connectCode} for ${rpcPath}`,
|
|
34
|
+
status,
|
|
35
|
+
rpcPath,
|
|
36
|
+
retryable,
|
|
37
|
+
cause: body
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function tryParseConnectError(text, rpcPath, status) {
|
|
41
|
+
const trimmed = text.trim();
|
|
42
|
+
if (!trimmed.startsWith('{')) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const parsed = JSON.parse(trimmed);
|
|
47
|
+
if (parsed && (parsed.code || parsed.message)) {
|
|
48
|
+
return connectErrorFromJson(parsed, rpcPath, status);
|
|
49
|
+
}
|
|
50
|
+
} catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
export function bytesToUtf8(bytes) {
|
|
56
|
+
if (typeof TextDecoder !== 'undefined') {
|
|
57
|
+
return new TextDecoder('utf-8').decode(bytes);
|
|
58
|
+
}
|
|
59
|
+
let out = '';
|
|
60
|
+
for (let i = 0; i < bytes.byteLength; i += 1) {
|
|
61
|
+
out += String.fromCharCode(bytes[i]);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ProtoClientError","CONNECT_CODE_MAP","canceled","unknown","invalid_argument","deadline_exceeded","not_found","already_exists","permission_denied","resource_exhausted","failed_precondition","aborted","out_of_range","unimplemented","internal","unavailable","data_loss","unauthenticated","mapConnectCode","code","toLowerCase","connectErrorFromJson","body","rpcPath","status","connectCode","retryable","message","cause","tryParseConnectError","text","trimmed","trim","startsWith","parsed","JSON","parse","bytesToUtf8","bytes","TextDecoder","decode","out","i","byteLength","String","fromCharCode"],"sourceRoot":"../../../src","sources":["connect/errors.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAA6B,WAAW;;AAEjE;AACA,MAAMC,gBAAgD,GAAG;EACvDC,QAAQ,EAAE,SAAS;EACnBC,OAAO,EAAE,KAAK;EACdC,gBAAgB,EAAE,kBAAkB;EACpCC,iBAAiB,EAAE,SAAS;EAC5BC,SAAS,EAAE,KAAK;EAChBC,cAAc,EAAE,KAAK;EACrBC,iBAAiB,EAAE,KAAK;EACxBC,kBAAkB,EAAE,KAAK;EACzBC,mBAAmB,EAAE,KAAK;EAC1BC,OAAO,EAAE,SAAS;EAClBC,YAAY,EAAE,kBAAkB;EAChCC,aAAa,EAAE,aAAa;EAC5BC,QAAQ,EAAE,UAAU;EACpBC,WAAW,EAAE,SAAS;EACtBC,SAAS,EAAE,QAAQ;EACnBC,eAAe,EAAE;AACnB,CAAC;AAQD,OAAO,SAASC,cAAcA,CAACC,IAAwB,EAAkB;EACvE,IAAI,CAACA,IAAI,EAAE,OAAO,KAAK;EACvB,OAAOlB,gBAAgB,CAACkB,IAAI,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK;AACtD;AAEA,OAAO,SAASC,oBAAoBA,CAClCC,IAAsB,EACtBC,OAAe,EACfC,MAAe,EACG;EAClB,MAAMC,WAAW,GAAG,CAACH,IAAI,CAACH,IAAI,IAAI,SAAS,EAAEC,WAAW,CAAC,CAAC;EAC1D,MAAMM,SAAS,GACbD,WAAW,KAAK,aAAa,IAC7BA,WAAW,KAAK,oBAAoB,IACpCA,WAAW,KAAK,mBAAmB;EAErC,OAAO,IAAIzB,gBAAgB,CAAC;IAC1BmB,IAAI,EAAED,cAAc,CAACO,WAAW,CAAC;IACjCE,OAAO,EAAEL,IAAI,CAACK,OAAO,GACjB,WAAWF,WAAW,KAAKH,IAAI,CAACK,OAAO,EAAE,GACzC,iBAAiBF,WAAW,QAAQF,OAAO,EAAE;IACjDC,MAAM;IACND,OAAO;IACPG,SAAS;IACTE,KAAK,EAAEN;EACT,CAAC,CAAC;AACJ;AAEA,OAAO,SAASO,oBAAoBA,CAClCC,IAAY,EACZP,OAAe,EACfC,MAAe,EACU;EACzB,MAAMO,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC;EAC3B,IAAI,CAACD,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;IAC5B,OAAO,IAAI;EACb;EACA,IAAI;IACF,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACL,OAAO,CAAqB;IACtD,IAAIG,MAAM,KAAKA,MAAM,CAACf,IAAI,IAAIe,MAAM,CAACP,OAAO,CAAC,EAAE;MAC7C,OAAON,oBAAoB,CAACa,MAAM,EAAEX,OAAO,EAAEC,MAAM,CAAC;IACtD;EACF,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;EACA,OAAO,IAAI;AACb;AAEA,OAAO,SAASa,WAAWA,CAACC,KAAiB,EAAU;EACrD,IAAI,OAAOC,WAAW,KAAK,WAAW,EAAE;IACtC,OAAO,IAAIA,WAAW,CAAC,OAAO,CAAC,CAACC,MAAM,CAACF,KAAK,CAAC;EAC/C;EACA,IAAIG,GAAG,GAAG,EAAE;EACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,KAAK,CAACK,UAAU,EAAED,CAAC,IAAI,CAAC,EAAE;IAC5CD,GAAG,IAAIG,MAAM,CAACC,YAAY,CAACP,KAAK,CAACI,CAAC,CAAE,CAAC;EACvC;EACA,OAAOD,GAAG;AACZ","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export class ProtoClientError extends Error {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
super(options.message);
|
|
6
|
+
this.name = 'ProtoClientError';
|
|
7
|
+
this.code = options.code;
|
|
8
|
+
this.status = options.status;
|
|
9
|
+
this.rpcPath = options.rpcPath;
|
|
10
|
+
this.cause = options.cause;
|
|
11
|
+
this.retryable = options.retryable === true;
|
|
12
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function isProtoClientError(value) {
|
|
16
|
+
return value instanceof ProtoClientError;
|
|
17
|
+
}
|
|
18
|
+
export function getErrorCode(value) {
|
|
19
|
+
if (isProtoClientError(value)) {
|
|
20
|
+
return value.code;
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
export function wrapUnknownError(value, rpcPath) {
|
|
25
|
+
if (isProtoClientError(value)) {
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
if (value instanceof Error && value.name === 'AbortError') {
|
|
29
|
+
return new ProtoClientError({
|
|
30
|
+
code: 'ABORTED',
|
|
31
|
+
message: 'Request was aborted',
|
|
32
|
+
rpcPath,
|
|
33
|
+
cause: value,
|
|
34
|
+
retryable: false
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const message = value instanceof Error ? value.message : 'Unexpected client failure';
|
|
38
|
+
return new ProtoClientError({
|
|
39
|
+
code: 'INTERNAL',
|
|
40
|
+
message,
|
|
41
|
+
rpcPath,
|
|
42
|
+
cause: value,
|
|
43
|
+
retryable: false
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ProtoClientError","Error","constructor","options","message","name","code","status","rpcPath","cause","retryable","Object","setPrototypeOf","new","target","prototype","isProtoClientError","value","getErrorCode","undefined","wrapUnknownError"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAsBA,OAAO,MAAMA,gBAAgB,SAASC,KAAK,CAAC;EAO1CC,WAAWA,CAACC,OAAgC,EAAE;IAC5C,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,kBAAkB;IAC9B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,MAAM,GAAGJ,OAAO,CAACI,MAAM;IAC5B,IAAI,CAACC,OAAO,GAAGL,OAAO,CAACK,OAAO;IAC9B,IAAI,CAACC,KAAK,GAAGN,OAAO,CAACM,KAAK;IAC1B,IAAI,CAACC,SAAS,GAAGP,OAAO,CAACO,SAAS,KAAK,IAAI;IAC3CC,MAAM,CAACC,cAAc,CAAC,IAAI,EAAEC,GAAG,CAACC,MAAM,CAACC,SAAS,CAAC;EACnD;AACF;AAEA,OAAO,SAASC,kBAAkBA,CAACC,KAAc,EAA6B;EAC5E,OAAOA,KAAK,YAAYjB,gBAAgB;AAC1C;AAEA,OAAO,SAASkB,YAAYA,CAACD,KAAc,EAA8B;EACvE,IAAID,kBAAkB,CAACC,KAAK,CAAC,EAAE;IAC7B,OAAOA,KAAK,CAACX,IAAI;EACnB;EACA,OAAOa,SAAS;AAClB;AAEA,OAAO,SAASC,gBAAgBA,CAC9BH,KAAc,EACdT,OAAgB,EACE;EAClB,IAAIQ,kBAAkB,CAACC,KAAK,CAAC,EAAE;IAC7B,OAAOA,KAAK;EACd;EAEA,IAAIA,KAAK,YAAYhB,KAAK,IAAIgB,KAAK,CAACZ,IAAI,KAAK,YAAY,EAAE;IACzD,OAAO,IAAIL,gBAAgB,CAAC;MAC1BM,IAAI,EAAE,SAAS;MACfF,OAAO,EAAE,qBAAqB;MAC9BI,OAAO;MACPC,KAAK,EAAEQ,KAAK;MACZP,SAAS,EAAE;IACb,CAAC,CAAC;EACJ;EAEA,MAAMN,OAAO,GACXa,KAAK,YAAYhB,KAAK,GAAGgB,KAAK,CAACb,OAAO,GAAG,2BAA2B;EAEtE,OAAO,IAAIJ,gBAAgB,CAAC;IAC1BM,IAAI,EAAE,UAAU;IAChBF,OAAO;IACPI,OAAO;IACPC,KAAK,EAAEQ,KAAK;IACZP,SAAS,EAAE;EACb,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Auto-generated typed API factory. Do not edit by hand.
|
|
5
|
+
*/
|
|
6
|
+
import { createClientFromMap } from '../client-factory';
|
|
7
|
+
import { methodMap } from './method-map';
|
|
8
|
+
import { defaultCodecs } from './messages';
|
|
9
|
+
export function createApi(config) {
|
|
10
|
+
return createClientFromMap(config, methodMap, defaultCodecs);
|
|
11
|
+
}
|
|
12
|
+
export { methodMap, defaultCodecs };
|
|
13
|
+
//# sourceMappingURL=create-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createClientFromMap","methodMap","defaultCodecs","createApi","config"],"sourceRoot":"../../../src","sources":["generated/create-api.ts"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,mBAAmB,QAAQ,mBAAmB;AAEvD,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,aAAa,QAAQ,YAAY;AA6B1C,OAAO,SAASC,SAASA,CAACC,MAAyB,EAAgB;EACjE,OAAOJ,mBAAmB,CAACI,MAAM,EAAEH,SAAS,EAAEC,aAAa,CAAC;AAC9D;AAEA,SAASD,SAAS,EAAEC,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["generated/message-types.ts"],"mappings":"","ignoreList":[]}
|