New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@bufbuild/protoc-gen-es

Package Overview
Dependencies
Maintainers
0
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bufbuild/protoc-gen-es - npm Package Compare versions

Comparing version 2.0.0-alpha.4 to 2.0.0-beta.1

8

dist/cjs/package.json
{
"name": "@bufbuild/protoc-gen-es",
"version": "2.0.0-alpha.4",
"version": "2.0.0-beta.1",
"description": "Protocol Buffers code generator for ECMAScript",

@@ -23,7 +23,7 @@ "license": "Apache-2.0",

"dependencies": {
"@bufbuild/protobuf": "^2.0.0-alpha.4",
"@bufbuild/protoplugin": "2.0.0-alpha.4"
"@bufbuild/protobuf": "^2.0.0-beta.1",
"@bufbuild/protoplugin": "2.0.0-beta.1"
},
"peerDependencies": {
"@bufbuild/protobuf": "2.0.0-alpha.4"
"@bufbuild/protobuf": "2.0.0-beta.1"
},

@@ -30,0 +30,0 @@ "peerDependenciesMeta": {

@@ -19,2 +19,3 @@ "use strict";

const codegenv1_1 = require("@bufbuild/protobuf/codegenv1");
const wkt_1 = require("@bufbuild/protobuf/wkt");
const protoplugin_1 = require("@bufbuild/protoplugin");

@@ -26,2 +27,3 @@ const util_1 = require("./util");

version: `v${String(package_json_1.version)}`,
parseOptions,
generateTs,

@@ -31,2 +33,18 @@ generateJs,

});
function parseOptions(options) {
let jsonTypes = false;
for (const { key, value } of options) {
switch (key) {
case "json_types":
if (!["true", "1", "false", "0"].includes(value)) {
throw "please provide true or false";
}
jsonTypes = ["true", "1"].includes(value);
break;
default:
throw new Error();
}
}
return { jsonTypes };
}
// This annotation informs bundlers that the succeeding function call is free of

@@ -43,3 +61,3 @@ // side effects. This means the symbol can be removed from the module during

const { GenDescFile } = f.runtime.codegen;
const fileDesc = f.importDesc(file);
const fileDesc = f.importSchema(file);
generateDescDoc(f, file);

@@ -53,8 +71,17 @@ f.print(f.export("const", fileDesc.name), ": ", GenDescFile, " = ", pure);

generateMessageShape(f, desc, "ts");
if (schema.options.jsonTypes) {
generateMessageJsonShape(f, desc, "ts");
}
generateDescDoc(f, desc);
const name = f.importSchema(desc).name;
const Shape = f.importShape(desc);
const { GenDescMessage, messageDesc } = f.runtime.codegen;
const MessageShape = f.importShape(desc);
const name = f.importDesc(desc).name;
generateDescDoc(f, desc);
if (schema.options.jsonTypes) {
const JsonType = f.importJson(desc);
f.print(f.export("const", name), ": ", GenDescMessage, "<", Shape, ", ", JsonType, ">", " = ", pure);
}
else {
f.print(f.export("const", name), ": ", GenDescMessage, "<", Shape, ">", " = ", pure);
}
const call = (0, util_1.functionCall)(messageDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);
f.print(f.export("const", name), ": ", GenDescMessage, "<", MessageShape, ">", " = ", pure);
f.print(" ", call, ";");

@@ -66,8 +93,17 @@ f.print();

generateEnumShape(f, desc);
if (schema.options.jsonTypes) {
generateEnumJsonShape(f, desc, "ts");
}
generateDescDoc(f, desc);
const name = f.importSchema(desc).name;
const Shape = f.importShape(desc);
const { GenDescEnum, enumDesc } = f.runtime.codegen;
const EnumShape = f.importShape(desc);
generateDescDoc(f, desc);
const name = f.importDesc(desc).name;
if (schema.options.jsonTypes) {
const JsonType = f.importJson(desc);
f.print(f.export("const", name), ": ", GenDescEnum, "<", Shape, ", ", JsonType, ">", " = ", pure);
}
else {
f.print(f.export("const", name), ": ", GenDescEnum, "<", Shape, ">", " = ", pure);
}
const call = (0, util_1.functionCall)(enumDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);
f.print(f.export("const", name), ": ", GenDescEnum, "<", EnumShape, ">", " = ", pure);
f.print(" ", call, ";");

@@ -79,5 +115,5 @@ f.print();

const { GenDescExtension, extDesc } = f.runtime.codegen;
const name = f.importDesc(desc).name;
const name = f.importSchema(desc).name;
const E = f.importShape(desc.extendee);
const V = (0, util_1.fieldTypeScriptType)(desc).typing;
const V = (0, util_1.fieldTypeScriptType)(desc, f.runtime).typing;
const call = (0, util_1.functionCall)(extDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);

@@ -92,3 +128,3 @@ f.print(f.jsDoc(desc));

const { GenDescService, serviceDesc } = f.runtime.codegen;
const name = f.importDesc(desc).name;
const name = f.importSchema(desc).name;
const call = (0, util_1.functionCall)(serviceDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);

@@ -110,3 +146,3 @@ f.print(f.jsDoc(desc));

f.preamble(file);
const fileDesc = f.importDesc(file);
const fileDesc = f.importSchema(file);
generateDescDoc(f, file);

@@ -119,5 +155,5 @@ f.print(f.export("const", fileDesc.name), " = ", pure);

case "message": {
const name = f.importSchema(desc).name;
generateDescDoc(f, desc);
const { messageDesc } = f.runtime.codegen;
const name = f.importDesc(desc).name;
generateDescDoc(f, desc);
const call = (0, util_1.functionCall)(messageDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);

@@ -132,7 +168,7 @@ f.print(f.export("const", name), " = ", pure);

{
generateDescDoc(f, desc);
const name = f.importSchema(desc).name;
f.print(f.export("const", name), " = ", pure);
const { enumDesc } = f.runtime.codegen;
generateDescDoc(f, desc);
const name = f.importDesc(desc).name;
const call = (0, util_1.functionCall)(enumDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);
f.print(f.export("const", name), " = ", pure);
f.print(" ", call, ";");

@@ -144,5 +180,5 @@ f.print();

f.print(f.jsDoc(desc));
f.print(f.export("const", f.importShape(desc).name), " = ", pure);
const { tsEnum } = f.runtime.codegen;
const call = (0, util_1.functionCall)(tsEnum, [f.importDesc(desc)]);
f.print(f.export("const", f.importShape(desc).name), " = ", pure);
const call = (0, util_1.functionCall)(tsEnum, [f.importSchema(desc)]);
f.print(" ", call, ";");

@@ -154,7 +190,7 @@ f.print();

case "extension": {
f.print(f.jsDoc(desc));
const name = f.importSchema(desc).name;
f.print(f.export("const", name), " = ", pure);
const { extDesc } = f.runtime.codegen;
const name = f.importDesc(desc).name;
const call = (0, util_1.functionCall)(extDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);
f.print(f.jsDoc(desc));
f.print(f.export("const", name), " = ", pure);
f.print(" ", call, ";");

@@ -165,7 +201,7 @@ f.print();

case "service": {
f.print(f.jsDoc(desc));
const name = f.importSchema(desc).name;
f.print(f.export("const", name), " = ", pure);
const { serviceDesc } = f.runtime.codegen;
const name = f.importDesc(desc).name;
f.print(f.jsDoc(desc));
const call = (0, util_1.functionCall)(serviceDesc, [fileDesc, ...(0, codegenv1_1.pathInFileDesc)(desc)]);
f.print(f.export("const", name), " = ", pure);
f.print(" ", call, ";");

@@ -185,3 +221,3 @@ f.print();

const { GenDescFile } = f.runtime.codegen;
const fileDesc = f.importDesc(file);
const fileDesc = f.importSchema(file);
generateDescDoc(f, file);

@@ -194,7 +230,16 @@ f.print(f.export("declare const", fileDesc.name), ": ", GenDescFile, ";");

generateMessageShape(f, desc, "dts");
if (schema.options.jsonTypes) {
generateMessageJsonShape(f, desc, "dts");
}
const name = f.importSchema(desc).name;
const Shape = f.importShape(desc);
const { GenDescMessage } = f.runtime.codegen;
const MessageShape = f.importShape(desc);
const name = f.importDesc(desc).name;
generateDescDoc(f, desc);
f.print(f.export("declare const", name), ": ", GenDescMessage, "<", MessageShape, ">", ";");
if (schema.options.jsonTypes) {
const JsonType = f.importJson(desc);
f.print(f.export("declare const", name), ": ", GenDescMessage, "<", Shape, ", ", JsonType, ">", ";");
}
else {
f.print(f.export("declare const", name), ": ", GenDescMessage, "<", Shape, ">", ";");
}
f.print();

@@ -205,7 +250,16 @@ break;

generateEnumShape(f, desc);
if (schema.options.jsonTypes) {
generateEnumJsonShape(f, desc, "dts");
}
generateDescDoc(f, desc);
const name = f.importSchema(desc).name;
const Shape = f.importShape(desc);
const { GenDescEnum } = f.runtime.codegen;
const EnumShape = f.importShape(desc);
generateDescDoc(f, desc);
const name = f.importDesc(desc).name;
f.print(f.export("declare const", name), ": ", GenDescEnum, "<", EnumShape, ">;");
if (schema.options.jsonTypes) {
const JsonType = f.importJson(desc);
f.print(f.export("declare const", name), ": ", GenDescEnum, "<", Shape, ", ", JsonType, ">;");
}
else {
f.print(f.export("declare const", name), ": ", GenDescEnum, "<", Shape, ">;");
}
f.print();

@@ -216,5 +270,5 @@ break;

const { GenDescExtension } = f.runtime.codegen;
const name = f.importDesc(desc).name;
const name = f.importSchema(desc).name;
const E = f.importShape(desc.extendee);
const V = (0, util_1.fieldTypeScriptType)(desc).typing;
const V = (0, util_1.fieldTypeScriptType)(desc, f.runtime).typing;
f.print(f.jsDoc(desc));

@@ -227,3 +281,3 @@ f.print(f.export("declare const", name), ": ", GenDescExtension, "<", E, ", ", V, ">;");

const { GenDescService } = f.runtime.codegen;
const name = f.importDesc(desc).name;
const name = f.importSchema(desc).name;
f.print(f.jsDoc(desc));

@@ -247,3 +301,3 @@ f.print(f.export("declare const", name), ": ", GenDescService, "<", getServiceShapeExpr(f, desc), ">;");

`Describes the ${desc.toString()}.`,
`Use \`create(${f.importDesc(desc).name})\` to create a new message.`,
`Use \`create(${f.importSchema(desc).name})\` to create a new message.`,
];

@@ -301,4 +355,4 @@ break;

print(" methodKind: ", f.string(method.methodKind), ";");
print(" input: typeof ", f.importDesc(method.input, true), ";");
print(" output: typeof ", f.importDesc(method.output, true), ";");
print(" input: typeof ", f.importSchema(method.input, true), ";");
print(" output: typeof ", f.importSchema(method.output, true), ";");
print(" },");

@@ -324,2 +378,21 @@ }

// prettier-ignore
function generateEnumJsonShape(f, enumeration, target) {
f.print(f.jsDoc(`JSON type for the ${enumeration.toString()}.`));
const declaration = target == "ts" ? "type" : "declare type";
const values = [];
if (enumeration.typeName == "google.protobuf.NullValue") {
values.push("null");
}
else {
for (const v of enumeration.values) {
if (enumeration.values.indexOf(v) > 0) {
values.push(" | ");
}
values.push(f.string(v.name));
}
}
f.print(f.export(declaration, f.importJson(enumeration).name), " = ", values, ";");
f.print();
}
// prettier-ignore
function generateMessageShape(f, message, target) {

@@ -340,3 +413,3 @@ const { Message } = f.runtime;

f.print(f.jsDoc(field, " "));
const { typing } = (0, util_1.fieldTypeScriptType)(field);
const { typing } = (0, util_1.fieldTypeScriptType)(field, f.runtime);
f.print(` value: `, typing, `;`);

@@ -349,3 +422,3 @@ f.print(` case: "`, field.localName, `";`);

f.print(f.jsDoc(member, " "));
const { typing, optional } = (0, util_1.fieldTypeScriptType)(member);
const { typing, optional } = (0, util_1.fieldTypeScriptType)(member, f.runtime);
if (optional) {

@@ -367,1 +440,61 @@ f.print(" ", member.localName, "?: ", typing, ";");

}
// prettier-ignore
function generateMessageJsonShape(f, message, target) {
const exp = f.export(target == "ts" ? "type" : "declare type", f.importJson(message).name);
f.print(f.jsDoc(`JSON type for the ${message.toString()}.`));
switch (message.typeName) {
case "google.protobuf.Any":
f.print(exp, " = {");
f.print(` "@type"?: string`);
f.print("};");
break;
case "google.protobuf.Timestamp":
f.print(exp, " = string;");
break;
case "google.protobuf.Duration":
f.print(exp, " = string;");
break;
case "google.protobuf.FieldMask":
f.print(exp, " = string;");
break;
case "google.protobuf.Struct":
f.print(exp, " = ", f.runtime.JsonObject, ";");
break;
case "google.protobuf.Value":
f.print(exp, " = ", f.runtime.JsonValue, ";");
break;
case "google.protobuf.ListValue":
f.print(exp, " = ", f.runtime.JsonValue, "[];");
break;
case "google.protobuf.Empty":
f.print(exp, " = Record<string, never>;");
break;
default:
if ((0, wkt_1.isWrapperDesc)(message)) {
f.print(exp, " = ", (0, util_1.fieldJsonType)(message.fields[0]), ";");
}
else {
f.print(exp, " = {");
for (const field of message.fields) {
switch (field.kind) {
default:
f.print(f.jsDoc(`@generated from field: ${(0, protoplugin_1.getDeclarationString)(field)};`, " "));
// eslint-disable-next-line no-case-declarations
let jsonName = field.jsonName;
if (jsonName === ""
|| /^[0-9]/.test(jsonName)
|| jsonName.indexOf("@") > -1) {
jsonName = f.string(jsonName);
}
f.print(" ", jsonName, "?: ", (0, util_1.fieldJsonType)(field), ";");
break;
}
if (message.fields.indexOf(field) < message.fields.length - 1) {
f.print();
}
}
f.print("};");
}
}
f.print();
}

@@ -16,7 +16,7 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.arrayLiteral = exports.functionCall = exports.fieldTypeScriptType = void 0;
exports.arrayLiteral = exports.functionCall = exports.fieldJsonType = exports.fieldTypeScriptType = void 0;
const protobuf_1 = require("@bufbuild/protobuf");
const codegenv1_1 = require("@bufbuild/protobuf/codegenv1");
const wkt_1 = require("@bufbuild/protobuf/wkt");
function fieldTypeScriptType(field) {
function fieldTypeScriptType(field, imports) {
const typing = [];

@@ -30,12 +30,3 @@ let optional = false;

case "message": {
if (!field.oneof && (0, wkt_1.isWrapperDesc)(field.message)) {
const baseType = field.message.fields[0].scalar;
typing.push((0, codegenv1_1.scalarTypeScriptType)(baseType, false));
}
else {
typing.push({
kind: "es_shape_ref",
desc: field.message,
});
}
typing.push(messageFieldTypeScriptType(field, imports));
optional = true;

@@ -64,6 +55,3 @@ break;

case "message": {
typing.push({
kind: "es_shape_ref",
desc: field.message,
}, "[]");
typing.push(messageFieldTypeScriptType(field, imports), "[]");
break;

@@ -93,6 +81,3 @@ }

case "message":
valueType = {
kind: "es_shape_ref",
desc: field.message,
};
valueType = messageFieldTypeScriptType(field, imports);
break;

@@ -114,2 +99,97 @@ case "enum":

exports.fieldTypeScriptType = fieldTypeScriptType;
function messageFieldTypeScriptType(field, imports) {
var _a;
if ((0, wkt_1.isWrapperDesc)(field.message) &&
!field.oneof &&
field.fieldKind == "message") {
const baseType = field.message.fields[0].scalar;
return (0, codegenv1_1.scalarTypeScriptType)(baseType, false);
}
if (field.message.typeName == wkt_1.StructSchema.typeName &&
((_a = field.parent) === null || _a === void 0 ? void 0 : _a.typeName) != wkt_1.ValueSchema.typeName) {
return imports.JsonObject;
}
return {
kind: "es_shape_ref",
desc: field.message,
};
}
function fieldJsonType(field) {
switch (field.fieldKind) {
case "scalar":
return (0, codegenv1_1.scalarJsonType)(field.scalar);
case "message":
return {
kind: "es_json_type_ref",
desc: field.message,
};
case "enum":
return {
kind: "es_json_type_ref",
desc: field.enum,
};
case "list":
switch (field.listKind) {
case "enum":
return [
{
kind: "es_json_type_ref",
desc: field.enum,
},
"[]",
];
case "scalar": {
const t = (0, codegenv1_1.scalarJsonType)(field.scalar);
if (t.includes("|")) {
return ["(", t, ")[]"];
}
return [t, "[]"];
}
case "message":
return [
{
kind: "es_json_type_ref",
desc: field.message,
},
"[]",
];
}
break;
case "map": {
let keyType;
switch (field.mapKey) {
case protobuf_1.ScalarType.INT32:
case protobuf_1.ScalarType.FIXED32:
case protobuf_1.ScalarType.UINT32:
case protobuf_1.ScalarType.SFIXED32:
case protobuf_1.ScalarType.SINT32:
keyType = "number";
break;
default:
keyType = "string";
break;
}
let valueType;
switch (field.mapKind) {
case "scalar":
valueType = (0, codegenv1_1.scalarJsonType)(field.scalar);
break;
case "message":
valueType = {
kind: "es_json_type_ref",
desc: field.message,
};
break;
case "enum":
valueType = {
kind: "es_json_type_ref",
desc: field.enum,
};
break;
}
return ["{ [key: ", keyType, "]: ", valueType, " }"];
}
}
}
exports.fieldJsonType = fieldJsonType;
function functionCall(fn, args, typeParams) {

@@ -116,0 +196,0 @@ let tp = [];

{
"name": "@bufbuild/protoc-gen-es",
"version": "2.0.0-alpha.4",
"version": "2.0.0-beta.1",
"description": "Protocol Buffers code generator for ECMAScript",

@@ -23,7 +23,7 @@ "license": "Apache-2.0",

"dependencies": {
"@bufbuild/protobuf": "^2.0.0-alpha.4",
"@bufbuild/protoplugin": "2.0.0-alpha.4"
"@bufbuild/protobuf": "^2.0.0-beta.1",
"@bufbuild/protoplugin": "2.0.0-beta.1"
},
"peerDependencies": {
"@bufbuild/protobuf": "2.0.0-alpha.4"
"@bufbuild/protobuf": "2.0.0-beta.1"
},

@@ -30,0 +30,0 @@ "peerDependenciesMeta": {

@@ -138,1 +138,6 @@ # @bufbuild/protoc-gen-es

the top of each file to skip type checks: `// @ts-nocheck`.
### `json_types=true`
Generates JSON types for every Protobuf message and enumeration. Calling `toJson()`
will automatically return the JSON type if available.
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