protobuf.js
protobuf.js copied to clipboard
Support `l_bracket SpecialFieldName r_bracket` in optionValues
protobuf.js version: 7.3.2
According to protobuf language specification option value in form of
MessageLiteralWithBraces = l_brace MessageTexFormat r_brace can have MessageLiteralFieldName represented as
l_bracket SpecialFieldName r_bracket (see Protobuf Text Format in spec).
Now https://github.com/protobufjs/protobuf.js/blob/master/src/parse.js#L638 checks only for the FieldName which equals to identifier but not for SpecialFieldName.
Valid proto (from Scalapb docs)
syntax = "proto3";
package mypkg;
import "scalapb/scalapb.proto";
import "scalapb/validate.proto";
option (scalapb.options) = {
scope: PACKAGE
[scalapb.validate.file] {
validate_at_construction: true
insert_validator_instance: true
skip: false
}
};
/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/pbjs.js:254
throw err;
^
Error: illegal name '[' (option-values.proto, line 10)
at illegal (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/parse.js:96:16)
at parseOptionValue (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/parse.js:639:27)
at parseOption (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/parse.js:627:27)
at parse (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/parse.js:852:17)
at process (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/root.js:127:30)
at fetch (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/root.js:179:13)
at Root.load (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/root.js:207:13)
at Root.loadSync (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/node_modules/protobufjs/src/root.js:248:17)
at Object.main (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/pbjs.js:245:18)
at Object.<anonymous> (/home/.nvm/versions/node/v20.11.0/lib/node_modules/protobufjs-cli/bin/pbjs:4:16)
Node.js v20.11.0