@grpc/proto-loader
Advanced tools
Comparing version 0.6.0-pre8 to 0.6.0-pre9
@@ -27,13 +27,2 @@ #!/usr/bin/env node | ||
const util_1 = require("../src/util"); | ||
function compareName(x, y) { | ||
if (x.name < y.name) { | ||
return -1; | ||
} | ||
else if (x.name > y.name) { | ||
return 1; | ||
} | ||
else { | ||
return 0; | ||
} | ||
} | ||
class TextFormatter { | ||
@@ -62,2 +51,14 @@ constructor() { | ||
} | ||
// GENERATOR UTILITY FUNCTIONS | ||
function compareName(x, y) { | ||
if (x.name < y.name) { | ||
return -1; | ||
} | ||
else if (x.name > y.name) { | ||
return 1; | ||
} | ||
else { | ||
return 0; | ||
} | ||
} | ||
function isNamespaceBase(obj) { | ||
@@ -104,3 +105,17 @@ return Array.isArray(obj.nestedArray); | ||
} | ||
function generatePermissiveMessageInterface(formatter, messageType, nameOverride) { | ||
function formatComment(formatter, comment) { | ||
if (!comment) { | ||
return; | ||
} | ||
formatter.writeLine('/**'); | ||
for (const line of comment.split('\n')) { | ||
formatter.writeLine(` * ${line.replace(/\*\//g, '* /')}`); | ||
} | ||
formatter.writeLine(' */'); | ||
} | ||
// GENERATOR FUNCTIONS | ||
function generatePermissiveMessageInterface(formatter, messageType, options, nameOverride) { | ||
if (options.includeComments) { | ||
formatComment(formatter, messageType.comment); | ||
} | ||
if (messageType.fullName === '.google.protobuf.Any') { | ||
@@ -160,2 +175,5 @@ /* This describes the behavior of the Protobuf.js Any wrapper fromObject | ||
} | ||
if (options.includeComments) { | ||
formatComment(formatter, field.comment); | ||
} | ||
formatter.writeLine(`'${field.name}'?: (${type})${repeatedString};`); | ||
@@ -165,2 +183,5 @@ } | ||
const typeString = oneof.fieldsArray.map(field => `"${field.name}"`).join('|'); | ||
if (options.includeComments) { | ||
formatComment(formatter, oneof.comment); | ||
} | ||
formatter.writeLine(`'${oneof.name}'?: ${typeString};`); | ||
@@ -172,2 +193,5 @@ } | ||
function generateRestrictedMessageInterface(formatter, messageType, options, nameOverride) { | ||
if (options.includeComments) { | ||
formatComment(formatter, messageType.comment); | ||
} | ||
if (messageType.fullName === '.google.protobuf.Any' && options.json) { | ||
@@ -269,2 +293,5 @@ /* This describes the behavior of the Protobuf.js Any wrapper toObject | ||
const optionalString = fieldGuaranteed ? '' : '?'; | ||
if (options.includeComments) { | ||
formatComment(formatter, field.comment); | ||
} | ||
formatter.writeLine(`'${field.name}'${optionalString}: (${type})${repeatedString};`); | ||
@@ -275,2 +302,5 @@ } | ||
const typeString = oneof.fieldsArray.map(field => `"${field.name}"`).join('|'); | ||
if (options.includeComments) { | ||
formatComment(formatter, oneof.comment); | ||
} | ||
formatter.writeLine(`'${oneof.name}': ${typeString};`); | ||
@@ -329,3 +359,3 @@ } | ||
if (childType instanceof Protobuf.Type) { | ||
generatePermissiveMessageInterface(formatter, childType, nameOverride); | ||
generatePermissiveMessageInterface(formatter, childType, options, nameOverride); | ||
formatter.writeLine(''); | ||
@@ -335,16 +365,22 @@ generateRestrictedMessageInterface(formatter, childType, options, nameOverride); | ||
else { | ||
generateEnumInterface(formatter, childType, nameOverride); | ||
generateEnumInterface(formatter, childType, options, nameOverride); | ||
} | ||
formatter.writeLine(''); | ||
} | ||
generatePermissiveMessageInterface(formatter, messageType); | ||
generatePermissiveMessageInterface(formatter, messageType, options); | ||
formatter.writeLine(''); | ||
generateRestrictedMessageInterface(formatter, messageType, options); | ||
} | ||
function generateEnumInterface(formatter, enumType, nameOverride) { | ||
function generateEnumInterface(formatter, enumType, options, nameOverride) { | ||
formatter.writeLine(`// Original file: ${enumType.filename}`); | ||
formatter.writeLine(''); | ||
if (options.includeComments) { | ||
formatComment(formatter, enumType.comment); | ||
} | ||
formatter.writeLine(`export enum ${nameOverride !== null && nameOverride !== void 0 ? nameOverride : enumType.name} {`); | ||
formatter.indent(); | ||
for (const key of Object.keys(enumType.values)) { | ||
if (options.includeComments) { | ||
formatComment(formatter, enumType.comments[key]); | ||
} | ||
formatter.writeLine(`${key} = ${enumType.values[key]},`); | ||
@@ -365,3 +401,3 @@ } | ||
} | ||
function generateMessageAndEnumExports(formatter, namespace, nameOverride) { | ||
function generateMessageAndEnumExports(formatter, namespace, options, nameOverride) { | ||
formatter.writeLine(`export namespace ${nameOverride !== null && nameOverride !== void 0 ? nameOverride : namespace.name} {`); | ||
@@ -371,4 +407,10 @@ formatter.indent(); | ||
if (nested instanceof Protobuf.Enum || nested instanceof Protobuf.Type) { | ||
if (options.includeComments) { | ||
formatComment(formatter, nested.comment); | ||
} | ||
formatter.writeLine(`export type ${nested.name} = ${getTypeInterfaceName(nested)};`); | ||
if (nested instanceof Protobuf.Type) { | ||
if (options.includeComments) { | ||
formatComment(formatter, nested.comment); | ||
} | ||
formatter.writeLine(`export type ${nested.name}__Output = ${getTypeInterfaceName(nested)}__Output;`); | ||
@@ -378,3 +420,3 @@ } | ||
else if (isNamespaceBase(nested)) { | ||
generateMessageAndEnumExports(formatter, nested); | ||
generateMessageAndEnumExports(formatter, nested, options); | ||
} | ||
@@ -385,3 +427,6 @@ } | ||
} | ||
function generateServiceClientInterface(formatter, serviceType) { | ||
function generateServiceClientInterface(formatter, serviceType, options) { | ||
if (options.includeComments) { | ||
formatComment(formatter, serviceType.comment); | ||
} | ||
formatter.writeLine(`export interface ${serviceType.name}Client extends grpc.Client {`); | ||
@@ -392,2 +437,5 @@ formatter.indent(); | ||
for (const name of [methodName, camelCase(methodName)]) { | ||
if (options.includeComments) { | ||
formatComment(formatter, method.comment); | ||
} | ||
const requestType = 'messages.' + stripLeadingPeriod(method.resolvedRequestType.fullName); | ||
@@ -434,3 +482,3 @@ const responseType = 'messages.' + stripLeadingPeriod(method.resolvedResponseType.fullName) + '__Output'; | ||
} | ||
function generateAllServiceClientInterfaces(formatter, namespace, nameOverride) { | ||
function generateAllServiceClientInterfaces(formatter, namespace, options, nameOverride) { | ||
formatter.writeLine(`export namespace ${nameOverride !== null && nameOverride !== void 0 ? nameOverride : namespace.name} {`); | ||
@@ -440,6 +488,6 @@ formatter.indent(); | ||
if (nested instanceof Protobuf.Service) { | ||
generateServiceClientInterface(formatter, nested); | ||
generateServiceClientInterface(formatter, nested, options); | ||
} | ||
else if (isNamespaceBase(nested)) { | ||
generateAllServiceClientInterfaces(formatter, nested); | ||
generateAllServiceClientInterfaces(formatter, nested, options); | ||
} | ||
@@ -450,4 +498,7 @@ } | ||
} | ||
function generateSingleLoadedDefinitionType(formatter, nested) { | ||
function generateSingleLoadedDefinitionType(formatter, nested, options) { | ||
if (nested instanceof Protobuf.Service) { | ||
if (options.includeComments) { | ||
formatComment(formatter, nested.comment); | ||
} | ||
formatter.writeLine(`${nested.name}: SubtypeConstructor<typeof grpc.Client, ClientInterfaces.${stripLeadingPeriod(nested.fullName)}Client> & { service: ServiceDefinition }`); | ||
@@ -462,10 +513,10 @@ } | ||
else if (isNamespaceBase(nested)) { | ||
generateLoadedDefinitionTypes(formatter, nested); | ||
generateLoadedDefinitionTypes(formatter, nested, options); | ||
} | ||
} | ||
function generateLoadedDefinitionTypes(formatter, namespace) { | ||
function generateLoadedDefinitionTypes(formatter, namespace, options) { | ||
formatter.writeLine(`${namespace.name}: {`); | ||
formatter.indent(); | ||
for (const nested of namespace.nestedArray.sort(compareName)) { | ||
generateSingleLoadedDefinitionType(formatter, nested); | ||
generateSingleLoadedDefinitionType(formatter, nested, options); | ||
} | ||
@@ -475,3 +526,6 @@ formatter.unindent(); | ||
} | ||
function generateServiceHandlerInterface(formatter, serviceType) { | ||
function generateServiceHandlerInterface(formatter, serviceType, options) { | ||
if (options.includeComments) { | ||
formatComment(formatter, serviceType.comment); | ||
} | ||
formatter.writeLine(`export interface ${serviceType.name} {`); | ||
@@ -481,2 +535,5 @@ formatter.indent(); | ||
const method = serviceType.methods[methodName]; | ||
if (options.includeComments) { | ||
formatComment(formatter, method.comment); | ||
} | ||
const requestType = 'messages.' + stripLeadingPeriod(method.resolvedRequestType.fullName) + '__Output'; | ||
@@ -509,3 +566,3 @@ const responseType = 'messages.' + stripLeadingPeriod(method.resolvedResponseType.fullName); | ||
} | ||
function generateAllServiceHandlerInterfaces(formatter, namespace, nameOverride) { | ||
function generateAllServiceHandlerInterfaces(formatter, namespace, options, nameOverride) { | ||
formatter.writeLine(`export namespace ${nameOverride !== null && nameOverride !== void 0 ? nameOverride : namespace.name} {`); | ||
@@ -515,6 +572,6 @@ formatter.indent(); | ||
if (nested instanceof Protobuf.Service) { | ||
generateServiceHandlerInterface(formatter, nested); | ||
generateServiceHandlerInterface(formatter, nested, options); | ||
} | ||
else if (isNamespaceBase(nested)) { | ||
generateAllServiceHandlerInterfaces(formatter, nested); | ||
generateAllServiceHandlerInterfaces(formatter, nested, options); | ||
} | ||
@@ -531,5 +588,5 @@ } | ||
formatter.writeLine(''); | ||
generateMessageAndEnumExports(formatter, root, 'messages'); | ||
generateMessageAndEnumExports(formatter, root, options, 'messages'); | ||
formatter.writeLine(''); | ||
generateAllServiceClientInterfaces(formatter, root, 'ClientInterfaces'); | ||
generateAllServiceClientInterfaces(formatter, root, options, 'ClientInterfaces'); | ||
formatter.writeLine(''); | ||
@@ -544,3 +601,3 @@ formatter.writeLine('type ConstructorArguments<Constructor> = Constructor extends new (...args: infer Args) => any ? Args: never;'); | ||
for (const nested of root.nestedArray) { | ||
generateSingleLoadedDefinitionType(formatter, nested); | ||
generateSingleLoadedDefinitionType(formatter, nested, options); | ||
} | ||
@@ -550,3 +607,3 @@ formatter.unindent(); | ||
formatter.writeLine(''); | ||
generateAllServiceHandlerInterfaces(formatter, root, 'ServiceHandlers'); | ||
generateAllServiceHandlerInterfaces(formatter, root, options, 'ServiceHandlers'); | ||
} | ||
@@ -569,3 +626,3 @@ async function writeFile(filename, contents) { | ||
else if (nested instanceof Protobuf.Enum) { | ||
generateEnumInterface(fileFormatter, nested); | ||
generateEnumInterface(fileFormatter, nested, options); | ||
if (options.verbose) { | ||
@@ -605,3 +662,3 @@ console.log(`Writing ${options.outDir}/${getPath(nested)} from file ${nested.filename}`); | ||
.array('includeDirs') | ||
.boolean(['keepCase', 'defaults', 'arrays', 'objects', 'oneofs', 'json', 'verbose']) | ||
.boolean(['keepCase', 'defaults', 'arrays', 'objects', 'oneofs', 'json', 'verbose', 'generateComments']) | ||
// .choices('longs', ['String', 'Number']) | ||
@@ -663,3 +720,3 @@ // .choices('enums', ['String']) | ||
util_1.addCommonProtos(); | ||
writeAllFiles(argv._, argv).then(() => { | ||
writeAllFiles(argv._, Object.assign(Object.assign({}, argv), { alternateCommentMode: true })).then(() => { | ||
if (argv.verbose) { | ||
@@ -666,0 +723,0 @@ console.log('Success'); |
{ | ||
"name": "@grpc/proto-loader", | ||
"version": "0.6.0-pre8", | ||
"version": "0.6.0-pre9", | ||
"author": "Google Inc.", | ||
@@ -5,0 +5,0 @@ "contributors": [ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
62410
1136