protobuf-es icon indicating copy to clipboard operation
protobuf-es copied to clipboard

Include field and type name in toBinary errors?

Open bhollis opened this issue 1 year ago • 1 comments

Would folks be open to adding more information to errors returned from toBinary? For example, right now I'm getting this error:

Error: invalid uint32: -1
    at assertUInt32 (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js:487:15)
    at BinaryWriter.uint32 (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js:161:9)
    at writeScalarValue (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:164:20)
    at writeScalar (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:71:5)
    at writeField (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:55:13)
    at writeFields (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:38:9)
    at writeMessageField (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:78:9)
    at writeField (file:///home/node/app/node_modules/.pnpm/@[email protected]/node_modules/@bufbuild/protobuf/dist/esm/to-binary.js:61:13)

I can't tell which field was being written, or which message type. If we added a try/catch around writeField we could add this information. I'm happy to submit a PR if this is something folks want.

bhollis avatar Oct 03 '24 01:10 bhollis

Hey Ben, it would be nice to provide more context in those errors if we can avoid regressions on performance, and keep bundle size reasonable.

It's not as simple as catching everything in writeField though, since it's called recursively.

timostamm avatar Oct 03 '24 10:10 timostamm