starpc 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/cmd/protoc-gen-es-starpc/typescript.ts +37 -0
  2. package/dist/cmd/protoc-gen-es-starpc/typescript.js +24 -0
  3. package/dist/echo/echo_srpc.pb.d.ts +44 -1
  4. package/dist/echo/server.d.ts +9 -8
  5. package/dist/echo/server.js +6 -6
  6. package/dist/integration/cross-language/ts-client.js +5 -79
  7. package/dist/integration/cross-language/ts-server.js +4 -100
  8. package/dist/mock/mock_srpc.pb.d.ts +14 -1
  9. package/dist/srpc/channel.js +6 -3
  10. package/dist/srpc/channel.test.js +20 -1
  11. package/dist/srpc/client.d.ts +1 -3
  12. package/dist/srpc/client.js +2 -22
  13. package/dist/srpc/common-rpc.d.ts +1 -9
  14. package/dist/srpc/common-rpc.js +4 -62
  15. package/dist/srpc/handler.d.ts +12 -4
  16. package/dist/srpc/index.d.ts +2 -4
  17. package/dist/srpc/index.js +1 -3
  18. package/dist/srpc/invoker.d.ts +2 -2
  19. package/dist/srpc/invoker.js +2 -2
  20. package/dist/srpc/rpcproto.pb.d.ts +0 -44
  21. package/dist/srpc/rpcproto.pb.js +0 -53
  22. package/dist/srpc/server-context.d.ts +11 -0
  23. package/dist/srpc/server-context.js +28 -0
  24. package/dist/srpc/server-rpc.js +3 -3
  25. package/dist/srpc/server.test.js +65 -2
  26. package/dist/srpc/watchdog.test.js +1 -0
  27. package/echo/echo.go +8 -8
  28. package/echo/echo.pb.go +12 -36
  29. package/echo/echo_srpc.pb.cpp +1 -1
  30. package/echo/echo_srpc.pb.go +1 -1
  31. package/echo/echo_srpc.pb.hpp +1 -1
  32. package/echo/echo_srpc.pb.rs +1 -1
  33. package/echo/echo_srpc.pb.ts +74 -0
  34. package/echo/server.go +1 -1
  35. package/echo/server.ts +24 -5
  36. package/go.mod +1 -1
  37. package/go.sum +2 -0
  38. package/integration/cross-language/go-client/main.go +4 -142
  39. package/integration/cross-language/go-server/main.go +2 -170
  40. package/integration/cross-language/run.bash +5 -105
  41. package/integration/cross-language/ts-client.ts +5 -90
  42. package/integration/cross-language/ts-server.ts +4 -112
  43. package/mock/mock.go +1 -1
  44. package/mock/mock.pb.go +12 -36
  45. package/mock/mock_srpc.pb.cpp +1 -1
  46. package/mock/mock_srpc.pb.go +1 -1
  47. package/mock/mock_srpc.pb.hpp +1 -1
  48. package/mock/mock_srpc.pb.rs +1 -1
  49. package/mock/mock_srpc.pb.ts +19 -1
  50. package/package.json +2 -2
  51. package/srpc/channel.test.ts +21 -1
  52. package/srpc/channel.ts +7 -3
  53. package/srpc/client-prefix.go +1 -1
  54. package/srpc/client-set.go +1 -1
  55. package/srpc/client.go +1 -1
  56. package/srpc/client.ts +4 -31
  57. package/srpc/common-rpc.go +15 -69
  58. package/srpc/common-rpc.ts +4 -77
  59. package/srpc/common-rpc_test.go +81 -0
  60. package/srpc/errors.go +26 -1
  61. package/srpc/handler.ts +54 -5
  62. package/srpc/index.ts +7 -4
  63. package/srpc/invoker-prefix.go +1 -1
  64. package/srpc/invoker.go +2 -2
  65. package/srpc/invoker.ts +20 -7
  66. package/srpc/message.go +1 -1
  67. package/srpc/msg-stream.go +1 -9
  68. package/srpc/mux-verbose.go +1 -1
  69. package/srpc/mux.go +1 -1
  70. package/srpc/rpcproto.pb.cc +4 -15
  71. package/srpc/rpcproto.pb.go +102 -419
  72. package/srpc/rpcproto.pb.h +0 -59
  73. package/srpc/rpcproto.pb.rs +0 -45
  74. package/srpc/rpcproto.pb.ts +0 -62
  75. package/srpc/rpcproto.proto +0 -16
  76. package/srpc/server-context.ts +55 -0
  77. package/srpc/server-rpc.go +1 -1
  78. package/srpc/server-rpc.ts +4 -6
  79. package/srpc/server.test.ts +94 -1
  80. package/srpc/stream-pipe.go +1 -1
  81. package/srpc/stream-rwc.go +1 -1
  82. package/srpc/stream.go +0 -20
  83. package/srpc/watchdog.test.ts +1 -0
  84. package/dist/rpcstream/receipt.test.d.ts +0 -1
  85. package/dist/rpcstream/receipt.test.js +0 -41
  86. package/dist/srpc/call-receipt.d.ts +0 -17
  87. package/dist/srpc/call-receipt.js +0 -106
  88. package/dist/srpc/call-receipt.test.d.ts +0 -1
  89. package/dist/srpc/call-receipt.test.js +0 -375
  90. package/dist/srpc/server-invocation.d.ts +0 -17
  91. package/dist/srpc/server-invocation.js +0 -37
  92. package/integration/cross-language/go-server/fixture-owner_test.go +0 -127
  93. package/srpc/call-receipt-e2e_test.go +0 -111
  94. package/srpc/call-receipt.go +0 -112
  95. package/srpc/call-receipt.test.ts +0 -441
  96. package/srpc/call-receipt.ts +0 -131
  97. package/srpc/call-receipt_test.go +0 -536
  98. package/srpc/schema-ownership_test.go +0 -115
  99. package/srpc/server-invocation.go +0 -40
  100. package/srpc/server-invocation.ts +0 -76
package/srpc/invoker.ts CHANGED
@@ -2,6 +2,7 @@ import { Sink, Source } from 'it-stream-types'
2
2
  import { pushable } from 'it-pushable'
3
3
  import { pipe } from 'it-pipe'
4
4
  import type { MethodDefinition } from './definition.js'
5
+ import type { ServerContext } from './server-context.js'
5
6
  import { InvokeFn } from './handler.js'
6
7
  import {
7
8
  buildDecodeMessageTransform,
@@ -11,15 +12,27 @@ import { writeToPushable } from './pushable.js'
11
12
  import type { MessageType, Message } from '@aptre/protobuf-es-lite'
12
13
  import { MethodIdempotency, MethodKind } from '@aptre/protobuf-es-lite'
13
14
 
14
- import type { ServerInvocation } from './server-invocation.js'
15
15
  // MethodProto is a function which matches one of the RPC signatures.
16
16
  export type MethodProto<R extends Message<R>, O extends Message<O>> =
17
- | ((request: R, invocation?: ServerInvocation) => Promise<O>)
18
- | ((request: R, invocation?: ServerInvocation) => AsyncIterable<O>)
19
- | ((request: AsyncIterable<R>, invocation?: ServerInvocation) => Promise<O>)
17
+ | ((
18
+ request: R,
19
+ abortSignal: AbortSignal,
20
+ context: ServerContext,
21
+ ) => Promise<O>)
22
+ | ((
23
+ request: R,
24
+ abortSignal: AbortSignal,
25
+ context: ServerContext,
26
+ ) => AsyncIterable<O>)
27
+ | ((
28
+ request: AsyncIterable<R>,
29
+ abortSignal: AbortSignal,
30
+ context: ServerContext,
31
+ ) => Promise<O>)
20
32
  | ((
21
33
  request: AsyncIterable<R>,
22
- invocation?: ServerInvocation,
34
+ abortSignal: AbortSignal,
35
+ context: ServerContext,
23
36
  ) => AsyncIterable<O>)
24
37
 
25
38
  // createInvokeFn builds an InvokeFn from a method definition and a function prototype.
@@ -36,7 +49,7 @@ export function createInvokeFn<R extends Message<R>, O extends Message<O>>(
36
49
  return async (
37
50
  dataSource: Source<Uint8Array>,
38
51
  dataSink: Sink<Source<Uint8Array>>,
39
- invocation?: ServerInvocation,
52
+ context: ServerContext,
40
53
  ) => {
41
54
  // responseSink is a Sink for response messages.
42
55
  const responseSink = pushable<O>({
@@ -71,7 +84,7 @@ export function createInvokeFn<R extends Message<R>, O extends Message<O>>(
71
84
 
72
85
  // Call the implementation.
73
86
  try {
74
- const responseObj = methodProto(requestArg, invocation)
87
+ const responseObj = methodProto(requestArg, context.signal, context)
75
88
  if (!responseObj) {
76
89
  throw new Error('return value was undefined')
77
90
  }
package/srpc/message.go CHANGED
@@ -86,4 +86,4 @@ func (m *RawMessage) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
86
86
  }
87
87
 
88
88
  // _ is a type assertion
89
- var _ Message = ((*RawMessage)(nil))
89
+ var _ Message = (*RawMessage)(nil)
@@ -86,13 +86,5 @@ func (r *MsgStream) Close() error {
86
86
  return err
87
87
  }
88
88
 
89
- func (r *MsgStream) receiptTerminalKind() (TerminalKind, bool) {
90
- receipt, ok := r.rw.(receiptTerminalStream)
91
- if !ok {
92
- return 0, false
93
- }
94
- return receipt.receiptTerminalKind()
95
- }
96
-
97
89
  // _ is a type assertion
98
- var _ Stream = ((*MsgStream)(nil))
90
+ var _ Stream = (*MsgStream)(nil)
@@ -93,4 +93,4 @@ func (v *VMux) HasServiceMethod(serviceID, methodID string) (has bool) {
93
93
  }
94
94
 
95
95
  // _ is a type assertion
96
- var _ Mux = ((*VMux)(nil))
96
+ var _ Mux = (*VMux)(nil)
package/srpc/mux.go CHANGED
@@ -134,4 +134,4 @@ func (m *mux) InvokeMethod(serviceID, methodID string, strm Stream) (bool, error
134
134
  }
135
135
 
136
136
  // _ is a type assertion
137
- var _ Mux = ((*mux)(nil))
137
+ var _ Mux = (*mux)(nil)
@@ -120,8 +120,8 @@ struct PacketDefaultTypeInternal {
120
120
  PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT
121
121
  PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PacketDefaultTypeInternal _Packet_default_instance_;
122
122
  } // namespace srpc
123
- static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL
124
- file_level_enum_descriptors_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto[1];
123
+ static constexpr const ::_pb::EnumDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
124
+ file_level_enum_descriptors_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto = nullptr;
125
125
  static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
126
126
  file_level_service_descriptors_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto = nullptr;
127
127
  const ::uint32_t
@@ -178,18 +178,13 @@ const char descriptor_table_protodef_github_2ecom_2faperturerobotics_2fstarpc_2f
178
178
  "service\030\001 \001(\t\022\022\n\nrpc_method\030\002 \001(\t\022\014\n\004dat"
179
179
  "a\030\003 \001(\014\022\024\n\014data_is_zero\030\004 \001(\010\"O\n\010CallDat"
180
180
  "a\022\014\n\004data\030\001 \001(\014\022\024\n\014data_is_zero\030\002 \001(\010\022\020\n"
181
- "\010complete\030\003 \001(\010\022\r\n\005error\030\004 \001(\t*\277\001\n\014Termi"
182
- "nalKind\022\035\n\031TERMINAL_KIND_UNSPECIFIED\020\000\022\033"
183
- "\n\027TERMINAL_KIND_COMMITTED\020\001\022\032\n\026TERMINAL_"
184
- "KIND_CANCELED\020\002\022 \n\034TERMINAL_KIND_TRANSPO"
185
- "RT_LOST\020\003\022\030\n\024TERMINAL_KIND_CLOSED\020\004\022\033\n\027T"
186
- "ERMINAL_KIND_ABANDONED\020\005b\006proto3"
181
+ "\010complete\030\003 \001(\010\022\r\n\005error\030\004 \001(\tb\006proto3"
187
182
  };
188
183
  static ::absl::once_flag descriptor_table_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto_once;
189
184
  PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto = {
190
185
  false,
191
186
  false,
192
- 552,
187
+ 358,
193
188
  descriptor_table_protodef_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto,
194
189
  "github.com/aperturerobotics/starpc/srpc/rpcproto.proto",
195
190
  &descriptor_table_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto_once,
@@ -203,12 +198,6 @@ PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_github_2ecom_2
203
198
  file_level_service_descriptors_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto,
204
199
  };
205
200
  namespace srpc {
206
- const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL TerminalKind_descriptor() {
207
- ::google::protobuf::internal::AssignDescriptors(&descriptor_table_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto);
208
- return file_level_enum_descriptors_github_2ecom_2faperturerobotics_2fstarpc_2fsrpc_2frpcproto_2eproto[0];
209
- }
210
- PROTOBUF_CONSTINIT const uint32_t TerminalKind_internal_data_[] = {
211
- 393216u, 0u, };
212
201
  // ===================================================================
213
202
 
214
203
  class Packet::_Internal {