Nuclear Pumpkin Mayhem

    grpc-ts-health-check
    TypeScript icon, indicating that this package has built-in type declarations

    3.1.2 • Public • Published

    gRPC Health Check

    License Current Version npm

    An implementation of gRPC health checks, written in typescript.

    It is assumed that you are using the @grpc/grpc-js library.

    Installation

    yarn add grpc-ts-health-check

    Install the @grpc/grpc-js library:

    yarn add @grpc/grpc-js

    Dependencies

    • Google Protobuf: Protocol Buffers - Google's data interchange format.
    • gRPC Boom: A zero dependency library to help create gRPC-friendly error objects.

    Usage

    import * as grpc from '@grpc/grpc-js';
    import * as protoLoader from '@grpc/proto-loader';
    import path from 'path';
    
    import { HealthClient } from '../dist/proto/grpc/health/v1/Health';
    import { HealthCheckResponse__Output } from '../dist/proto/grpc/health/v1/HealthCheckResponse';
    import { ProtoGrpcType } from '../dist/proto/health';
    
    export class HealthGrpcClient {
      private readonly client: HealthClient;
    
      constructor({ host, port }: { host: string; port: number }) {
        const packageDefinition = protoLoader.loadSync(path.resolve('../dist/proto/health.proto'), {
          arrays: true,
          keepCase: true,
          longs: String,
          enums: String,
          objects: true,
          defaults: true,
        });
        const proto = grpc.loadPackageDefinition(packageDefinition) as unknown as ProtoGrpcType;
        this.client = new proto.grpc.health.v1.Health(
          `${host}:${port}`,
          grpc.ChannelCredentials.createInsecure(),
        );
      }
    
      checkStatus(): Promise<HealthCheckResponse__Output> {
        return new Promise((resolve, reject) => {
          this.client.check(
            { service: 'example' },
            (error?: grpc.ServiceError | null, result?: HealthCheckResponse__Output): void => {
              if (error) {
                reject(error);
              }
              resolve(result || ({} as HealthCheckResponse__Output));
            },
          );
        });
      }
    
      watchStatus(): grpc.ClientReadableStream<HealthCheckResponse__Output> {
        return this.client.watch({ service: 'example' });
      }
    }

    Methods

    Below is a list of available methods:

    check(request, callback)

    Checks the status of the service once.

    • request - the HealthCheckRequest object.
    • callback (optional) - the callback method.

    watch(request)

    Set the initial status of the service and continues to watch for any changes.

    • request - the HealthCheckRequest object.

    License

    MIT License

    Contributing

    Contributions are encouraged, please see further details below:

    Pull Requests

    Here are some basic rules to follow to ensure timely addition of your request:

    1. Match coding style (braces, spacing, etc.).
    2. If it is a feature, bugfix, or anything please only change the minimum amount of code required to satisfy the change.
    3. Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge.
    4. Pull requests must be made against the main branch. Any other branch (unless specified by the maintainers) will get rejected.
    5. Check for existing issues first, before filing a new issue.

    Install

    npm i grpc-ts-health-check

    DownloadsWeekly Downloads

    1,013

    Version

    3.1.2

    License

    MIT

    Unpacked Size

    21 kB

    Total Files

    19

    Last publish

    Collaborators

    • nicolaspearson