All files / lib grpc-client.options.ts

66.66% Statements 6/9
0% Branches 0/6
0% Functions 0/2
75% Lines 6/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34          1x   1x 1x 1x     1x           1x                              
import type { AppApiEnvironment } from '@app/backend-interfaces';
import { type ClientOptions, Transport } from '@nestjs/microservices';
import { existsSync } from 'fs';
import { join } from 'path';
 
export const NXNGSTARTER_PACKAGE = 'NXNGSTARTER_PACKAGE';
 
const localProtoPath = [join(__dirname, '..', '..', '..', 'tools/proto/root.proto')];
const functionsProtoPath = [join(__dirname, 'proto/root.proto')];
const dockerProtoPath = [join(__dirname, '..', 'tools/proto/root.proto')];
 
/** Proto file paths. */
const protoPaths: (env: AppApiEnvironment) => string[] = (env: AppApiEnvironment) => {
  const docker = existsSync('/.dockerenv');
  return docker ? dockerProtoPath : typeof env.firebase === 'undefined' || !env.firebase ? [...localProtoPath] : [...functionsProtoPath];
};
 
/** Grpc client options. */
export const backendGrpcClientOptions: (env: AppApiEnvironment) => ClientOptions = (env: AppApiEnvironment) => ({
  transport: Transport.GRPC,
  options: {
    url: env.grpcUrl,
    package: 'nxngstarter',
    protoPath: protoPaths(env),
    loader: {
      keepCase: true,
      oneofs: true,
      defaults: true,
      objects: true,
      arrays: true,
    },
  },
});