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: add options to schema output #437

Merged
merged 10 commits into from
May 19, 2022
Merged

feat: add options to schema output #437

merged 10 commits into from
May 19, 2022

Conversation

Vilsol
Copy link
Collaborator

@Vilsol Vilsol commented Dec 8, 2021

This adds options support for outputSchema. This would fix #295

There is only one catch with this feature, and it's that it requires modification to the ts-proto-descriptors lib.

For each of the following:

  • FileOptions
  • MessageOptions
  • FieldOptions
  • OneofOptions
  • EnumOptions
  • EnumValueOptions
  • ServiceOptions
  • MethodOptions

Inside of the decode method for each, before the while loop it must first initialize a new untyped object:

message.encodedOptions = {};

And then change the default switch case to the following:

default:
    const startPos = reader.pos;
    reader.skipType(tag & 7);
    message.encodedOptions[tag>>>3] = [...(message.encodedOptions[tag>>>3] || []), reader.buf.slice(startPos, reader.pos)];
    break;

Due to these requirements, I have made this a draft PR.

I am not sure what would be the best approach to modify these files. Should we add a hardcoded check for these type names in this library itself, or should we make a git patch that gets applied every time before the ts-proto-descirptors lib gets published? Or maybe there is an even more elegant solution.

I am also considering adding exact generated typings for the ProtoMetadata options, where the type for options object would be a perfect match for the one in the actual protoMetadata object itself.

Also, I had to resort to base64 encoding any messages and then they would get decoded at runtime, which is not a clean way to do this. Maybe there is some way to decode it at compile time?

@Vilsol Vilsol marked this pull request as ready for review December 13, 2021 09:49
@stephenh
Copy link
Owner

Hey @Vilsol , this is a great PR! Thanks for tackling this! Sorry for the delay in reviewing this, I'm still figuring out the details of extensions/unknown fields/etc. in protobuf, so took me awhile to find a dedicated time to look at the PR & think about thinks.

I was thinking, for this change you need:

default:
    const startPos = reader.pos;
    reader.skipType(tag & 7);
    message.encodedOptions[tag>>>3] = [...(message.encodedOptions[tag>>>3] || []), reader.buf.slice(startPos, reader.pos)];
    break;

This basically sounds like adding unknown field support, i.e. while decode-ing if we see a key we don't know about, just "put it somewhere".

Wdyt about breaking that functionality out into its own PR? That we could we do:

  1. In general having unknown field support in ts-proto would be great
  2. As well as .encode storing keys in message._unknownFields, we could have .decode watch for the special ._unknownFields and if it exists, output/echo the still-encoded values back onto the wire (i.e. as mentioned here https://developers.google.com/protocol-buffers/docs/proto#extensions). (Granted, you don't need .decode support for this PR, but it seems potentially easy to sneak into a PR that adds .encode support for it...hrm, although I guess it'd need to re-create the tag, so maybe it's a little more nuanced)
  3. When this initial _unknownFields support is released in ts-proto, we could then use that new ts-proto to re-build the ts-proto-descriptors, and that would get the _unknownFields functionality you need into the ts-proto FileDescriptorProto/etc. types that you need

We could potentially put unknown field support behind a feature flag, in case users want to turn it off, but it'd probably be a good thing to have on by default, I think...

Other than that tactical approach, I had a few inline questions about maybe getting the options nudged into the existing metadata types where I think it might be a little more ergonomic to access, but otherwise this looks great!

Wdyt about the approach of an initial/separate PR to support unknown fields, and then doing this PR on top of that one?

@Vilsol
Copy link
Collaborator Author

Vilsol commented Dec 16, 2021

The separate PR is not a bad idea, would mean that anything decoded would unconditionally get re-encoded guaranteeing consistency on any type. I will see if I can get something like that written up, but most likely only after the holidays.

The reason why I did not decode the options in-place under the current FileDescriptorProto was because that would be unexpected to find some untyped field in a fully typed object, but having it there would definitely make it easier to access. My only concern is that FileDescriptorProto.fromPartial that is currently used would strip the field away, but I think we could just try and cast the object to it, considering that it just got serialized from itself.

@stephenh
Copy link
Owner

My only concern is that FileDescriptorProto.fromPartial

Ah shoot, that's a good point; you're right that it's not clear how fromPartial should handle extensions...

It could do a large destructure i.e.:

fromPartial(o) {
  const { firstName, lastName, ...unknownFields } = foo;
  return { firstName: ...coerce/default..., lastName: ...coerce/default..., unknownFields };

And then unknownFields would be a hash of field name --> value...

But for encode unknownFields would be a hash of field number --> value, so sometimes it's keyed by field name, and sometimes keyed by field number. Which is not great.

Maybe unknown fields should be set directly on the object, i.e. foo[12] would be an unknown/extension field that encode saw that had field number 12, and foo["someOption"] would be an unknown/extension field that fromPartial saw that had the field name someOption...

I'm a little wary to fundamentally change/restructure fromPartial to handle extra/unknown keys...

@shimonmagal
Copy link

I tried using the branch for the simplest enum - I got this error with:
--ts_proto_opt=outputJsonMethods=false,outputPartialMethods=false,outputClientImpl=true,outputSchema=true:

FAILED!Cannot convert undefined or null to objectTypeError: Cannot convert undefined or null to object
at Function.keys ()
at encodedOptionsToOptions (C:\Users\shimo\temp\visol\ts-proto\build\schema.js:181:30)
at Object.generateSchema (C:\Users\shimo\temp\visol\ts-proto\build\schema.js:78:23)
at Object.generateFile (C:\Users\shimo\temp\visol\ts-proto\build\main.js:156:33)
at C:\Users\shimo\temp\visol\ts-proto\build\plugin.js:22:37
at Array.map ()
at main (C:\Users\shimo\temp\visol\ts-proto\build\plugin.js:21:53)

I tried to fix this with just adding a x || [] bypass there, but didn't get to see the EnumValue option manifest in the generated proto. I must be missing something.


I just did clone, then yarn, then yarn build

Lastly ran

protoc --ts_proto_opt=outputJsonMethods=false,outputPartialMethods=false,outputClientImpl=true,outputSchema=true --plugin=protoc-gen-ts_proto=/path/to/protoc-gen-ts_proto --ts_proto_out=. ./A.proto

A.proto:

syntax = "proto3";

import "google/protobuf/descriptor.proto";

extend google.protobuf.EnumValueOptions {
  optional uint32 my_enum_value_option = 50005;
}

enum MyEnum {
  FOO = 0 [(my_enum_value_option) = 321];
  BAR = 1 [(my_enum_value_option) = 3212];
}

@Vilsol
Copy link
Collaborator Author

Vilsol commented Feb 17, 2022

@stephenh This should now be fully working. I have switched it over to the new _unknownFields feature and added a few safety checks.

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.

@Vilsol apologies for the really late review; I had a few pending comments that I forgot to hit publish on, and then also have just been busy. I think this is good to merge as-is but I also had a few curious questions. Thanks!

src/schema.ts Outdated
export function generateSchema(ctx: Context, fileDesc: FileDescriptorProto, sourceInfo: SourceInfo): Code[] {
const { options } = ctx;
const chunks: Code[] = [];

fileDesc.extension.forEach((extension) => {
extensionCache[extension.number] = extension;
Copy link
Owner

Choose a reason for hiding this comment

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

I think the key to this cache probably needs to be extension.extendee+extension.number? I.e. the number could be used twice across different extensions.

chunks.push(code`
type ProtoMetaMessageOptions = {
Copy link
Owner

Choose a reason for hiding this comment

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

Instead of having this separate ProtoMetaMessageOptions, could we output options within the existing fileDescriptor structure?

I.e. a file-level option would be at:

protoMetadata.fileDescriptor.options["optionKey"]

I guess right now we're letting ts-poet .toJSON-ify the descriptor into the generated source code, and we'd probably need to nudge the options around a bit, i.e. like how you're base64 encoding messages...

Copy link
Collaborator Author

@Vilsol Vilsol Mar 15, 2022

Choose a reason for hiding this comment

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

The reason why they get output outside of the existing object is because the existing objects get processed through fromPartial which would strip all of those fields from the runtime.

They would also lose all type-safety if we did this.

src/schema.ts Outdated
@@ -57,13 +96,181 @@ export function generateSchema(ctx: Context, fileDesc: FileDescriptorProto, sour
descriptor.sourceCodeInfo?.location.filter((loc) => loc['leadingComments'] || loc['trailingComments']) || [],
};

let fileOptions: Code | undefined;
if (descriptor.options) {
fileOptions = encodedOptionsToOptions(ctx, (descriptor.options as any)['encodedOptions']);
Copy link
Owner

Choose a reason for hiding this comment

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

Like here, I wonder if we could do something like:

if (descriptor.options) {
  for (const key in Object.keys(descriptor.options.encodedOptions)) {
    const ext = ...use extension cache to find `extensionee=FileDescriptor` && `number=key`
    descriptor.options[ext.jsonName] = ...option value...
  }
}

And then repeat for the message option / service options, etc...


describe('options', () => {
it('generates types correctly', () => {
expect(protoMetadata).toMatchInlineSnapshot(`
Copy link
Owner

Choose a reason for hiding this comment

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

This inline snapshot is huge; can we move it to a regular non-inline snapshot?

Also, could you add one or two tests that specifically load options? I get if the snapshot is correct, it will work, but I'm mostly want test coverage of the API you're specifically using to look up options, so that they act as documentation / reminder of what not to break, if we happen to otherwise refactor some aspects of the metadata.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I have extracted the snapshot to a separate file.

I don't fully understand what you mean by the extra tests you are requesting?

src/schema.ts Outdated
return undefined;
}
const resultOptions: Code[] = [];
for (const key of Object.keys(encodedOptions)) {
Copy link
Owner

Choose a reason for hiding this comment

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

Really minor could do:

for (const [key, value] of Object.entries(a)) {

src/schema.ts Outdated
}
}

function encodedOptionsToOptions(ctx: Context, encodedOptions: { [key: number]: Uint8Array[] }): Code | undefined {
Copy link
Owner

Choose a reason for hiding this comment

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

Just for my own future future/maintenance, can we add like an in-source comment along the lines of:

/** Takes the protoc's input of options as proto-encoded messages, and turns them into embedded-able-in-source-code representations. */

@Vilsol
Copy link
Collaborator Author

Vilsol commented Mar 15, 2022

@stephenh I have pushed some the requested changes and commented on the other review comments.

@Vilsol Vilsol requested a review from stephenh March 31, 2022 11:07
@Vilsol
Copy link
Collaborator Author

Vilsol commented May 16, 2022

@stephenh just wanted to notify you in case you missed it. The PR now complies with all the requested changes.

@stephenh
Copy link
Owner

Hey @Vilsol ! Thanks for the ping on this! I've looked at this PR a few times, but end up getting distracted because I'm just not that much of an expert on the options/schema output side of things.

Everything looks great to my naive eyes, I just haven't had the chance to really think deeply about this; but that's fine, I'm just going to trust you on it. Thanks! :-)

@stephenh stephenh merged commit e8e4e39 into stephenh:main May 19, 2022
stephenh pushed a commit that referenced this pull request May 27, 2022
# [1.113.0](v1.112.2...v1.113.0) (2022-05-27)

### Features

* add options to schema output ([#437](#437)) ([e8e4e39](e8e4e39))
@stephenh
Copy link
Owner

🎉 This PR is included in version 1.113.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

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.

Are custom options read?
3 participants