@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,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ProtoClientError } from './errors';
|
|
4
|
+
export const CLIENT_VERSION_HEADER = 'X-React-Native-Proto-Client-Version';
|
|
5
|
+
export const SERVER_MIN_CLIENT_HEADER = 'X-React-Native-Proto-Min-Client-Version';
|
|
6
|
+
export const METHOD_MAP_HASH_HEADER = 'X-React-Native-Proto-Method-Map-Hash';
|
|
7
|
+
/** Simple dotted numeric compare: 1.2.0 vs 1.10.0. Non-numeric falls back to string cmp. */
|
|
8
|
+
export function compareDottedVersions(a, b) {
|
|
9
|
+
const pa = a.split('.').map(p => Number.parseInt(p, 10));
|
|
10
|
+
const pb = b.split('.').map(p => Number.parseInt(p, 10));
|
|
11
|
+
if (pa.some(n => Number.isNaN(n)) || pb.some(n => Number.isNaN(n))) {
|
|
12
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
13
|
+
}
|
|
14
|
+
const len = Math.max(pa.length, pb.length);
|
|
15
|
+
for (let i = 0; i < len; i += 1) {
|
|
16
|
+
const av = pa[i] ?? 0;
|
|
17
|
+
const bv = pb[i] ?? 0;
|
|
18
|
+
if (av < bv) return -1;
|
|
19
|
+
if (av > bv) return 1;
|
|
20
|
+
}
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
export function versionHeaders(options) {
|
|
24
|
+
const headers = {
|
|
25
|
+
[CLIENT_VERSION_HEADER]: options.clientVersion
|
|
26
|
+
};
|
|
27
|
+
if (options.methodMapHash) {
|
|
28
|
+
headers[METHOD_MAP_HASH_HEADER] = options.methodMapHash;
|
|
29
|
+
}
|
|
30
|
+
return headers;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Attaches client version headers. Pair with `assertServerMinClient` after responses
|
|
35
|
+
* if you read response headers in a custom transport; for the default HTTP path,
|
|
36
|
+
* use `createVersionInterceptor` which only sends headers (response check needs
|
|
37
|
+
* fetch wrapper — see createVersionAwareFetch).
|
|
38
|
+
*/
|
|
39
|
+
export function createVersionInterceptor(options) {
|
|
40
|
+
return async (ctx, next) => {
|
|
41
|
+
const headers = {
|
|
42
|
+
...ctx.headers,
|
|
43
|
+
...versionHeaders({
|
|
44
|
+
clientVersion: options.clientVersion,
|
|
45
|
+
methodMapHash: options.methodMapHash
|
|
46
|
+
})
|
|
47
|
+
};
|
|
48
|
+
return next({
|
|
49
|
+
...ctx,
|
|
50
|
+
headers
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function assertServerMinClient(serverMinClientVersion, options) {
|
|
55
|
+
if (!serverMinClientVersion) return;
|
|
56
|
+
const compare = options.compareVersions ?? compareDottedVersions;
|
|
57
|
+
if (compare(options.clientVersion, serverMinClientVersion) < 0) {
|
|
58
|
+
const info = {
|
|
59
|
+
clientVersion: options.clientVersion,
|
|
60
|
+
serverMinClientVersion
|
|
61
|
+
};
|
|
62
|
+
if (options.onMismatch) {
|
|
63
|
+
options.onMismatch(info);
|
|
64
|
+
}
|
|
65
|
+
if (options.mode === 'warn') {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
throw new ProtoClientError({
|
|
69
|
+
code: 'INVALID_CONFIG',
|
|
70
|
+
message: `Client version ${options.clientVersion} is older than server minimum ${serverMinClientVersion}`
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Wraps fetch to validate SERVER_MIN_CLIENT_HEADER on each response.
|
|
77
|
+
*/
|
|
78
|
+
export function createVersionAwareFetch(baseFetch, options) {
|
|
79
|
+
return async (input, init) => {
|
|
80
|
+
const headers = new Headers(init?.headers);
|
|
81
|
+
headers.set(CLIENT_VERSION_HEADER, options.clientVersion);
|
|
82
|
+
if (options.methodMapHash) {
|
|
83
|
+
headers.set(METHOD_MAP_HASH_HEADER, options.methodMapHash);
|
|
84
|
+
}
|
|
85
|
+
const response = await baseFetch(input, {
|
|
86
|
+
...init,
|
|
87
|
+
headers
|
|
88
|
+
});
|
|
89
|
+
assertServerMinClient(response.headers.get(SERVER_MIN_CLIENT_HEADER), options);
|
|
90
|
+
return response;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ProtoClientError","CLIENT_VERSION_HEADER","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","code","message","createVersionAwareFetch","baseFetch","input","init","Headers","set","response","get"],"sourceRoot":"../../src","sources":["version-check.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,UAAU;AAI3C,OAAO,MAAMC,qBAAqB,GAAG,qCAAqC;AAC1E,OAAO,MAAMC,wBAAwB,GAAG,yCAAyC;AACjF,OAAO,MAAMC,sBAAsB,GAAG,sCAAsC;AAmB5E;AACA,OAAO,SAASC,qBAAqBA,CAACC,CAAS,EAAEC,CAAS,EAAU;EAClE,MAAMC,EAAE,GAAGF,CAAC,CAACG,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKC,MAAM,CAACC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAAC;EAC1D,MAAMG,EAAE,GAAGP,CAAC,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAEC,CAAC,IAAKC,MAAM,CAACC,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAIH,EAAE,CAACO,IAAI,CAAEC,CAAC,IAAKJ,MAAM,CAACK,KAAK,CAACD,CAAC,CAAC,CAAC,IAAIF,EAAE,CAACC,IAAI,CAAEC,CAAC,IAAKJ,MAAM,CAACK,KAAK,CAACD,CAAC,CAAC,CAAC,EAAE;IACtE,OAAOV,CAAC,KAAKC,CAAC,GAAG,CAAC,GAAGD,CAAC,GAAGC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;EACrC;EACA,MAAMW,GAAG,GAAGC,IAAI,CAACC,GAAG,CAACZ,EAAE,CAACa,MAAM,EAAEP,EAAE,CAACO,MAAM,CAAC;EAC1C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,GAAG,EAAEI,CAAC,IAAI,CAAC,EAAE;IAC/B,MAAMC,EAAE,GAAGf,EAAE,CAACc,CAAC,CAAC,IAAI,CAAC;IACrB,MAAME,EAAE,GAAGV,EAAE,CAACQ,CAAC,CAAC,IAAI,CAAC;IACrB,IAAIC,EAAE,GAAGC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtB,IAAID,EAAE,GAAGC,EAAE,EAAE,OAAO,CAAC;EACvB;EACA,OAAO,CAAC;AACV;AAEA,OAAO,SAASC,cAAcA,CAACC,OAG9B,EAAa;EACZ,MAAMC,OAAkB,GAAG;IACzB,CAACzB,qBAAqB,GAAGwB,OAAO,CAACE;EACnC,CAAC;EACD,IAAIF,OAAO,CAACG,aAAa,EAAE;IACzBF,OAAO,CAACvB,sBAAsB,CAAC,GAAGsB,OAAO,CAACG,aAAa;EACzD;EACA,OAAOF,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,wBAAwBA,CACtCJ,OAA4B,EACf;EACb,OAAO,OAAOK,GAAG,EAAEC,IAAI,KAAK;IAC1B,MAAML,OAAO,GAAG;MACd,GAAGI,GAAG,CAACJ,OAAO;MACd,GAAGF,cAAc,CAAC;QAChBG,aAAa,EAAEF,OAAO,CAACE,aAAa;QACpCC,aAAa,EAAEH,OAAO,CAACG;MACzB,CAAC;IACH,CAAC;IACD,OAAOG,IAAI,CAAC;MAAE,GAAGD,GAAG;MAAEJ;IAAQ,CAAC,CAAC;EAClC,CAAC;AACH;AAEA,OAAO,SAASM,qBAAqBA,CACnCC,sBAAiD,EACjDR,OAA4B,EACtB;EACN,IAAI,CAACQ,sBAAsB,EAAE;EAC7B,MAAMC,OAAO,GAAGT,OAAO,CAACU,eAAe,IAAI/B,qBAAqB;EAChE,IAAI8B,OAAO,CAACT,OAAO,CAACE,aAAa,EAAEM,sBAAsB,CAAC,GAAG,CAAC,EAAE;IAC9D,MAAMG,IAAI,GAAG;MACXT,aAAa,EAAEF,OAAO,CAACE,aAAa;MACpCM;IACF,CAAC;IACD,IAAIR,OAAO,CAACY,UAAU,EAAE;MACtBZ,OAAO,CAACY,UAAU,CAACD,IAAI,CAAC;IAC1B;IACA,IAAIX,OAAO,CAACa,IAAI,KAAK,MAAM,EAAE;MAC3B;IACF;IACA,MAAM,IAAItC,gBAAgB,CAAC;MACzBuC,IAAI,EAAE,gBAAgB;MACtBC,OAAO,EAAE,kBAAkBf,OAAO,CAACE,aAAa,iCAAiCM,sBAAsB;IACzG,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASQ,uBAAuBA,CACrCC,SAAuB,EACvBjB,OAA4B,EACd;EACd,OAAQ,OAAOkB,KAAwB,EAAEC,IAAkB,KAAK;IAC9D,MAAMlB,OAAO,GAAG,IAAImB,OAAO,CAACD,IAAI,EAAElB,OAAO,CAAC;IAC1CA,OAAO,CAACoB,GAAG,CAAC7C,qBAAqB,EAAEwB,OAAO,CAACE,aAAa,CAAC;IACzD,IAAIF,OAAO,CAACG,aAAa,EAAE;MACzBF,OAAO,CAACoB,GAAG,CAAC3C,sBAAsB,EAAEsB,OAAO,CAACG,aAAa,CAAC;IAC5D;IACA,MAAMmB,QAAQ,GAAG,MAAML,SAAS,CAACC,KAAK,EAAE;MAAE,GAAGC,IAAI;MAAElB;IAAQ,CAAC,CAAC;IAC7DM,qBAAqB,CACnBe,QAAQ,CAACrB,OAAO,CAACsB,GAAG,CAAC9C,wBAAwB,CAAC,EAC9CuB,OACF,CAAC;IACD,OAAOsB,QAAQ;EACjB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Interceptor } from "./interceptors";
|
|
2
|
+
import type { HeaderMap } from "./types";
|
|
3
|
+
export type AuthInterceptorOptions = {
|
|
4
|
+
/** Return the current access token (without "Bearer " prefix unless you prefer that). */
|
|
5
|
+
getAccessToken: () => string | null | Promise<string | null>;
|
|
6
|
+
/** Header name (default Authorization) */
|
|
7
|
+
headerName?: string;
|
|
8
|
+
/** Prefix before token (default "Bearer ") */
|
|
9
|
+
scheme?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Called once when the server returns unauthorized; should refresh and return
|
|
12
|
+
* a new token. The failed call is retried once with the new token.
|
|
13
|
+
*/
|
|
14
|
+
refreshAccessToken?: () => Promise<string | null>;
|
|
15
|
+
/** Decide whether an error should trigger refresh (default: HTTP 401 or UNAUTHENTICATED). */
|
|
16
|
+
isUnauthorized?: (error: unknown) => boolean;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Adds Authorization (or custom) headers and optionally retries once after refresh.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createAuthInterceptor(options: AuthInterceptorOptions): Interceptor;
|
|
22
|
+
/**
|
|
23
|
+
* Simple helper that only injects a static or async token (no refresh).
|
|
24
|
+
*/
|
|
25
|
+
export declare function createBearerTokenHeaders(getToken: () => string | null | Promise<string | null>): () => Promise<HeaderMap>;
|
|
26
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG;IACnC,yFAAyF;IACzF,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,6FAA6F;IAC7F,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9C,CAAC;AAgBF;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,WAAW,CAwCb;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GACrD,MAAM,OAAO,CAAC,SAAS,CAAC,CAU1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CodecRegistry, MethodMap, ProtoClient, ProtoClientConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a dynamic client from a generated method map and message codecs.
|
|
4
|
+
* Apps typically call `createClient(config)` which uses the package defaults.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createClientFromMap(config: ProtoClientConfig, methodMap: MethodMap, codecs: CodecRegistry): ProtoClient;
|
|
7
|
+
//# sourceMappingURL=client-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../src/client-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EAET,WAAW,EACX,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA4DjB;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,GACpB,WAAW,CA8Bb"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Type } from 'protobufjs';
|
|
2
|
+
import type { CodecRegistry, MessageCodec, ProtobufTypeLike } from './types';
|
|
3
|
+
export declare function codecFromType(type: ProtobufTypeLike): MessageCodec;
|
|
4
|
+
export declare function createCodecRegistry(types: Record<string, ProtobufTypeLike | Type>): CodecRegistry;
|
|
5
|
+
//# sourceMappingURL=codecs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../../../src/codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7E,wBAAgB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAYlE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAC7C,aAAa,CAsBf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connect protocol envelope framing (unary streaming / server streaming).
|
|
3
|
+
* Spec: 1 flag byte + 4-byte big-endian length + payload.
|
|
4
|
+
*
|
|
5
|
+
* Flag bits:
|
|
6
|
+
* - 0x01 compressed
|
|
7
|
+
* - 0x02 end-stream (JSON trailer / error)
|
|
8
|
+
*/
|
|
9
|
+
export declare const CONNECT_FLAG_COMPRESSED = 1;
|
|
10
|
+
export declare const CONNECT_FLAG_END_STREAM = 2;
|
|
11
|
+
export type ConnectEnvelope = {
|
|
12
|
+
flags: number;
|
|
13
|
+
data: Uint8Array;
|
|
14
|
+
};
|
|
15
|
+
export declare function encodeConnectEnvelope(data: Uint8Array, flags?: number): Uint8Array;
|
|
16
|
+
export declare function decodeConnectEnvelopes(buffer: Uint8Array): ConnectEnvelope[];
|
|
17
|
+
export declare function readConnectEnvelopeStream(body: ReadableStream<Uint8Array> | null, maxBytes: number): AsyncGenerator<ConnectEnvelope, void, undefined>;
|
|
18
|
+
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../../src/connect/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAC5C,eAAO,MAAM,uBAAuB,IAAO,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,KAAK,SAAI,GACR,UAAU,CAUZ;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE,CAsB5E;AAED,wBAAuB,yBAAyB,CAC9C,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,EACvC,QAAQ,EAAE,MAAM,GACf,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAoDlD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ProtoClientError, type ProtoErrorCode } from '../errors';
|
|
2
|
+
export type ConnectErrorBody = {
|
|
3
|
+
code?: string;
|
|
4
|
+
message?: string;
|
|
5
|
+
details?: unknown[];
|
|
6
|
+
};
|
|
7
|
+
export declare function mapConnectCode(code: string | undefined): ProtoErrorCode;
|
|
8
|
+
export declare function connectErrorFromJson(body: ConnectErrorBody, rpcPath: string, status?: number): ProtoClientError;
|
|
9
|
+
export declare function tryParseConnectError(text: string, rpcPath: string, status?: number): ProtoClientError | null;
|
|
10
|
+
export declare function bytesToUtf8(bytes: Uint8Array): string;
|
|
11
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/connect/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAsBlE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAGvE;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,CAiBlB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,GAAG,IAAI,CAczB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CASrD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type ProtoErrorCode = 'INVALID_CONFIG' | 'INVALID_ARGUMENT' | 'TIMEOUT' | 'NETWORK' | 'HTTP' | 'RPC' | 'DECODE' | 'PAYLOAD_TOO_LARGE' | 'ABORTED' | 'INTERNAL' | 'UNSUPPORTED';
|
|
2
|
+
export type ProtoClientErrorOptions = {
|
|
3
|
+
code: ProtoErrorCode;
|
|
4
|
+
message: string;
|
|
5
|
+
status?: number;
|
|
6
|
+
rpcPath?: string;
|
|
7
|
+
cause?: unknown;
|
|
8
|
+
retryable?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare class ProtoClientError extends Error {
|
|
11
|
+
readonly code: ProtoErrorCode;
|
|
12
|
+
readonly status?: number;
|
|
13
|
+
readonly rpcPath?: string;
|
|
14
|
+
readonly cause?: unknown;
|
|
15
|
+
readonly retryable: boolean;
|
|
16
|
+
constructor(options: ProtoClientErrorOptions);
|
|
17
|
+
}
|
|
18
|
+
export declare function isProtoClientError(value: unknown): value is ProtoClientError;
|
|
19
|
+
export declare function getErrorCode(value: unknown): ProtoErrorCode | undefined;
|
|
20
|
+
export declare function wrapUnknownError(value: unknown, rpcPath?: string): ProtoClientError;
|
|
21
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,SAAS,GACT,MAAM,GACN,KAAK,GACL,QAAQ,GACR,mBAAmB,GACnB,SAAS,GACT,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,uBAAuB;CAU7C;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAKvE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,CAyBlB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ProtoClientConfig } from '../types';
|
|
2
|
+
import { methodMap } from './method-map';
|
|
3
|
+
import { defaultCodecs } from './messages';
|
|
4
|
+
import type { AddUserRequest, DeleteUserRequest, DeleteUserResponse, GetUserByEmailRequest, GetUserByPhoneRequest, GetUserRequest, ListUsersRequest, ListUsersResponse, UpdateUserRequest, User } from './message-types';
|
|
5
|
+
export type UserServiceApi = {
|
|
6
|
+
addUser: (request?: AddUserRequest, options?: {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}) => Promise<User>;
|
|
9
|
+
getUser: (request?: GetUserRequest, options?: {
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}) => Promise<User>;
|
|
12
|
+
getUserByEmail: (request?: GetUserByEmailRequest, options?: {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
}) => Promise<User>;
|
|
15
|
+
listUsers: (request?: ListUsersRequest, options?: {
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}) => Promise<ListUsersResponse>;
|
|
18
|
+
updateUser: (request?: UpdateUserRequest, options?: {
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}) => Promise<User>;
|
|
21
|
+
deleteUser: (request?: DeleteUserRequest, options?: {
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}) => Promise<DeleteUserResponse>;
|
|
24
|
+
getUserByPhone: (request?: GetUserByPhoneRequest, options?: {
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}) => Promise<User>;
|
|
27
|
+
};
|
|
28
|
+
export type GeneratedApi = {
|
|
29
|
+
userService: UserServiceApi;
|
|
30
|
+
readonly config: ProtoClientConfig;
|
|
31
|
+
};
|
|
32
|
+
export declare function createApi(config: ProtoClientConfig): GeneratedApi;
|
|
33
|
+
export { methodMap, defaultCodecs };
|
|
34
|
+
//# sourceMappingURL=create-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-api.d.ts","sourceRoot":"","sources":["../../../../src/generated/create-api.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,IAAI,EACL,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvG,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1G,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7G,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxG,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC,CAAC;AAEF,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CAEjE;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-generated TypeScript message types. Do not edit by hand.
|
|
3
|
+
* Parsed from .proto message field definitions (simple regex parser).
|
|
4
|
+
*/
|
|
5
|
+
export type AddUserRequest = {
|
|
6
|
+
name?: string;
|
|
7
|
+
email?: string;
|
|
8
|
+
age?: number;
|
|
9
|
+
phone?: string;
|
|
10
|
+
};
|
|
11
|
+
export type DeleteUserRequest = {
|
|
12
|
+
id?: string;
|
|
13
|
+
};
|
|
14
|
+
export type DeleteUserResponse = {
|
|
15
|
+
success?: boolean;
|
|
16
|
+
id?: string;
|
|
17
|
+
};
|
|
18
|
+
export type GetUserByEmailRequest = {
|
|
19
|
+
email?: string;
|
|
20
|
+
};
|
|
21
|
+
export type GetUserByPhoneRequest = {
|
|
22
|
+
phone?: string;
|
|
23
|
+
};
|
|
24
|
+
export type GetUserRequest = {
|
|
25
|
+
id?: string;
|
|
26
|
+
};
|
|
27
|
+
export type ListUsersRequest = {
|
|
28
|
+
page?: number;
|
|
29
|
+
page_size?: number;
|
|
30
|
+
page_token?: string;
|
|
31
|
+
query?: string;
|
|
32
|
+
};
|
|
33
|
+
export type ListUsersResponse = {
|
|
34
|
+
users?: User[];
|
|
35
|
+
next_page_token?: string;
|
|
36
|
+
total_count?: number;
|
|
37
|
+
};
|
|
38
|
+
export type UpdateUserRequest = {
|
|
39
|
+
id?: string;
|
|
40
|
+
name?: string;
|
|
41
|
+
email?: string;
|
|
42
|
+
age?: number;
|
|
43
|
+
phone?: string;
|
|
44
|
+
};
|
|
45
|
+
export type User = {
|
|
46
|
+
id?: string;
|
|
47
|
+
name?: string;
|
|
48
|
+
email?: string;
|
|
49
|
+
age?: number;
|
|
50
|
+
phone?: string;
|
|
51
|
+
created_at?: number;
|
|
52
|
+
updated_at?: number;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=message-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-types.d.ts","sourceRoot":"","sources":["../../../../src/generated/message-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Type } from 'protobufjs';
|
|
2
|
+
declare const pb: any;
|
|
3
|
+
export declare const messageTypes: Record<string, Type>;
|
|
4
|
+
export declare const defaultCodecs: import("..").CodecRegistry;
|
|
5
|
+
export declare const demo: any;
|
|
6
|
+
export declare const AddUserRequest: Type;
|
|
7
|
+
export declare const DeleteUserRequest: Type;
|
|
8
|
+
export declare const DeleteUserResponse: Type;
|
|
9
|
+
export declare const GetUserByEmailRequest: Type;
|
|
10
|
+
export declare const GetUserByPhoneRequest: Type;
|
|
11
|
+
export declare const GetUserRequest: Type;
|
|
12
|
+
export declare const ListUsersRequest: Type;
|
|
13
|
+
export declare const ListUsersResponse: Type;
|
|
14
|
+
export declare const UpdateUserRequest: Type;
|
|
15
|
+
export declare const User: Type;
|
|
16
|
+
export default pb;
|
|
17
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/generated/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,QAAA,MAAM,EAAE,KAA8B,CAAC;AAwBvC,eAAO,MAAM,YAAY,sBAAmB,CAAC;AAC7C,eAAO,MAAM,aAAa,4BAAoC,CAAC;AAE/D,eAAO,MAAM,IAAI,KAAU,CAAC;AAC5B,eAAO,MAAM,cAAc,EAA+B,IAAI,CAAC;AAC/D,eAAO,MAAM,iBAAiB,EAAkC,IAAI,CAAC;AACrE,eAAO,MAAM,kBAAkB,EAAmC,IAAI,CAAC;AACvE,eAAO,MAAM,qBAAqB,EAAsC,IAAI,CAAC;AAC7E,eAAO,MAAM,qBAAqB,EAAsC,IAAI,CAAC;AAC7E,eAAO,MAAM,cAAc,EAA+B,IAAI,CAAC;AAC/D,eAAO,MAAM,gBAAgB,EAAiC,IAAI,CAAC;AACnE,eAAO,MAAM,iBAAiB,EAAkC,IAAI,CAAC;AACrE,eAAO,MAAM,iBAAiB,EAAkC,IAAI,CAAC;AACrE,eAAO,MAAM,IAAI,EAAqB,IAAI,CAAC;AAE3C,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-map.d.ts","sourceRoot":"","sources":["../../../../src/generated/method-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,SAgEvB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { getErrorCode, isProtoClientError, ProtoClientError } from "./errors";
|
|
2
|
+
import type { CodecRegistry, MethodMap, ProtoClient, ProtoClientConfig } from "./types";
|
|
3
|
+
export type { CodecRegistry, HeaderMap, MethodKind, MethodMap, MethodMapEntry, ProtoClient, ProtoClientConfig, TransportKind, } from "./types";
|
|
4
|
+
export type { CallContext, Interceptor, UnaryHandler } from "./interceptors";
|
|
5
|
+
export type { PathTemplatePreset } from "./path-templates";
|
|
6
|
+
export type { AuthInterceptorOptions } from "./auth";
|
|
7
|
+
export type { LoggingOptions } from "./logging";
|
|
8
|
+
export type { OfflineQueueOptions, QueuedMutation } from "./offline-queue";
|
|
9
|
+
export type { VersionCheckOptions } from "./version-check";
|
|
10
|
+
export type { ZodLikeSchema } from "./validation/zod";
|
|
11
|
+
export { getErrorCode, isProtoClientError, ProtoClientError };
|
|
12
|
+
export { createClientFromMap } from "./client-factory";
|
|
13
|
+
export { createCodecRegistry, codecFromType } from "./codecs";
|
|
14
|
+
export { composeInterceptors } from "./interceptors";
|
|
15
|
+
export { createAuthInterceptor, createBearerTokenHeaders } from "./auth";
|
|
16
|
+
export { createLoggingInterceptor } from "./logging";
|
|
17
|
+
export { OfflineMutationQueue } from "./offline-queue";
|
|
18
|
+
export { createPathForMethod, pathFromTemplate } from "./path-templates";
|
|
19
|
+
export { CLIENT_VERSION_HEADER, SERVER_MIN_CLIENT_HEADER, METHOD_MAP_HASH_HEADER, compareDottedVersions, versionHeaders, createVersionInterceptor, createVersionAwareFetch, assertServerMinClient, } from "./version-check";
|
|
20
|
+
export { withZodValidation, wrapCodecRegistryWithZod } from "./validation/zod";
|
|
21
|
+
export { encodeConnectEnvelope, decodeConnectEnvelopes, } from "./connect/envelope";
|
|
22
|
+
export { methodMap } from "./generated/method-map";
|
|
23
|
+
export { AddUserRequest, defaultCodecs, DeleteUserRequest, DeleteUserResponse, GetUserByEmailRequest, GetUserRequest, ListUsersRequest, ListUsersResponse, UpdateUserRequest, User, } from "./generated/messages";
|
|
24
|
+
export { isNativeGrpcAvailable, installNativeGrpcBridgeFromNativeModule, } from "./native-grpc";
|
|
25
|
+
export type CreateClientOptions = ProtoClientConfig & {
|
|
26
|
+
/** Override generated method map (advanced / tests) */
|
|
27
|
+
methodMap?: MethodMap;
|
|
28
|
+
/** Override message codecs (advanced / tests) */
|
|
29
|
+
codecs?: CodecRegistry;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create a dynamic API client from package method metadata + your app config.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const api = createClient({
|
|
36
|
+
* baseUrl: 'https://api.example.com',
|
|
37
|
+
* getHeaders: () => ({ Authorization: `Bearer ${token}` }),
|
|
38
|
+
* });
|
|
39
|
+
* const user = await api.userService.getUser({ id: '1' });
|
|
40
|
+
*/
|
|
41
|
+
export declare function createClient(config: CreateClientOptions): ProtoClient;
|
|
42
|
+
/** Alias preferred in generated `create-api.ts` drop-ins. */
|
|
43
|
+
export declare const createApi: typeof createClient;
|
|
44
|
+
export declare function getDefaultMethodMap(): MethodMap;
|
|
45
|
+
export declare function getTransportCapabilities(): {
|
|
46
|
+
http: boolean;
|
|
47
|
+
connect: boolean;
|
|
48
|
+
connectStreaming: boolean;
|
|
49
|
+
nativeGrpc: boolean;
|
|
50
|
+
interceptors: boolean;
|
|
51
|
+
mockServer: boolean;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAI9E,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,IAAI,GACL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,qBAAqB,EACrB,uCAAuC,GACxC,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG;IACpD,uDAAuD;IACvD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iDAAiD;IACjD,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,CAIrE;AAED,6DAA6D;AAC7D,eAAO,MAAM,SAAS,qBAAe,CAAC;AAEtC,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,wBAAwB;;;;;;;EASvC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { HeaderMap, MethodMapEntry } from './types';
|
|
2
|
+
export type CallContext = {
|
|
3
|
+
entry: MethodMapEntry;
|
|
4
|
+
request: Record<string, unknown>;
|
|
5
|
+
headers: HeaderMap;
|
|
6
|
+
signal?: AbortSignal;
|
|
7
|
+
};
|
|
8
|
+
export type UnaryHandler = (ctx: CallContext) => Promise<Record<string, unknown>>;
|
|
9
|
+
/**
|
|
10
|
+
* Interceptor around a unary RPC. Call `next(ctx)` to continue the chain.
|
|
11
|
+
*/
|
|
12
|
+
export type Interceptor = (ctx: CallContext, next: UnaryHandler) => Promise<Record<string, unknown>>;
|
|
13
|
+
/**
|
|
14
|
+
* Compose interceptors left-to-outer (first runs first on the way in).
|
|
15
|
+
*/
|
|
16
|
+
export declare function composeInterceptors(interceptors: Interceptor[], core: UnaryHandler): UnaryHandler;
|
|
17
|
+
//# sourceMappingURL=interceptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../../src/interceptors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,WAAW,KACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtC;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,WAAW,EAAE,EAC3B,IAAI,EAAE,YAAY,GACjB,YAAY,CAId"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Interceptor } from './interceptors';
|
|
2
|
+
export type LoggingOptions = {
|
|
3
|
+
/** Log function (default console.debug) */
|
|
4
|
+
log?: (message: string, meta?: Record<string, unknown>) => void;
|
|
5
|
+
/** Redact these header names (case-insensitive). Default: authorization, cookie. */
|
|
6
|
+
redactHeaders?: string[];
|
|
7
|
+
/** Include request object in logs (default false — can contain PII). */
|
|
8
|
+
logRequestBody?: boolean;
|
|
9
|
+
/** Include response object in logs (default false). */
|
|
10
|
+
logResponseBody?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Request/response logging interceptor for debug builds.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createLoggingInterceptor(options?: LoggingOptions): Interceptor;
|
|
16
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/logging.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B,2CAA2C;IAC3C,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChE,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uDAAuD;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAiBF;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,cAAmB,GAC3B,WAAW,CAiCb"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metro helper: treat .proto files as raw text assets for tooling/debug.
|
|
3
|
+
* Prefer `react-native-proto generate` for production clients.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createProtoMetroConfig(baseConfig: {
|
|
6
|
+
resolver?: {
|
|
7
|
+
sourceExts?: string[];
|
|
8
|
+
assetExts?: string[];
|
|
9
|
+
};
|
|
10
|
+
transformer?: {
|
|
11
|
+
babelTransformerPath?: string;
|
|
12
|
+
};
|
|
13
|
+
}): typeof baseConfig;
|
|
14
|
+
export { transform } from './transformer';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/metro/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE;IACjD,QAAQ,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC3D,WAAW,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD,GAAG,OAAO,UAAU,CAiBpB;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type TransformArgs = {
|
|
2
|
+
filename: string;
|
|
3
|
+
src: string;
|
|
4
|
+
options?: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
type TransformResult = {
|
|
7
|
+
code: string;
|
|
8
|
+
map?: null;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Minimal Metro transformer for .proto files.
|
|
12
|
+
* Non-proto files fall through to the upstream Babel transformer when present.
|
|
13
|
+
*/
|
|
14
|
+
export declare function transform(args: TransformArgs): Promise<TransformResult>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../../src/metro/transformer.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CAoB1B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import http from "http";
|
|
2
|
+
import type { CodecRegistry, MethodMap, MethodMapEntry } from "../types";
|
|
3
|
+
export type MockHandler = (request: Record<string, unknown>, entry: MethodMapEntry) => Record<string, unknown> | Promise<Record<string, unknown>> | AsyncIterable<Record<string, unknown>>;
|
|
4
|
+
export type MockServerOptions = {
|
|
5
|
+
methodMap: MethodMap;
|
|
6
|
+
codecs: CodecRegistry;
|
|
7
|
+
/** Map rpcPath or MethodName → handler. Fallback: echo empty response encode attempt. */
|
|
8
|
+
handlers?: Record<string, MockHandler>;
|
|
9
|
+
host?: string;
|
|
10
|
+
port?: number;
|
|
11
|
+
/** Default transport content-type behavior */
|
|
12
|
+
contentType?: "application/x-protobuf" | "application/proto";
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Tiny local protobuf HTTP mock driven by the same method map + codecs as the client.
|
|
16
|
+
* Useful for demos and integration tests.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createMockServer(options: MockServerOptions): {
|
|
19
|
+
listen: () => Promise<{
|
|
20
|
+
host: string;
|
|
21
|
+
port: number;
|
|
22
|
+
baseUrl: string;
|
|
23
|
+
}>;
|
|
24
|
+
close: () => Promise<void>;
|
|
25
|
+
server: http.Server;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mock-server/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,cAAc,KAEnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAChC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,wBAAwB,GAAG,mBAAmB,CAAC;CAC9D,CAAC;AA8BF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAC5D,MAAM,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,CAwGA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ResolvedTransportConfig } from '../transport';
|
|
2
|
+
import type { CodecRegistry, StreamCallInput, UnaryCallInput } from '../types';
|
|
3
|
+
type NativeBridge = {
|
|
4
|
+
unary: (input: {
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
rpcPath: string;
|
|
7
|
+
requestBytes: Uint8Array;
|
|
8
|
+
headers: Record<string, string>;
|
|
9
|
+
timeoutMs: number;
|
|
10
|
+
}) => Promise<Uint8Array>;
|
|
11
|
+
stream?: (input: {
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
rpcPath: string;
|
|
14
|
+
requestBytes: Uint8Array;
|
|
15
|
+
headers: Record<string, string>;
|
|
16
|
+
timeoutMs: number;
|
|
17
|
+
}) => AsyncIterable<Uint8Array>;
|
|
18
|
+
};
|
|
19
|
+
declare global {
|
|
20
|
+
var __REACT_NATIVE_PROTO_NATIVE_GRPC__: NativeBridge | undefined;
|
|
21
|
+
}
|
|
22
|
+
/** Encode bytes to base64 without requiring a Buffer polyfill on RN. */
|
|
23
|
+
export declare function bytesToBase64(bytes: Uint8Array): string;
|
|
24
|
+
/** Decode base64 to bytes without requiring a Buffer polyfill on RN. */
|
|
25
|
+
export declare function base64ToBytes(base64: string): Uint8Array;
|
|
26
|
+
/**
|
|
27
|
+
* Wire `NativeModules.ReactNativeProtoNativeGrpc` into
|
|
28
|
+
* `global.__REACT_NATIVE_PROTO_NATIVE_GRPC__` for the JS transport layer.
|
|
29
|
+
* Returns true when the bridge was installed.
|
|
30
|
+
*/
|
|
31
|
+
export declare function installNativeGrpcBridgeFromNativeModule(): boolean;
|
|
32
|
+
export declare function nativeGrpcUnary(config: ResolvedTransportConfig, codecs: CodecRegistry, input: UnaryCallInput): Promise<Record<string, unknown>>;
|
|
33
|
+
export declare function nativeGrpcStream(config: ResolvedTransportConfig, codecs: CodecRegistry, input: StreamCallInput): AsyncGenerator<Record<string, unknown>, void, undefined>;
|
|
34
|
+
export declare function isNativeGrpcAvailable(): boolean;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/native-grpc/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/E,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,CAAC,KAAK,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,UAAU,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC;CACjC,CAAC;AAaF,OAAO,CAAC,MAAM,CAAC;IAGb,IAAI,kCAAkC,EAAE,YAAY,GAAG,SAAS,CAAC;CAClE;AAcD,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAavD;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAexD;AAqCD;;;;GAIG;AACH,wBAAgB,uCAAuC,IAAI,OAAO,CAQjE;AAyCD,wBAAsB,eAAe,CACnC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgElC;AAED,wBAAuB,gBAAgB,CACrC,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,eAAe,GACrB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CA6C1D;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAO/C"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type QueuedMutation = {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
run: () => Promise<unknown>;
|
|
5
|
+
enqueuedAt: number;
|
|
6
|
+
};
|
|
7
|
+
export type OfflineQueueOptions = {
|
|
8
|
+
/** Max queued items (default 50) */
|
|
9
|
+
maxSize?: number;
|
|
10
|
+
/** Called whenever queue length changes */
|
|
11
|
+
onChange?: (size: number) => void;
|
|
12
|
+
/** Persist/rehydrate hooks for app storage */
|
|
13
|
+
storage?: {
|
|
14
|
+
load: () => Promise<QueuedMutation[]> | QueuedMutation[];
|
|
15
|
+
save: (items: QueuedMutation[]) => Promise<void> | void;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Queue failed (or deferred) mutations and flush when back online.
|
|
20
|
+
* Does not auto-detect network — call `setOnline(true/false)` or `flush()` yourself.
|
|
21
|
+
*/
|
|
22
|
+
export declare class OfflineMutationQueue {
|
|
23
|
+
private items;
|
|
24
|
+
private readonly maxSize;
|
|
25
|
+
private readonly onChange?;
|
|
26
|
+
private readonly storage?;
|
|
27
|
+
private online;
|
|
28
|
+
private flushing;
|
|
29
|
+
constructor(options?: OfflineQueueOptions);
|
|
30
|
+
hydrate(): Promise<void>;
|
|
31
|
+
setOnline(online: boolean): void;
|
|
32
|
+
isOnline(): boolean;
|
|
33
|
+
size(): number;
|
|
34
|
+
/**
|
|
35
|
+
* Run immediately when online; otherwise enqueue and resolve after flush.
|
|
36
|
+
*/
|
|
37
|
+
runOrEnqueue<T>(label: string, run: () => Promise<T>): Promise<T>;
|
|
38
|
+
enqueue(label: string, run: () => Promise<unknown>): string;
|
|
39
|
+
flush(): Promise<{
|
|
40
|
+
ok: number;
|
|
41
|
+
failed: number;
|
|
42
|
+
}>;
|
|
43
|
+
clear(): void;
|
|
44
|
+
private emit;
|
|
45
|
+
private persist;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=offline-queue.d.ts.map
|