@forwardimpact/librpc 0.1.105 → 0.1.107

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 (40) hide show
  1. package/bin/fit-unary.js +5 -15
  2. package/package.json +3 -1
  3. package/src/base.js +20 -10
  4. package/src/client.js +4 -2
  5. package/src/generated/definitions/bridge.js +260 -0
  6. package/src/generated/definitions/embedding.js +29 -0
  7. package/src/generated/definitions/exports.js +43 -0
  8. package/src/generated/definitions/ghserver.js +29 -0
  9. package/src/generated/definitions/ghuser.js +113 -0
  10. package/src/generated/definitions/graph.js +71 -0
  11. package/src/generated/definitions/map.js +92 -0
  12. package/src/generated/definitions/pathway.js +155 -0
  13. package/src/generated/definitions/tenancy.js +155 -0
  14. package/src/generated/definitions/trace.js +50 -0
  15. package/src/generated/definitions/vector.js +29 -0
  16. package/src/generated/services/bridge/client.js +264 -0
  17. package/src/generated/services/bridge/service.js +244 -0
  18. package/src/generated/services/embedding/client.js +44 -0
  19. package/src/generated/services/embedding/service.js +46 -0
  20. package/src/generated/services/exports.js +103 -0
  21. package/src/generated/services/ghserver/client.js +44 -0
  22. package/src/generated/services/ghserver/service.js +46 -0
  23. package/src/generated/services/ghuser/client.js +124 -0
  24. package/src/generated/services/ghuser/service.js +118 -0
  25. package/src/generated/services/graph/client.js +84 -0
  26. package/src/generated/services/graph/service.js +82 -0
  27. package/src/generated/services/map/client.js +104 -0
  28. package/src/generated/services/map/service.js +100 -0
  29. package/src/generated/services/pathway/client.js +164 -0
  30. package/src/generated/services/pathway/service.js +154 -0
  31. package/src/generated/services/tenancy/client.js +164 -0
  32. package/src/generated/services/tenancy/service.js +154 -0
  33. package/src/generated/services/trace/client.js +64 -0
  34. package/src/generated/services/trace/service.js +64 -0
  35. package/src/generated/services/vector/client.js +44 -0
  36. package/src/generated/services/vector/service.js +46 -0
  37. package/src/generated/types/metadata.js +994 -0
  38. package/src/generated/types/types.js +20852 -0
  39. package/src/index.js +14 -3
  40. package/src/server.js +20 -21
package/bin/fit-unary.js CHANGED
@@ -8,21 +8,8 @@ import { createDefaultRuntime } from "@forwardimpact/libutil/runtime";
8
8
 
9
9
  const runtime = createDefaultRuntime();
10
10
 
11
- // `bun build --compile` injects FIT_UNARY_VERSION via --define, eliminating
12
- // the readFileSync branch in the compiled binary (which would ENOENT against
13
- // the bunfs virtual mount). Source execution falls through to package.json.
14
- const VERSION =
15
- runtime.proc.env.FIT_UNARY_VERSION ||
16
- JSON.parse(
17
- runtime.fsSync.readFileSync(
18
- new URL("../package.json", import.meta.url),
19
- "utf8",
20
- ),
21
- ).version;
22
-
23
11
  const definition = {
24
12
  name: "fit-unary",
25
- version: VERSION,
26
13
  description: "Make a unary gRPC call to a service",
27
14
  usage: "fit-unary <service> <method> [json-request]",
28
15
  globalOptions: {
@@ -33,8 +20,11 @@ const definition = {
33
20
  examples: ['fit-unary memory GetWindow \'{"resource_id":"..."}\''],
34
21
  };
35
22
 
36
- const cli = createCli(definition, { runtime });
37
- const logger = createLogger("cli");
23
+ const cli = createCli(definition, {
24
+ runtime,
25
+ packageJsonUrl: new URL("../package.json", import.meta.url),
26
+ });
27
+ const logger = createLogger("cli", runtime);
38
28
 
39
29
  /**
40
30
  * Makes a unary gRPC call to a service
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forwardimpact/librpc",
3
- "version": "0.1.105",
3
+ "version": "0.1.107",
4
4
  "description": "gRPC server and client framework — ship service endpoints without reimplementing transport.",
5
5
  "keywords": [
6
6
  "grpc",
@@ -44,6 +44,8 @@
44
44
  "README.md"
45
45
  ],
46
46
  "scripts": {
47
+ "prepack": "node -e \"const fs=require('node:fs');fs.rmSync('src/generated',{recursive:true,force:true});fs.cpSync('../../generated','src/generated',{recursive:true})\"",
48
+ "postpack": "node -e \"const fs=require('node:fs');fs.rmSync('src/generated',{recursive:true,force:true});fs.symlinkSync('../../../generated','src/generated','dir')\"",
47
49
  "test": "bun test test/*.test.js"
48
50
  },
49
51
  "dependencies": {
package/src/base.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import grpc from "@grpc/grpc-js";
2
2
 
3
3
  import { createObserver } from "@forwardimpact/libtelemetry";
4
- import { createDefaultProc } from "@forwardimpact/libutil/runtime";
5
4
 
6
5
  import { Interceptor, HmacAuth } from "./auth.js";
7
6
  import { definitions } from "./generated/definitions/exports.js";
@@ -24,15 +23,22 @@ export function createGrpc() {
24
23
  }
25
24
 
26
25
  /**
27
- * Default auth factory that creates authentication interceptor.
28
- * Reads `SERVICE_SECRET` through `createDefaultProc().env` (a late-binding
29
- * Proxy over `process.env`) rather than touching the `process` global
30
- * directly — same read semantics as before, no ambient-dep smell.
26
+ * Default auth factory that creates an authentication interceptor. Reads
27
+ * `SERVICE_SECRET` from the injected `runtime.proc.env` rather than
28
+ * constructing its own process collaborator — the runtime is threaded from the
29
+ * entry point through `Server`/`Client` (no leaf-collaborator construction in
30
+ * src, Success Criterion 9).
31
31
  * @param {string} serviceName - Name of the service for the interceptor
32
+ * @param {import("@forwardimpact/libutil/runtime").Runtime} runtime - Injected runtime bag
32
33
  * @returns {Interceptor} Configured interceptor instance
33
34
  */
34
- export function createAuth(serviceName) {
35
- const secret = createDefaultProc().env.SERVICE_SECRET;
35
+ export function createAuth(serviceName, runtime) {
36
+ if (!runtime?.proc) {
37
+ throw new Error(
38
+ `createAuth requires an injected runtime for service ${serviceName}`,
39
+ );
40
+ }
41
+ const secret = runtime.proc.env.SERVICE_SECRET;
36
42
  if (!secret) {
37
43
  throw new Error(
38
44
  `SERVICE_SECRET environment variable is required for service ${serviceName}`,
@@ -54,14 +60,16 @@ export class Rpc {
54
60
  /**
55
61
  * Creates a new Rpc instance
56
62
  * @param {object} config - Configuration object
63
+ * @param {import("@forwardimpact/libutil/runtime").Runtime} runtime - Injected runtime bag (required), threaded to `authFn`
57
64
  * @param {object} [logger] - Optional logger instance
58
65
  * @param {import("@forwardimpact/libtelemetry").Tracer} [tracer] - Optional tracer for distributed tracing
59
66
  * @param {(serviceName: string, logger: object, tracer: object) => object} observerFn - Observer factory
60
67
  * @param {() => {grpc: object}} grpcFn - gRPC factory
61
- * @param {(serviceName: string) => object} authFn - Auth factory
68
+ * @param {(serviceName: string, runtime: object) => object} authFn - Auth factory
62
69
  */
63
70
  constructor(
64
71
  config,
72
+ runtime,
65
73
  logger = null,
66
74
  tracer = null,
67
75
  observerFn = createObserver,
@@ -69,6 +77,7 @@ export class Rpc {
69
77
  authFn = createAuth,
70
78
  ) {
71
79
  if (!config) throw new Error("config is required");
80
+ if (!runtime) throw new Error("runtime is required");
72
81
  if (typeof observerFn !== "function")
73
82
  throw new Error("observerFn must be a function");
74
83
  if (typeof grpcFn !== "function")
@@ -82,8 +91,9 @@ export class Rpc {
82
91
  const { grpc } = grpcFn();
83
92
  this.#grpc = grpc;
84
93
 
85
- // Setup authentication
86
- this.#auth = authFn(this.config.name);
94
+ // Setup authentication (the default factory reads SERVICE_SECRET off the
95
+ // injected runtime; a mock authFn ignores it)
96
+ this.#auth = authFn(this.config.name, runtime);
87
97
 
88
98
  // Create observer with logger and tracer
89
99
  this.#observer = observerFn(this.config.name, logger, tracer);
package/src/client.js CHANGED
@@ -19,15 +19,17 @@ export class Client extends Rpc {
19
19
  /**
20
20
  * Creates a new Client instance
21
21
  * @param {object} config - Configuration object
22
+ * @param {import("@forwardimpact/libutil/runtime").Runtime} runtime - Injected runtime bag (required), threaded to `authFn`
22
23
  * @param {object} [logger] - Optional logger instance
23
24
  * @param {import("@forwardimpact/libtelemetry").Tracer} [tracer] - Optional tracer for distributed tracing
24
25
  * @param {(serviceName: string, logger: object, tracer: object) => object} observerFn - Observer factory
25
26
  * @param {() => {grpc: object}} grpcFn - gRPC factory
26
- * @param {(serviceName: string) => object} authFn - Auth factory
27
+ * @param {(serviceName: string, runtime: object) => object} authFn - Auth factory
27
28
  * @param {import("@forwardimpact/libutil").Retry} [retry] - Optional retry instance for handling transient errors
28
29
  */
29
30
  constructor(
30
31
  config,
32
+ runtime,
31
33
  logger = null,
32
34
  tracer = null,
33
35
  observerFn = createObserver,
@@ -35,7 +37,7 @@ export class Client extends Rpc {
35
37
  authFn = createAuth,
36
38
  retry = null,
37
39
  ) {
38
- super(config, logger, tracer, observerFn, grpcFn, authFn);
40
+ super(config, runtime, logger, tracer, observerFn, grpcFn, authFn);
39
41
  this.#retry = retry || createRetry({ retries: 10, delay: 1000 });
40
42
  this.#setupClient();
41
43
  }
@@ -0,0 +1,260 @@
1
+ import { bridge, common } from "@forwardimpact/libtype";
2
+
3
+ /**
4
+ * Pre-compiled gRPC service definition for Bridge
5
+ * Generated at build time
6
+ */
7
+ export const BridgeServiceDefinition = {
8
+ LoadDiscussion: {
9
+ path: '/bridge.Bridge/LoadDiscussion',
10
+ requestStream: false,
11
+ responseStream: false,
12
+ requestSerialize: (value) => {
13
+ return Buffer.from(bridge.LoadDiscussionRequest.encode(value).finish());
14
+ },
15
+ requestDeserialize: (value) => {
16
+ return bridge.LoadDiscussionRequest.toObject(
17
+ bridge.LoadDiscussionRequest.decode(value)
18
+ );
19
+ },
20
+ responseSerialize: (value) => {
21
+ return Buffer.from(bridge.Discussion.encode(value).finish());
22
+ },
23
+ responseDeserialize: (value) => {
24
+ return bridge.Discussion.toObject(
25
+ bridge.Discussion.decode(value)
26
+ );
27
+ },
28
+ },
29
+ LoadDiscussionByCorrelation: {
30
+ path: '/bridge.Bridge/LoadDiscussionByCorrelation',
31
+ requestStream: false,
32
+ responseStream: false,
33
+ requestSerialize: (value) => {
34
+ return Buffer.from(bridge.LoadByCorrelationRequest.encode(value).finish());
35
+ },
36
+ requestDeserialize: (value) => {
37
+ return bridge.LoadByCorrelationRequest.toObject(
38
+ bridge.LoadByCorrelationRequest.decode(value)
39
+ );
40
+ },
41
+ responseSerialize: (value) => {
42
+ return Buffer.from(bridge.Discussion.encode(value).finish());
43
+ },
44
+ responseDeserialize: (value) => {
45
+ return bridge.Discussion.toObject(
46
+ bridge.Discussion.decode(value)
47
+ );
48
+ },
49
+ },
50
+ ListOpenRecesses: {
51
+ path: '/bridge.Bridge/ListOpenRecesses',
52
+ requestStream: false,
53
+ responseStream: false,
54
+ requestSerialize: (value) => {
55
+ return Buffer.from(bridge.ListOpenRecessesRequest.encode(value).finish());
56
+ },
57
+ requestDeserialize: (value) => {
58
+ return bridge.ListOpenRecessesRequest.toObject(
59
+ bridge.ListOpenRecessesRequest.decode(value)
60
+ );
61
+ },
62
+ responseSerialize: (value) => {
63
+ return Buffer.from(bridge.OpenRecessList.encode(value).finish());
64
+ },
65
+ responseDeserialize: (value) => {
66
+ return bridge.OpenRecessList.toObject(
67
+ bridge.OpenRecessList.decode(value)
68
+ );
69
+ },
70
+ },
71
+ SaveDiscussion: {
72
+ path: '/bridge.Bridge/SaveDiscussion',
73
+ requestStream: false,
74
+ responseStream: false,
75
+ requestSerialize: (value) => {
76
+ return Buffer.from(bridge.Discussion.encode(value).finish());
77
+ },
78
+ requestDeserialize: (value) => {
79
+ return bridge.Discussion.toObject(
80
+ bridge.Discussion.decode(value)
81
+ );
82
+ },
83
+ responseSerialize: (value) => {
84
+ return Buffer.from(common.Empty.encode(value).finish());
85
+ },
86
+ responseDeserialize: (value) => {
87
+ return common.Empty.toObject(
88
+ common.Empty.decode(value)
89
+ );
90
+ },
91
+ },
92
+ HasOrigin: {
93
+ path: '/bridge.Bridge/HasOrigin',
94
+ requestStream: false,
95
+ responseStream: false,
96
+ requestSerialize: (value) => {
97
+ return Buffer.from(bridge.OriginKey.encode(value).finish());
98
+ },
99
+ requestDeserialize: (value) => {
100
+ return bridge.OriginKey.toObject(
101
+ bridge.OriginKey.decode(value)
102
+ );
103
+ },
104
+ responseSerialize: (value) => {
105
+ return Buffer.from(bridge.HasOriginResponse.encode(value).finish());
106
+ },
107
+ responseDeserialize: (value) => {
108
+ return bridge.HasOriginResponse.toObject(
109
+ bridge.HasOriginResponse.decode(value)
110
+ );
111
+ },
112
+ },
113
+ RecordOrigin: {
114
+ path: '/bridge.Bridge/RecordOrigin',
115
+ requestStream: false,
116
+ responseStream: false,
117
+ requestSerialize: (value) => {
118
+ return Buffer.from(bridge.Origin.encode(value).finish());
119
+ },
120
+ requestDeserialize: (value) => {
121
+ return bridge.Origin.toObject(
122
+ bridge.Origin.decode(value)
123
+ );
124
+ },
125
+ responseSerialize: (value) => {
126
+ return Buffer.from(common.Empty.encode(value).finish());
127
+ },
128
+ responseDeserialize: (value) => {
129
+ return common.Empty.toObject(
130
+ common.Empty.decode(value)
131
+ );
132
+ },
133
+ },
134
+ Sweep: {
135
+ path: '/bridge.Bridge/Sweep',
136
+ requestStream: false,
137
+ responseStream: false,
138
+ requestSerialize: (value) => {
139
+ return Buffer.from(bridge.SweepRequest.encode(value).finish());
140
+ },
141
+ requestDeserialize: (value) => {
142
+ return bridge.SweepRequest.toObject(
143
+ bridge.SweepRequest.decode(value)
144
+ );
145
+ },
146
+ responseSerialize: (value) => {
147
+ return Buffer.from(bridge.SweepResponse.encode(value).finish());
148
+ },
149
+ responseDeserialize: (value) => {
150
+ return bridge.SweepResponse.toObject(
151
+ bridge.SweepResponse.decode(value)
152
+ );
153
+ },
154
+ },
155
+ PutPendingDispatch: {
156
+ path: '/bridge.Bridge/PutPendingDispatch',
157
+ requestStream: false,
158
+ responseStream: false,
159
+ requestSerialize: (value) => {
160
+ return Buffer.from(bridge.PutPendingDispatchRequest.encode(value).finish());
161
+ },
162
+ requestDeserialize: (value) => {
163
+ return bridge.PutPendingDispatchRequest.toObject(
164
+ bridge.PutPendingDispatchRequest.decode(value)
165
+ );
166
+ },
167
+ responseSerialize: (value) => {
168
+ return Buffer.from(common.Empty.encode(value).finish());
169
+ },
170
+ responseDeserialize: (value) => {
171
+ return common.Empty.toObject(
172
+ common.Empty.decode(value)
173
+ );
174
+ },
175
+ },
176
+ ResolvePendingDispatch: {
177
+ path: '/bridge.Bridge/ResolvePendingDispatch',
178
+ requestStream: false,
179
+ responseStream: false,
180
+ requestSerialize: (value) => {
181
+ return Buffer.from(bridge.ResolvePendingDispatchRequest.encode(value).finish());
182
+ },
183
+ requestDeserialize: (value) => {
184
+ return bridge.ResolvePendingDispatchRequest.toObject(
185
+ bridge.ResolvePendingDispatchRequest.decode(value)
186
+ );
187
+ },
188
+ responseSerialize: (value) => {
189
+ return Buffer.from(bridge.PendingDispatch.encode(value).finish());
190
+ },
191
+ responseDeserialize: (value) => {
192
+ return bridge.PendingDispatch.toObject(
193
+ bridge.PendingDispatch.decode(value)
194
+ );
195
+ },
196
+ },
197
+ VerifyPendingDispatch: {
198
+ path: '/bridge.Bridge/VerifyPendingDispatch',
199
+ requestStream: false,
200
+ responseStream: false,
201
+ requestSerialize: (value) => {
202
+ return Buffer.from(bridge.VerifyPendingDispatchRequest.encode(value).finish());
203
+ },
204
+ requestDeserialize: (value) => {
205
+ return bridge.VerifyPendingDispatchRequest.toObject(
206
+ bridge.VerifyPendingDispatchRequest.decode(value)
207
+ );
208
+ },
209
+ responseSerialize: (value) => {
210
+ return Buffer.from(common.Empty.encode(value).finish());
211
+ },
212
+ responseDeserialize: (value) => {
213
+ return common.Empty.toObject(
214
+ common.Empty.decode(value)
215
+ );
216
+ },
217
+ },
218
+ EnqueueInbox: {
219
+ path: '/bridge.Bridge/EnqueueInbox',
220
+ requestStream: false,
221
+ responseStream: false,
222
+ requestSerialize: (value) => {
223
+ return Buffer.from(bridge.EnqueueInboxRequest.encode(value).finish());
224
+ },
225
+ requestDeserialize: (value) => {
226
+ return bridge.EnqueueInboxRequest.toObject(
227
+ bridge.EnqueueInboxRequest.decode(value)
228
+ );
229
+ },
230
+ responseSerialize: (value) => {
231
+ return Buffer.from(common.Empty.encode(value).finish());
232
+ },
233
+ responseDeserialize: (value) => {
234
+ return common.Empty.toObject(
235
+ common.Empty.decode(value)
236
+ );
237
+ },
238
+ },
239
+ DrainInbox: {
240
+ path: '/bridge.Bridge/DrainInbox',
241
+ requestStream: false,
242
+ responseStream: false,
243
+ requestSerialize: (value) => {
244
+ return Buffer.from(bridge.DrainInboxRequest.encode(value).finish());
245
+ },
246
+ requestDeserialize: (value) => {
247
+ return bridge.DrainInboxRequest.toObject(
248
+ bridge.DrainInboxRequest.decode(value)
249
+ );
250
+ },
251
+ responseSerialize: (value) => {
252
+ return Buffer.from(bridge.InboxMessages.encode(value).finish());
253
+ },
254
+ responseDeserialize: (value) => {
255
+ return bridge.InboxMessages.toObject(
256
+ bridge.InboxMessages.decode(value)
257
+ );
258
+ },
259
+ },
260
+ };
@@ -0,0 +1,29 @@
1
+ import { embedding } from "@forwardimpact/libtype";
2
+
3
+ /**
4
+ * Pre-compiled gRPC service definition for Embedding
5
+ * Generated at build time
6
+ */
7
+ export const EmbeddingServiceDefinition = {
8
+ CreateEmbeddings: {
9
+ path: '/embedding.Embedding/CreateEmbeddings',
10
+ requestStream: false,
11
+ responseStream: false,
12
+ requestSerialize: (value) => {
13
+ return Buffer.from(embedding.EmbeddingsRequest.encode(value).finish());
14
+ },
15
+ requestDeserialize: (value) => {
16
+ return embedding.EmbeddingsRequest.toObject(
17
+ embedding.EmbeddingsRequest.decode(value)
18
+ );
19
+ },
20
+ responseSerialize: (value) => {
21
+ return Buffer.from(embedding.EmbeddingsResponse.encode(value).finish());
22
+ },
23
+ responseDeserialize: (value) => {
24
+ return embedding.EmbeddingsResponse.toObject(
25
+ embedding.EmbeddingsResponse.decode(value)
26
+ );
27
+ },
28
+ },
29
+ };
@@ -0,0 +1,43 @@
1
+ // THIS FILE IS AUTO-GENERATED - DO NOT EDIT
2
+ // Generated by scripts/codegen.js
3
+
4
+ // Service Definitions
5
+ export { BridgeServiceDefinition } from "./bridge.js";
6
+ export { EmbeddingServiceDefinition } from "./embedding.js";
7
+ export { GhserverServiceDefinition } from "./ghserver.js";
8
+ export { GhuserServiceDefinition } from "./ghuser.js";
9
+ export { GraphServiceDefinition } from "./graph.js";
10
+ export { MapServiceDefinition } from "./map.js";
11
+ export { PathwayServiceDefinition } from "./pathway.js";
12
+ export { TenancyServiceDefinition } from "./tenancy.js";
13
+ export { TraceServiceDefinition } from "./trace.js";
14
+ export { VectorServiceDefinition } from "./vector.js";
15
+
16
+ // Import service definitions to make them available for aggregation
17
+ import { BridgeServiceDefinition } from "./bridge.js";
18
+ import { EmbeddingServiceDefinition } from "./embedding.js";
19
+ import { GhserverServiceDefinition } from "./ghserver.js";
20
+ import { GhuserServiceDefinition } from "./ghuser.js";
21
+ import { GraphServiceDefinition } from "./graph.js";
22
+ import { MapServiceDefinition } from "./map.js";
23
+ import { PathwayServiceDefinition } from "./pathway.js";
24
+ import { TenancyServiceDefinition } from "./tenancy.js";
25
+ import { TraceServiceDefinition } from "./trace.js";
26
+ import { VectorServiceDefinition } from "./vector.js";
27
+
28
+ // Aggregate exports for convenience
29
+ export const definitions = {
30
+ bridge: BridgeServiceDefinition,
31
+ embedding: EmbeddingServiceDefinition,
32
+ ghserver: GhserverServiceDefinition,
33
+ ghuser: GhuserServiceDefinition,
34
+ graph: GraphServiceDefinition,
35
+ map: MapServiceDefinition,
36
+ pathway: PathwayServiceDefinition,
37
+ tenancy: TenancyServiceDefinition,
38
+ trace: TraceServiceDefinition,
39
+ vector: VectorServiceDefinition,
40
+ };
41
+
42
+ // Re-export as default for dynamic importing
43
+ export default definitions;
@@ -0,0 +1,29 @@
1
+ import { ghserver } from "@forwardimpact/libtype";
2
+
3
+ /**
4
+ * Pre-compiled gRPC service definition for Ghserver
5
+ * Generated at build time
6
+ */
7
+ export const GhserverServiceDefinition = {
8
+ MintInstallationToken: {
9
+ path: '/ghserver.Ghserver/MintInstallationToken',
10
+ requestStream: false,
11
+ responseStream: false,
12
+ requestSerialize: (value) => {
13
+ return Buffer.from(ghserver.MintRequest.encode(value).finish());
14
+ },
15
+ requestDeserialize: (value) => {
16
+ return ghserver.MintRequest.toObject(
17
+ ghserver.MintRequest.decode(value)
18
+ );
19
+ },
20
+ responseSerialize: (value) => {
21
+ return Buffer.from(ghserver.MintResponse.encode(value).finish());
22
+ },
23
+ responseDeserialize: (value) => {
24
+ return ghserver.MintResponse.toObject(
25
+ ghserver.MintResponse.decode(value)
26
+ );
27
+ },
28
+ },
29
+ };
@@ -0,0 +1,113 @@
1
+ import { ghuser, common } from "@forwardimpact/libtype";
2
+
3
+ /**
4
+ * Pre-compiled gRPC service definition for Ghuser
5
+ * Generated at build time
6
+ */
7
+ export const GhuserServiceDefinition = {
8
+ Begin: {
9
+ path: '/ghuser.Ghuser/Begin',
10
+ requestStream: false,
11
+ responseStream: false,
12
+ requestSerialize: (value) => {
13
+ return Buffer.from(ghuser.BeginRequest.encode(value).finish());
14
+ },
15
+ requestDeserialize: (value) => {
16
+ return ghuser.BeginRequest.toObject(
17
+ ghuser.BeginRequest.decode(value)
18
+ );
19
+ },
20
+ responseSerialize: (value) => {
21
+ return Buffer.from(ghuser.BeginResponse.encode(value).finish());
22
+ },
23
+ responseDeserialize: (value) => {
24
+ return ghuser.BeginResponse.toObject(
25
+ ghuser.BeginResponse.decode(value)
26
+ );
27
+ },
28
+ },
29
+ Complete: {
30
+ path: '/ghuser.Ghuser/Complete',
31
+ requestStream: false,
32
+ responseStream: false,
33
+ requestSerialize: (value) => {
34
+ return Buffer.from(ghuser.CompleteRequest.encode(value).finish());
35
+ },
36
+ requestDeserialize: (value) => {
37
+ return ghuser.CompleteRequest.toObject(
38
+ ghuser.CompleteRequest.decode(value)
39
+ );
40
+ },
41
+ responseSerialize: (value) => {
42
+ return Buffer.from(ghuser.CompleteResponse.encode(value).finish());
43
+ },
44
+ responseDeserialize: (value) => {
45
+ return ghuser.CompleteResponse.toObject(
46
+ ghuser.CompleteResponse.decode(value)
47
+ );
48
+ },
49
+ },
50
+ Redeem: {
51
+ path: '/ghuser.Ghuser/Redeem',
52
+ requestStream: false,
53
+ responseStream: false,
54
+ requestSerialize: (value) => {
55
+ return Buffer.from(ghuser.RedeemRequest.encode(value).finish());
56
+ },
57
+ requestDeserialize: (value) => {
58
+ return ghuser.RedeemRequest.toObject(
59
+ ghuser.RedeemRequest.decode(value)
60
+ );
61
+ },
62
+ responseSerialize: (value) => {
63
+ return Buffer.from(ghuser.RedeemResponse.encode(value).finish());
64
+ },
65
+ responseDeserialize: (value) => {
66
+ return ghuser.RedeemResponse.toObject(
67
+ ghuser.RedeemResponse.decode(value)
68
+ );
69
+ },
70
+ },
71
+ GetToken: {
72
+ path: '/ghuser.Ghuser/GetToken',
73
+ requestStream: false,
74
+ responseStream: false,
75
+ requestSerialize: (value) => {
76
+ return Buffer.from(ghuser.GetTokenRequest.encode(value).finish());
77
+ },
78
+ requestDeserialize: (value) => {
79
+ return ghuser.GetTokenRequest.toObject(
80
+ ghuser.GetTokenRequest.decode(value)
81
+ );
82
+ },
83
+ responseSerialize: (value) => {
84
+ return Buffer.from(ghuser.GetTokenResponse.encode(value).finish());
85
+ },
86
+ responseDeserialize: (value) => {
87
+ return ghuser.GetTokenResponse.toObject(
88
+ ghuser.GetTokenResponse.decode(value)
89
+ );
90
+ },
91
+ },
92
+ Revoke: {
93
+ path: '/ghuser.Ghuser/Revoke',
94
+ requestStream: false,
95
+ responseStream: false,
96
+ requestSerialize: (value) => {
97
+ return Buffer.from(ghuser.RevokeRequest.encode(value).finish());
98
+ },
99
+ requestDeserialize: (value) => {
100
+ return ghuser.RevokeRequest.toObject(
101
+ ghuser.RevokeRequest.decode(value)
102
+ );
103
+ },
104
+ responseSerialize: (value) => {
105
+ return Buffer.from(common.Empty.encode(value).finish());
106
+ },
107
+ responseDeserialize: (value) => {
108
+ return common.Empty.toObject(
109
+ common.Empty.decode(value)
110
+ );
111
+ },
112
+ },
113
+ };