none
New Features:
- Added
force_disable_services
option to protobuf-ts/plugin for disabling service metadata generation, see #268
Thanks to @ColinLaws for the contribution!
Bug fixes:
-
Guard access of response.type to support Cloudflare Workers, see #321
Thanks to @mikeylemmon for the fix! -
find protoc in path also in windows, see #334
Thanks to @tannera for the fix! -
Update baseURL in example, see #333 Thanks to @GRB3NW for the fix!
New Features:
-
Add ability to pass grpc-js MetadataOptions to GrpcOptions in @protobuf-ts/grpc-transport #261
Thanks to @kskalski for the contribution! -
export createDefinition from @protobuf-ts/grpc-backend #307
Thanks to @eyalpost for the contribution! -
Treat null values the same as undefined when generating protobuf messages #299
Thanks to @markh123 for the contribution! -
Use Promise as return type for call.then() #308
New Features:
-
Added disable_service_types option for disabling service metadata generation, see #268
Thanks to @ColinLaws for the contribution! -
Change dependency behavior for well-known types.
If you have been using the optiongenerate_dependencies
, you can probably remove it now!
See #258 for details.
Bug fixes:
- Fix line breaks in header comments, see #289
Thanks to @RyotaSugawara for the fix! - Avoid cyclic import in binary format contract, see #271
- Use type import in grpc server, see #264
Project maintenance:
- Support go 1.18 in build #263
New Features:
- Add option
eslint_disable
, which generates a comment /* eslint-disable */ at the top of each file, see #256
Bug fixes:
- Make sure to add non-default longtype to map field info, see #260
New Features:
- Add option for preserving original proto field names in generated interfaces. #250
Thanks to @kskalksi for the contribution.
New Features:
- Relax angular version constraints in runtime-angular, see #246
Bug fixes:
- Improved compatibility of grpcweb-transport with TypeScript >= 4.1.5 and skipLibCheck=false, see #248
New Features:
- For generic servers, support custom contexts, see #201.
Thanks to @be9 for the contribution.
Bug fixes:
- server_generic option stopped working, see #202.
Thanks to @sessfeld for the contribution.
New features:
- Add the plugin option
ts_nocheck
to support most strict compiler options in userspace, see #152. - The new plugin option
add_pb_suffix
adds the suffix_pb
to all file names, see #186. - Add service/method name to RpcError, see #197
Thanks to @jcready for the contribution. - Support JavaScript output via plugin option
output_javascript
, see #200.
Bug fixes:
- Use TextDecoder API for decoding UTF-8 from binary data, see #184.
We have been using protobuf.js' algorithm to decode UTF-8, but it has had bugs in the past. For best possible compatibility, we have switched to the TextDecoder API. See MANUAL for details.
New features:
- Add keep_enum_prefix plugin option #187
- json: Small performance improvement when encoding to JSON, see #191
Note: In the past, protobuf-ts only had patch releases and major releases. Going forward, protobuf-ts will bump the minor version for releases that add features.
New features:
- json: Ignore unknown enum values #170
Thanks to @whs for the contribution.
Bug fixes:
- Update parseTrailer function to support empty trailers & trailers with colon in content #168
Thanks to @wielski for the contribution.
Bug fixes:
- Naming collisions with message named Object #161
Thanks to @joeflatt for the report.
- Use Symbol.for() to define MESSAGE_TYPE, see #151
Thanks to @be9 for the contribution.
New features:
- Do not unnecessarily copy read data in BinaryReader, see #148
Note that it is now strictly necessary to respect the offset of the underlying buffer of byte fields. - Add
force_exclude_all_options
plugin option, see #126
Thanks to @optiman for the suggestion.
Bug fixes:
- The new symbol property
MESSAGE_TYPE
broke user unit tests. The property was set to non-enumerable.
Thanks to @jcready for the feedback.
New features:
-
All messages created with
create()
now have a symbol propertyMESSAGE_TYPE
that provides access to the messages type. UsecontainsMessageType(yourMessage)
to check if a message contains its type and access it withyourMessage[MESSAGE_TYPE]
.Note that this is an experimental feature - it is here to stay, but implementation details may change without notice.
Many thanks to @odashevskii-plaid for the contribution.
Bug fixes:
-
Generated
create()
method for speed optimized code got left behind in #55
Thanks to @odashevskii-plaid for the find! -
Infinite recursion on compile step when using custom option on message used as custom option #141
Thanks to @doochik for bringing it up.
Bug fixes:
- Revert TypeScript
peerDependency
in @protobuf-ts/plugin to support yarn 2, see #144 - Change
UnknownMessage
from type to interface, see #143
New features:
- @protobuf-ts/plugin expresses TypeScript compatibility with
a
peerDependency
>=3.8.3
. Thanks to @ghaiklor-wix for the suggestion.
-
gRPC server support for @grpc/grpc-js (see #52)
Thanks to @badsyntax for inspiration -
gRPC client support for @grpc/grpc-js (see #57)
-
Experimental generic server support (see #56)
-
gRPC transport (see #45)
-
Add oneof accessor / mutator functions, see #129
-
More convenience method to read custom options, see #36
-
runtime: Message options are now available in reflection information, see #35.
-
runtime: BinaryReader.skip() supports WireType.StartGroup now.
-
plugin: Groups (deprecated proto2 feature) are now completely ignored, but should still be treated properly as unknown fields.
-
The Twirp and gRPC-web transports let you pass options to fetch() now.
See #95, #105.
Thanks to @jamesbirtles for the PR! -
Compatibility with Angular 11
No code changes, just relaxed peer dependency constraints. -
Compatibility with svelte (type imports), see #94
Thanks to @frederikhors for the detailed reports. -
protoc: prefer protoc from $PATH (see #60)
-
File option to exclude custom options (see #7)
-
Add long_type_number and long_type_bigint plugin options (see #13, thanks @vicb)
-
@protobuf-ts/grpc-transport & @grpc/grpc-js dependency, see #136.
Thanks to @hugebdu for the report. -
Fix protoc error message "Plugin output is unparseable" for certain plugin output sizes, see #134.
Thanks to @fenos for the investigation and fix! -
Fix memory leak in @protobuf-ts/grpc-transport, see #107
Thanks to @dddenis for the PR! -
twirp-transport is now a bit more compatible with polyfills for the fetch API that are incomplete.
-
Fix protoc arch detection on Apple Silicon #108
Thanks to @lqs for the PR! -
Fixed grpcweb-transport to handle responses with HTTP error status and missing content-type header, see #102.
Thanks to @frederikhors for the bug report. -
fix wrong grpc status code INTERNAL for aborted server streaming method (see #86)
-
Added workaround for unhandled promise rejection (see #86)
-
Improve support for the
node-fetch
polyfill (see #81) -
The
generate_dependencies
parameter doesn't work (see #59)
Thanks to @jcready for the report and fix. -
grpc-transport does not pass along provided deadline option (see #77)
-
grpcweb-transport: Recognize "application/grpc-web-text+proto".
-
Fixed conversion of gRPC metadata to our metadata (grpc-transport, grpc-backend)
-
Support grpc-web-text format with envoy (see #54)
Thanks to @DiogoMaMartins for the bug report. -
Fix windows import path #41
-
Proto fields with
[jstype = JS_NUMBER]
were documented as* @generated from protobuf field: [...] [jstype = JS_STRING];
. (See #27) -
Proto fields with
[jstype = JS_NORMAL]
were generated asstring
when thelong_type_string
plugin parameter was used. (See #27)
-
RpcOptions
takes atimeout
property now.deadline
property has been removed. See #138 for details. -
The "response" property of ServerStreamingCall and BidiStreamingCall has been renamed "responses".
-
The "request" property of ClientStreamingCall and BidiStreamingCall has been renamed "requests".
-
plugin option "disable_service_client" was renamed to "force_client_none"
-
clients are generated into separate files (see #55)
-
The
cancel
method of RPC was removed, see #9
As a replacement, you can pass anAbortSignal
in the call options instead.
-
runtime: The MessageInfo interface requires the new "options" property.
-
plugin-framework: IDescriptorInfo.isMessageField() no longer returns true for GROUP field type.
-
grpcweb-transport: The function
readGrpcWebResponseHeader()
no longer returns the format. -
grpcweb-transport: The function
readGrpcWebResponseBody()
no longer takes the format as an argument. Instead, it now takes the content-type response header value and determines the format on its own. -
The function
mergeExtendedRpcOptions
was renamed tomergeRpcOptions
. -
RpcOutputStream callback
onNext
is now called withcomplete = false
on error. -
the methods
stackUnaryInterceptors
,stackServerStreamingInterceptors
,stackClientStreamingInterceptors
,stackDuplexStreamingInterceptors
are now deprecated. UsestackIntercept
instead.
Breaking changes:
RpcOptions
takes atimeout
property now.deadline
property has been removed. See #138 for details.
Bug fixes:
- @protobuf-ts/grpc-transport & @grpc/grpc-js dependency, see #136.
Thanks to @hugebdu for the report.
Bug fixes:
- Fix protoc error message "Plugin output is unparseable" for certain
plugin output sizes, see #134.
Thanks to @fenos for the investigation and fix!
New features:
- Add oneof accessor / mutator functions, see #129
Cleanup:
- Rename plugin parameters to "plugin options".
The code generator request only accepts a single parameter string, but this should be considered an implementation detail.protoc
uses--ts_opt
, so we should speak of options, not parameters.
Bug fixes:
- Fix memory leak in @protobuf-ts/grpc-transport, see #107
Thanks to @dddenis for the PR!
Bug fixes:
- twirp-transport is now a bit more compatible with polyfills for the fetch API that are incomplete.
Bug fixes:
- Fix protoc arch detection on Apple Silicon #108
Thanks to @lqs for the PR!
New feature:
- More convenience method to read custom options, see #36
New feature:
- runtime: Message options are now available in reflection information, see #35.
- plugin: Groups (deprecated proto2 feature) are now completely ignored, but should still be treated properly as unknown fields.
- runtime: BinaryReader.skip() supports WireType.StartGroup now.
Breaking changes:
- runtime: The MessageInfo interface requires the new "options" property.
- plugin-framework: IDescriptorInfo.isMessageField() no longer returns true for GROUP field type.
New features:
- The Twirp and gRPC-web transports let you pass options to fetch() now.
See #95, #105.
Thanks to @jamesbirtles for the PR!
New features:
- Compatibility with Angular 11
No code changes, just relaxed peer dependency constraints.
Bug Fixes:
- Fixed grpcweb-transport to handle responses with HTTP error status
and missing content-type header, see #102.
Thanks to @frederikhors for the bug report.
Breaking changes:
-
grpcweb-transport: The function
readGrpcWebResponseHeader()
no longer returns the format. -
grpcweb-transport: The function
readGrpcWebResponseBody()
no longer takes the format as an argument. Instead, it now takes the content-type response header value and determines the format on its own.
v2.0.0-alpha.18 was accidentally published in the "latest" channel. This release is identical with v1.0.12, it just fixes the "latest" NPM release.
New features:
- Compatibility with svelte (type imports), see #94
Thanks to @frederikhors for the detailed reports.
This release was accidentally published in the "latest" channel as v2.0.0-alpha.18
Please disregard.
Breaking changes:
-
The "response" property of ServerStreamingCall and BidiStreamingCall has been renamed "responses".
-
The "request" property of ClientStreamingCall and BidiStreamingCall has been renamed "requests".
Breaking changes:
-
"client styles" have been removed to keep the plugin simple.
-
plugin parameter "client_call" has been renamed to "client_generic".
-
service option
(ts.client) = CALL_CLIENT
has been renamed(ts.client) = GENERIC_CLIENT
.
Bug Fixes:
- fix wrong grpc status code INTERNAL for aborted server streaming method (see #86)
Bug Fixes:
- Added workaround for unhandled promise rejection (see #86)
Breaking changes:
- grpcweb-transport deadline option is used as a timeout, but should be used as a timestamp (see #80)
Bug Fixes:
- Improve support for the
node-fetch
polyfill (see #81)
Breaking changes:
- Use package version in GRPC_SERVER and RX_CLIENT (see #65)
Bug Fixes:
-
The
generate_dependencies
parameter doesn't work (see #59)
Thanks to @jcready for the report and fix. -
grpc-transport does not pass along provided deadline option (see #77)
Security Fixes:
- Bump socket.io from 2.3.0 to 2.4.1 (see #68)
Package is only used for development.
Bug Fixes:
- grpcweb-transport: Recognize "application/grpc-web-text+proto".
New features:
- protoc: prefer protoc from $PATH (see #60)
New features:
- support client cancel in generic servers / grpc-backend (see #56)
Bug Fixes:
- Fixed conversion of gRPC metadata to our metadata (grpc-transport, grpc-backend)
- Fixed service binding to work with class instances (grpc-backend)
- Fixed isServiceError failure (grpc-transport, grpc-backend)
New features:
- Generic server support (see #56)
Breaking changes:
- clients are generated into separate files (see #55)
- option values for (ts.client) have changed (see #55)
- ClientStyle enum is no longer exported from @protobuf-ts/runtime-rpc (see #55)
New features:
- gRPC server support for @grpc/grpc-js (see #52)
Thanks to @badsyntax for inspiration
Bug Fixes:
- Support grpc-web-text format with envoy (see #54)
Thanks to @DiogoMaMartins for the bug report.
Bug Fixes:
- fix missing true values for clientStreaming and serverStreaming properties of generated service info
New features:
- server streaming and client streaming added to experimental gRPC transport (see #45)
This patch removes source mappings and declaration mappings from the npm packages. See #40.
Thanks to @johnsoncodehk and @tlstyer for the reports.
New features:
- Experimental gRPC transport (see #45)
Breaking changes:
- The function
mergeExtendedRpcOptions
was renamed tomergeRpcOptions
.
- Fix windows import path #41
This patch fixes generated import path on windows platform.
Thanks to @SyedAsimAliSE for bringing this issue up.
- Do not output source mappings and declaration mappings #40
New features:
- RPC client styles (see #10)
- Option to exclude custom options (see #7)
- Add long_type_number and long_type_bigint parameters (see #13, thanks @vicb)
Bug Fixes:
- Proto fields with
[jstype = JS_NUMBER]
were documented as* @generated from protobuf field: [...] [jstype = JS_STRING];
. (See #27) - Proto fields with
[jstype = JS_NORMAL]
were generated asstring
when thelong_type_string
plugin parameter was used. (See #27)
Breaking changes:
- The
cancel
method of RPC was removed, see #9
As a replacement, you can pass anAbortSignal
in the call options instead. - plugin option "disable_service_client" was renamed to "force_client_none"
- RpcOutputStream callback
onNext
is now called withcomplete = false
on error.
Deprecations:
- the methods
stackUnaryInterceptors
,stackServerStreamingInterceptors
,stackClientStreamingInterceptors
,stackDuplexStreamingInterceptors
are now deprecated. UsestackIntercept
instead.
This patch fixes a bug in the plugin: The field option jstype = JS_STRING would generate invalid code for optimized speed.
The problem only surfaces if the plugin parameter long_type_string is not set and code is optimized for speed (instead of for code size). See PR #29
This patch fixes a bug in the plugin: The field option jstype = JS_STRING
would still generate an interface with a bigint property. The problem only
surfaces if the plugin parameter long_type_string is not set.
See PR #28
This patch fixes issue #24
Thanks to @pedelman and @pzeinlinger for the bug reports!
This patch fixes a bug in the method google.protobuf.Timestamp.fromDate(). See issue #22
This patch fixes issue #16.
Thanks to @Caffeinix for bringing the issue up.
This patch fixes a bug in the speed-optimized generated code. The generated code for a message named "Error" would not compile.
Thanks to @pedelman for the contribution!
Previous releases were using const enums. They are incompatible with the compiler option "isolatedModules" used by react.
This release:
- changes all const enum declarations to plain enum
- updates generated reflection information to numerical literal with a comment to keep code size small
- activates compiler option "isolatedModules" for the "test-generated" package to cover regressions
Thanks to @pedelman for bringing this issue up!
This patch fixes issue #2
This release adds automatic installation of the protocol buffer compiler.
Installation is managed by the new package @protobuf-ts/protoc and is tested on macos, linux and windows.
This patch fixes issue #1
This is the first public release of protobuf-ts.