Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@asyncapi/protobuf-schema-parser
Advanced tools
An AsyncAPI schema parser for Protocol Buffers data types.
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.
npm install @asyncapi/protobuf-schema-parser
// OR
yarn add @asyncapi/protobuf-schema-parser
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:
$ref
import
, except the default
google types:
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;
}
annotation | description |
---|---|
@Example | json schema examples keyword. Can exists multiple times. If used with an complex type, an single lines json object hast to be used. |
@Min or @Minimum | json schema numeric validator |
@Max or @Maximum | json schema numeric validator |
@Pattern | json scheme string validator |
@ExclusiveMinimum | json schema numeric validator |
@ExclusiveMaximum | json schema numeric validator |
@MultipleOf | json schema numeric validator |
@MinLength | json scheme string validator |
@MaxLength | json scheme string validator |
@MinItems | json scheme array validator |
@MaxItems | json scheme array validator |
@Default | json schema default value |
annotation | description |
---|---|
@RootNode | If there are multiple types without an parent you can give a hint to the root node with this annotation. |
annotation | description |
---|---|
@Option | In head of your file you can place options for the parser |
The @Option
have to follow by space separated options key and another space separated value
// @Option primitiveTypesWithLimits false
message Point {
}
Possible options are:
option | description | def |
---|---|---|
primitiveTypesWithLimits | If you dont like to get default Min and Max limits for primitive types, you can set this option to false | true |
FAQs
An AsyncAPI schema parser for Protocol Buffers data types.
We found that @asyncapi/protobuf-schema-parser demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
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.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.