@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/src/index.js CHANGED
@@ -2,6 +2,7 @@ import grpc from "@grpc/grpc-js";
2
2
 
3
3
  import { createServiceConfig } from "@forwardimpact/libconfig";
4
4
  import { Tracer } from "@forwardimpact/libtelemetry/tracer.js";
5
+ import { createDefaultRuntime } from "@forwardimpact/libutil/runtime";
5
6
 
6
7
  import { capitalizeFirstLetter } from "./base.js";
7
8
  import * as exports from "./generated/services/exports.js";
@@ -30,11 +31,17 @@ export const clients = exports.clients || {};
30
31
  export async function createTracer(serviceName) {
31
32
  const traceConfig = await createServiceConfig("trace");
32
33
  const { TraceClient } = clients;
33
- const traceClient = new TraceClient(traceConfig);
34
+ // createTracer is a composition-root factory; it builds the production
35
+ // runtime as its DI root, threads it into the TraceClient (so the client's
36
+ // auth reads SERVICE_SECRET off the bag) and into the Tracer (and thus every
37
+ // Span) via its clock.
38
+ const runtime = createDefaultRuntime();
39
+ const traceClient = new TraceClient(traceConfig, runtime);
34
40
  return new Tracer({
35
41
  serviceName,
36
42
  traceClient,
37
43
  grpcMetadata: grpc.Metadata,
44
+ clock: runtime.clock,
38
45
  });
39
46
  }
40
47
 
@@ -60,6 +67,10 @@ export async function createClient(name, logger = null, tracer = null) {
60
67
  // Create config for the service
61
68
  const config = await createServiceConfig(name);
62
69
 
63
- // Create and return the client instance with logger and tracer
64
- return new ClientClass(config, logger, tracer);
70
+ // createClient is a composition-root factory; build the production runtime
71
+ // here and thread it so the client's auth reads SERVICE_SECRET off the bag.
72
+ const runtime = createDefaultRuntime();
73
+
74
+ // Create and return the client instance (runtime is the required 2nd arg)
75
+ return new ClientClass(config, runtime, logger, tracer);
65
76
  }
package/src/server.js CHANGED
@@ -6,7 +6,6 @@ import {
6
6
  capitalizeFirstLetter,
7
7
  } from "./base.js";
8
8
  import { healthDefinition, createHealthHandlers } from "./health.js";
9
- import { createDefaultRuntime } from "@forwardimpact/libutil/runtime";
10
9
 
11
10
  /**
12
11
  * gRPC Server class using pre-compiled service definitions
@@ -21,29 +20,29 @@ export class Server extends Rpc {
21
20
  * Creates a gRPC server for a service
22
21
  * @param {object} service - Service instance with business logic
23
22
  * @param {object} config - Server configuration
24
- * @param {object} [logger] - Optional logger instance
25
- * @param {import("@forwardimpact/libtelemetry").Tracer} [tracer] - Optional tracer for distributed tracing
26
- * @param {(serviceName: string, logger: object, tracer: object) => object} observerFn - Observer factory
27
- * @param {() => {grpc: object}} grpcFn - gRPC factory
28
- * @param {(serviceName: string) => object} authFn - Auth factory
29
- * @param {import("@forwardimpact/libutil/runtime").Runtime} [runtime] - Optional runtime bag;
30
- * falls back to `createDefaultRuntime()` so existing service callers keep working.
23
+ * @param {object} options - Injected collaborators and optional factory overrides
24
+ * @param {object} [options.logger] - Optional logger instance
25
+ * @param {import("@forwardimpact/libtelemetry").Tracer} [options.tracer] - Optional tracer for distributed tracing
26
+ * @param {import("@forwardimpact/libutil/runtime").Runtime} options.runtime - Injected runtime bag
27
+ * @param {(serviceName: string, logger: object, tracer: object) => object} [options.observerFn] - Observer factory
28
+ * @param {() => {grpc: object}} [options.grpcFn] - gRPC factory
29
+ * @param {(serviceName: string) => object} [options.authFn] - Auth factory
31
30
  */
32
- constructor(
33
- service,
34
- config,
35
- logger = null,
36
- tracer = null,
37
- observerFn = createObserver,
38
- grpcFn = createGrpc,
39
- authFn = createAuth,
40
- runtime = null,
41
- ) {
31
+ constructor(service, config, options = {}) {
42
32
  if (!service) throw new Error("service is required");
43
-
44
- super(config, logger, tracer, observerFn, grpcFn, authFn);
33
+ const {
34
+ logger = null,
35
+ tracer = null,
36
+ runtime,
37
+ observerFn = createObserver,
38
+ grpcFn = createGrpc,
39
+ authFn = createAuth,
40
+ } = options;
41
+ if (!runtime) throw new Error("runtime is required");
42
+
43
+ super(config, runtime, logger, tracer, observerFn, grpcFn, authFn);
45
44
  this.#service = service;
46
- this.#runtime = runtime ?? createDefaultRuntime();
45
+ this.#runtime = runtime;
47
46
  }
48
47
 
49
48
  /** Starts the gRPC server */