3.2.12 • Published 15 days ago

@asyncapi/protobuf-schema-parser v3.2.12

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
15 days ago

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.
3.2.12

15 days ago

3.2.11

18 days ago

3.2.10

30 days ago

3.2.9

1 month ago

3.2.6

2 months ago

3.2.8

2 months ago

3.2.7

2 months ago

3.2.5

2 months ago

3.2.4

2 months ago

3.2.3

3 months ago

3.2.2

3 months ago

3.2.1

3 months ago

3.1.2

3 months ago

3.2.0

3 months ago

3.1.1

3 months ago

3.1.0

3 months ago

3.0.6

5 months ago

3.0.5

5 months ago

3.0.4

5 months ago

3.0.3

5 months ago

3.0.2

6 months ago

3.0.0-next-major.1

8 months ago

3.0.1

7 months ago

3.0.0

8 months ago

2.0.0

8 months ago

1.0.0

1 year ago