Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Include dockerized protoc #404

Merged
merged 24 commits into from
Nov 27, 2021
Merged

feat: Include dockerized protoc #404

merged 24 commits into from
Nov 27, 2021

Conversation

boukeversteegh
Copy link
Collaborator

@boukeversteegh boukeversteegh commented Nov 22, 2021

@stephenh I managed to dockerize protoc pretty neatly using a generic protoc.Dockerfile, and a docker-compose.yml file that configures it for use with ts-proto.

This will help developers working on ts-proto, and can be used during integration.

Usage

. aliases.sh

protoc --plugin=//ts-proto/protoc-gen-ts_proto --ts_proto_out=$OUT_DIR -I $PROTO_ROOT $PROTO_FILES
# or
ts-protoc --ts_proto_out=$OUT_DIR -I $PROTO_ROOT $PROTO_FILES
# Example
ts-protoc --ts_proto_out=out -I integration/value integration/value/value.proto

protoc ARGS is equivalent to:

docker-compose run -f docker-compose.yml --rm protoc ARGS
  • the path to the docker-compose file is made absolute, so you can use dockerized protoc anywhere on your system.

Notes

  • The ts-proto root directory is mounted into docker container as /ts-proto
  • The current directory from where protoc is launched is mounted into /host in the container
    • The containers working directory will be /host
    • Because of this, you can use protoc in any directory, and refer to host files using relative paths
    • You cannot refer to files outside of the current directory (i.e: ../foo.proto), as the parent folder will not be mounted on the container.
  • When you launch protoc from the ts-proto root folder, the working directory will contain the protoc-gen-ts_proto file, so then you won't need to specify the --plugin parameter. For some reason, I cannot manage to make the internal protoc recognize the ts-proto plugin binary from the PATH variable. Even though the binary is globally accessible from within the container.
  • For debugging the container, you can run protoc-sh which will launch the container into the shell.
  • Use protoc-build to rebuild the container when you are improving it.

Todo

As I'm not familiar with the actual integration and test process, I hope someone would be willing to do that part. In theory it should be as simple as importing the aliases.sh file, which overwrites protoc with the dockerized version.

@boukeversteegh boukeversteegh changed the title Include dockerized protoc feat: Include dockerized protoc Nov 22, 2021
@sgielen
Copy link
Contributor

sgielen commented Nov 22, 2021

I ran into the same issue you reported in the other PR (that all .bin files were modified) and on my end, I resolved it by running only yarn setup in a Docker container based on node:14-bullseye with apt-get update && apt-get -y install protobuf-compiler ran beforehand. We could, in theory, add the script yarn setup:docker to do this automatically? Then, not only protoc would run in Docker against a stable environment, but also the codegen itself?

@boukeversteegh
Copy link
Collaborator Author

boukeversteegh commented Nov 22, 2021

@sgielen Yeah, I we could definitely update-bins.sh, since that is the culprit. I think codegen.sh is not unstable, but if we dockerized it then devs could run the tools without protoc.

However, dockerizing does replace the protoc dependency with docker. To be fair, it's more reliable and straightforward to depend on docker, rather than protoc, but it will exclude some developers who cannot install docker for some reason.

My idea would be that sourcing the aliases.sh file, the user can opt-in to use dockerized protoc, whereas the scripts would otherwise use the system's protoc command.

However, there would be no option to switch this behavior when using the run scripts.
Perhaps multiple versions of each run script could be available, like setup setup:docker etc.

@stephenh
Copy link
Owner

@boukeversteegh this looks great!

Yeah, good point on the aliasing letting developers opt-in / out of needing to have docker installed. I guess I'm kind of biased, I've been using docker for awhile now so generally take it for granted. I wouldn't mind making that a simplifying function, if only for things like "updating the bin files".

I pulled this down locally to poke around (I like it!) and per @sgielen 's musing, I pushed up a small commit to this PR (hope that's okay!) that adds ~3-4 yarn setup:... scripts, that I think could replace today's ~overly blunt yarn setup with an approach that is both more granular, as well as all running within the docker protoc service, so should have cross-machine deterministic output.

And, yeah, personally I'd be fine with these docker-enabled commands being the primary/only-ish way we provide, at least via the package.json scripts. I suppose really only the update-bins is what really needs to run in the docker service, after that things like codegen.sh are stable and can be ran directly on the host machine. Which is nice b/c I think that's the more frequent iteration cycle, while iterating on changes and seeing what the latest output is.

So, dunno, at least as a 1st/baby step, I could see removing the current setup script, updating the readme to mention each of the setup:docker/pbjs/bins/codegen commands, and then calling that good/great for now? Wdyt?

@boukeversteegh
Copy link
Collaborator Author

@stephenh thank you for your positive reaction :)

command names

I like the separate run commands you made. The big setup command takes quite some time to run, so I started to run things separately, but I ended up messing it up often, by not being careful what I should run, when, and in what order. So in the end its good to have a single combined command, or it should be clear how the separate commands should be used.

What could help is command names that reflect the process a bit better. For example:

  • proto2bin
  • bin2pbjs
  • bin2ts

I think these names will make it more clear. Although I would personally also be happy with a proto2ts command. Or better, let the tests run the conversion, but that's another rabbit hole.

But in general replacing the big 'setup' script with separate commands running in docker, and updating the readme sounds like a valuable improvement, i.e. a good step forward.

making docker primary

Well it would have benefits, I'm not against it. Getting the update-bins.sh to work on Windows was quite a disaster. In the end the solution was not complicated, but it took long to figure out. I had to create a protoc-gen-dump.bat file that contains @bash protoc-gen-dump and use that instead in the script. The way to reference it also was not trivial.

small extra commit

When running the npm commands from Webstorm (my IDE), no $PWD is passed which gave an error, so I updated the compose file to use . as the default working dir, which works well.

@stephenh
Copy link
Owner

proto2bin bin2pbjs bin2ts

Sure, I like those names. And yeah, we could probably have both a single yarn setup that did all three of those, as well as the individual commands for running more incrementally.

Getting the update-bins.sh to work on Windows was quite a disaster

Ah shoot, that sucks. Out of curiosity, would the docker-based yarn proto2bin-runs-update-bins.sh-in-docker solve this, b/c Windows developers wouldn't have to invoke it directly? If so, that seems like a big win. In general, how is docker on Windows? Pretty easy / just works to do like the new yarn proto2bin-runs-docker-compose approach?

@boukeversteegh
Copy link
Collaborator Author

boukeversteegh commented Nov 23, 2021

Cool! Yeah let's keep a single command as well.

The new command that work in docker do away with the windows compatibility issue immediately.

Docker on windows runs really well once it's installed and you can be sure the commands will work without issue.

However, there was an issue with HyperV, an operating system feature for hardware virtualization and virtual box used to not work when hyperv is on. A quick search shows that nowadays vbox is compatible with HV but it is slower and may require reconfiguration of existing VMs after enabling. Then I also remember some colleagues at my past job who could not get docker to work on their work laptops. This is more likely related to security restrictions put in place by the company's sys admins. Another issue is that HyperV is not available on the Home editions of windows, although there's now a way to install docker through the integrated Linux called Windows Subsystem for Linux, which then doesn't require windows professional.

So in short, in some cases, installing docker is not straightforward and I think some users will be happy if they don't need docker to contribute to ts proto.

I can update the scripts to be compatible to be run natively on windows, sometime tomorrow probably. Cheers!

@boukeversteegh
Copy link
Collaborator Author

boukeversteegh commented Nov 25, 2021

Hello! I've made some updates. Please have a look if you're okay with these changes.

Changes:

  • Compatibility of codegen with windows
  • Split up and renamed yarn tasks
  • Added yarn tasks that use locally installed protoc
  • Expanded Readme with development workflow, and how/when to use the commands
  • Allow codegen to run in multiple directories, and accept multiple directory name arguments
  • Avoid one warning previously issued by updatebins, caused by directly compiling proto files inside nested folders in one integration test. The script now only handles integration/*/*.proto, not integration/**/*.proto

I took the liberty to rename setup to build:test, to better indicate that this command needs to be used more than once (unlike setup, which is generally a one-time procedure), and to clarify that it is related to the tests, rather than using the package itself.

Feedback welcome. If all is good, I think it can be merged. There are no loose ends as far as I'm aware.

PS: With this PR we can consistently generate the .bin files. I currently referenced protoc 3.19.1. All .bin files are different when I run updatebins, also when I ran it with the version suggested by @sgielen (which is 3.12.4). Should we update all bins as well, with the latest protoc, as part of this PR?

Copy link
Owner

@stephenh stephenh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@boukeversteegh great, this lgtm! And yeah, I think just include the latest/3.19 updated bins in this PR as well. That way everything should be clean on main after this lands.

@boukeversteegh
Copy link
Collaborator Author

@boukeversteegh great, this lgtm! And yeah, I think just include the latest/3.19 updated bins in this PR as well. That way everything should be clean on main after this lands.

Thank you for your review and approval! I've updated the bins, one test case, and added some notes in the readme about the dockerized protoc.

Feel free to squash/merge if tests pass.

@boukeversteegh
Copy link
Collaborator Author

(or should I merge, so that my name shows up in the commit?)

@boukeversteegh
Copy link
Collaborator Author

boukeversteegh commented Nov 27, 2021

Not sure why, but there's a difference in the .ts files generated by codegen.sh and yarn pb2ts, which runs codegen.sh from within docker.

As far as I understand this script does not rely on protoc, so there should not be any difference.

I'm trying again running from the host, hopefully that resolves the build error.

This kind of means that we should switch the build scripts to use docker as well, otherwise we are pointing developers to use the dockerized scripts, whose output will - in the end - not be accepted by the pipeline. Any help would be appreciated.

@stephenh
Copy link
Owner

@boukeversteegh I made a few small tweaks, and then ran yarn bin2ts, and it had a few extra files that maybe just didn't get included? Not sure, but it's green now! Going to hit merge. Thanks! Getting these bin files stabilized is huge!

@stephenh stephenh merged commit 7564a78 into main Nov 27, 2021
@stephenh stephenh deleted the feature/protoc-docker branch November 27, 2021 16:26
stephenh pushed a commit that referenced this pull request Nov 27, 2021
# [1.91.0](v1.90.1...v1.91.0) (2021-11-27)

### Bug Fixes

* use Long.fromValue instead of Long.fromString for improved robustness regarding already parsed objects ([#405](#405)) ([7bdc3ee](7bdc3ee))

### Features

* Include dockerized protoc ([#404](#404)) ([7564a78](7564a78))
@stephenh
Copy link
Owner

🎉 This PR is included in version 1.91.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@stephenh
Copy link
Owner

@boukeversteegh okay, so there was actually some non-determinism here; it turns out that imported files like timestamp.ts where actually being generated twice, i.e. for the integration/type-registry test that had multiple *.proto files (that each imported timestamp), and hence multiple *.binfiles (and each.binfile had its own copy of theTimestamp` proto type).

But only non-triple-nested *.bin files were getting updated, so we ended up having mixed versions of the google.protobuf.Timestamp type, and the parallelism inside of codegen.sh was just randomly picking which bin file we'd use first, hence which version of timestamp.ts was effectively random.

I ended up fixing this in #418 but only after several other "smashing the hammer on random things" changes. :-)

@boukeversteegh
Copy link
Collaborator Author

@boukeversteegh okay, so there was actually some non-determinism here;

I ended up fixing this in #418 but only after several other "smashing the hammer on random things" changes. :-)

Wow, I'm amazed you were able to figure this out. I will be careful in future PRs to change too many things at once.

nonamich pushed a commit to nonamich/ts-proto that referenced this pull request Feb 3, 2025
# 1.0.0 (2025-02-03)

### Bug Fixes

* `outputSchema=true` when `onlyTypes=true` ([#1039](https://github.com/nonamich/ts-proto/issues/1039)) ([064665f](https://github.com/nonamich/ts-proto/commit/064665f064e072f9d530f84e45f605fd4b5a749c))
* add .js suffix to proto cross-reference imports ([#602](https://github.com/nonamich/ts-proto/issues/602)) ([8dc38af](https://github.com/nonamich/ts-proto/commit/8dc38af40e68262cd53469ce3dc4dcac670365da)), closes [#601](https://github.com/nonamich/ts-proto/issues/601) [/github.com/kulshekhar/ts-jest/issues/1057#issuecomment-481406624](https://github.com//github.com/kulshekhar/ts-jest/issues/1057/issues/issuecomment-481406624)
* Add 'as any' in create ([#895](https://github.com/nonamich/ts-proto/issues/895)) ([4214d5a](https://github.com/nonamich/ts-proto/commit/4214d5af98817f317760298b1b2e03a8e956329c)), closes [#838](https://github.com/nonamich/ts-proto/issues/838)
* add callback close condition ([#837](https://github.com/nonamich/ts-proto/issues/837)) ([2071c67](https://github.com/nonamich/ts-proto/commit/2071c67650a3ac80ec9b5845fec3227ee47841d0))
* Add check for lower bound with forceLong=number ([#1057](https://github.com/nonamich/ts-proto/issues/1057)) ([01ef3c3](https://github.com/nonamich/ts-proto/commit/01ef3c3bb2a6ebb5b15fe8acfdc73f50b19a5a38))
* add deprecated comment when there are not other comments ([#189](https://github.com/nonamich/ts-proto/issues/189)) ([5b6148b](https://github.com/nonamich/ts-proto/commit/5b6148bea45b06fd475493a09f12e625b87d27c3))
* Add functionality for grpc camel case to respect splitting by word ([#721](https://github.com/nonamich/ts-proto/issues/721)) ([4af040c](https://github.com/nonamich/ts-proto/commit/4af040c233792862db85c07d01d1b210a13cae2c)), closes [#722](https://github.com/nonamich/ts-proto/issues/722)
* Add long dep to ts-proto-descriptors. ([#275](https://github.com/nonamich/ts-proto/issues/275)) ([0d20827](https://github.com/nonamich/ts-proto/commit/0d20827dbae5195d30a3094c4ea5e98833909daa))
* Add M1/ARM support for the test suite ([#516](https://github.com/nonamich/ts-proto/issues/516)) ([7cf5625](https://github.com/nonamich/ts-proto/commit/7cf56251726d149eebd015367476f36e4edb48aa))
* add missing `boolean` to `DeepPartial` ([#287](https://github.com/nonamich/ts-proto/issues/287)) ([ba18380](https://github.com/nonamich/ts-proto/commit/ba1838069c6119516ceb1bfa5bc0242724e2b520))
* Add missing defaults to fromPartial if options.oneof is UNIONS ([#375](https://github.com/nonamich/ts-proto/issues/375)) ([21781e9](https://github.com/nonamich/ts-proto/commit/21781e98bb6117b540be8c3f2c38ac3ad5cbbb44))
* Add missing globalThis prefixes. ([#988](https://github.com/nonamich/ts-proto/issues/988)) ([86aca54](https://github.com/nonamich/ts-proto/commit/86aca54afdcda88bc77b77c9c363f422e0f66be7)), closes [#987](https://github.com/nonamich/ts-proto/issues/987)
* Add service to the client constructor. ([#455](https://github.com/nonamich/ts-proto/issues/455)) ([8c32104](https://github.com/nonamich/ts-proto/commit/8c32104a8522cfe2febcf2338d51710021d837ff))
* add serviceName to grpc-js client constructor type ([#980](https://github.com/nonamich/ts-proto/issues/980)) ([2c6682d](https://github.com/nonamich/ts-proto/commit/2c6682df400a5b1e4bcb9c5bc233dbd7a65df987))
* add support of importSuffix=.js for index files ([#986](https://github.com/nonamich/ts-proto/issues/986)) ([183cf03](https://github.com/nonamich/ts-proto/commit/183cf039895184edd365e6cb7bb9751426ac56f4))
* Added null propagation and guard ([#1127](https://github.com/nonamich/ts-proto/issues/1127)) ([86637fa](https://github.com/nonamich/ts-proto/commit/86637fa6c39ddcc09cab3c486c34b7a52adaf694))
* Adding a failing regression test for wrapper types ([#689](https://github.com/nonamich/ts-proto/issues/689)) ([bde2e28](https://github.com/nonamich/ts-proto/commit/bde2e28ad70bf05ebb21effcdb1caad7217c8291))
* Additional fix for structs with useMapType. ([#743](https://github.com/nonamich/ts-proto/issues/743)) ([3264b0f](https://github.com/nonamich/ts-proto/commit/3264b0f4a98f3e00b262ce8af7927b0bc0375160))
* Allow other services with nestJs. ([#982](https://github.com/nonamich/ts-proto/issues/982)) ([45bba3c](https://github.com/nonamich/ts-proto/commit/45bba3ce7ce723682a6ba2e2104d43ab3fd6978c))
* always use Map for int64 keys ([#708](https://github.com/nonamich/ts-proto/issues/708)) ([#905](https://github.com/nonamich/ts-proto/issues/905)) ([cf2fb59](https://github.com/nonamich/ts-proto/commit/cf2fb59de20f8a60ead23294439dacbdbe6dfc14))
* Avoid namespace conflict on globalThis. ([#735](https://github.com/nonamich/ts-proto/issues/735)) ([71e919e](https://github.com/nonamich/ts-proto/commit/71e919e7de4a2482e9389a5cbfd76853a1db73fb)), closes [#732](https://github.com/nonamich/ts-proto/issues/732)
* Build before releasing, fixes [#267](https://github.com/nonamich/ts-proto/issues/267). ([#269](https://github.com/nonamich/ts-proto/issues/269)) ([1f1bcfe](https://github.com/nonamich/ts-proto/commit/1f1bcfeca329e36c41c069b791e803ceb7cb975c))
* Bump descriptors. ([#883](https://github.com/nonamich/ts-proto/issues/883)) ([e2cf184](https://github.com/nonamich/ts-proto/commit/e2cf1848c1c70a8bbe73756e1cf530c5d70f5ce2))
* Bump node in ts-proto.Dockerfile. ([42f3cea](https://github.com/nonamich/ts-proto/commit/42f3ceac5323056b1b845b51919ecddaa32bf258))
* Bump protobufjs. ([#585](https://github.com/nonamich/ts-proto/issues/585)) ([ba6b85d](https://github.com/nonamich/ts-proto/commit/ba6b85d9d5b7ce191dce898c462cf164a6b1e308))
* Bump ts-poet to use @dprint/typescript. ([#662](https://github.com/nonamich/ts-proto/issues/662)) ([84b64f4](https://github.com/nonamich/ts-proto/commit/84b64f4219f96199e8722678354430fbf00cebba))
* Bump ts-proto-descriptors to restore any-less _unknownFields. ([#810](https://github.com/nonamich/ts-proto/issues/810)) ([de9c307](https://github.com/nonamich/ts-proto/commit/de9c3079210caed1d0d3da782a4d0f2e54f52652))
* Bump ts-proto-descriptors w/long back. ([#880](https://github.com/nonamich/ts-proto/issues/880)) ([d27e19c](https://github.com/nonamich/ts-proto/commit/d27e19c84420d46dff0fc1914ce724ec15f86185))
* Bump ts-proto-descriptors. ([#1102](https://github.com/nonamich/ts-proto/issues/1102)) ([3d1cd61](https://github.com/nonamich/ts-proto/commit/3d1cd61ed7bbac4d6dc7353c49d0732aad22a504)), closes [#1101](https://github.com/nonamich/ts-proto/issues/1101)
* Bump ts-proto-descriptors. ([#876](https://github.com/nonamich/ts-proto/issues/876)) ([ad57819](https://github.com/nonamich/ts-proto/commit/ad57819a16b5f3886bde3c8f63231dc70f84d250))
* camelToSnake to respect uppercase words, such as "GetAPIValue" -> "GET_API_VALUE" ([#1046](https://github.com/nonamich/ts-proto/issues/1046)) ([d2e75cd](https://github.com/nonamich/ts-proto/commit/d2e75cd14cdf3bc0c35f59bf8e8a095c57e9c040))
* close server stream on observer unsubscribe ([#309](https://github.com/nonamich/ts-proto/issues/309)) ([4b72563](https://github.com/nonamich/ts-proto/commit/4b7256381c3b2ff2d4d5190e878de6903cd0d53a))
* code generation for int64 map values in fromPartial and fromJson ([#395](https://github.com/nonamich/ts-proto/issues/395)) ([d3ea8eb](https://github.com/nonamich/ts-proto/commit/d3ea8eb69e19a5e45fcc1766c4af1194b17e48fc))
* code-generation for Services with Struct response types ([#407](https://github.com/nonamich/ts-proto/issues/407)) ([f041fa1](https://github.com/nonamich/ts-proto/commit/f041fa1047816748c366bcb81895b6b917eb328d))
* Compilation error for nested repeated fields with `useOptionals=all` ([#1113](https://github.com/nonamich/ts-proto/issues/1113)) ([e89fc51](https://github.com/nonamich/ts-proto/commit/e89fc51fcc3ba494a81884cc136779202d3f1e16)), closes [#1112](https://github.com/nonamich/ts-proto/issues/1112)
* conditional export ([#1003](https://github.com/nonamich/ts-proto/issues/1003)) ([4a15839](https://github.com/nonamich/ts-proto/commit/4a15839943b501af750b9d142dba2cb3889b4617))
* Consistently apply lowerCaseServiceMethods=true ([#332](https://github.com/nonamich/ts-proto/issues/332)) ([57f2473](https://github.com/nonamich/ts-proto/commit/57f24739f425ec05eabd8c8d6959d4b1b14623a1))
* Depend specifically on long 5.2.3. ([#892](https://github.com/nonamich/ts-proto/issues/892)) ([2b976f2](https://github.com/nonamich/ts-proto/commit/2b976f295fc1fbab6d0fb5ad86cfad26ed722c8a))
* deprecated grpc and replace with @grpc/grpc-js ([#362](https://github.com/nonamich/ts-proto/issues/362)) ([1a11b97](https://github.com/nonamich/ts-proto/commit/1a11b97e9b5e92e79fdd4e22d3e8ea4536af243b))
* do not mention :local scripts ([#974](https://github.com/nonamich/ts-proto/issues/974)) ([ef30da5](https://github.com/nonamich/ts-proto/commit/ef30da58d60b9098eb50b7e27489ac8ef854022e))
* Don't close client if we've already aborted ([#968](https://github.com/nonamich/ts-proto/issues/968)) ([7ee1507](https://github.com/nonamich/ts-proto/commit/7ee15075b2f35fac92790885c02f5a0edba9a76a))
* Don't fail on Function message names ([#1119](https://github.com/nonamich/ts-proto/issues/1119)) ([da048a1](https://github.com/nonamich/ts-proto/commit/da048a1e78cdc1baa228700c40a944652998d2a1)), closes [#1110](https://github.com/nonamich/ts-proto/issues/1110)
* don't generate transitively imported files for mapped imports ([#854](https://github.com/nonamich/ts-proto/issues/854)) ([edd9044](https://github.com/nonamich/ts-proto/commit/edd9044568739b089f1ec66b53d0cc36d540610b))
* don't reference globalThis.Buffer when env=browser ([#967](https://github.com/nonamich/ts-proto/issues/967)) ([#999](https://github.com/nonamich/ts-proto/issues/999)) ([0d34612](https://github.com/nonamich/ts-proto/commit/0d34612ce8878b1dccbeb001686ef4051080e043))
* ensure default service streaming methods compile when middleware methods are enabled ([#996](https://github.com/nonamich/ts-proto/issues/996)) ([a9e975b](https://github.com/nonamich/ts-proto/commit/a9e975b41b760970da264a48cc3fb4ecc4b57a1d))
* ensure docker-compose platform is amd64 ([#990](https://github.com/nonamich/ts-proto/issues/990)) ([bdf4710](https://github.com/nonamich/ts-proto/commit/bdf4710b76aafc3fde47aa77a5786387e2236242))
* ensure generated fromTimestamp works when useOptionals=all ([#832](https://github.com/nonamich/ts-proto/issues/832)) ([1f82445](https://github.com/nonamich/ts-proto/commit/1f8244569de87ad99ed3676244e51291af9b3323))
* enum default value when remove-enum-prefix and string-enum both on ([#902](https://github.com/nonamich/ts-proto/issues/902)) ([594b137](https://github.com/nonamich/ts-proto/commit/594b137cdffbf6256b9d0ee6bb82822ce22c7b94))
* enum type returns 'UNRECOGNIZED' or '-1' in xxxToJSON/xxxToNumber ([#566](https://github.com/nonamich/ts-proto/issues/566)) ([19911a1](https://github.com/nonamich/ts-proto/commit/19911a1c62e3fe5c8a0eb0a795489340512898da))
* error handling on non-Error type errors ([#983](https://github.com/nonamich/ts-proto/issues/983)) ([8c567fc](https://github.com/nonamich/ts-proto/commit/8c567fc6e4cefdf96a2e021e8ca72d6ee45cc26e))
* esModuleInterop not working for object-hash and dataloader imports ([#794](https://github.com/nonamich/ts-proto/issues/794)) ([9fc9632](https://github.com/nonamich/ts-proto/commit/9fc9632e03a18f7a2d6e95a72ff959be93199981))
* Extend `global.Error` to avoid import collisions with Error proto msgs ([#699](https://github.com/nonamich/ts-proto/issues/699)) ([e9d8f91](https://github.com/nonamich/ts-proto/commit/e9d8f9123b7b3c5e274035fa3f2644b370915181))
* Field starting with '_' generates an interface property starting with 'undefined' ([#344](https://github.com/nonamich/ts-proto/issues/344)) ([fab354f](https://github.com/nonamich/ts-proto/commit/fab354f3f8f3aae51bb0377f98138bc80a1113e3))
* Fix bad grpc.Metadata import. Fixes [#188](https://github.com/nonamich/ts-proto/issues/188). ([#259](https://github.com/nonamich/ts-proto/issues/259)) ([cd83733](https://github.com/nonamich/ts-proto/commit/cd83733bfe64ba637633282c3170011051dec41e))
* Fix buf publishing with yarn v3. ([#726](https://github.com/nonamich/ts-proto/issues/726)) ([e125d2b](https://github.com/nonamich/ts-proto/commit/e125d2bad21acfb27579b1ce252151678a91f2bc))
* Fix build from typescript bump. ([3ecd498](https://github.com/nonamich/ts-proto/commit/3ecd4986063952ae06c6136fbd9ae0cfc75212d8))
* Fix codegen for google.protobuf.Struct with useMapType=true ([#740](https://github.com/nonamich/ts-proto/issues/740)) ([0647151](https://github.com/nonamich/ts-proto/commit/0647151b356d7b22f8baf72b70f5a0353259b404))
* fix codegen for maps with wrapper value type ([#370](https://github.com/nonamich/ts-proto/issues/370)) ([dd2481d](https://github.com/nonamich/ts-proto/commit/dd2481df0835faafc561aad4a4d0c9c2ff9d868a))
* Fix encode wrap types ([#303](https://github.com/nonamich/ts-proto/issues/303)) ([533c0e0](https://github.com/nonamich/ts-proto/commit/533c0e0959943562a59de5f456b83ab0b0b6abed))
* Fix generating wrong web-rpc implementation for wrapper-type method arg ([#978](https://github.com/nonamich/ts-proto/issues/978)) ([063fd29](https://github.com/nonamich/ts-proto/commit/063fd29974e0e917ad69cd5a158ee233edb5e019))
* Fix integration test codegen script ([#291](https://github.com/nonamich/ts-proto/issues/291)) ([a51eee5](https://github.com/nonamich/ts-proto/commit/a51eee55d07c43b4b7cbe1ad2eb010f33c216a29))
* Fix invocation error. ([f4e26bd](https://github.com/nonamich/ts-proto/commit/f4e26bd44f6882318defab1fccd0d6a833823fc0))
* Fix push_to_buf_registry check. ([22ac914](https://github.com/nonamich/ts-proto/commit/22ac914cd8626258ceb35fd435b899a819518988))
* Fix running yarn:test locally. ([#1097](https://github.com/nonamich/ts-proto/issues/1097)) ([30385ed](https://github.com/nonamich/ts-proto/commit/30385edd565d873d550df765dac9570c125bef2c))
* Fix snake casing numbers. ([#1052](https://github.com/nonamich/ts-proto/issues/1052)) ([f85a2f1](https://github.com/nonamich/ts-proto/commit/f85a2f1ed4e04143b96d6eaa3a589b16944d3239)), closes [#1048](https://github.com/nonamich/ts-proto/issues/1048)
* Fix snakeToCamel single value parsing. ([#513](https://github.com/nonamich/ts-proto/issues/513)) ([e1ad866](https://github.com/nonamich/ts-proto/commit/e1ad866c95751c37ed13f02f4da2dc9076ab4758))
* Fix ts-poet typo in package.json. ([#589](https://github.com/nonamich/ts-proto/issues/589)) ([5211347](https://github.com/nonamich/ts-proto/commit/5211347cb21ac7d117349a32a87c0d017999c44a))
* Fix TypeScript errors when compiling with `noUncheckedIndexedAccess` ([#297](https://github.com/nonamich/ts-proto/issues/297)) ([f865e43](https://github.com/nonamich/ts-proto/commit/f865e431c2613a1cfe9dc1d87fba6a9e4bcd3b16))
* Fix version loading in new dist layout. ([#1091](https://github.com/nonamich/ts-proto/issues/1091)) ([f1c23d2](https://github.com/nonamich/ts-proto/commit/f1c23d2eab096b7c6b2decd9f0886b5300c52712))
* Fix version number for Buf plugin. ([dc1fb7e](https://github.com/nonamich/ts-proto/commit/dc1fb7e766ed4115d026e7ff0e9a9480c1e42380))
* fixed addGrpcMetadata option ([#761](https://github.com/nonamich/ts-proto/issues/761)) ([cb2b573](https://github.com/nonamich/ts-proto/commit/cb2b5733ddd71589a00a4960906c65869303706b))
* fixing exportCommonSymbols in nestjs ([#916](https://github.com/nonamich/ts-proto/issues/916)) ([daf41f7](https://github.com/nonamich/ts-proto/commit/daf41f7c2654e801994c0791fb3f9f178b5d8ad8))
* generate canonical JSON encoding for FieldMasks ([#510](https://github.com/nonamich/ts-proto/issues/510)) ([0ec4e97](https://github.com/nonamich/ts-proto/commit/0ec4e97a2649dc15af1c925f8a2ff6adf1e17d9b))
* generate different MessageType when using static-only ([#863](https://github.com/nonamich/ts-proto/issues/863)) ([477e5f5](https://github.com/nonamich/ts-proto/commit/477e5f5bc0aaf70a92d7231f4a9e746d13b2bbcf)), closes [#861](https://github.com/nonamich/ts-proto/issues/861)
* generate modules for empty files with esModuleInterop ([#992](https://github.com/nonamich/ts-proto/issues/992)) ([f0629ab](https://github.com/nonamich/ts-proto/commit/f0629ab0e9e0eded12142f363858d3dd8e292acd))
* google protobuf timestamps don't properly get suffixed when useDate=false and prefix/suffix ([#1146](https://github.com/nonamich/ts-proto/issues/1146)) ([53f799e](https://github.com/nonamich/ts-proto/commit/53f799e34b75940aeafec0fafa50f3bd5849dcad))
* grpc-js support for nestjs ([#307](https://github.com/nonamich/ts-proto/issues/307)) ([d11c8c2](https://github.com/nonamich/ts-proto/commit/d11c8c2bc041c2e8a25ebf7f1c68c901c18ee0ca))
* grpc-js timestamp conversion ([#755](https://github.com/nonamich/ts-proto/issues/755)) ([9d24bd3](https://github.com/nonamich/ts-proto/commit/9d24bd39d0fbebf636ba4aaf6567988bc177a413)), closes [#754](https://github.com/nonamich/ts-proto/issues/754)
* **Grpc-Web:** Fix compilation failure when a service definition contains a client streaming call. ([#535](https://github.com/nonamich/ts-proto/issues/535)) ([0c83892](https://github.com/nonamich/ts-proto/commit/0c83892693d5755c9fe848b442b5e666192103ab))
* Handle empty package ([#285](https://github.com/nonamich/ts-proto/issues/285)) ([5eadf92](https://github.com/nonamich/ts-proto/commit/5eadf9271fd9b00180593f3771266f3796a157bb))
* Have snakeToCamel leave existing mixed case. ([#482](https://github.com/nonamich/ts-proto/issues/482)) ([c0bf0fc](https://github.com/nonamich/ts-proto/commit/c0bf0fc13da70e2bde923cd1746119d2e7ac4b2f)), closes [#478](https://github.com/nonamich/ts-proto/issues/478)
* ignore `$type` field in `DeepPartial` ([#282](https://github.com/nonamich/ts-proto/issues/282)) ([6c5087e](https://github.com/nonamich/ts-proto/commit/6c5087ed489283bf7293a2cdbee71dd83484c68e))
* implement abort grpc web ([#785](https://github.com/nonamich/ts-proto/issues/785)) ([6a40d72](https://github.com/nonamich/ts-proto/commit/6a40d72d6a41d91264366d238dafd08291eba0b7))
* import fails when folder name overlaps with file name ([#1000](https://github.com/nonamich/ts-proto/issues/1000)) ([1e68e6f](https://github.com/nonamich/ts-proto/commit/1e68e6f0b2ca6fbffc51c0abe9b0f127350dd766))
* import Observable as a type ([#826](https://github.com/nonamich/ts-proto/issues/826)) ([52e84ba](https://github.com/nonamich/ts-proto/commit/52e84ba7ee8826cf3b33455b38bacfd0c68884ea))
* import protobufjs/minimal with importSuffix ([#616](https://github.com/nonamich/ts-proto/issues/616)) ([b86291c](https://github.com/nonamich/ts-proto/commit/b86291c58b1cb9d4064944a6371e928b564aef7f))
* Incorrect message names in the generated code for repeated fields ([#1073](https://github.com/nonamich/ts-proto/issues/1073)) ([8a95d8e](https://github.com/nonamich/ts-proto/commit/8a95d8e0983a38e604b6990461e726db566ff311)), closes [#1072](https://github.com/nonamich/ts-proto/issues/1072)
* initialize undefined optional fields upon use ([#802](https://github.com/nonamich/ts-proto/issues/802)) ([ee52e06](https://github.com/nonamich/ts-proto/commit/ee52e06a95d7790d1252831f1bb01344c94f16a4))
* Leave mixed case in all words. ([#488](https://github.com/nonamich/ts-proto/issues/488)) ([8a26c9c](https://github.com/nonamich/ts-proto/commit/8a26c9cba4c9897700aafe1a7f59d0b0f537764b))
* make struct types play well with type registry ([#503](https://github.com/nonamich/ts-proto/issues/503)) ([d62f854](https://github.com/nonamich/ts-proto/commit/d62f85478011c7eb3dbca196f79b452895406ece))
* Move dataloader to a devDependency. ([#877](https://github.com/nonamich/ts-proto/issues/877)) ([dbe1a96](https://github.com/nonamich/ts-proto/commit/dbe1a967ced7863492f82a977d6e5d34f4f034a6))
* **nestjs:** fixes grpc controller decorator ([#68](https://github.com/nonamich/ts-proto/issues/68)) ([fc67a32](https://github.com/nonamich/ts-proto/commit/fc67a32b7a66f56144b37d0a0a2904a6af6f5289))
* noImplicitReturns error in Value.unwrap ([#436](https://github.com/nonamich/ts-proto/issues/436)) ([2d7a5d0](https://github.com/nonamich/ts-proto/commit/2d7a5d04c72ace58fa3a6745c3857f6cc0468543)), closes [#432](https://github.com/nonamich/ts-proto/issues/432)
* oneof=union breaks wrapper types [#458](https://github.com/nonamich/ts-proto/issues/458) ([#462](https://github.com/nonamich/ts-proto/issues/462)) ([dd16992](https://github.com/nonamich/ts-proto/commit/dd16992a409f24e88e3a142830cd0745f50dbd10))
* Only check file dependencies once/file. ([#901](https://github.com/nonamich/ts-proto/issues/901)) ([8d61980](https://github.com/nonamich/ts-proto/commit/8d6198020a5ec775b0dbaf7e08924f4bdcc677f8)), closes [#900](https://github.com/nonamich/ts-proto/issues/900)
* **options:** initializes M opt to empty object ([#673](https://github.com/nonamich/ts-proto/issues/673)) ([cb76c5e](https://github.com/nonamich/ts-proto/commit/cb76c5ea565081d610be08451e452269c5d3837c))
* Pin ts-proto-descriptors to 1.3.1. ([#481](https://github.com/nonamich/ts-proto/issues/481)) ([6f362bf](https://github.com/nonamich/ts-proto/commit/6f362bfd3517a6bcb440d65e7ac63cd2b0bcc293)), closes [#480](https://github.com/nonamich/ts-proto/issues/480)
* prefix and suffixes were not being applied to to/fromTimestamp resulting in compile error ([#1118](https://github.com/nonamich/ts-proto/issues/1118)) ([22c2905](https://github.com/nonamich/ts-proto/commit/22c2905ca53c88bdb2802386d414d584a451aa4c))
* problem with verbatimModuleSyntax for grpc-js ([#1132](https://github.com/nonamich/ts-proto/issues/1132)) ([bedfa31](https://github.com/nonamich/ts-proto/commit/bedfa317e7b115d10ee3de897eae2490b5eccdc9))
* regression in being able to return a Date as a GRPC return value ([#534](https://github.com/nonamich/ts-proto/issues/534)) ([22b76ec](https://github.com/nonamich/ts-proto/commit/22b76eccfc0d26309aab9e454de31ef020595be8))
* remove Long import statement when Long was unused ([#599](https://github.com/nonamich/ts-proto/issues/599)) ([58dc10c](https://github.com/nonamich/ts-proto/commit/58dc10c61ec5a76d4b54ba9eddf34021979dd4aa))
* remove Record word conflict ([#638](https://github.com/nonamich/ts-proto/issues/638)) ([5664d09](https://github.com/nonamich/ts-proto/commit/5664d097ac33da423b0f4e79f962fd71912358a0))
* remove-enum-prefix for nested enums ([#903](https://github.com/nonamich/ts-proto/issues/903)) ([efdbf47](https://github.com/nonamich/ts-proto/commit/efdbf476b26c49c1bc56f9404f49667f2acc1f8b))
* repeated uint64 fields do not encode properly with bigint option ([#751](https://github.com/nonamich/ts-proto/issues/751)) ([dcdd7e2](https://github.com/nonamich/ts-proto/commit/dcdd7e23479721d127138eeda8b143c100a0730a))
* resolve import collisions for enums ([#339](https://github.com/nonamich/ts-proto/issues/339)) ([8118748](https://github.com/nonamich/ts-proto/commit/81187488edbbe7b1c8e7028e0bc8f3a8005a97c8))
* resolve import collisions for enums ([#341](https://github.com/nonamich/ts-proto/issues/341)) ([50fe34e](https://github.com/nonamich/ts-proto/commit/50fe34ecc66877bead1f0ae55afe28b88e5eda10))
* resolve import collisions for interfaces ([#300](https://github.com/nonamich/ts-proto/issues/300)) ([773d866](https://github.com/nonamich/ts-proto/commit/773d86686c15e9e831ad1c22405dee8d7251072e)), closes [#298](https://github.com/nonamich/ts-proto/issues/298)
* resolve import collisions for services ([#651](https://github.com/nonamich/ts-proto/issues/651)) ([ee0296f](https://github.com/nonamich/ts-proto/commit/ee0296ffe087665b54bac714e964e7243010fb22))
* respect generateClientImpl=false in grpc-js ([#471](https://github.com/nonamich/ts-proto/issues/471)) ([#472](https://github.com/nonamich/ts-proto/issues/472)) ([2f389f2](https://github.com/nonamich/ts-proto/commit/2f389f243ef11d8d58c32ce37c371aba2cdf294e))
* Respect stringEnums option in wrap function ([#420](https://github.com/nonamich/ts-proto/issues/420)) ([7adf90c](https://github.com/nonamich/ts-proto/commit/7adf90c23c46950bcf457b317764393ff4af2bf2))
* return grpc-web response without toObject method ([#728](https://github.com/nonamich/ts-proto/issues/728)) ([7431aa8](https://github.com/nonamich/ts-proto/commit/7431aa8e5718ad8a8fe48651798f203995bf705b)), closes [stephenh/ts-proto#636](https://github.com/stephenh/ts-proto/issues/636)
* return types and optional chaining in field masks when `useOptionals=all` ([#957](https://github.com/nonamich/ts-proto/issues/957)) ([a3d7bd4](https://github.com/nonamich/ts-proto/commit/a3d7bd4eaf0b25cd8d7991cc85893ce3d8ab7937))
* Revert "feat: support grpc-web client straming ([#617](https://github.com/nonamich/ts-proto/issues/617))" ([#632](https://github.com/nonamich/ts-proto/issues/632)) ([2f4ecc7](https://github.com/nonamich/ts-proto/commit/2f4ecc7434df6b8f2ff08b929f9032170b04e858))
* revert useDate=false behaviour; add useJsonTimestamp option ([#969](https://github.com/nonamich/ts-proto/issues/969)) ([15ae516](https://github.com/nonamich/ts-proto/commit/15ae516ae09b27d5adf41b5e85fe509792c5854e))
* **Schema generation:** ensure Buffer api is only used when in nodejs environment ([#1134](https://github.com/nonamich/ts-proto/issues/1134)) ([49035a4](https://github.com/nonamich/ts-proto/commit/49035a47e1d859563c631267ea7e1724cbf2c4a8))
* simplify handling useJsonWireFormat=true and fix onlyTypes=true ([#583](https://github.com/nonamich/ts-proto/issues/583)) ([6e7f938](https://github.com/nonamich/ts-proto/commit/6e7f9387d144f506ded982604f32981ac5e327de))
* Simplify safe key handling. ([#950](https://github.com/nonamich/ts-proto/issues/950)) ([5e0e6ca](https://github.com/nonamich/ts-proto/commit/5e0e6ca1d76f5c9aaef5f40a9cc685538251a5f9))
* standalone dockerized protoc alias ([#438](https://github.com/nonamich/ts-proto/issues/438)) ([466f7d9](https://github.com/nonamich/ts-proto/commit/466f7d91551c6297fc1b9677f7a5839f8cdba0c6))
* Struct wrap/unwrap snake case [#579](https://github.com/nonamich/ts-proto/issues/579) ([#588](https://github.com/nonamich/ts-proto/issues/588)) ([33f89bf](https://github.com/nonamich/ts-proto/commit/33f89bfcf0d5d9e64a6fd360eaefc140055e9291))
* support json_name containing hyphen on all field types ([#521](https://github.com/nonamich/ts-proto/issues/521)) ([8d9e78e](https://github.com/nonamich/ts-proto/commit/8d9e78eb39c460f6727458f6a2dd149deb983668))
* support mutliple options in snakeToCamel flag  ([#429](https://github.com/nonamich/ts-proto/issues/429)) ([cff6674](https://github.com/nonamich/ts-proto/commit/cff667406cba21676546fd91b04cf2cbc571ed7d)), closes [#423](https://github.com/nonamich/ts-proto/issues/423)
* Support repeated string enums. ([#284](https://github.com/nonamich/ts-proto/issues/284)) ([be9ecf7](https://github.com/nonamich/ts-proto/commit/be9ecf785952ab7515155cb495e8e0da76b93a38))
* Support using messages called String/Boolean/Number/Array ([#934](https://github.com/nonamich/ts-proto/issues/934)) ([f75159b](https://github.com/nonamich/ts-proto/commit/f75159bde85c8d85a2be938c6e3db78c77318890)), closes [#927](https://github.com/nonamich/ts-proto/issues/927)
* Temporarily put anys back to release. ([c6f189e](https://github.com/nonamich/ts-proto/commit/c6f189e62605553707534a86bf1964ad178dbd73))
* toJSON Function with `removeEnumPrefix=true` and `unrecognizedEnumValue=0` Options ([#1089](https://github.com/nonamich/ts-proto/issues/1089)) ([2401490](https://github.com/nonamich/ts-proto/commit/24014908f814e2720b9c2b9bd2ae1773be880a16)), closes [#1086](https://github.com/nonamich/ts-proto/issues/1086) [#1086](https://github.com/nonamich/ts-proto/issues/1086)
* toJSON methods don't respect useDate=false ([#935](https://github.com/nonamich/ts-proto/issues/935)) ([#937](https://github.com/nonamich/ts-proto/issues/937)) ([acdfb0a](https://github.com/nonamich/ts-proto/commit/acdfb0a100c9de1d51cb1710cc3fb40566d16706))
* Try combined workflow. ([c293c1f](https://github.com/nonamich/ts-proto/commit/c293c1f379cb69635c968d5b8094135931bcea54))
* Try fixing the Buf publish step. ([47ef176](https://github.com/nonamich/ts-proto/commit/47ef176056108bba8fb553f0d7b53d11e139bfbc))
* Type Error when map contains string enums [#382](https://github.com/nonamich/ts-proto/issues/382) ([#529](https://github.com/nonamich/ts-proto/issues/529)) ([c2107b9](https://github.com/nonamich/ts-proto/commit/c2107b96b494a500a4773ac04900a1acd13c507a))
* typescript errors for struct with optional=all ([#1008](https://github.com/nonamich/ts-proto/issues/1008)) ([e838e38](https://github.com/nonamich/ts-proto/commit/e838e3801e0ef5e8b5a14ead7d7dfc0ad3532cf1)), closes [#578](https://github.com/nonamich/ts-proto/issues/578)
* Unbreak a use case for [#1110](https://github.com/nonamich/ts-proto/issues/1110) / fix for [#1121](https://github.com/nonamich/ts-proto/issues/1121) ([#1123](https://github.com/nonamich/ts-proto/issues/1123)) ([476e99b](https://github.com/nonamich/ts-proto/commit/476e99bcbc651cec1946d0dbad09dc9aea3224ff))
* Unwrap google.protobuf.BytesValue to Buffer when env=node ([#439](https://github.com/nonamich/ts-proto/issues/439)) ([73aa836](https://github.com/nonamich/ts-proto/commit/73aa8368300818068f3cddc5f046d990c66ab4f2))
* update basic grpc implementation ([#1153](https://github.com/nonamich/ts-proto/issues/1153)) ([6ec7909](https://github.com/nonamich/ts-proto/commit/6ec7909f65c87c01c51468f1df898b33dad9fd8e))
* update codegen for `nice-grpc` ([#561](https://github.com/nonamich/ts-proto/issues/561)) ([d503f67](https://github.com/nonamich/ts-proto/commit/d503f677922402e880b5d8502b3d8bc099b7f39d))
* Update type imports syntax on gRPC generation ([#921](https://github.com/nonamich/ts-proto/issues/921)) ([b10ab31](https://github.com/nonamich/ts-proto/commit/b10ab31a479420413998840eab866ab51f72285d))
* Use a Map when map keys are boolean. ([#933](https://github.com/nonamich/ts-proto/issues/933)) ([c1253a3](https://github.com/nonamich/ts-proto/commit/c1253a3761405d7a2ffe4d15f4c3ffb364697a02)), closes [#926](https://github.com/nonamich/ts-proto/issues/926)
* Use a module star import for protobuf types. ([#540](https://github.com/nonamich/ts-proto/issues/540)) ([f5b7700](https://github.com/nonamich/ts-proto/commit/f5b770083dffe72338beb4a09432a2a917760eae))
* Use as any on globalThis.Buffer check for bytesFromBase64 ([#1005](https://github.com/nonamich/ts-proto/issues/1005)) ([bae741c](https://github.com/nonamich/ts-proto/commit/bae741cba9c22d08118e25619ba3e427e1c7bf9d)), closes [#1004](https://github.com/nonamich/ts-proto/issues/1004) [#967](https://github.com/nonamich/ts-proto/issues/967)
* Use as any on globalThis.Buffer check. ([#1004](https://github.com/nonamich/ts-proto/issues/1004)) ([11d06b4](https://github.com/nonamich/ts-proto/commit/11d06b4455a1f27793bfe172fffaf05b7a3400db)), closes [#967](https://github.com/nonamich/ts-proto/issues/967)
* use correct imports for optional fields ([#904](https://github.com/nonamich/ts-proto/issues/904)) ([fa13ec7](https://github.com/nonamich/ts-proto/commit/fa13ec752c6564af045081548f5fc5cabb687151))
* Use env prefix for Buf plugin. ([ea42caa](https://github.com/nonamich/ts-proto/commit/ea42caacbd919f9a8b6a9e3138d8a48e80ac86d9))
* Use globalThis for Array/String/Boolean ([#930](https://github.com/nonamich/ts-proto/issues/930)) ([9a252c3](https://github.com/nonamich/ts-proto/commit/9a252c3d4cf988496f6de17cc378dbb09a1baf92))
* Use jsonName even with snakeToCamel=false. ([#653](https://github.com/nonamich/ts-proto/issues/653)) ([1144886](https://github.com/nonamich/ts-proto/commit/1144886ef43eaf97b780c7aafb2c123fd49b3fe5)), closes [#635](https://github.com/nonamich/ts-proto/issues/635)
* use Long.fromValue instead of Long.fromString ([#562](https://github.com/nonamich/ts-proto/issues/562)) ([c99891e](https://github.com/nonamich/ts-proto/commit/c99891e0fec6d9b7225025eb0c5bd7393e80af36))
* use Long.fromValue instead of Long.fromString for improved robustness regarding already parsed objects ([#405](https://github.com/nonamich/ts-proto/issues/405)) ([7bdc3ee](https://github.com/nonamich/ts-proto/commit/7bdc3eee05ed1318e18e27aa7d5bb2680060f8b6))
* use optional chaining when both `forceLong=long` and `useOptionals=all` options are set in the generated fromTimestamp function ([#949](https://github.com/nonamich/ts-proto/issues/949)) ([b00db6f](https://github.com/nonamich/ts-proto/commit/b00db6fa42d511b9bef602a231a1f093664cd40c))
* Use outputs for Buf plugin workflow. ([7017d4c](https://github.com/nonamich/ts-proto/commit/7017d4c1f5eb2a8619dd03cc4f7a27c1dcf6c918))
* Use the npm environment. ([0103443](https://github.com/nonamich/ts-proto/commit/01034430c25461c0e5a46e2b9fd757ef4e0c91b1))
* Use the right Metadata for grpc-web. Fixes [#270](https://github.com/nonamich/ts-proto/issues/270). ([#271](https://github.com/nonamich/ts-proto/issues/271)) ([640e645](https://github.com/nonamich/ts-proto/commit/640e645dd93cd0e04abac17de9899aa6a172ac37))
* Use Uint8Array.forEach in base64FromBytes ([#544](https://github.com/nonamich/ts-proto/issues/544)) ([c7641ce](https://github.com/nonamich/ts-proto/commit/c7641ceb6a1c9da234245b9d808b2ded899dbbbc))
* Use underscore separator in snakeToCamel. ([#648](https://github.com/nonamich/ts-proto/issues/648)) ([b374910](https://github.com/nonamich/ts-proto/commit/b374910a8fb1d0efe6c5c5322f8788cc3cc1ca6c))
* use-readonly-types for oneof unions ([#706](https://github.com/nonamich/ts-proto/issues/706)) ([bc854ba](https://github.com/nonamich/ts-proto/commit/bc854bac083b8818d5fad77bc2e7995cfb01798e))
* various fixes ([#812](https://github.com/nonamich/ts-proto/issues/812)) ([ca18495](https://github.com/nonamich/ts-proto/commit/ca184958957b2c546e9a84173bc1c73425e33bc5))

### Features

*  Add support for 'json_name' annotation ([#408](https://github.com/nonamich/ts-proto/issues/408)) ([b519717](https://github.com/nonamich/ts-proto/commit/b5197174bcaacb8f163cd197d52ab9c645d21d4c))
* `enumsAsLiterals` option ([#450](https://github.com/nonamich/ts-proto/issues/450)) ([fcaade2](https://github.com/nonamich/ts-proto/commit/fcaade2855ae28ea3553a365556ccb92a9644d70))
* `no-file-descriptor` setting for outputSchema option ([#1047](https://github.com/nonamich/ts-proto/issues/1047)) ([c54f06c](https://github.com/nonamich/ts-proto/commit/c54f06c4a7dd766abf3f91932b1e4cdf38b7f346))
* `removeEnumPrefix` option ([#779](https://github.com/nonamich/ts-proto/issues/779)) ([53733e6](https://github.com/nonamich/ts-proto/commit/53733e61232f19ffb4f30abecd55a63899e2310c))
* add [@deprecated](https://github.com/deprecated) to JSDoc for deprecated fields ([eb25e2c](https://github.com/nonamich/ts-proto/commit/eb25e2c1efc96ffe2c705983fa0a2e6b67013daa))
* add an option to disable Exact types ([#456](https://github.com/nonamich/ts-proto/issues/456)) ([9c53d7e](https://github.com/nonamich/ts-proto/commit/9c53d7efb0252c7ea0af85a5d161ff94bcd69760))
* add before and after request methods to base service ([#961](https://github.com/nonamich/ts-proto/issues/961)) ([19ba6a5](https://github.com/nonamich/ts-proto/commit/19ba6a50c6fd4f574e20315e1ec721c5e04dab25))
* add bigint input validation ([#938](https://github.com/nonamich/ts-proto/issues/938)) ([0f9b6b1](https://github.com/nonamich/ts-proto/commit/0f9b6b1c5982427f77b111466a11c18e57b070bd))
* add create utility function to message defintions ([#760](https://github.com/nonamich/ts-proto/issues/760)) ([44fc7b2](https://github.com/nonamich/ts-proto/commit/44fc7b23ae72ec9c4fca86bee9a9774be097c058))
* add dynamic upStreamCodes option ([#618](https://github.com/nonamich/ts-proto/issues/618)) ([3091023](https://github.com/nonamich/ts-proto/commit/309102313273e09aef3a8480f4b46360ad82adaa))
* add error handler to rpc interface ([#965](https://github.com/nonamich/ts-proto/issues/965)) ([47cd16e](https://github.com/nonamich/ts-proto/commit/47cd16e048e19ebc0b8673bccffdade678cc0363))
* add generated code comments ([#1037](https://github.com/nonamich/ts-proto/issues/1037)) ([cdd4a76](https://github.com/nonamich/ts-proto/commit/cdd4a76238e292cb00d6a09d84e6b393ddde8204))
* Add generic metadata parameter to the generic service definition interface. ([#530](https://github.com/nonamich/ts-proto/issues/530)) ([0f5525a](https://github.com/nonamich/ts-proto/commit/0f5525ade80e7b69889dfd091a458e21bb14a265))
* Add globalThisPolyfill, defaults false. ([#931](https://github.com/nonamich/ts-proto/issues/931)) ([085fa21](https://github.com/nonamich/ts-proto/commit/085fa21603a74544af192f404289c2e62ecfd8f6))
* add importSuffix option and remove default .js suffix ([#612](https://github.com/nonamich/ts-proto/issues/612)) ([63a8895](https://github.com/nonamich/ts-proto/commit/63a8895f5a3a38fa3d5c0868f44e950e137fb697))
* Add interface for static message methods ([#1104](https://github.com/nonamich/ts-proto/issues/1104)) ([faa33b6](https://github.com/nonamich/ts-proto/commit/faa33b6f5170cabe4010c95d5f0a68b9f04f686b))
* Add js type support ([#1030](https://github.com/nonamich/ts-proto/issues/1030)) ([0dd951b](https://github.com/nonamich/ts-proto/commit/0dd951bf4d1a4c48f3d261c85cfa03586d20c13c)), closes [#958](https://github.com/nonamich/ts-proto/issues/958)
* add meta-data to stream error ([#620](https://github.com/nonamich/ts-proto/issues/620)) ([b68f301](https://github.com/nonamich/ts-proto/commit/b68f301b5fb4222a3fce676a7e5036cf00e77e11))
* Add nestJsRequiredSubMessage option ([1e69e46](https://github.com/nonamich/ts-proto/commit/1e69e4671d0261fe24ad1696b42ff5f64cfc2c18))
* add option `noDefaultsForOptionals` ([#1051](https://github.com/nonamich/ts-proto/issues/1051)) ([41d1020](https://github.com/nonamich/ts-proto/commit/41d10205bf68468c37cf69e58dc4c4fdbfffcf5b))
* add option to remove UNRECOGNIZED enum value ([#149](https://github.com/nonamich/ts-proto/issues/149)) ([19e8cf7](https://github.com/nonamich/ts-proto/commit/19e8cf77ead36962e01ff6419e07b7ccc4068fe8))
* add option to use async iterables ([#605](https://github.com/nonamich/ts-proto/issues/605)) ([ca8ea8d](https://github.com/nonamich/ts-proto/commit/ca8ea8d761c02d3ca4da6eaa156acff35d88c510)), closes [#600](https://github.com/nonamich/ts-proto/issues/600)
* Add options to limit generation of encode and decode methods to only specific message types ([#1085](https://github.com/nonamich/ts-proto/issues/1085)) ([c7372fa](https://github.com/nonamich/ts-proto/commit/c7372fab20cdac0199b79fd861e6b08113aba145)), closes [#1084](https://github.com/nonamich/ts-proto/issues/1084)
* add options to schema output ([#437](https://github.com/nonamich/ts-proto/issues/437)) ([e8e4e39](https://github.com/nonamich/ts-proto/commit/e8e4e3937292e07280f5154b584e60124118f093))
* Add static-only variant to to outputTypeAnnotations option ([#858](https://github.com/nonamich/ts-proto/issues/858)) ([d7c4af7](https://github.com/nonamich/ts-proto/commit/d7c4af7e068200b30cf773703ef906595aec6042))
* Add support for @grpc/grpc-js ([#252](https://github.com/nonamich/ts-proto/issues/252)) ([99a3d92](https://github.com/nonamich/ts-proto/commit/99a3d9218093c9aa1726f0c0b403cb0e95aac82e))
* add support for comments on union fields in generateOneofProperty ([#1136](https://github.com/nonamich/ts-proto/issues/1136)) ([c933c9c](https://github.com/nonamich/ts-proto/commit/c933c9c46dbaa278b33b16270bab51063ccb513c)), closes [#1122](https://github.com/nonamich/ts-proto/issues/1122)
* add support for generating `nice-grpc` server and client stubs ([#555](https://github.com/nonamich/ts-proto/issues/555)) ([8c19361](https://github.com/nonamich/ts-proto/commit/8c19361ede9a7a039acf3a1375913d012b0fcb7d)), closes [#545](https://github.com/nonamich/ts-proto/issues/545)
* add support for Struct in NestJS ([#762](https://github.com/nonamich/ts-proto/issues/762)) ([e8c6d8b](https://github.com/nonamich/ts-proto/commit/e8c6d8ba7bee902dbbda0c36dd9f6accfd222542))
* add support for unknown fields ([#473](https://github.com/nonamich/ts-proto/issues/473)) ([3bb9472](https://github.com/nonamich/ts-proto/commit/3bb9472943cf2e698b013487c7370a76576b68b6))
* Add support for useDate=string ([#221](https://github.com/nonamich/ts-proto/issues/221)) ([d967a9a](https://github.com/nonamich/ts-proto/commit/d967a9afd6cf63fc7b156d506b8683b2f8fd6569))
* Add type annotations flag ([#786](https://github.com/nonamich/ts-proto/issues/786)) ([b565ff5](https://github.com/nonamich/ts-proto/commit/b565ff57c0a64a3869ba7475c2b53f46504169d0))
* add unrecognizedEnumName and unrecognizedEnumValue options ([#946](https://github.com/nonamich/ts-proto/issues/946)) ([cd61e90](https://github.com/nonamich/ts-proto/commit/cd61e90e59844795fb5d7d86ec99bd37d2fdf21b))
* Add use-numeric-enum-json option. ([#625](https://github.com/nonamich/ts-proto/issues/625)) ([cd53d8c](https://github.com/nonamich/ts-proto/commit/cd53d8cacd6b4b8fa6517242020b216dd18eebdf))
* add useDate=string-nano option ([#981](https://github.com/nonamich/ts-proto/issues/981)) ([dc84098](https://github.com/nonamich/ts-proto/commit/dc840985d2afdd85e0b311c55aa831bac5da8ce4))
* Add useOptionals=all to enable non-field members to be optional. ([#402](https://github.com/nonamich/ts-proto/issues/402)) ([e7b70cb](https://github.com/nonamich/ts-proto/commit/e7b70cbd7b9bd43bf9e6e54e25bc48c527718317))
* add usePrototypeForDefaults option ([#484](https://github.com/nonamich/ts-proto/issues/484)) ([8e8c810](https://github.com/nonamich/ts-proto/commit/8e8c81016968e7d772dfac5ed54800898f039cbe))
* added bigint force long option ([#742](https://github.com/nonamich/ts-proto/issues/742)) ([3964e57](https://github.com/nonamich/ts-proto/commit/3964e575a6bdf90bbde937bcc71ac1f0255831b3))
* added nestJsTimestampTypeWrapper ([#567](https://github.com/nonamich/ts-proto/issues/567)) ([59d451e](https://github.com/nonamich/ts-proto/commit/59d451e2857856ff54a3afe03ae115a1824df66f))
* added option 'useJsonWireFormat' ([#576](https://github.com/nonamich/ts-proto/issues/576)) ([a71b145](https://github.com/nonamich/ts-proto/commit/a71b145c81136b8d8e3681b6753146d3ceeff179)), closes [#571](https://github.com/nonamich/ts-proto/issues/571)
* added the "typePrefix" and "typeSuffix" options. ([#1069](https://github.com/nonamich/ts-proto/issues/1069)) ([ab515cd](https://github.com/nonamich/ts-proto/commit/ab515cda322baeb94c7588117e4bb5bee6281874)), closes [#1033](https://github.com/nonamich/ts-proto/issues/1033)
* added useNullAsOptional option ([#1017](https://github.com/nonamich/ts-proto/issues/1017)) ([573f63e](https://github.com/nonamich/ts-proto/commit/573f63e761beef3981539cfbe29f786374186923)), closes [#869](https://github.com/nonamich/ts-proto/issues/869)
* adds support for emitting default scalar values in json ([#919](https://github.com/nonamich/ts-proto/issues/919)) ([01f529f](https://github.com/nonamich/ts-proto/commit/01f529f2b0eed486356ff6add9a43aabde3d1d0d))
* allow `$type` to be optional ([#1013](https://github.com/nonamich/ts-proto/issues/1013)) ([f285557](https://github.com/nonamich/ts-proto/commit/f285557a4f77d4b75327de2c13cf0917b0361f14))
* Allow comments to be omitted ([#989](https://github.com/nonamich/ts-proto/issues/989)) ([cb7eef7](https://github.com/nonamich/ts-proto/commit/cb7eef73f425251f6d09c90710fb8e5c93f56bdf))
* Allow optional suffix for generated files ([#431](https://github.com/nonamich/ts-proto/issues/431)) ([d826966](https://github.com/nonamich/ts-proto/commit/d826966f22830920444963b3894ffc0be9b7c319))
* Allow simultaneous services and generic service definitions ([#512](https://github.com/nonamich/ts-proto/issues/512)) ([680831e](https://github.com/nonamich/ts-proto/commit/680831e76f1a4ceb4337442a157d7e702cb14bfc))
* Avoid adding empty trailing comments to oneof unions ([#1140](https://github.com/nonamich/ts-proto/issues/1140)) ([5359e8d](https://github.com/nonamich/ts-proto/commit/5359e8d4b08ad114080f04ec8327bb2379dddd86)), closes [#1136](https://github.com/nonamich/ts-proto/issues/1136)
* bigIntLiteral option for using BigInt literals ([#1063](https://github.com/nonamich/ts-proto/issues/1063)) ([b89fbcb](https://github.com/nonamich/ts-proto/commit/b89fbcb1f99ccfcd1f06551286c2459e44a3bac2)), closes [#928](https://github.com/nonamich/ts-proto/issues/928) [#932](https://github.com/nonamich/ts-proto/issues/932)
* Bind service methods to class ([#290](https://github.com/nonamich/ts-proto/issues/290)) ([84060e2](https://github.com/nonamich/ts-proto/commit/84060e204d0e42688b8da85d434fe3d24788813b))
* Bump ts poet for dprint perf increase ([#668](https://github.com/nonamich/ts-proto/issues/668)) ([961d388](https://github.com/nonamich/ts-proto/commit/961d388fa7dc7cb25fbe700526cbd481f3a48ae1))
* Bump ts poet for perf increase ([#714](https://github.com/nonamich/ts-proto/issues/714)) ([0068dc8](https://github.com/nonamich/ts-proto/commit/0068dc8c8c34263ac4a7bc5866408453fc2c8b11))
* Bump ts-poet for dprint, also use tsx ([#660](https://github.com/nonamich/ts-proto/issues/660)) ([348a465](https://github.com/nonamich/ts-proto/commit/348a4651b42d5ff64fd07e36ef9ca7d7e76f4277))
* Bump ts-proto-descriptors to latest ts-proto. ([#1043](https://github.com/nonamich/ts-proto/issues/1043)) ([0b06554](https://github.com/nonamich/ts-proto/commit/0b065540d8fb4a3c1254a876d2be0dd48ac3ba66)), closes [#1042](https://github.com/nonamich/ts-proto/issues/1042)
* Bump ts-proto-descriptors. ([#489](https://github.com/nonamich/ts-proto/issues/489)) ([d454448](https://github.com/nonamich/ts-proto/commit/d454448b1889b1576c1ebcc6964a55a03af7d921)), closes [#493](https://github.com/nonamich/ts-proto/issues/493)
* change channel options to client options in generate grpc/js ([#704](https://github.com/nonamich/ts-proto/issues/704)) ([c4ac8ac](https://github.com/nonamich/ts-proto/commit/c4ac8ac12aaee0c897985f944ffe3f122e28eba9))
* **client:** allow overriding the service identifier ([#683](https://github.com/nonamich/ts-proto/issues/683)) ([10c7c99](https://github.com/nonamich/ts-proto/commit/10c7c99b1f43705d640ab1e602a7c1799e31ac08))
* conditionally add "Service" to nice-grpc's generated service interface name ([#710](https://github.com/nonamich/ts-proto/issues/710)) ([7c39cc0](https://github.com/nonamich/ts-proto/commit/7c39cc0729403dcb63ef353357fae3548b5a6667))
* enable prototype for defaults for ts-proto-descriptors ([#487](https://github.com/nonamich/ts-proto/issues/487)) ([2b5640f](https://github.com/nonamich/ts-proto/commit/2b5640f582e6adb4e81797a9cec217896061aadb))
* enable unknown fields for descriptor protos ([#479](https://github.com/nonamich/ts-proto/issues/479)) ([824c996](https://github.com/nonamich/ts-proto/commit/824c9962cd98dc0f9093e8909e3028d900094c54))
* Ensure strict(er) TS compliance for the generated code ([#868](https://github.com/nonamich/ts-proto/issues/868)) ([1405d4b](https://github.com/nonamich/ts-proto/commit/1405d4bcc866343605946ac4a0b30e7de9c75e71))
* enum decoding ([#910](https://github.com/nonamich/ts-proto/issues/910)) ([9e0a0b5](https://github.com/nonamich/ts-proto/commit/9e0a0b5c86004313f65eae88b8dc5e63deaaf251)), closes [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859) [#909](https://github.com/nonamich/ts-proto/issues/909)
* export options types ([#1027](https://github.com/nonamich/ts-proto/issues/1027)) ([9652586](https://github.com/nonamich/ts-proto/commit/965258656efaa07cc8b72feb8c6b8e202a000940))
* expose service name as a separate exported constant ([#851](https://github.com/nonamich/ts-proto/issues/851)) ([84a4ed6](https://github.com/nonamich/ts-proto/commit/84a4ed610089363e3ee7a6a29581d8e0ef695f0d))
* extensions ([#808](https://github.com/nonamich/ts-proto/issues/808)) ([f956128](https://github.com/nonamich/ts-proto/commit/f956128ad830f4538452d65dccedca3e08d6c871))
* framework-agnostic service definitions ([#316](https://github.com/nonamich/ts-proto/issues/316)) ([3d89282](https://github.com/nonamich/ts-proto/commit/3d89282176f8f16a33eea5042df0439c3f23b038))
* Generate Index Files ([#821](https://github.com/nonamich/ts-proto/issues/821)) ([85bf206](https://github.com/nonamich/ts-proto/commit/85bf206ca8c1052849aea3e39522ad4918e0d736))
* generate type namespaces for enums as literals ([#960](https://github.com/nonamich/ts-proto/issues/960)) ([e2619f6](https://github.com/nonamich/ts-proto/commit/e2619f6191e8bfb1deaf8474c26ea386c5c34e63))
* group encoding and decoding support ([#799](https://github.com/nonamich/ts-proto/issues/799)) ([5ebe3c0](https://github.com/nonamich/ts-proto/commit/5ebe3c07f5039db4f9b40e4e237d02d03c85a4e5))
* **Grpc-Web:** Add & export GrpcWebError type ([#593](https://github.com/nonamich/ts-proto/issues/593)) ([645987d](https://github.com/nonamich/ts-proto/commit/645987d023e666290e87086f5a0770c34e2fe978))
* implementation of useAbortSignal option for grpc-web ([#777](https://github.com/nonamich/ts-proto/issues/777)) ([7a3d429](https://github.com/nonamich/ts-proto/commit/7a3d4291806568a938e88f53a55683633f26ec4a))
* implemented emitImportedFiles flag ([#302](https://github.com/nonamich/ts-proto/issues/302)) ([16b4aca](https://github.com/nonamich/ts-proto/commit/16b4aca98aa9f0266734421314baaa5259e3f4e2)), closes [#294](https://github.com/nonamich/ts-proto/issues/294) [#283](https://github.com/nonamich/ts-proto/issues/283) [#283](https://github.com/nonamich/ts-proto/issues/283)
* Import CallContext and CallOptions as type ([#684](https://github.com/nonamich/ts-proto/issues/684)) ([8b388f6](https://github.com/nonamich/ts-proto/commit/8b388f6c9f57dac34ca5836a4313d8247bb0fceb)), closes [#677](https://github.com/nonamich/ts-proto/issues/677)
* import proto as type import if onlyTypes is set ([25d8e8b](https://github.com/nonamich/ts-proto/commit/25d8e8b9042142f1032feadc8a799b7a01115cc2))
* Improve map reading (fromJSON/fromPartial) ([#410](https://github.com/nonamich/ts-proto/issues/410)) ([057d438](https://github.com/nonamich/ts-proto/commit/057d438548d95c354331f7d2d767ccff952ad5c6))
* include _unknownFields as a field ([#806](https://github.com/nonamich/ts-proto/issues/806)) ([6b4ba39](https://github.com/nonamich/ts-proto/commit/6b4ba39a0651a2352db2ac70eb91d21138ccf887))
* Include dockerized protoc ([#404](https://github.com/nonamich/ts-proto/issues/404)) ([7564a78](https://github.com/nonamich/ts-proto/commit/7564a7887ccd0bb80cac19d313ee9bd8daae778d))
* include service and definition types with implementations ([#552](https://github.com/nonamich/ts-proto/issues/552)) ([6b896f4](https://github.com/nonamich/ts-proto/commit/6b896f4b7f4ba0f0d97730767421786171646aea))
* Initialize lists with map ([#387](https://github.com/nonamich/ts-proto/issues/387)) ([200e674](https://github.com/nonamich/ts-proto/commit/200e674e4baf2640d67720ad535fe042d291d4a0))
* Make sure all types support prefix/suffix ([#1148](https://github.com/nonamich/ts-proto/issues/1148)) ([ddf2122](https://github.com/nonamich/ts-proto/commit/ddf21224d76f63e28e915889aa931c170cde4734))
* Normalize `toJSON` output by omitting fields set to their default values ([#878](https://github.com/nonamich/ts-proto/issues/878)) ([50958d6](https://github.com/nonamich/ts-proto/commit/50958d639435a32a76d59fc57565e3677f5be39e))
* Official Buf Plugin ([#573](https://github.com/nonamich/ts-proto/issues/573)) ([e6272c4](https://github.com/nonamich/ts-proto/commit/e6272c487f73ff96afb4146a7998a892c4b43f14))
* omit optional fields in base instance ([#669](https://github.com/nonamich/ts-proto/issues/669)) ([47b60aa](https://github.com/nonamich/ts-proto/commit/47b60aab95533542cf762f152138f7ab4234de88))
* oneof=unions-value to use the same field name for oneof cases ([#1062](https://github.com/nonamich/ts-proto/issues/1062)) ([7493090](https://github.com/nonamich/ts-proto/commit/74930908cc8e5292577a793b7ae06c3721225ac3)), closes [#1060](https://github.com/nonamich/ts-proto/issues/1060)
* option to declare schema as const ([#1096](https://github.com/nonamich/ts-proto/issues/1096)) ([4cc1a1e](https://github.com/nonamich/ts-proto/commit/4cc1a1e4238cf628591414c02d39bd76dc75fb3a))
* option useSnakeTypeName ([#694](https://github.com/nonamich/ts-proto/issues/694)) ([ad73ff9](https://github.com/nonamich/ts-proto/commit/ad73ff9341d0d593156d10b5d96c4a47afdc802d))
* optional one of properties ([#705](https://github.com/nonamich/ts-proto/issues/705)) ([4c6cbb0](https://github.com/nonamich/ts-proto/commit/4c6cbb0ff71e053c634732e295ed812901d368ae))
* optionally output versions used to generate files ([#1040](https://github.com/nonamich/ts-proto/issues/1040)) ([53d6799](https://github.com/nonamich/ts-proto/commit/53d67995526770213ecf91c15645b9c74e7e5bd4))
* **options:** adds protoc-gen-go-like M option ([#672](https://github.com/nonamich/ts-proto/issues/672)) ([9304e5d](https://github.com/nonamich/ts-proto/commit/9304e5db7172db53530fb08fe0486f56b2a17181)), closes [#596](https://github.com/nonamich/ts-proto/issues/596)
* output-encode-only methods ([#787](https://github.com/nonamich/ts-proto/issues/787)) ([3594410](https://github.com/nonamich/ts-proto/commit/3594410cc18fecc9c6f76f8abf7bdf9fdd178acd))
* Reduce code size by using nullish coalescing operator in fromPartial ([#376](https://github.com/nonamich/ts-proto/issues/376)) ([19d2ded](https://github.com/nonamich/ts-proto/commit/19d2deda2cf7c47b1b56bfc65cf58653291dba4a))
* represent field masks as `string[]` ([#525](https://github.com/nonamich/ts-proto/issues/525)) ([903b216](https://github.com/nonamich/ts-proto/commit/903b216238db025e24ec3cfb2d20063aec1a40ed))
* Round numbers in toJSON. ([#444](https://github.com/nonamich/ts-proto/issues/444)) ([bd2df7b](https://github.com/nonamich/ts-proto/commit/bd2df7b7176e961955ed1dcacb3602384e13ee45))
* RPC: add useAbortSignal option ([#731](https://github.com/nonamich/ts-proto/issues/731)) ([69313a7](https://github.com/nonamich/ts-proto/commit/69313a7a0f19c41c61824081e12ed680fda32b74)), closes [#730](https://github.com/nonamich/ts-proto/issues/730)
* Service generation option ([#357](https://github.com/nonamich/ts-proto/issues/357)) ([7a2cf83](https://github.com/nonamich/ts-proto/commit/7a2cf831c3768e5afd76dea37f3165df4886136e))
* service options unknown methods ([#801](https://github.com/nonamich/ts-proto/issues/801)) ([994d0d0](https://github.com/nonamich/ts-proto/commit/994d0d0ac54b3e22cb27fa4c5b8a5b1d17b62521))
* Streaming support ([#373](https://github.com/nonamich/ts-proto/issues/373)) ([459b94f](https://github.com/nonamich/ts-proto/commit/459b94f5b2988d58d186461332e888c3e511603a))
* support `json_name` defined in a proto file ([#943](https://github.com/nonamich/ts-proto/issues/943)) ([de989af](https://github.com/nonamich/ts-proto/commit/de989af0d9bf9910dc3c047a18d97f289bffe2ee))
* support `useMapType` option ([#686](https://github.com/nonamich/ts-proto/issues/686)) ([f2e80ab](https://github.com/nonamich/ts-proto/commit/f2e80ab3ecc3a438ecbd88b2170b8119ebadfcd3))
* support `useReadonlyTypes` option ([#691](https://github.com/nonamich/ts-proto/issues/691)) ([4b87334](https://github.com/nonamich/ts-proto/commit/4b8733452fb59cea3b9fb4721159b97e6df59854))
* support deprecatedOnly option to make deprecated fields optional ([#1010](https://github.com/nonamich/ts-proto/issues/1010)) ([db23004](https://github.com/nonamich/ts-proto/commit/db230041f69fa6a7ff17db55595e7b8805e655ba))
* Support for Google.Protobuf.Value, ListValue and Struct ([#396](https://github.com/nonamich/ts-proto/issues/396)) ([7dd9c16](https://github.com/nonamich/ts-proto/commit/7dd9c16ffdec4d9ea296fbdc30d390fe44192c42))
* support grpc-web client straming ([#617](https://github.com/nonamich/ts-proto/issues/617)) ([d3e7f1f](https://github.com/nonamich/ts-proto/commit/d3e7f1f4aac12db87c54d6357e557a351c96a2ca))
* Support json names containing non-alphanumeric characters ([#520](https://github.com/nonamich/ts-proto/issues/520)) ([ce44668](https://github.com/nonamich/ts-proto/commit/ce44668b8fe01b14f50ac3c5c950f73db769fa76))
* support lib: es6 ([#850](https://github.com/nonamich/ts-proto/issues/850)) ([6280677](https://github.com/nonamich/ts-proto/commit/62806776beacb1e2b0ee921e4212f1e61ce5191e))
* support mapping ObjectId message as mongodb.ObjectId ([#467](https://github.com/nonamich/ts-proto/issues/467)) ([8b23897](https://github.com/nonamich/ts-proto/commit/8b2389715ecfd5d51b1b24f5a9332e4ff9f09a27))
* support proto2 optional and default value fields ([#1007](https://github.com/nonamich/ts-proto/issues/1007)) ([1fa1e61](https://github.com/nonamich/ts-proto/commit/1fa1e61b0a0ff22949a1acadb38630f6f5bf6179)), closes [#973](https://github.com/nonamich/ts-proto/issues/973)
* **ts-proto-#859:** added encode-only options to toJSON methods ([#886](https://github.com/nonamich/ts-proto/issues/886)) ([d0cf57d](https://github.com/nonamich/ts-proto/commit/d0cf57d9a1aebdec3bec67585658362b1a38d6a3)), closes [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859)
* Update fromPartial and fromJson to respect initializeFieldsAsUndefined ([#811](https://github.com/nonamich/ts-proto/issues/811)) ([1615ae0](https://github.com/nonamich/ts-proto/commit/1615ae0b136bc8909e206b44f3bd6ec568a760e6))
* Update protobufjs (and peer dependencies) to ^7 ([#874](https://github.com/nonamich/ts-proto/issues/874)) ([7f979a7](https://github.com/nonamich/ts-proto/commit/7f979a70af2e42c8c429ae5f65787e0b43ccb706))
* Upgrade to long 5.0.0. ([#882](https://github.com/nonamich/ts-proto/issues/882)) ([4c1e7a6](https://github.com/nonamich/ts-proto/commit/4c1e7a6e02f974f193063a83ce7a472b14f2d2d0))
* Use exact types for fromPartial ([#412](https://github.com/nonamich/ts-proto/issues/412)) ([808f8a7](https://github.com/nonamich/ts-proto/commit/808f8a7a77d56f65dd4a4643dd66158f106ab755)), closes [#156](https://github.com/nonamich/ts-proto/issues/156)
* Use ternary operator for conditional assignments ([#394](https://github.com/nonamich/ts-proto/issues/394)) ([d84c084](https://github.com/nonamich/ts-proto/commit/d84c084fb56c958c184f8971479979b8bfb17ccc))
* watch for changed integration test files ([#464](https://github.com/nonamich/ts-proto/issues/464)) ([988cd7e](https://github.com/nonamich/ts-proto/commit/988cd7eb84bc3b8b72d6b4d59c38aa794c16c638))
* yarn watch updates (specified) tests when source files change ([#465](https://github.com/nonamich/ts-proto/issues/465)) ([275d0e7](https://github.com/nonamich/ts-proto/commit/275d0e7c61f3acb2b1fd670b1974e64dd49d6ff4))

### Performance Improvements

* Faster base64FromBytes & bytesFromBase64 on Node.JS ([#649](https://github.com/nonamich/ts-proto/issues/649)) ([82ab341](https://github.com/nonamich/ts-proto/commit/82ab341557fba1a4933c4613d5c20dbf897905fa))
* fromJSON returns object literal to allow v8 optimizations ([#463](https://github.com/nonamich/ts-proto/issues/463)) ([5fcd05b](https://github.com/nonamich/ts-proto/commit/5fcd05b79e7c02547c4b6db46fae7a7202f97629))
* generate switch statement for oneof union encode ([#767](https://github.com/nonamich/ts-proto/issues/767)) ([c3fd1e3](https://github.com/nonamich/ts-proto/commit/c3fd1e3e487d1da3e8c792354d6491cadb067ff4))
* Generating "else if" where applicable ([#1141](https://github.com/nonamich/ts-proto/issues/1141)) ([4a8018c](https://github.com/nonamich/ts-proto/commit/4a8018c915dabbc83629f021a2899ade55b6c8de))
* optimize object creation in `decode`, `fromJSON` and `fromPartial` ([#457](https://github.com/nonamich/ts-proto/issues/457)) ([70832d3](https://github.com/nonamich/ts-proto/commit/70832d33bae82ecb3c5f87845d14e992a13437e4))
* Replacing "else if" with a "switch case" statement to improve Typescript performance ([#1142](https://github.com/nonamich/ts-proto/issues/1142)) ([de1a616](https://github.com/nonamich/ts-proto/commit/de1a616d24a90ef7b281c9e8966556adfa156ebb)), closes [#1135](https://github.com/nonamich/ts-proto/issues/1135) [#1141](https://github.com/nonamich/ts-proto/issues/1141)
* use array.push to prevent reallocation on every field ([#804](https://github.com/nonamich/ts-proto/issues/804)) ([a6aea2c](https://github.com/nonamich/ts-proto/commit/a6aea2ca9e61611cf22417d23eb71a5d6e4f2164))
* use Reader.create ([#800](https://github.com/nonamich/ts-proto/issues/800)) ([869e448](https://github.com/nonamich/ts-proto/commit/869e44876c88ccfb82cb4a48731b340a0fb2c025))
nonamich pushed a commit to nonamich/ts-proto that referenced this pull request Feb 3, 2025
# 1.0.0 (2025-02-03)

### Bug Fixes

* `outputSchema=true` when `onlyTypes=true` ([#1039](https://github.com/nonamich/ts-proto/issues/1039)) ([064665f](https://github.com/nonamich/ts-proto/commit/064665f064e072f9d530f84e45f605fd4b5a749c))
* add .js suffix to proto cross-reference imports ([#602](https://github.com/nonamich/ts-proto/issues/602)) ([8dc38af](https://github.com/nonamich/ts-proto/commit/8dc38af40e68262cd53469ce3dc4dcac670365da)), closes [#601](https://github.com/nonamich/ts-proto/issues/601) [/github.com/kulshekhar/ts-jest/issues/1057#issuecomment-481406624](https://github.com//github.com/kulshekhar/ts-jest/issues/1057/issues/issuecomment-481406624)
* Add 'as any' in create ([#895](https://github.com/nonamich/ts-proto/issues/895)) ([4214d5a](https://github.com/nonamich/ts-proto/commit/4214d5af98817f317760298b1b2e03a8e956329c)), closes [#838](https://github.com/nonamich/ts-proto/issues/838)
* add callback close condition ([#837](https://github.com/nonamich/ts-proto/issues/837)) ([2071c67](https://github.com/nonamich/ts-proto/commit/2071c67650a3ac80ec9b5845fec3227ee47841d0))
* Add check for lower bound with forceLong=number ([#1057](https://github.com/nonamich/ts-proto/issues/1057)) ([01ef3c3](https://github.com/nonamich/ts-proto/commit/01ef3c3bb2a6ebb5b15fe8acfdc73f50b19a5a38))
* add deprecated comment when there are not other comments ([#189](https://github.com/nonamich/ts-proto/issues/189)) ([5b6148b](https://github.com/nonamich/ts-proto/commit/5b6148bea45b06fd475493a09f12e625b87d27c3))
* Add functionality for grpc camel case to respect splitting by word ([#721](https://github.com/nonamich/ts-proto/issues/721)) ([4af040c](https://github.com/nonamich/ts-proto/commit/4af040c233792862db85c07d01d1b210a13cae2c)), closes [#722](https://github.com/nonamich/ts-proto/issues/722)
* Add long dep to ts-proto-descriptors. ([#275](https://github.com/nonamich/ts-proto/issues/275)) ([0d20827](https://github.com/nonamich/ts-proto/commit/0d20827dbae5195d30a3094c4ea5e98833909daa))
* Add M1/ARM support for the test suite ([#516](https://github.com/nonamich/ts-proto/issues/516)) ([7cf5625](https://github.com/nonamich/ts-proto/commit/7cf56251726d149eebd015367476f36e4edb48aa))
* add missing `boolean` to `DeepPartial` ([#287](https://github.com/nonamich/ts-proto/issues/287)) ([ba18380](https://github.com/nonamich/ts-proto/commit/ba1838069c6119516ceb1bfa5bc0242724e2b520))
* Add missing defaults to fromPartial if options.oneof is UNIONS ([#375](https://github.com/nonamich/ts-proto/issues/375)) ([21781e9](https://github.com/nonamich/ts-proto/commit/21781e98bb6117b540be8c3f2c38ac3ad5cbbb44))
* Add missing globalThis prefixes. ([#988](https://github.com/nonamich/ts-proto/issues/988)) ([86aca54](https://github.com/nonamich/ts-proto/commit/86aca54afdcda88bc77b77c9c363f422e0f66be7)), closes [#987](https://github.com/nonamich/ts-proto/issues/987)
* Add service to the client constructor. ([#455](https://github.com/nonamich/ts-proto/issues/455)) ([8c32104](https://github.com/nonamich/ts-proto/commit/8c32104a8522cfe2febcf2338d51710021d837ff))
* add serviceName to grpc-js client constructor type ([#980](https://github.com/nonamich/ts-proto/issues/980)) ([2c6682d](https://github.com/nonamich/ts-proto/commit/2c6682df400a5b1e4bcb9c5bc233dbd7a65df987))
* add support of importSuffix=.js for index files ([#986](https://github.com/nonamich/ts-proto/issues/986)) ([183cf03](https://github.com/nonamich/ts-proto/commit/183cf039895184edd365e6cb7bb9751426ac56f4))
* Added null propagation and guard ([#1127](https://github.com/nonamich/ts-proto/issues/1127)) ([86637fa](https://github.com/nonamich/ts-proto/commit/86637fa6c39ddcc09cab3c486c34b7a52adaf694))
* Adding a failing regression test for wrapper types ([#689](https://github.com/nonamich/ts-proto/issues/689)) ([bde2e28](https://github.com/nonamich/ts-proto/commit/bde2e28ad70bf05ebb21effcdb1caad7217c8291))
* Additional fix for structs with useMapType. ([#743](https://github.com/nonamich/ts-proto/issues/743)) ([3264b0f](https://github.com/nonamich/ts-proto/commit/3264b0f4a98f3e00b262ce8af7927b0bc0375160))
* Allow other services with nestJs. ([#982](https://github.com/nonamich/ts-proto/issues/982)) ([45bba3c](https://github.com/nonamich/ts-proto/commit/45bba3ce7ce723682a6ba2e2104d43ab3fd6978c))
* always use Map for int64 keys ([#708](https://github.com/nonamich/ts-proto/issues/708)) ([#905](https://github.com/nonamich/ts-proto/issues/905)) ([cf2fb59](https://github.com/nonamich/ts-proto/commit/cf2fb59de20f8a60ead23294439dacbdbe6dfc14))
* Avoid namespace conflict on globalThis. ([#735](https://github.com/nonamich/ts-proto/issues/735)) ([71e919e](https://github.com/nonamich/ts-proto/commit/71e919e7de4a2482e9389a5cbfd76853a1db73fb)), closes [#732](https://github.com/nonamich/ts-proto/issues/732)
* Build before releasing, fixes [#267](https://github.com/nonamich/ts-proto/issues/267). ([#269](https://github.com/nonamich/ts-proto/issues/269)) ([1f1bcfe](https://github.com/nonamich/ts-proto/commit/1f1bcfeca329e36c41c069b791e803ceb7cb975c))
* Bump descriptors. ([#883](https://github.com/nonamich/ts-proto/issues/883)) ([e2cf184](https://github.com/nonamich/ts-proto/commit/e2cf1848c1c70a8bbe73756e1cf530c5d70f5ce2))
* Bump node in ts-proto.Dockerfile. ([42f3cea](https://github.com/nonamich/ts-proto/commit/42f3ceac5323056b1b845b51919ecddaa32bf258))
* Bump protobufjs. ([#585](https://github.com/nonamich/ts-proto/issues/585)) ([ba6b85d](https://github.com/nonamich/ts-proto/commit/ba6b85d9d5b7ce191dce898c462cf164a6b1e308))
* Bump ts-poet to use @dprint/typescript. ([#662](https://github.com/nonamich/ts-proto/issues/662)) ([84b64f4](https://github.com/nonamich/ts-proto/commit/84b64f4219f96199e8722678354430fbf00cebba))
* Bump ts-proto-descriptors to restore any-less _unknownFields. ([#810](https://github.com/nonamich/ts-proto/issues/810)) ([de9c307](https://github.com/nonamich/ts-proto/commit/de9c3079210caed1d0d3da782a4d0f2e54f52652))
* Bump ts-proto-descriptors w/long back. ([#880](https://github.com/nonamich/ts-proto/issues/880)) ([d27e19c](https://github.com/nonamich/ts-proto/commit/d27e19c84420d46dff0fc1914ce724ec15f86185))
* Bump ts-proto-descriptors. ([#1102](https://github.com/nonamich/ts-proto/issues/1102)) ([3d1cd61](https://github.com/nonamich/ts-proto/commit/3d1cd61ed7bbac4d6dc7353c49d0732aad22a504)), closes [#1101](https://github.com/nonamich/ts-proto/issues/1101)
* Bump ts-proto-descriptors. ([#876](https://github.com/nonamich/ts-proto/issues/876)) ([ad57819](https://github.com/nonamich/ts-proto/commit/ad57819a16b5f3886bde3c8f63231dc70f84d250))
* camelToSnake to respect uppercase words, such as "GetAPIValue" -> "GET_API_VALUE" ([#1046](https://github.com/nonamich/ts-proto/issues/1046)) ([d2e75cd](https://github.com/nonamich/ts-proto/commit/d2e75cd14cdf3bc0c35f59bf8e8a095c57e9c040))
* close server stream on observer unsubscribe ([#309](https://github.com/nonamich/ts-proto/issues/309)) ([4b72563](https://github.com/nonamich/ts-proto/commit/4b7256381c3b2ff2d4d5190e878de6903cd0d53a))
* code generation for int64 map values in fromPartial and fromJson ([#395](https://github.com/nonamich/ts-proto/issues/395)) ([d3ea8eb](https://github.com/nonamich/ts-proto/commit/d3ea8eb69e19a5e45fcc1766c4af1194b17e48fc))
* code-generation for Services with Struct response types ([#407](https://github.com/nonamich/ts-proto/issues/407)) ([f041fa1](https://github.com/nonamich/ts-proto/commit/f041fa1047816748c366bcb81895b6b917eb328d))
* Compilation error for nested repeated fields with `useOptionals=all` ([#1113](https://github.com/nonamich/ts-proto/issues/1113)) ([e89fc51](https://github.com/nonamich/ts-proto/commit/e89fc51fcc3ba494a81884cc136779202d3f1e16)), closes [#1112](https://github.com/nonamich/ts-proto/issues/1112)
* conditional export ([#1003](https://github.com/nonamich/ts-proto/issues/1003)) ([4a15839](https://github.com/nonamich/ts-proto/commit/4a15839943b501af750b9d142dba2cb3889b4617))
* Consistently apply lowerCaseServiceMethods=true ([#332](https://github.com/nonamich/ts-proto/issues/332)) ([57f2473](https://github.com/nonamich/ts-proto/commit/57f24739f425ec05eabd8c8d6959d4b1b14623a1))
* Depend specifically on long 5.2.3. ([#892](https://github.com/nonamich/ts-proto/issues/892)) ([2b976f2](https://github.com/nonamich/ts-proto/commit/2b976f295fc1fbab6d0fb5ad86cfad26ed722c8a))
* deprecated grpc and replace with @grpc/grpc-js ([#362](https://github.com/nonamich/ts-proto/issues/362)) ([1a11b97](https://github.com/nonamich/ts-proto/commit/1a11b97e9b5e92e79fdd4e22d3e8ea4536af243b))
* do not mention :local scripts ([#974](https://github.com/nonamich/ts-proto/issues/974)) ([ef30da5](https://github.com/nonamich/ts-proto/commit/ef30da58d60b9098eb50b7e27489ac8ef854022e))
* Don't close client if we've already aborted ([#968](https://github.com/nonamich/ts-proto/issues/968)) ([7ee1507](https://github.com/nonamich/ts-proto/commit/7ee15075b2f35fac92790885c02f5a0edba9a76a))
* Don't fail on Function message names ([#1119](https://github.com/nonamich/ts-proto/issues/1119)) ([da048a1](https://github.com/nonamich/ts-proto/commit/da048a1e78cdc1baa228700c40a944652998d2a1)), closes [#1110](https://github.com/nonamich/ts-proto/issues/1110)
* don't generate transitively imported files for mapped imports ([#854](https://github.com/nonamich/ts-proto/issues/854)) ([edd9044](https://github.com/nonamich/ts-proto/commit/edd9044568739b089f1ec66b53d0cc36d540610b))
* don't reference globalThis.Buffer when env=browser ([#967](https://github.com/nonamich/ts-proto/issues/967)) ([#999](https://github.com/nonamich/ts-proto/issues/999)) ([0d34612](https://github.com/nonamich/ts-proto/commit/0d34612ce8878b1dccbeb001686ef4051080e043))
* ensure default service streaming methods compile when middleware methods are enabled ([#996](https://github.com/nonamich/ts-proto/issues/996)) ([a9e975b](https://github.com/nonamich/ts-proto/commit/a9e975b41b760970da264a48cc3fb4ecc4b57a1d))
* ensure docker-compose platform is amd64 ([#990](https://github.com/nonamich/ts-proto/issues/990)) ([bdf4710](https://github.com/nonamich/ts-proto/commit/bdf4710b76aafc3fde47aa77a5786387e2236242))
* ensure generated fromTimestamp works when useOptionals=all ([#832](https://github.com/nonamich/ts-proto/issues/832)) ([1f82445](https://github.com/nonamich/ts-proto/commit/1f8244569de87ad99ed3676244e51291af9b3323))
* enum default value when remove-enum-prefix and string-enum both on ([#902](https://github.com/nonamich/ts-proto/issues/902)) ([594b137](https://github.com/nonamich/ts-proto/commit/594b137cdffbf6256b9d0ee6bb82822ce22c7b94))
* enum type returns 'UNRECOGNIZED' or '-1' in xxxToJSON/xxxToNumber ([#566](https://github.com/nonamich/ts-proto/issues/566)) ([19911a1](https://github.com/nonamich/ts-proto/commit/19911a1c62e3fe5c8a0eb0a795489340512898da))
* error handling on non-Error type errors ([#983](https://github.com/nonamich/ts-proto/issues/983)) ([8c567fc](https://github.com/nonamich/ts-proto/commit/8c567fc6e4cefdf96a2e021e8ca72d6ee45cc26e))
* esModuleInterop not working for object-hash and dataloader imports ([#794](https://github.com/nonamich/ts-proto/issues/794)) ([9fc9632](https://github.com/nonamich/ts-proto/commit/9fc9632e03a18f7a2d6e95a72ff959be93199981))
* Extend `global.Error` to avoid import collisions with Error proto msgs ([#699](https://github.com/nonamich/ts-proto/issues/699)) ([e9d8f91](https://github.com/nonamich/ts-proto/commit/e9d8f9123b7b3c5e274035fa3f2644b370915181))
* Field starting with '_' generates an interface property starting with 'undefined' ([#344](https://github.com/nonamich/ts-proto/issues/344)) ([fab354f](https://github.com/nonamich/ts-proto/commit/fab354f3f8f3aae51bb0377f98138bc80a1113e3))
* Fix bad grpc.Metadata import. Fixes [#188](https://github.com/nonamich/ts-proto/issues/188). ([#259](https://github.com/nonamich/ts-proto/issues/259)) ([cd83733](https://github.com/nonamich/ts-proto/commit/cd83733bfe64ba637633282c3170011051dec41e))
* Fix buf publishing with yarn v3. ([#726](https://github.com/nonamich/ts-proto/issues/726)) ([e125d2b](https://github.com/nonamich/ts-proto/commit/e125d2bad21acfb27579b1ce252151678a91f2bc))
* Fix build from typescript bump. ([3ecd498](https://github.com/nonamich/ts-proto/commit/3ecd4986063952ae06c6136fbd9ae0cfc75212d8))
* Fix codegen for google.protobuf.Struct with useMapType=true ([#740](https://github.com/nonamich/ts-proto/issues/740)) ([0647151](https://github.com/nonamich/ts-proto/commit/0647151b356d7b22f8baf72b70f5a0353259b404))
* fix codegen for maps with wrapper value type ([#370](https://github.com/nonamich/ts-proto/issues/370)) ([dd2481d](https://github.com/nonamich/ts-proto/commit/dd2481df0835faafc561aad4a4d0c9c2ff9d868a))
* Fix encode wrap types ([#303](https://github.com/nonamich/ts-proto/issues/303)) ([533c0e0](https://github.com/nonamich/ts-proto/commit/533c0e0959943562a59de5f456b83ab0b0b6abed))
* Fix generating wrong web-rpc implementation for wrapper-type method arg ([#978](https://github.com/nonamich/ts-proto/issues/978)) ([063fd29](https://github.com/nonamich/ts-proto/commit/063fd29974e0e917ad69cd5a158ee233edb5e019))
* Fix integration test codegen script ([#291](https://github.com/nonamich/ts-proto/issues/291)) ([a51eee5](https://github.com/nonamich/ts-proto/commit/a51eee55d07c43b4b7cbe1ad2eb010f33c216a29))
* Fix invocation error. ([f4e26bd](https://github.com/nonamich/ts-proto/commit/f4e26bd44f6882318defab1fccd0d6a833823fc0))
* Fix push_to_buf_registry check. ([22ac914](https://github.com/nonamich/ts-proto/commit/22ac914cd8626258ceb35fd435b899a819518988))
* Fix running yarn:test locally. ([#1097](https://github.com/nonamich/ts-proto/issues/1097)) ([30385ed](https://github.com/nonamich/ts-proto/commit/30385edd565d873d550df765dac9570c125bef2c))
* Fix snake casing numbers. ([#1052](https://github.com/nonamich/ts-proto/issues/1052)) ([f85a2f1](https://github.com/nonamich/ts-proto/commit/f85a2f1ed4e04143b96d6eaa3a589b16944d3239)), closes [#1048](https://github.com/nonamich/ts-proto/issues/1048)
* Fix snakeToCamel single value parsing. ([#513](https://github.com/nonamich/ts-proto/issues/513)) ([e1ad866](https://github.com/nonamich/ts-proto/commit/e1ad866c95751c37ed13f02f4da2dc9076ab4758))
* Fix ts-poet typo in package.json. ([#589](https://github.com/nonamich/ts-proto/issues/589)) ([5211347](https://github.com/nonamich/ts-proto/commit/5211347cb21ac7d117349a32a87c0d017999c44a))
* Fix TypeScript errors when compiling with `noUncheckedIndexedAccess` ([#297](https://github.com/nonamich/ts-proto/issues/297)) ([f865e43](https://github.com/nonamich/ts-proto/commit/f865e431c2613a1cfe9dc1d87fba6a9e4bcd3b16))
* Fix version loading in new dist layout. ([#1091](https://github.com/nonamich/ts-proto/issues/1091)) ([f1c23d2](https://github.com/nonamich/ts-proto/commit/f1c23d2eab096b7c6b2decd9f0886b5300c52712))
* Fix version number for Buf plugin. ([dc1fb7e](https://github.com/nonamich/ts-proto/commit/dc1fb7e766ed4115d026e7ff0e9a9480c1e42380))
* fixed addGrpcMetadata option ([#761](https://github.com/nonamich/ts-proto/issues/761)) ([cb2b573](https://github.com/nonamich/ts-proto/commit/cb2b5733ddd71589a00a4960906c65869303706b))
* fixing exportCommonSymbols in nestjs ([#916](https://github.com/nonamich/ts-proto/issues/916)) ([daf41f7](https://github.com/nonamich/ts-proto/commit/daf41f7c2654e801994c0791fb3f9f178b5d8ad8))
* generate canonical JSON encoding for FieldMasks ([#510](https://github.com/nonamich/ts-proto/issues/510)) ([0ec4e97](https://github.com/nonamich/ts-proto/commit/0ec4e97a2649dc15af1c925f8a2ff6adf1e17d9b))
* generate different MessageType when using static-only ([#863](https://github.com/nonamich/ts-proto/issues/863)) ([477e5f5](https://github.com/nonamich/ts-proto/commit/477e5f5bc0aaf70a92d7231f4a9e746d13b2bbcf)), closes [#861](https://github.com/nonamich/ts-proto/issues/861)
* generate modules for empty files with esModuleInterop ([#992](https://github.com/nonamich/ts-proto/issues/992)) ([f0629ab](https://github.com/nonamich/ts-proto/commit/f0629ab0e9e0eded12142f363858d3dd8e292acd))
* google protobuf timestamps don't properly get suffixed when useDate=false and prefix/suffix ([#1146](https://github.com/nonamich/ts-proto/issues/1146)) ([53f799e](https://github.com/nonamich/ts-proto/commit/53f799e34b75940aeafec0fafa50f3bd5849dcad))
* grpc-js support for nestjs ([#307](https://github.com/nonamich/ts-proto/issues/307)) ([d11c8c2](https://github.com/nonamich/ts-proto/commit/d11c8c2bc041c2e8a25ebf7f1c68c901c18ee0ca))
* grpc-js timestamp conversion ([#755](https://github.com/nonamich/ts-proto/issues/755)) ([9d24bd3](https://github.com/nonamich/ts-proto/commit/9d24bd39d0fbebf636ba4aaf6567988bc177a413)), closes [#754](https://github.com/nonamich/ts-proto/issues/754)
* **Grpc-Web:** Fix compilation failure when a service definition contains a client streaming call. ([#535](https://github.com/nonamich/ts-proto/issues/535)) ([0c83892](https://github.com/nonamich/ts-proto/commit/0c83892693d5755c9fe848b442b5e666192103ab))
* Handle empty package ([#285](https://github.com/nonamich/ts-proto/issues/285)) ([5eadf92](https://github.com/nonamich/ts-proto/commit/5eadf9271fd9b00180593f3771266f3796a157bb))
* Have snakeToCamel leave existing mixed case. ([#482](https://github.com/nonamich/ts-proto/issues/482)) ([c0bf0fc](https://github.com/nonamich/ts-proto/commit/c0bf0fc13da70e2bde923cd1746119d2e7ac4b2f)), closes [#478](https://github.com/nonamich/ts-proto/issues/478)
* ignore `$type` field in `DeepPartial` ([#282](https://github.com/nonamich/ts-proto/issues/282)) ([6c5087e](https://github.com/nonamich/ts-proto/commit/6c5087ed489283bf7293a2cdbee71dd83484c68e))
* implement abort grpc web ([#785](https://github.com/nonamich/ts-proto/issues/785)) ([6a40d72](https://github.com/nonamich/ts-proto/commit/6a40d72d6a41d91264366d238dafd08291eba0b7))
* import fails when folder name overlaps with file name ([#1000](https://github.com/nonamich/ts-proto/issues/1000)) ([1e68e6f](https://github.com/nonamich/ts-proto/commit/1e68e6f0b2ca6fbffc51c0abe9b0f127350dd766))
* import Observable as a type ([#826](https://github.com/nonamich/ts-proto/issues/826)) ([52e84ba](https://github.com/nonamich/ts-proto/commit/52e84ba7ee8826cf3b33455b38bacfd0c68884ea))
* import protobufjs/minimal with importSuffix ([#616](https://github.com/nonamich/ts-proto/issues/616)) ([b86291c](https://github.com/nonamich/ts-proto/commit/b86291c58b1cb9d4064944a6371e928b564aef7f))
* Incorrect message names in the generated code for repeated fields ([#1073](https://github.com/nonamich/ts-proto/issues/1073)) ([8a95d8e](https://github.com/nonamich/ts-proto/commit/8a95d8e0983a38e604b6990461e726db566ff311)), closes [#1072](https://github.com/nonamich/ts-proto/issues/1072)
* initialize undefined optional fields upon use ([#802](https://github.com/nonamich/ts-proto/issues/802)) ([ee52e06](https://github.com/nonamich/ts-proto/commit/ee52e06a95d7790d1252831f1bb01344c94f16a4))
* Leave mixed case in all words. ([#488](https://github.com/nonamich/ts-proto/issues/488)) ([8a26c9c](https://github.com/nonamich/ts-proto/commit/8a26c9cba4c9897700aafe1a7f59d0b0f537764b))
* make struct types play well with type registry ([#503](https://github.com/nonamich/ts-proto/issues/503)) ([d62f854](https://github.com/nonamich/ts-proto/commit/d62f85478011c7eb3dbca196f79b452895406ece))
* Move dataloader to a devDependency. ([#877](https://github.com/nonamich/ts-proto/issues/877)) ([dbe1a96](https://github.com/nonamich/ts-proto/commit/dbe1a967ced7863492f82a977d6e5d34f4f034a6))
* **nestjs:** fixes grpc controller decorator ([#68](https://github.com/nonamich/ts-proto/issues/68)) ([fc67a32](https://github.com/nonamich/ts-proto/commit/fc67a32b7a66f56144b37d0a0a2904a6af6f5289))
* noImplicitReturns error in Value.unwrap ([#436](https://github.com/nonamich/ts-proto/issues/436)) ([2d7a5d0](https://github.com/nonamich/ts-proto/commit/2d7a5d04c72ace58fa3a6745c3857f6cc0468543)), closes [#432](https://github.com/nonamich/ts-proto/issues/432)
* oneof=union breaks wrapper types [#458](https://github.com/nonamich/ts-proto/issues/458) ([#462](https://github.com/nonamich/ts-proto/issues/462)) ([dd16992](https://github.com/nonamich/ts-proto/commit/dd16992a409f24e88e3a142830cd0745f50dbd10))
* Only check file dependencies once/file. ([#901](https://github.com/nonamich/ts-proto/issues/901)) ([8d61980](https://github.com/nonamich/ts-proto/commit/8d6198020a5ec775b0dbaf7e08924f4bdcc677f8)), closes [#900](https://github.com/nonamich/ts-proto/issues/900)
* **options:** initializes M opt to empty object ([#673](https://github.com/nonamich/ts-proto/issues/673)) ([cb76c5e](https://github.com/nonamich/ts-proto/commit/cb76c5ea565081d610be08451e452269c5d3837c))
* Pin ts-proto-descriptors to 1.3.1. ([#481](https://github.com/nonamich/ts-proto/issues/481)) ([6f362bf](https://github.com/nonamich/ts-proto/commit/6f362bfd3517a6bcb440d65e7ac63cd2b0bcc293)), closes [#480](https://github.com/nonamich/ts-proto/issues/480)
* prefix and suffixes were not being applied to to/fromTimestamp resulting in compile error ([#1118](https://github.com/nonamich/ts-proto/issues/1118)) ([22c2905](https://github.com/nonamich/ts-proto/commit/22c2905ca53c88bdb2802386d414d584a451aa4c))
* problem with verbatimModuleSyntax for grpc-js ([#1132](https://github.com/nonamich/ts-proto/issues/1132)) ([bedfa31](https://github.com/nonamich/ts-proto/commit/bedfa317e7b115d10ee3de897eae2490b5eccdc9))
* regression in being able to return a Date as a GRPC return value ([#534](https://github.com/nonamich/ts-proto/issues/534)) ([22b76ec](https://github.com/nonamich/ts-proto/commit/22b76eccfc0d26309aab9e454de31ef020595be8))
* remove Long import statement when Long was unused ([#599](https://github.com/nonamich/ts-proto/issues/599)) ([58dc10c](https://github.com/nonamich/ts-proto/commit/58dc10c61ec5a76d4b54ba9eddf34021979dd4aa))
* remove Record word conflict ([#638](https://github.com/nonamich/ts-proto/issues/638)) ([5664d09](https://github.com/nonamich/ts-proto/commit/5664d097ac33da423b0f4e79f962fd71912358a0))
* remove-enum-prefix for nested enums ([#903](https://github.com/nonamich/ts-proto/issues/903)) ([efdbf47](https://github.com/nonamich/ts-proto/commit/efdbf476b26c49c1bc56f9404f49667f2acc1f8b))
* repeated uint64 fields do not encode properly with bigint option ([#751](https://github.com/nonamich/ts-proto/issues/751)) ([dcdd7e2](https://github.com/nonamich/ts-proto/commit/dcdd7e23479721d127138eeda8b143c100a0730a))
* resolve import collisions for enums ([#339](https://github.com/nonamich/ts-proto/issues/339)) ([8118748](https://github.com/nonamich/ts-proto/commit/81187488edbbe7b1c8e7028e0bc8f3a8005a97c8))
* resolve import collisions for enums ([#341](https://github.com/nonamich/ts-proto/issues/341)) ([50fe34e](https://github.com/nonamich/ts-proto/commit/50fe34ecc66877bead1f0ae55afe28b88e5eda10))
* resolve import collisions for interfaces ([#300](https://github.com/nonamich/ts-proto/issues/300)) ([773d866](https://github.com/nonamich/ts-proto/commit/773d86686c15e9e831ad1c22405dee8d7251072e)), closes [#298](https://github.com/nonamich/ts-proto/issues/298)
* resolve import collisions for services ([#651](https://github.com/nonamich/ts-proto/issues/651)) ([ee0296f](https://github.com/nonamich/ts-proto/commit/ee0296ffe087665b54bac714e964e7243010fb22))
* respect generateClientImpl=false in grpc-js ([#471](https://github.com/nonamich/ts-proto/issues/471)) ([#472](https://github.com/nonamich/ts-proto/issues/472)) ([2f389f2](https://github.com/nonamich/ts-proto/commit/2f389f243ef11d8d58c32ce37c371aba2cdf294e))
* Respect stringEnums option in wrap function ([#420](https://github.com/nonamich/ts-proto/issues/420)) ([7adf90c](https://github.com/nonamich/ts-proto/commit/7adf90c23c46950bcf457b317764393ff4af2bf2))
* return grpc-web response without toObject method ([#728](https://github.com/nonamich/ts-proto/issues/728)) ([7431aa8](https://github.com/nonamich/ts-proto/commit/7431aa8e5718ad8a8fe48651798f203995bf705b)), closes [stephenh/ts-proto#636](https://github.com/stephenh/ts-proto/issues/636)
* return types and optional chaining in field masks when `useOptionals=all` ([#957](https://github.com/nonamich/ts-proto/issues/957)) ([a3d7bd4](https://github.com/nonamich/ts-proto/commit/a3d7bd4eaf0b25cd8d7991cc85893ce3d8ab7937))
* Revert "feat: support grpc-web client straming ([#617](https://github.com/nonamich/ts-proto/issues/617))" ([#632](https://github.com/nonamich/ts-proto/issues/632)) ([2f4ecc7](https://github.com/nonamich/ts-proto/commit/2f4ecc7434df6b8f2ff08b929f9032170b04e858))
* revert useDate=false behaviour; add useJsonTimestamp option ([#969](https://github.com/nonamich/ts-proto/issues/969)) ([15ae516](https://github.com/nonamich/ts-proto/commit/15ae516ae09b27d5adf41b5e85fe509792c5854e))
* **Schema generation:** ensure Buffer api is only used when in nodejs environment ([#1134](https://github.com/nonamich/ts-proto/issues/1134)) ([49035a4](https://github.com/nonamich/ts-proto/commit/49035a47e1d859563c631267ea7e1724cbf2c4a8))
* simplify handling useJsonWireFormat=true and fix onlyTypes=true ([#583](https://github.com/nonamich/ts-proto/issues/583)) ([6e7f938](https://github.com/nonamich/ts-proto/commit/6e7f9387d144f506ded982604f32981ac5e327de))
* Simplify safe key handling. ([#950](https://github.com/nonamich/ts-proto/issues/950)) ([5e0e6ca](https://github.com/nonamich/ts-proto/commit/5e0e6ca1d76f5c9aaef5f40a9cc685538251a5f9))
* standalone dockerized protoc alias ([#438](https://github.com/nonamich/ts-proto/issues/438)) ([466f7d9](https://github.com/nonamich/ts-proto/commit/466f7d91551c6297fc1b9677f7a5839f8cdba0c6))
* Struct wrap/unwrap snake case [#579](https://github.com/nonamich/ts-proto/issues/579) ([#588](https://github.com/nonamich/ts-proto/issues/588)) ([33f89bf](https://github.com/nonamich/ts-proto/commit/33f89bfcf0d5d9e64a6fd360eaefc140055e9291))
* support json_name containing hyphen on all field types ([#521](https://github.com/nonamich/ts-proto/issues/521)) ([8d9e78e](https://github.com/nonamich/ts-proto/commit/8d9e78eb39c460f6727458f6a2dd149deb983668))
* support mutliple options in snakeToCamel flag  ([#429](https://github.com/nonamich/ts-proto/issues/429)) ([cff6674](https://github.com/nonamich/ts-proto/commit/cff667406cba21676546fd91b04cf2cbc571ed7d)), closes [#423](https://github.com/nonamich/ts-proto/issues/423)
* Support repeated string enums. ([#284](https://github.com/nonamich/ts-proto/issues/284)) ([be9ecf7](https://github.com/nonamich/ts-proto/commit/be9ecf785952ab7515155cb495e8e0da76b93a38))
* Support using messages called String/Boolean/Number/Array ([#934](https://github.com/nonamich/ts-proto/issues/934)) ([f75159b](https://github.com/nonamich/ts-proto/commit/f75159bde85c8d85a2be938c6e3db78c77318890)), closes [#927](https://github.com/nonamich/ts-proto/issues/927)
* Temporarily put anys back to release. ([c6f189e](https://github.com/nonamich/ts-proto/commit/c6f189e62605553707534a86bf1964ad178dbd73))
* toJSON Function with `removeEnumPrefix=true` and `unrecognizedEnumValue=0` Options ([#1089](https://github.com/nonamich/ts-proto/issues/1089)) ([2401490](https://github.com/nonamich/ts-proto/commit/24014908f814e2720b9c2b9bd2ae1773be880a16)), closes [#1086](https://github.com/nonamich/ts-proto/issues/1086) [#1086](https://github.com/nonamich/ts-proto/issues/1086)
* toJSON methods don't respect useDate=false ([#935](https://github.com/nonamich/ts-proto/issues/935)) ([#937](https://github.com/nonamich/ts-proto/issues/937)) ([acdfb0a](https://github.com/nonamich/ts-proto/commit/acdfb0a100c9de1d51cb1710cc3fb40566d16706))
* Try combined workflow. ([c293c1f](https://github.com/nonamich/ts-proto/commit/c293c1f379cb69635c968d5b8094135931bcea54))
* Try fixing the Buf publish step. ([47ef176](https://github.com/nonamich/ts-proto/commit/47ef176056108bba8fb553f0d7b53d11e139bfbc))
* Type Error when map contains string enums [#382](https://github.com/nonamich/ts-proto/issues/382) ([#529](https://github.com/nonamich/ts-proto/issues/529)) ([c2107b9](https://github.com/nonamich/ts-proto/commit/c2107b96b494a500a4773ac04900a1acd13c507a))
* typescript errors for struct with optional=all ([#1008](https://github.com/nonamich/ts-proto/issues/1008)) ([e838e38](https://github.com/nonamich/ts-proto/commit/e838e3801e0ef5e8b5a14ead7d7dfc0ad3532cf1)), closes [#578](https://github.com/nonamich/ts-proto/issues/578)
* Unbreak a use case for [#1110](https://github.com/nonamich/ts-proto/issues/1110) / fix for [#1121](https://github.com/nonamich/ts-proto/issues/1121) ([#1123](https://github.com/nonamich/ts-proto/issues/1123)) ([476e99b](https://github.com/nonamich/ts-proto/commit/476e99bcbc651cec1946d0dbad09dc9aea3224ff))
* Unwrap google.protobuf.BytesValue to Buffer when env=node ([#439](https://github.com/nonamich/ts-proto/issues/439)) ([73aa836](https://github.com/nonamich/ts-proto/commit/73aa8368300818068f3cddc5f046d990c66ab4f2))
* update basic grpc implementation ([#1153](https://github.com/nonamich/ts-proto/issues/1153)) ([6ec7909](https://github.com/nonamich/ts-proto/commit/6ec7909f65c87c01c51468f1df898b33dad9fd8e))
* update codegen for `nice-grpc` ([#561](https://github.com/nonamich/ts-proto/issues/561)) ([d503f67](https://github.com/nonamich/ts-proto/commit/d503f677922402e880b5d8502b3d8bc099b7f39d))
* Update type imports syntax on gRPC generation ([#921](https://github.com/nonamich/ts-proto/issues/921)) ([b10ab31](https://github.com/nonamich/ts-proto/commit/b10ab31a479420413998840eab866ab51f72285d))
* Use a Map when map keys are boolean. ([#933](https://github.com/nonamich/ts-proto/issues/933)) ([c1253a3](https://github.com/nonamich/ts-proto/commit/c1253a3761405d7a2ffe4d15f4c3ffb364697a02)), closes [#926](https://github.com/nonamich/ts-proto/issues/926)
* Use a module star import for protobuf types. ([#540](https://github.com/nonamich/ts-proto/issues/540)) ([f5b7700](https://github.com/nonamich/ts-proto/commit/f5b770083dffe72338beb4a09432a2a917760eae))
* Use as any on globalThis.Buffer check for bytesFromBase64 ([#1005](https://github.com/nonamich/ts-proto/issues/1005)) ([bae741c](https://github.com/nonamich/ts-proto/commit/bae741cba9c22d08118e25619ba3e427e1c7bf9d)), closes [#1004](https://github.com/nonamich/ts-proto/issues/1004) [#967](https://github.com/nonamich/ts-proto/issues/967)
* Use as any on globalThis.Buffer check. ([#1004](https://github.com/nonamich/ts-proto/issues/1004)) ([11d06b4](https://github.com/nonamich/ts-proto/commit/11d06b4455a1f27793bfe172fffaf05b7a3400db)), closes [#967](https://github.com/nonamich/ts-proto/issues/967)
* use correct imports for optional fields ([#904](https://github.com/nonamich/ts-proto/issues/904)) ([fa13ec7](https://github.com/nonamich/ts-proto/commit/fa13ec752c6564af045081548f5fc5cabb687151))
* Use env prefix for Buf plugin. ([ea42caa](https://github.com/nonamich/ts-proto/commit/ea42caacbd919f9a8b6a9e3138d8a48e80ac86d9))
* Use globalThis for Array/String/Boolean ([#930](https://github.com/nonamich/ts-proto/issues/930)) ([9a252c3](https://github.com/nonamich/ts-proto/commit/9a252c3d4cf988496f6de17cc378dbb09a1baf92))
* Use jsonName even with snakeToCamel=false. ([#653](https://github.com/nonamich/ts-proto/issues/653)) ([1144886](https://github.com/nonamich/ts-proto/commit/1144886ef43eaf97b780c7aafb2c123fd49b3fe5)), closes [#635](https://github.com/nonamich/ts-proto/issues/635)
* use Long.fromValue instead of Long.fromString ([#562](https://github.com/nonamich/ts-proto/issues/562)) ([c99891e](https://github.com/nonamich/ts-proto/commit/c99891e0fec6d9b7225025eb0c5bd7393e80af36))
* use Long.fromValue instead of Long.fromString for improved robustness regarding already parsed objects ([#405](https://github.com/nonamich/ts-proto/issues/405)) ([7bdc3ee](https://github.com/nonamich/ts-proto/commit/7bdc3eee05ed1318e18e27aa7d5bb2680060f8b6))
* use optional chaining when both `forceLong=long` and `useOptionals=all` options are set in the generated fromTimestamp function ([#949](https://github.com/nonamich/ts-proto/issues/949)) ([b00db6f](https://github.com/nonamich/ts-proto/commit/b00db6fa42d511b9bef602a231a1f093664cd40c))
* Use outputs for Buf plugin workflow. ([7017d4c](https://github.com/nonamich/ts-proto/commit/7017d4c1f5eb2a8619dd03cc4f7a27c1dcf6c918))
* Use the npm environment. ([0103443](https://github.com/nonamich/ts-proto/commit/01034430c25461c0e5a46e2b9fd757ef4e0c91b1))
* Use the right Metadata for grpc-web. Fixes [#270](https://github.com/nonamich/ts-proto/issues/270). ([#271](https://github.com/nonamich/ts-proto/issues/271)) ([640e645](https://github.com/nonamich/ts-proto/commit/640e645dd93cd0e04abac17de9899aa6a172ac37))
* Use Uint8Array.forEach in base64FromBytes ([#544](https://github.com/nonamich/ts-proto/issues/544)) ([c7641ce](https://github.com/nonamich/ts-proto/commit/c7641ceb6a1c9da234245b9d808b2ded899dbbbc))
* Use underscore separator in snakeToCamel. ([#648](https://github.com/nonamich/ts-proto/issues/648)) ([b374910](https://github.com/nonamich/ts-proto/commit/b374910a8fb1d0efe6c5c5322f8788cc3cc1ca6c))
* use-readonly-types for oneof unions ([#706](https://github.com/nonamich/ts-proto/issues/706)) ([bc854ba](https://github.com/nonamich/ts-proto/commit/bc854bac083b8818d5fad77bc2e7995cfb01798e))
* various fixes ([#812](https://github.com/nonamich/ts-proto/issues/812)) ([ca18495](https://github.com/nonamich/ts-proto/commit/ca184958957b2c546e9a84173bc1c73425e33bc5))

### Features

*  Add support for 'json_name' annotation ([#408](https://github.com/nonamich/ts-proto/issues/408)) ([b519717](https://github.com/nonamich/ts-proto/commit/b5197174bcaacb8f163cd197d52ab9c645d21d4c))
* `enumsAsLiterals` option ([#450](https://github.com/nonamich/ts-proto/issues/450)) ([fcaade2](https://github.com/nonamich/ts-proto/commit/fcaade2855ae28ea3553a365556ccb92a9644d70))
* `no-file-descriptor` setting for outputSchema option ([#1047](https://github.com/nonamich/ts-proto/issues/1047)) ([c54f06c](https://github.com/nonamich/ts-proto/commit/c54f06c4a7dd766abf3f91932b1e4cdf38b7f346))
* `removeEnumPrefix` option ([#779](https://github.com/nonamich/ts-proto/issues/779)) ([53733e6](https://github.com/nonamich/ts-proto/commit/53733e61232f19ffb4f30abecd55a63899e2310c))
* add [@deprecated](https://github.com/deprecated) to JSDoc for deprecated fields ([eb25e2c](https://github.com/nonamich/ts-proto/commit/eb25e2c1efc96ffe2c705983fa0a2e6b67013daa))
* add an option to disable Exact types ([#456](https://github.com/nonamich/ts-proto/issues/456)) ([9c53d7e](https://github.com/nonamich/ts-proto/commit/9c53d7efb0252c7ea0af85a5d161ff94bcd69760))
* add before and after request methods to base service ([#961](https://github.com/nonamich/ts-proto/issues/961)) ([19ba6a5](https://github.com/nonamich/ts-proto/commit/19ba6a50c6fd4f574e20315e1ec721c5e04dab25))
* add bigint input validation ([#938](https://github.com/nonamich/ts-proto/issues/938)) ([0f9b6b1](https://github.com/nonamich/ts-proto/commit/0f9b6b1c5982427f77b111466a11c18e57b070bd))
* add create utility function to message defintions ([#760](https://github.com/nonamich/ts-proto/issues/760)) ([44fc7b2](https://github.com/nonamich/ts-proto/commit/44fc7b23ae72ec9c4fca86bee9a9774be097c058))
* add dynamic upStreamCodes option ([#618](https://github.com/nonamich/ts-proto/issues/618)) ([3091023](https://github.com/nonamich/ts-proto/commit/309102313273e09aef3a8480f4b46360ad82adaa))
* add error handler to rpc interface ([#965](https://github.com/nonamich/ts-proto/issues/965)) ([47cd16e](https://github.com/nonamich/ts-proto/commit/47cd16e048e19ebc0b8673bccffdade678cc0363))
* add generated code comments ([#1037](https://github.com/nonamich/ts-proto/issues/1037)) ([cdd4a76](https://github.com/nonamich/ts-proto/commit/cdd4a76238e292cb00d6a09d84e6b393ddde8204))
* Add generic metadata parameter to the generic service definition interface. ([#530](https://github.com/nonamich/ts-proto/issues/530)) ([0f5525a](https://github.com/nonamich/ts-proto/commit/0f5525ade80e7b69889dfd091a458e21bb14a265))
* Add globalThisPolyfill, defaults false. ([#931](https://github.com/nonamich/ts-proto/issues/931)) ([085fa21](https://github.com/nonamich/ts-proto/commit/085fa21603a74544af192f404289c2e62ecfd8f6))
* add importSuffix option and remove default .js suffix ([#612](https://github.com/nonamich/ts-proto/issues/612)) ([63a8895](https://github.com/nonamich/ts-proto/commit/63a8895f5a3a38fa3d5c0868f44e950e137fb697))
* Add interface for static message methods ([#1104](https://github.com/nonamich/ts-proto/issues/1104)) ([faa33b6](https://github.com/nonamich/ts-proto/commit/faa33b6f5170cabe4010c95d5f0a68b9f04f686b))
* Add js type support ([#1030](https://github.com/nonamich/ts-proto/issues/1030)) ([0dd951b](https://github.com/nonamich/ts-proto/commit/0dd951bf4d1a4c48f3d261c85cfa03586d20c13c)), closes [#958](https://github.com/nonamich/ts-proto/issues/958)
* add meta-data to stream error ([#620](https://github.com/nonamich/ts-proto/issues/620)) ([b68f301](https://github.com/nonamich/ts-proto/commit/b68f301b5fb4222a3fce676a7e5036cf00e77e11))
* Add nestJsRequiredSubMessage option ([1e69e46](https://github.com/nonamich/ts-proto/commit/1e69e4671d0261fe24ad1696b42ff5f64cfc2c18))
* add option `noDefaultsForOptionals` ([#1051](https://github.com/nonamich/ts-proto/issues/1051)) ([41d1020](https://github.com/nonamich/ts-proto/commit/41d10205bf68468c37cf69e58dc4c4fdbfffcf5b))
* add option to remove UNRECOGNIZED enum value ([#149](https://github.com/nonamich/ts-proto/issues/149)) ([19e8cf7](https://github.com/nonamich/ts-proto/commit/19e8cf77ead36962e01ff6419e07b7ccc4068fe8))
* add option to use async iterables ([#605](https://github.com/nonamich/ts-proto/issues/605)) ([ca8ea8d](https://github.com/nonamich/ts-proto/commit/ca8ea8d761c02d3ca4da6eaa156acff35d88c510)), closes [#600](https://github.com/nonamich/ts-proto/issues/600)
* Add options to limit generation of encode and decode methods to only specific message types ([#1085](https://github.com/nonamich/ts-proto/issues/1085)) ([c7372fa](https://github.com/nonamich/ts-proto/commit/c7372fab20cdac0199b79fd861e6b08113aba145)), closes [#1084](https://github.com/nonamich/ts-proto/issues/1084)
* add options to schema output ([#437](https://github.com/nonamich/ts-proto/issues/437)) ([e8e4e39](https://github.com/nonamich/ts-proto/commit/e8e4e3937292e07280f5154b584e60124118f093))
* Add static-only variant to to outputTypeAnnotations option ([#858](https://github.com/nonamich/ts-proto/issues/858)) ([d7c4af7](https://github.com/nonamich/ts-proto/commit/d7c4af7e068200b30cf773703ef906595aec6042))
* Add support for @grpc/grpc-js ([#252](https://github.com/nonamich/ts-proto/issues/252)) ([99a3d92](https://github.com/nonamich/ts-proto/commit/99a3d9218093c9aa1726f0c0b403cb0e95aac82e))
* add support for comments on union fields in generateOneofProperty ([#1136](https://github.com/nonamich/ts-proto/issues/1136)) ([c933c9c](https://github.com/nonamich/ts-proto/commit/c933c9c46dbaa278b33b16270bab51063ccb513c)), closes [#1122](https://github.com/nonamich/ts-proto/issues/1122)
* add support for generating `nice-grpc` server and client stubs ([#555](https://github.com/nonamich/ts-proto/issues/555)) ([8c19361](https://github.com/nonamich/ts-proto/commit/8c19361ede9a7a039acf3a1375913d012b0fcb7d)), closes [#545](https://github.com/nonamich/ts-proto/issues/545)
* add support for Struct in NestJS ([#762](https://github.com/nonamich/ts-proto/issues/762)) ([e8c6d8b](https://github.com/nonamich/ts-proto/commit/e8c6d8ba7bee902dbbda0c36dd9f6accfd222542))
* add support for unknown fields ([#473](https://github.com/nonamich/ts-proto/issues/473)) ([3bb9472](https://github.com/nonamich/ts-proto/commit/3bb9472943cf2e698b013487c7370a76576b68b6))
* Add support for useDate=string ([#221](https://github.com/nonamich/ts-proto/issues/221)) ([d967a9a](https://github.com/nonamich/ts-proto/commit/d967a9afd6cf63fc7b156d506b8683b2f8fd6569))
* Add type annotations flag ([#786](https://github.com/nonamich/ts-proto/issues/786)) ([b565ff5](https://github.com/nonamich/ts-proto/commit/b565ff57c0a64a3869ba7475c2b53f46504169d0))
* add unrecognizedEnumName and unrecognizedEnumValue options ([#946](https://github.com/nonamich/ts-proto/issues/946)) ([cd61e90](https://github.com/nonamich/ts-proto/commit/cd61e90e59844795fb5d7d86ec99bd37d2fdf21b))
* Add use-numeric-enum-json option. ([#625](https://github.com/nonamich/ts-proto/issues/625)) ([cd53d8c](https://github.com/nonamich/ts-proto/commit/cd53d8cacd6b4b8fa6517242020b216dd18eebdf))
* add useDate=string-nano option ([#981](https://github.com/nonamich/ts-proto/issues/981)) ([dc84098](https://github.com/nonamich/ts-proto/commit/dc840985d2afdd85e0b311c55aa831bac5da8ce4))
* Add useOptionals=all to enable non-field members to be optional. ([#402](https://github.com/nonamich/ts-proto/issues/402)) ([e7b70cb](https://github.com/nonamich/ts-proto/commit/e7b70cbd7b9bd43bf9e6e54e25bc48c527718317))
* add usePrototypeForDefaults option ([#484](https://github.com/nonamich/ts-proto/issues/484)) ([8e8c810](https://github.com/nonamich/ts-proto/commit/8e8c81016968e7d772dfac5ed54800898f039cbe))
* added bigint force long option ([#742](https://github.com/nonamich/ts-proto/issues/742)) ([3964e57](https://github.com/nonamich/ts-proto/commit/3964e575a6bdf90bbde937bcc71ac1f0255831b3))
* added nestJsTimestampTypeWrapper ([#567](https://github.com/nonamich/ts-proto/issues/567)) ([59d451e](https://github.com/nonamich/ts-proto/commit/59d451e2857856ff54a3afe03ae115a1824df66f))
* added option 'useJsonWireFormat' ([#576](https://github.com/nonamich/ts-proto/issues/576)) ([a71b145](https://github.com/nonamich/ts-proto/commit/a71b145c81136b8d8e3681b6753146d3ceeff179)), closes [#571](https://github.com/nonamich/ts-proto/issues/571)
* added the "typePrefix" and "typeSuffix" options. ([#1069](https://github.com/nonamich/ts-proto/issues/1069)) ([ab515cd](https://github.com/nonamich/ts-proto/commit/ab515cda322baeb94c7588117e4bb5bee6281874)), closes [#1033](https://github.com/nonamich/ts-proto/issues/1033)
* added useNullAsOptional option ([#1017](https://github.com/nonamich/ts-proto/issues/1017)) ([573f63e](https://github.com/nonamich/ts-proto/commit/573f63e761beef3981539cfbe29f786374186923)), closes [#869](https://github.com/nonamich/ts-proto/issues/869)
* adds support for emitting default scalar values in json ([#919](https://github.com/nonamich/ts-proto/issues/919)) ([01f529f](https://github.com/nonamich/ts-proto/commit/01f529f2b0eed486356ff6add9a43aabde3d1d0d))
* allow `$type` to be optional ([#1013](https://github.com/nonamich/ts-proto/issues/1013)) ([f285557](https://github.com/nonamich/ts-proto/commit/f285557a4f77d4b75327de2c13cf0917b0361f14))
* Allow comments to be omitted ([#989](https://github.com/nonamich/ts-proto/issues/989)) ([cb7eef7](https://github.com/nonamich/ts-proto/commit/cb7eef73f425251f6d09c90710fb8e5c93f56bdf))
* Allow optional suffix for generated files ([#431](https://github.com/nonamich/ts-proto/issues/431)) ([d826966](https://github.com/nonamich/ts-proto/commit/d826966f22830920444963b3894ffc0be9b7c319))
* Allow simultaneous services and generic service definitions ([#512](https://github.com/nonamich/ts-proto/issues/512)) ([680831e](https://github.com/nonamich/ts-proto/commit/680831e76f1a4ceb4337442a157d7e702cb14bfc))
* Avoid adding empty trailing comments to oneof unions ([#1140](https://github.com/nonamich/ts-proto/issues/1140)) ([5359e8d](https://github.com/nonamich/ts-proto/commit/5359e8d4b08ad114080f04ec8327bb2379dddd86)), closes [#1136](https://github.com/nonamich/ts-proto/issues/1136)
* bigIntLiteral option for using BigInt literals ([#1063](https://github.com/nonamich/ts-proto/issues/1063)) ([b89fbcb](https://github.com/nonamich/ts-proto/commit/b89fbcb1f99ccfcd1f06551286c2459e44a3bac2)), closes [#928](https://github.com/nonamich/ts-proto/issues/928) [#932](https://github.com/nonamich/ts-proto/issues/932)
* Bind service methods to class ([#290](https://github.com/nonamich/ts-proto/issues/290)) ([84060e2](https://github.com/nonamich/ts-proto/commit/84060e204d0e42688b8da85d434fe3d24788813b))
* Bump ts poet for dprint perf increase ([#668](https://github.com/nonamich/ts-proto/issues/668)) ([961d388](https://github.com/nonamich/ts-proto/commit/961d388fa7dc7cb25fbe700526cbd481f3a48ae1))
* Bump ts poet for perf increase ([#714](https://github.com/nonamich/ts-proto/issues/714)) ([0068dc8](https://github.com/nonamich/ts-proto/commit/0068dc8c8c34263ac4a7bc5866408453fc2c8b11))
* Bump ts-poet for dprint, also use tsx ([#660](https://github.com/nonamich/ts-proto/issues/660)) ([348a465](https://github.com/nonamich/ts-proto/commit/348a4651b42d5ff64fd07e36ef9ca7d7e76f4277))
* Bump ts-proto-descriptors to latest ts-proto. ([#1043](https://github.com/nonamich/ts-proto/issues/1043)) ([0b06554](https://github.com/nonamich/ts-proto/commit/0b065540d8fb4a3c1254a876d2be0dd48ac3ba66)), closes [#1042](https://github.com/nonamich/ts-proto/issues/1042)
* Bump ts-proto-descriptors. ([#489](https://github.com/nonamich/ts-proto/issues/489)) ([d454448](https://github.com/nonamich/ts-proto/commit/d454448b1889b1576c1ebcc6964a55a03af7d921)), closes [#493](https://github.com/nonamich/ts-proto/issues/493)
* change channel options to client options in generate grpc/js ([#704](https://github.com/nonamich/ts-proto/issues/704)) ([c4ac8ac](https://github.com/nonamich/ts-proto/commit/c4ac8ac12aaee0c897985f944ffe3f122e28eba9))
* **client:** allow overriding the service identifier ([#683](https://github.com/nonamich/ts-proto/issues/683)) ([10c7c99](https://github.com/nonamich/ts-proto/commit/10c7c99b1f43705d640ab1e602a7c1799e31ac08))
* conditionally add "Service" to nice-grpc's generated service interface name ([#710](https://github.com/nonamich/ts-proto/issues/710)) ([7c39cc0](https://github.com/nonamich/ts-proto/commit/7c39cc0729403dcb63ef353357fae3548b5a6667))
* enable prototype for defaults for ts-proto-descriptors ([#487](https://github.com/nonamich/ts-proto/issues/487)) ([2b5640f](https://github.com/nonamich/ts-proto/commit/2b5640f582e6adb4e81797a9cec217896061aadb))
* enable unknown fields for descriptor protos ([#479](https://github.com/nonamich/ts-proto/issues/479)) ([824c996](https://github.com/nonamich/ts-proto/commit/824c9962cd98dc0f9093e8909e3028d900094c54))
* Ensure strict(er) TS compliance for the generated code ([#868](https://github.com/nonamich/ts-proto/issues/868)) ([1405d4b](https://github.com/nonamich/ts-proto/commit/1405d4bcc866343605946ac4a0b30e7de9c75e71))
* enum decoding ([#910](https://github.com/nonamich/ts-proto/issues/910)) ([9e0a0b5](https://github.com/nonamich/ts-proto/commit/9e0a0b5c86004313f65eae88b8dc5e63deaaf251)), closes [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859) [#909](https://github.com/nonamich/ts-proto/issues/909)
* export options types ([#1027](https://github.com/nonamich/ts-proto/issues/1027)) ([9652586](https://github.com/nonamich/ts-proto/commit/965258656efaa07cc8b72feb8c6b8e202a000940))
* expose service name as a separate exported constant ([#851](https://github.com/nonamich/ts-proto/issues/851)) ([84a4ed6](https://github.com/nonamich/ts-proto/commit/84a4ed610089363e3ee7a6a29581d8e0ef695f0d))
* extensions ([#808](https://github.com/nonamich/ts-proto/issues/808)) ([f956128](https://github.com/nonamich/ts-proto/commit/f956128ad830f4538452d65dccedca3e08d6c871))
* framework-agnostic service definitions ([#316](https://github.com/nonamich/ts-proto/issues/316)) ([3d89282](https://github.com/nonamich/ts-proto/commit/3d89282176f8f16a33eea5042df0439c3f23b038))
* Generate Index Files ([#821](https://github.com/nonamich/ts-proto/issues/821)) ([85bf206](https://github.com/nonamich/ts-proto/commit/85bf206ca8c1052849aea3e39522ad4918e0d736))
* generate type namespaces for enums as literals ([#960](https://github.com/nonamich/ts-proto/issues/960)) ([e2619f6](https://github.com/nonamich/ts-proto/commit/e2619f6191e8bfb1deaf8474c26ea386c5c34e63))
* group encoding and decoding support ([#799](https://github.com/nonamich/ts-proto/issues/799)) ([5ebe3c0](https://github.com/nonamich/ts-proto/commit/5ebe3c07f5039db4f9b40e4e237d02d03c85a4e5))
* **Grpc-Web:** Add & export GrpcWebError type ([#593](https://github.com/nonamich/ts-proto/issues/593)) ([645987d](https://github.com/nonamich/ts-proto/commit/645987d023e666290e87086f5a0770c34e2fe978))
* implementation of useAbortSignal option for grpc-web ([#777](https://github.com/nonamich/ts-proto/issues/777)) ([7a3d429](https://github.com/nonamich/ts-proto/commit/7a3d4291806568a938e88f53a55683633f26ec4a))
* implemented emitImportedFiles flag ([#302](https://github.com/nonamich/ts-proto/issues/302)) ([16b4aca](https://github.com/nonamich/ts-proto/commit/16b4aca98aa9f0266734421314baaa5259e3f4e2)), closes [#294](https://github.com/nonamich/ts-proto/issues/294) [#283](https://github.com/nonamich/ts-proto/issues/283) [#283](https://github.com/nonamich/ts-proto/issues/283)
* Import CallContext and CallOptions as type ([#684](https://github.com/nonamich/ts-proto/issues/684)) ([8b388f6](https://github.com/nonamich/ts-proto/commit/8b388f6c9f57dac34ca5836a4313d8247bb0fceb)), closes [#677](https://github.com/nonamich/ts-proto/issues/677)
* import proto as type import if onlyTypes is set ([25d8e8b](https://github.com/nonamich/ts-proto/commit/25d8e8b9042142f1032feadc8a799b7a01115cc2))
* Improve map reading (fromJSON/fromPartial) ([#410](https://github.com/nonamich/ts-proto/issues/410)) ([057d438](https://github.com/nonamich/ts-proto/commit/057d438548d95c354331f7d2d767ccff952ad5c6))
* include _unknownFields as a field ([#806](https://github.com/nonamich/ts-proto/issues/806)) ([6b4ba39](https://github.com/nonamich/ts-proto/commit/6b4ba39a0651a2352db2ac70eb91d21138ccf887))
* Include dockerized protoc ([#404](https://github.com/nonamich/ts-proto/issues/404)) ([7564a78](https://github.com/nonamich/ts-proto/commit/7564a7887ccd0bb80cac19d313ee9bd8daae778d))
* include service and definition types with implementations ([#552](https://github.com/nonamich/ts-proto/issues/552)) ([6b896f4](https://github.com/nonamich/ts-proto/commit/6b896f4b7f4ba0f0d97730767421786171646aea))
* Initialize lists with map ([#387](https://github.com/nonamich/ts-proto/issues/387)) ([200e674](https://github.com/nonamich/ts-proto/commit/200e674e4baf2640d67720ad535fe042d291d4a0))
* Make sure all types support prefix/suffix ([#1148](https://github.com/nonamich/ts-proto/issues/1148)) ([ddf2122](https://github.com/nonamich/ts-proto/commit/ddf21224d76f63e28e915889aa931c170cde4734))
* Normalize `toJSON` output by omitting fields set to their default values ([#878](https://github.com/nonamich/ts-proto/issues/878)) ([50958d6](https://github.com/nonamich/ts-proto/commit/50958d639435a32a76d59fc57565e3677f5be39e))
* Official Buf Plugin ([#573](https://github.com/nonamich/ts-proto/issues/573)) ([e6272c4](https://github.com/nonamich/ts-proto/commit/e6272c487f73ff96afb4146a7998a892c4b43f14))
* omit optional fields in base instance ([#669](https://github.com/nonamich/ts-proto/issues/669)) ([47b60aa](https://github.com/nonamich/ts-proto/commit/47b60aab95533542cf762f152138f7ab4234de88))
* oneof=unions-value to use the same field name for oneof cases ([#1062](https://github.com/nonamich/ts-proto/issues/1062)) ([7493090](https://github.com/nonamich/ts-proto/commit/74930908cc8e5292577a793b7ae06c3721225ac3)), closes [#1060](https://github.com/nonamich/ts-proto/issues/1060)
* option to declare schema as const ([#1096](https://github.com/nonamich/ts-proto/issues/1096)) ([4cc1a1e](https://github.com/nonamich/ts-proto/commit/4cc1a1e4238cf628591414c02d39bd76dc75fb3a))
* option useSnakeTypeName ([#694](https://github.com/nonamich/ts-proto/issues/694)) ([ad73ff9](https://github.com/nonamich/ts-proto/commit/ad73ff9341d0d593156d10b5d96c4a47afdc802d))
* optional one of properties ([#705](https://github.com/nonamich/ts-proto/issues/705)) ([4c6cbb0](https://github.com/nonamich/ts-proto/commit/4c6cbb0ff71e053c634732e295ed812901d368ae))
* optionally output versions used to generate files ([#1040](https://github.com/nonamich/ts-proto/issues/1040)) ([53d6799](https://github.com/nonamich/ts-proto/commit/53d67995526770213ecf91c15645b9c74e7e5bd4))
* **options:** adds protoc-gen-go-like M option ([#672](https://github.com/nonamich/ts-proto/issues/672)) ([9304e5d](https://github.com/nonamich/ts-proto/commit/9304e5db7172db53530fb08fe0486f56b2a17181)), closes [#596](https://github.com/nonamich/ts-proto/issues/596)
* output-encode-only methods ([#787](https://github.com/nonamich/ts-proto/issues/787)) ([3594410](https://github.com/nonamich/ts-proto/commit/3594410cc18fecc9c6f76f8abf7bdf9fdd178acd))
* Reduce code size by using nullish coalescing operator in fromPartial ([#376](https://github.com/nonamich/ts-proto/issues/376)) ([19d2ded](https://github.com/nonamich/ts-proto/commit/19d2deda2cf7c47b1b56bfc65cf58653291dba4a))
* represent field masks as `string[]` ([#525](https://github.com/nonamich/ts-proto/issues/525)) ([903b216](https://github.com/nonamich/ts-proto/commit/903b216238db025e24ec3cfb2d20063aec1a40ed))
* Round numbers in toJSON. ([#444](https://github.com/nonamich/ts-proto/issues/444)) ([bd2df7b](https://github.com/nonamich/ts-proto/commit/bd2df7b7176e961955ed1dcacb3602384e13ee45))
* RPC: add useAbortSignal option ([#731](https://github.com/nonamich/ts-proto/issues/731)) ([69313a7](https://github.com/nonamich/ts-proto/commit/69313a7a0f19c41c61824081e12ed680fda32b74)), closes [#730](https://github.com/nonamich/ts-proto/issues/730)
* Service generation option ([#357](https://github.com/nonamich/ts-proto/issues/357)) ([7a2cf83](https://github.com/nonamich/ts-proto/commit/7a2cf831c3768e5afd76dea37f3165df4886136e))
* service options unknown methods ([#801](https://github.com/nonamich/ts-proto/issues/801)) ([994d0d0](https://github.com/nonamich/ts-proto/commit/994d0d0ac54b3e22cb27fa4c5b8a5b1d17b62521))
* Streaming support ([#373](https://github.com/nonamich/ts-proto/issues/373)) ([459b94f](https://github.com/nonamich/ts-proto/commit/459b94f5b2988d58d186461332e888c3e511603a))
* support `json_name` defined in a proto file ([#943](https://github.com/nonamich/ts-proto/issues/943)) ([de989af](https://github.com/nonamich/ts-proto/commit/de989af0d9bf9910dc3c047a18d97f289bffe2ee))
* support `useMapType` option ([#686](https://github.com/nonamich/ts-proto/issues/686)) ([f2e80ab](https://github.com/nonamich/ts-proto/commit/f2e80ab3ecc3a438ecbd88b2170b8119ebadfcd3))
* support `useReadonlyTypes` option ([#691](https://github.com/nonamich/ts-proto/issues/691)) ([4b87334](https://github.com/nonamich/ts-proto/commit/4b8733452fb59cea3b9fb4721159b97e6df59854))
* support deprecatedOnly option to make deprecated fields optional ([#1010](https://github.com/nonamich/ts-proto/issues/1010)) ([db23004](https://github.com/nonamich/ts-proto/commit/db230041f69fa6a7ff17db55595e7b8805e655ba))
* Support for Google.Protobuf.Value, ListValue and Struct ([#396](https://github.com/nonamich/ts-proto/issues/396)) ([7dd9c16](https://github.com/nonamich/ts-proto/commit/7dd9c16ffdec4d9ea296fbdc30d390fe44192c42))
* support grpc-web client straming ([#617](https://github.com/nonamich/ts-proto/issues/617)) ([d3e7f1f](https://github.com/nonamich/ts-proto/commit/d3e7f1f4aac12db87c54d6357e557a351c96a2ca))
* Support json names containing non-alphanumeric characters ([#520](https://github.com/nonamich/ts-proto/issues/520)) ([ce44668](https://github.com/nonamich/ts-proto/commit/ce44668b8fe01b14f50ac3c5c950f73db769fa76))
* support lib: es6 ([#850](https://github.com/nonamich/ts-proto/issues/850)) ([6280677](https://github.com/nonamich/ts-proto/commit/62806776beacb1e2b0ee921e4212f1e61ce5191e))
* support mapping ObjectId message as mongodb.ObjectId ([#467](https://github.com/nonamich/ts-proto/issues/467)) ([8b23897](https://github.com/nonamich/ts-proto/commit/8b2389715ecfd5d51b1b24f5a9332e4ff9f09a27))
* support proto2 optional and default value fields ([#1007](https://github.com/nonamich/ts-proto/issues/1007)) ([1fa1e61](https://github.com/nonamich/ts-proto/commit/1fa1e61b0a0ff22949a1acadb38630f6f5bf6179)), closes [#973](https://github.com/nonamich/ts-proto/issues/973)
* **ts-proto-#859:** added encode-only options to toJSON methods ([#886](https://github.com/nonamich/ts-proto/issues/886)) ([d0cf57d](https://github.com/nonamich/ts-proto/commit/d0cf57d9a1aebdec3bec67585658362b1a38d6a3)), closes [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto#859](https://github.com/ts-proto/issues/859) [ts-proto-#859](https://github.com/ts-proto-/issues/859)
* Update fromPartial and fromJson to respect initializeFieldsAsUndefined ([#811](https://github.com/nonamich/ts-proto/issues/811)) ([1615ae0](https://github.com/nonamich/ts-proto/commit/1615ae0b136bc8909e206b44f3bd6ec568a760e6))
* Update protobufjs (and peer dependencies) to ^7 ([#874](https://github.com/nonamich/ts-proto/issues/874)) ([7f979a7](https://github.com/nonamich/ts-proto/commit/7f979a70af2e42c8c429ae5f65787e0b43ccb706))
* Upgrade to long 5.0.0. ([#882](https://github.com/nonamich/ts-proto/issues/882)) ([4c1e7a6](https://github.com/nonamich/ts-proto/commit/4c1e7a6e02f974f193063a83ce7a472b14f2d2d0))
* Use exact types for fromPartial ([#412](https://github.com/nonamich/ts-proto/issues/412)) ([808f8a7](https://github.com/nonamich/ts-proto/commit/808f8a7a77d56f65dd4a4643dd66158f106ab755)), closes [#156](https://github.com/nonamich/ts-proto/issues/156)
* Use ternary operator for conditional assignments ([#394](https://github.com/nonamich/ts-proto/issues/394)) ([d84c084](https://github.com/nonamich/ts-proto/commit/d84c084fb56c958c184f8971479979b8bfb17ccc))
* watch for changed integration test files ([#464](https://github.com/nonamich/ts-proto/issues/464)) ([988cd7e](https://github.com/nonamich/ts-proto/commit/988cd7eb84bc3b8b72d6b4d59c38aa794c16c638))
* yarn watch updates (specified) tests when source files change ([#465](https://github.com/nonamich/ts-proto/issues/465)) ([275d0e7](https://github.com/nonamich/ts-proto/commit/275d0e7c61f3acb2b1fd670b1974e64dd49d6ff4))

### Performance Improvements

* Faster base64FromBytes & bytesFromBase64 on Node.JS ([#649](https://github.com/nonamich/ts-proto/issues/649)) ([82ab341](https://github.com/nonamich/ts-proto/commit/82ab341557fba1a4933c4613d5c20dbf897905fa))
* fromJSON returns object literal to allow v8 optimizations ([#463](https://github.com/nonamich/ts-proto/issues/463)) ([5fcd05b](https://github.com/nonamich/ts-proto/commit/5fcd05b79e7c02547c4b6db46fae7a7202f97629))
* generate switch statement for oneof union encode ([#767](https://github.com/nonamich/ts-proto/issues/767)) ([c3fd1e3](https://github.com/nonamich/ts-proto/commit/c3fd1e3e487d1da3e8c792354d6491cadb067ff4))
* Generating "else if" where applicable ([#1141](https://github.com/nonamich/ts-proto/issues/1141)) ([4a8018c](https://github.com/nonamich/ts-proto/commit/4a8018c915dabbc83629f021a2899ade55b6c8de))
* optimize object creation in `decode`, `fromJSON` and `fromPartial` ([#457](https://github.com/nonamich/ts-proto/issues/457)) ([70832d3](https://github.com/nonamich/ts-proto/commit/70832d33bae82ecb3c5f87845d14e992a13437e4))
* Replacing "else if" with a "switch case" statement to improve Typescript performance ([#1142](https://github.com/nonamich/ts-proto/issues/1142)) ([de1a616](https://github.com/nonamich/ts-proto/commit/de1a616d24a90ef7b281c9e8966556adfa156ebb)), closes [#1135](https://github.com/nonamich/ts-proto/issues/1135) [#1141](https://github.com/nonamich/ts-proto/issues/1141)
* use array.push to prevent reallocation on every field ([#804](https://github.com/nonamich/ts-proto/issues/804)) ([a6aea2c](https://github.com/nonamich/ts-proto/commit/a6aea2ca9e61611cf22417d23eb71a5d6e4f2164))
* use Reader.create ([#800](https://github.com/nonamich/ts-proto/issues/800)) ([869e448](https://github.com/nonamich/ts-proto/commit/869e44876c88ccfb82cb4a48731b340a0fb2c025))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants