or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cli-tool.mdindex.mdproto-loading.mdtype-definitions.md
tile.json

tessl/npm-grpc--proto-loader

gRPC utility library for loading .proto files

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@grpc/proto-loader@0.8.x

To install, run

npx @tessl/cli install tessl/npm-grpc--proto-loader@0.8.0

index.mddocs/

@grpc/proto-loader

@grpc/proto-loader is a gRPC utility library for loading .proto files using the latest Protobuf.js package. It provides both synchronous and asynchronous methods for loading Protocol Buffer definitions and converting them into JavaScript/TypeScript objects that can be consumed by gRPC libraries.

Package Information

  • Package Name: @grpc/proto-loader
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install @grpc/proto-loader

Core Imports

import * as protoLoader from "@grpc/proto-loader";
import { load, loadSync, Options, PackageDefinition } from "@grpc/proto-loader";

For CommonJS:

const protoLoader = require("@grpc/proto-loader");
const { load, loadSync } = require("@grpc/proto-loader");

Basic Usage

import * as protoLoader from "@grpc/proto-loader";
import * as grpc from "@grpc/grpc-js";

// Asynchronous loading
const packageDefinition = await protoLoader.load("path/to/service.proto", {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});

const packageObject = grpc.loadPackageDefinition(packageDefinition);

// Synchronous loading
const packageDefinitionSync = protoLoader.loadSync("path/to/service.proto", {
  keepCase: true,
  longs: String,
  enums: String
});

Architecture

@grpc/proto-loader is built around several key components:

  • Protocol Buffer Loading: Core functionality for parsing .proto files using Protobuf.js
  • Package Definition Creation: Converts loaded proto structures into gRPC-compatible package definitions
  • Type System Integration: Full TypeScript support with comprehensive type definitions
  • Serialization/Deserialization: Built-in serializers and deserializers for all message types
  • CLI Tool: Command-line utility for generating TypeScript type definitions from .proto files
  • Flexible Configuration: Extensive options for customizing parsing, conversion, and type handling

Capabilities

Protocol Buffer Loading

Core functionality for loading and parsing .proto files with various configuration options. Supports both synchronous and asynchronous loading patterns.

function load(
  filename: string | string[],
  options?: Options
): Promise<PackageDefinition>;

function loadSync(
  filename: string | string[],
  options?: Options
): PackageDefinition;

Protocol Buffer Loading

Advanced Loading Methods

Additional methods for loading from JSON objects, binary descriptor sets, and other formats beyond standard .proto files.

function fromJSON(
  json: Protobuf.INamespace,
  options?: Options
): PackageDefinition;

function loadFileDescriptorSetFromBuffer(
  descriptorSet: Buffer,
  options?: Options
): PackageDefinition;

function loadFileDescriptorSetFromObject(
  descriptorSet: Parameters<typeof descriptor.FileDescriptorSet.fromObject>[0],
  options?: Options
): PackageDefinition;

Protocol Buffer Loading

Type System and Definitions

Comprehensive TypeScript type definitions for all Protocol Buffer structures, including messages, services, enums, and method definitions.

interface PackageDefinition {
  [index: string]: AnyDefinition;
}

interface Options extends Protobuf.IParseOptions, Protobuf.IConversionOptions {
  includeDirs?: string[];
}

interface MessageTypeDefinition<InputType, OutputType> extends ProtobufTypeDefinition {
  format: 'Protocol Buffer 3 DescriptorProto';
  serialize: Serialize<InputType>;
  deserialize: Deserialize<OutputType>;
}

Type Definitions

CLI Type Generation Tool

Command-line utility for generating TypeScript type definitions from .proto files, enabling type-safe gRPC development.

proto-loader-gen-types --longs=String --enums=String --defaults --oneofs --grpcLib=@grpc/grpc-js --outDir=proto/ proto/*.proto

CLI Tool

Core Types

interface AnyExtension {
  '@type': string;
}

function isAnyExtension(obj: object): obj is AnyExtension;

export { Options, Long };