@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.
Files changed (190) hide show
  1. package/android/src/main/java/com/vishalsharma7nov/reactnativeproto/ReactNativeProtoNativeGrpcModule.java +142 -0
  2. package/app.plugin.js +63 -0
  3. package/bin/react-native-proto.js +956 -0
  4. package/ios/ReactNativeProtoNativeGrpc.m +129 -0
  5. package/lib/commonjs/auth.js +72 -0
  6. package/lib/commonjs/auth.js.map +1 -0
  7. package/lib/commonjs/client-factory.js +81 -0
  8. package/lib/commonjs/client-factory.js.map +1 -0
  9. package/lib/commonjs/codecs.js +41 -0
  10. package/lib/commonjs/codecs.js.map +1 -0
  11. package/lib/commonjs/connect/envelope.js +100 -0
  12. package/lib/commonjs/connect/envelope.js.map +1 -0
  13. package/lib/commonjs/connect/errors.js +71 -0
  14. package/lib/commonjs/connect/errors.js.map +1 -0
  15. package/lib/commonjs/errors.js +54 -0
  16. package/lib/commonjs/errors.js.map +1 -0
  17. package/lib/commonjs/generated/create-api.js +29 -0
  18. package/lib/commonjs/generated/create-api.js.map +1 -0
  19. package/lib/commonjs/generated/message-types.js +2 -0
  20. package/lib/commonjs/generated/message-types.js.map +1 -0
  21. package/lib/commonjs/generated/messages.js +47 -0
  22. package/lib/commonjs/generated/messages.js.map +1 -0
  23. package/lib/commonjs/generated/messages.pb.js +2787 -0
  24. package/lib/commonjs/generated/messages.pb.js.map +1 -0
  25. package/lib/commonjs/generated/method-map.js +68 -0
  26. package/lib/commonjs/generated/method-map.js.map +1 -0
  27. package/lib/commonjs/index.js +283 -0
  28. package/lib/commonjs/index.js.map +1 -0
  29. package/lib/commonjs/interceptors.js +19 -0
  30. package/lib/commonjs/interceptors.js.map +1 -0
  31. package/lib/commonjs/logging.js +54 -0
  32. package/lib/commonjs/logging.js.map +1 -0
  33. package/lib/commonjs/metro/index.js +35 -0
  34. package/lib/commonjs/metro/index.js.map +1 -0
  35. package/lib/commonjs/metro/transformer.js +33 -0
  36. package/lib/commonjs/metro/transformer.js.map +1 -0
  37. package/lib/commonjs/mock-server/index.js +125 -0
  38. package/lib/commonjs/mock-server/index.js.map +1 -0
  39. package/lib/commonjs/native-grpc/index.js +242 -0
  40. package/lib/commonjs/native-grpc/index.js.map +1 -0
  41. package/lib/commonjs/offline-queue.js +137 -0
  42. package/lib/commonjs/offline-queue.js.map +1 -0
  43. package/lib/commonjs/package.json +1 -0
  44. package/lib/commonjs/path-templates.js +44 -0
  45. package/lib/commonjs/path-templates.js.map +1 -0
  46. package/lib/commonjs/react-query/index.js +30 -0
  47. package/lib/commonjs/react-query/index.js.map +1 -0
  48. package/lib/commonjs/streaming.js +251 -0
  49. package/lib/commonjs/streaming.js.map +1 -0
  50. package/lib/commonjs/transport.js +323 -0
  51. package/lib/commonjs/transport.js.map +1 -0
  52. package/lib/commonjs/types.js +6 -0
  53. package/lib/commonjs/types.js.map +1 -0
  54. package/lib/commonjs/validation/zod.js +48 -0
  55. package/lib/commonjs/validation/zod.js.map +1 -0
  56. package/lib/commonjs/version-check.js +102 -0
  57. package/lib/commonjs/version-check.js.map +1 -0
  58. package/lib/module/auth.js +67 -0
  59. package/lib/module/auth.js.map +1 -0
  60. package/lib/module/client-factory.js +77 -0
  61. package/lib/module/client-factory.js.map +1 -0
  62. package/lib/module/codecs.js +36 -0
  63. package/lib/module/codecs.js.map +1 -0
  64. package/lib/module/connect/envelope.js +93 -0
  65. package/lib/module/connect/envelope.js.map +1 -0
  66. package/lib/module/connect/errors.js +65 -0
  67. package/lib/module/connect/errors.js.map +1 -0
  68. package/lib/module/errors.js +46 -0
  69. package/lib/module/errors.js.map +1 -0
  70. package/lib/module/generated/create-api.js +13 -0
  71. package/lib/module/generated/create-api.js.map +1 -0
  72. package/lib/module/generated/message-types.js +2 -0
  73. package/lib/module/generated/message-types.js.map +1 -0
  74. package/lib/module/generated/messages.js +43 -0
  75. package/lib/module/generated/messages.js.map +1 -0
  76. package/lib/module/generated/messages.pb.js +2787 -0
  77. package/lib/module/generated/messages.pb.js.map +1 -0
  78. package/lib/module/generated/method-map.js +64 -0
  79. package/lib/module/generated/method-map.js.map +1 -0
  80. package/lib/module/index.js +53 -0
  81. package/lib/module/index.js.map +1 -0
  82. package/lib/module/interceptors.js +15 -0
  83. package/lib/module/interceptors.js.map +1 -0
  84. package/lib/module/logging.js +50 -0
  85. package/lib/module/logging.js.map +1 -0
  86. package/lib/module/metro/index.js +25 -0
  87. package/lib/module/metro/index.js.map +1 -0
  88. package/lib/module/metro/transformer.js +29 -0
  89. package/lib/module/metro/transformer.js.map +1 -0
  90. package/lib/module/mock-server/index.js +120 -0
  91. package/lib/module/mock-server/index.js.map +1 -0
  92. package/lib/module/native-grpc/index.js +233 -0
  93. package/lib/module/native-grpc/index.js.map +1 -0
  94. package/lib/module/offline-queue.js +132 -0
  95. package/lib/module/offline-queue.js.map +1 -0
  96. package/lib/module/package.json +1 -0
  97. package/lib/module/path-templates.js +39 -0
  98. package/lib/module/path-templates.js.map +1 -0
  99. package/lib/module/react-query/index.js +25 -0
  100. package/lib/module/react-query/index.js.map +1 -0
  101. package/lib/module/streaming.js +246 -0
  102. package/lib/module/streaming.js.map +1 -0
  103. package/lib/module/transport.js +316 -0
  104. package/lib/module/transport.js.map +1 -0
  105. package/lib/module/types.js +4 -0
  106. package/lib/module/types.js.map +1 -0
  107. package/lib/module/validation/zod.js +43 -0
  108. package/lib/module/validation/zod.js.map +1 -0
  109. package/lib/module/version-check.js +93 -0
  110. package/lib/module/version-check.js.map +1 -0
  111. package/lib/typescript/src/auth.d.ts +26 -0
  112. package/lib/typescript/src/auth.d.ts.map +1 -0
  113. package/lib/typescript/src/client-factory.d.ts +7 -0
  114. package/lib/typescript/src/client-factory.d.ts.map +1 -0
  115. package/lib/typescript/src/codecs.d.ts +5 -0
  116. package/lib/typescript/src/codecs.d.ts.map +1 -0
  117. package/lib/typescript/src/connect/envelope.d.ts +18 -0
  118. package/lib/typescript/src/connect/envelope.d.ts.map +1 -0
  119. package/lib/typescript/src/connect/errors.d.ts +11 -0
  120. package/lib/typescript/src/connect/errors.d.ts.map +1 -0
  121. package/lib/typescript/src/errors.d.ts +21 -0
  122. package/lib/typescript/src/errors.d.ts.map +1 -0
  123. package/lib/typescript/src/generated/create-api.d.ts +34 -0
  124. package/lib/typescript/src/generated/create-api.d.ts.map +1 -0
  125. package/lib/typescript/src/generated/message-types.d.ts +54 -0
  126. package/lib/typescript/src/generated/message-types.d.ts.map +1 -0
  127. package/lib/typescript/src/generated/messages.d.ts +17 -0
  128. package/lib/typescript/src/generated/messages.d.ts.map +1 -0
  129. package/lib/typescript/src/generated/method-map.d.ts +7 -0
  130. package/lib/typescript/src/generated/method-map.d.ts.map +1 -0
  131. package/lib/typescript/src/index.d.ts +53 -0
  132. package/lib/typescript/src/index.d.ts.map +1 -0
  133. package/lib/typescript/src/interceptors.d.ts +17 -0
  134. package/lib/typescript/src/interceptors.d.ts.map +1 -0
  135. package/lib/typescript/src/logging.d.ts +16 -0
  136. package/lib/typescript/src/logging.d.ts.map +1 -0
  137. package/lib/typescript/src/metro/index.d.ts +15 -0
  138. package/lib/typescript/src/metro/index.d.ts.map +1 -0
  139. package/lib/typescript/src/metro/transformer.d.ts +16 -0
  140. package/lib/typescript/src/metro/transformer.d.ts.map +1 -0
  141. package/lib/typescript/src/mock-server/index.d.ts +27 -0
  142. package/lib/typescript/src/mock-server/index.d.ts.map +1 -0
  143. package/lib/typescript/src/native-grpc/index.d.ts +36 -0
  144. package/lib/typescript/src/native-grpc/index.d.ts.map +1 -0
  145. package/lib/typescript/src/offline-queue.d.ts +47 -0
  146. package/lib/typescript/src/offline-queue.d.ts.map +1 -0
  147. package/lib/typescript/src/path-templates.d.ts +17 -0
  148. package/lib/typescript/src/path-templates.d.ts.map +1 -0
  149. package/lib/typescript/src/react-query/index.d.ts +14 -0
  150. package/lib/typescript/src/react-query/index.d.ts.map +1 -0
  151. package/lib/typescript/src/streaming.d.ts +10 -0
  152. package/lib/typescript/src/streaming.d.ts.map +1 -0
  153. package/lib/typescript/src/transport.d.ts +19 -0
  154. package/lib/typescript/src/transport.d.ts.map +1 -0
  155. package/lib/typescript/src/types.d.ts +78 -0
  156. package/lib/typescript/src/types.d.ts.map +1 -0
  157. package/lib/typescript/src/validation/zod.d.ts +33 -0
  158. package/lib/typescript/src/validation/zod.d.ts.map +1 -0
  159. package/lib/typescript/src/version-check.d.ts +40 -0
  160. package/lib/typescript/src/version-check.d.ts.map +1 -0
  161. package/metro/index.js +23 -0
  162. package/metro/transformer.js +21 -0
  163. package/package.json +144 -0
  164. package/react-native-proto.podspec +15 -0
  165. package/src/auth.ts +97 -0
  166. package/src/client-factory.ts +109 -0
  167. package/src/codecs.ts +42 -0
  168. package/src/connect/envelope.ts +112 -0
  169. package/src/connect/errors.ts +86 -0
  170. package/src/errors.ts +81 -0
  171. package/src/generated/create-api.ts +40 -0
  172. package/src/generated/message-types.ts +63 -0
  173. package/src/generated/messages.pb.js +3207 -0
  174. package/src/generated/messages.ts +45 -0
  175. package/src/generated/method-map.ts +71 -0
  176. package/src/index.ts +113 -0
  177. package/src/interceptors.ts +32 -0
  178. package/src/logging.ts +67 -0
  179. package/src/metro/index.ts +27 -0
  180. package/src/metro/transformer.ts +38 -0
  181. package/src/mock-server/index.ts +164 -0
  182. package/src/native-grpc/index.ts +302 -0
  183. package/src/offline-queue.ts +160 -0
  184. package/src/path-templates.ts +65 -0
  185. package/src/react-query/index.ts +40 -0
  186. package/src/streaming.ts +326 -0
  187. package/src/transport.ts +427 -0
  188. package/src/types.ts +94 -0
  189. package/src/validation/zod.ts +75 -0
  190. 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,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=message-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["generated/message-types.ts"],"mappings":"","ignoreList":[]}