fix: don't reference globalThis.Buffer when env=browser (#967) #999
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I stumbled over #967 today. The code generated by ts-proto includes references to
globalThis.Buffer
, even though theenv
option is set tobrowser
.While the transpiled code still works in the browser, TypeScript (when using strict mode) complains that
error TS7017: Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.
.The fix is relatively simple: update the
makeByteUtils
function inmain.ts
and only emit the implementations matching chosen environment:env=node
, the emittedbytesFromBase64
andbase64FromBytes
functions now exclusively useglobalThis.Buffer
to de-/encode to and from base64env=browser
,globalThis.btoa
/globalThis.atob
are usedenv=both
, the emitted functions work as before: they check forglobalThis.Buffer
and use either the node or browser implementations accordingly