Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@asyncapi/protobuf-schema-parser

Package Overview
Dependencies
Maintainers
3
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@asyncapi/protobuf-schema-parser

An AsyncAPI schema parser for Protocol Buffers data types.

  • 3.3.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
3
Created
Source

ProtoBuff Data Types Schema Parser

A schema parser for Protocol Buffers data types. For ProtoBuff 2 and 3 schemas.

There is no explicit distinction between ProtoBuff 2 and 3. You dont have to expect any errors if your schemaFormat is application/vnd.google.protobuf;version=2 defined, but your schema is proto3.

Version >= 2.0.0 of package is only supported by @asyncapi/parser version >= 2.0.0.

This package is browser-compatible.

Installation

npm install @asyncapi/protobuf-schema-parser
// OR
yarn add @asyncapi/protobuf-schema-parser

Usage

import {Parser} from '@asyncapi/parser';
import {ProtoSchemaParser} from '@asyncapi/protobuf-schema-parser'

const parser = new Parser();
parser.registerSchemaParser(ProtoSchemaParser());

const asyncapiWithProto = `
asyncapi: 2.0.0
info:
  title: Example with ProtoBuff
  version: 0.1.0
channels:
  example:
    publish:
      message:
        schemaFormat: 'application/vnd.google.protobuf;version=3'
        payload: |
            message Point {
                required int32 x = 1;
                required int32 y = 2;
                optional string label = 3;
            }

            message Line {
                required Point start = 1;
                required Point end = 2;
                optional string label = 3;
            }
`

const {document} = await parser.parse(asyncapiWithProto);
const {Parser} = require('@asyncapi/parser');
const {ProtoSchemaParser} = require('@asyncapi/protobuf-schema-parser');

const parser = new Parser();
parser.registerSchemaParser(ProtoSchemaParser());

const asyncapiWithProto = `
asyncapi: 2.0.0
info:
  title: Example with ProtoBuff
  version: 0.1.0
channels:
  example:
    publish:
      message:
        schemaFormat: 'application/vnd.google.protobuf;version=3'
        payload: |
            message Point {
                required int32 x = 1;
                required int32 y = 2;
                optional string label = 3;
            }

            message Line {
                required Point start = 1;
                required Point end = 2;
                optional string label = 3;
            }
`

const {document} = await parser.parse(asyncapiWithProto);

Place your protoBuff schema as string in payload to get it parsed.

References are NOT supported:

  • no support for $ref
  • no support for import, except the default google types:
    • google/protobuf/*
    • google/type/*

Comments

Each field of a message may have a comment witch will be reflected as json schema description. Furthermore, the comment can contain the following annotations:

message Point {
    /*
     * The cordinate on the x axis.
     * @Default 99
     * @Min 0
     * @Max 100 
     */
    required int32 x = 1;
    
    /*
     * The cordinate on the y axis.
     * @Default 12
     * @Min 0
     * @Max 100 
     */
    required int32 y = 2;
    optional string label = 3;
}

Per field annotation

annotationdescription
@Examplejson schema examples keyword. Can exists multiple times. If used with an complex type, an single lines json object hast to be used.
@Min or @Minimumjson schema numeric validator
@Max or @Maximumjson schema numeric validator
@Patternjson scheme string validator
@ExclusiveMinimumjson schema numeric validator
@ExclusiveMaximumjson schema numeric validator
@MultipleOfjson schema numeric validator
@MinLengthjson scheme string validator
@MaxLengthjson scheme string validator
@MinItemsjson scheme array validator
@MaxItemsjson scheme array validator
@Defaultjson schema default value

Per message annotation

annotationdescription
@RootNodeIf there are multiple types without an parent you can give a hint to the root node with this annotation.

Head annotation

annotationdescription
@OptionIn head of your file you can place options for the parser

Head annotation "Option"

The @Option have to follow by space separated options key and another space separated value

// @Option primitiveTypesWithLimits false

message Point {

}

Possible options are:

optiondescriptiondef
primitiveTypesWithLimitsIf you dont like to get default Min and Max limits for primitive types, you can set this option to falsetrue

Keywords

FAQs

Package last updated on 29 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc