ts-proto 1.164.0 → 1.164.2

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.
package/README.markdown CHANGED
@@ -147,6 +147,8 @@ If you'd like an out-of-the-box RPC framework built on top of ts-proto, there ar
147
147
 
148
148
  (Note for potential contributors, if you develop other frameworks/mini-frameworks, or even blog posts/tutorials, on using `ts-proto`, we're happy to link to them.)
149
149
 
150
+ We also don't support clients for `google.api.http`-based [Google Cloud](https://cloud.google.com/endpoints/docs/grpc/transcoding) APIs, see [#948](https://github.com/stephenh/ts-proto/issues/948) if you'd like to submit a PR.
151
+
150
152
  # Example Types
151
153
 
152
154
  The generated types are "just data", i.e.:
@@ -889,11 +891,14 @@ ExampleMessage.encode({ anything: true });
889
891
  ## Timestamp
890
892
 
891
893
  The representation of `google.protobuf.Timestamp` is configurable by the `useDate` flag.
894
+ The `useJsonTimestamp` flag controls precision when `useDate` is `false`.
892
895
 
893
896
  | Protobuf well-known type | Default/`useDate=true` | `useDate=false` | `useDate=string` |
894
897
  | --------------------------- | ---------------------- | ------------------------------------ | ---------------- |
895
898
  | `google.protobuf.Timestamp` | `Date` | `{ seconds: number, nanos: number }` | `string` |
896
899
 
900
+ When using `useDate=false` and `useJsonTimestamp=raw` timestamp is represented as `{ seconds: number, nanos: number }`, but has nanosecond precision.
901
+
897
902
  # Number Types
898
903
 
899
904
  Numbers are by default assumed to be plain JavaScript `number`s.
@@ -301,13 +301,6 @@ function createObservableUnaryMethod(ctx) {
301
301
  function createInvokeMethod(ctx) {
302
302
  const { options } = ctx;
303
303
  const { useAbortSignal } = options;
304
- const maybeAbortSignal = useAbortSignal
305
- ? `
306
- if (abortSignal) abortSignal.addEventListener("abort", () => {
307
- observer.error(abortSignal.reason);
308
- client.close();
309
- });`
310
- : "";
311
304
  return (0, ts_poet_1.code) `
312
305
  invoke<T extends UnaryMethodDefinitionish>(
313
306
  methodDesc: T,
@@ -344,14 +337,27 @@ function createInvokeMethod(ctx) {
344
337
  }
345
338
  },
346
339
  });
347
- observer.add(() => {
348
- ${!useAbortSignal
349
- ? `return client.close();`
350
- : `if (!abortSignal || !abortSignal.aborted)
351
- return client.close();`}
352
- });
340
+ ${useAbortSignal
341
+ ? `
342
+ if (abortSignal) {
343
+ const abort = () => {
344
+ observer.error(abortSignal.reason);
345
+ client.close();
346
+ };
347
+ abortSignal.addEventListener("abort", abort);
348
+ observer.add(() => {
349
+ if (abortSignal.aborted) {
350
+ return;
351
+ }
353
352
 
354
- ${maybeAbortSignal}
353
+ abortSignal.removeEventListener('abort', abort);
354
+ client.close();
355
+ });
356
+ } else {
357
+ observer.add(() => client.close());
358
+ }
359
+ `
360
+ : `observer.add(() => client.close());`}
355
361
  });
356
362
  upStream();
357
363
  }).pipe(${share}());
package/build/main.js CHANGED
@@ -2,24 +2,24 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.contextTypeVar = exports.makeUtils = exports.generateFile = void 0;
4
4
  const ts_poet_1 = require("ts-poet");
5
+ const ConditionalOutput_1 = require("ts-poet/build/ConditionalOutput");
5
6
  const ts_proto_descriptors_1 = require("ts-proto-descriptors");
6
- const types_1 = require("./types");
7
- const sourceInfo_1 = require("./sourceInfo");
8
- const utils_1 = require("./utils");
9
7
  const case_1 = require("./case");
10
- const generate_nestjs_1 = require("./generate-nestjs");
11
- const generate_services_1 = require("./generate-services");
12
- const generate_grpc_web_1 = require("./generate-grpc-web");
13
- const generate_async_iterable_1 = require("./generate-async-iterable");
14
8
  const enums_1 = require("./enums");
15
- const visit_1 = require("./visit");
16
- const options_1 = require("./options");
17
- const schema_1 = require("./schema");
18
- const ConditionalOutput_1 = require("ts-poet/build/ConditionalOutput");
19
- const generate_grpc_js_1 = require("./generate-grpc-js");
9
+ const generate_async_iterable_1 = require("./generate-async-iterable");
20
10
  const generate_generic_service_definition_1 = require("./generate-generic-service-definition");
11
+ const generate_grpc_js_1 = require("./generate-grpc-js");
12
+ const generate_grpc_web_1 = require("./generate-grpc-web");
13
+ const generate_nestjs_1 = require("./generate-nestjs");
21
14
  const generate_nice_grpc_1 = require("./generate-nice-grpc");
15
+ const generate_services_1 = require("./generate-services");
22
16
  const generate_struct_wrappers_1 = require("./generate-struct-wrappers");
17
+ const options_1 = require("./options");
18
+ const schema_1 = require("./schema");
19
+ const sourceInfo_1 = require("./sourceInfo");
20
+ const types_1 = require("./types");
21
+ const utils_1 = require("./utils");
22
+ const visit_1 = require("./visit");
23
23
  function generateFile(ctx, fileDesc) {
24
24
  var _a;
25
25
  const { options, utils } = ctx;
@@ -1733,7 +1733,10 @@ function generateToJson(ctx, fullName, fullProtobufTypeName, messageDesc) {
1733
1733
  return (0, ts_poet_1.code) `${from}`;
1734
1734
  }
1735
1735
  else if ((0, types_1.isTimestamp)(field) && options.useDate === options_1.DateOption.TIMESTAMP) {
1736
- return (0, ts_poet_1.code) `${from}`;
1736
+ if (options.useJsonTimestamp === options_1.JsonTimestampOption.RAW) {
1737
+ return (0, ts_poet_1.code) `${from}`;
1738
+ }
1739
+ return (0, ts_poet_1.code) `${utils.fromTimestamp}(${from}).toISOString()`;
1737
1740
  }
1738
1741
  else if ((0, types_1.isMapType)(ctx, messageDesc, field)) {
1739
1742
  // For map types, drill-in and then admittedly re-hard-code our per-value-type logic
package/build/options.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addTypeToMessages = exports.getTsPoetOpts = exports.optionsFromParameter = exports.defaultOptions = exports.ServiceOption = exports.OneofOption = exports.EnvOption = exports.DateOption = exports.LongOption = void 0;
3
+ exports.addTypeToMessages = exports.getTsPoetOpts = exports.optionsFromParameter = exports.defaultOptions = exports.ServiceOption = exports.OneofOption = exports.EnvOption = exports.JsonTimestampOption = exports.DateOption = exports.LongOption = void 0;
4
4
  var LongOption;
5
5
  (function (LongOption) {
6
6
  LongOption["NUMBER"] = "number";
@@ -14,6 +14,11 @@ var DateOption;
14
14
  DateOption["STRING"] = "string";
15
15
  DateOption["TIMESTAMP"] = "timestamp";
16
16
  })(DateOption || (exports.DateOption = DateOption = {}));
17
+ var JsonTimestampOption;
18
+ (function (JsonTimestampOption) {
19
+ JsonTimestampOption["RFC3339"] = "rfc3339";
20
+ JsonTimestampOption["RAW"] = "raw";
21
+ })(JsonTimestampOption || (exports.JsonTimestampOption = JsonTimestampOption = {}));
17
22
  var EnvOption;
18
23
  (function (EnvOption) {
19
24
  EnvOption["NODE"] = "node";
@@ -42,6 +47,7 @@ function defaultOptions() {
42
47
  forceLong: LongOption.NUMBER,
43
48
  useOptionals: "none",
44
49
  useDate: DateOption.DATE,
50
+ useJsonTimestamp: JsonTimestampOption.RFC3339,
45
51
  useMongoObjectId: false,
46
52
  oneof: OneofOption.PROPERTIES,
47
53
  esModuleInterop: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-proto",
3
- "version": "1.164.0",
3
+ "version": "1.164.2",
4
4
  "description": "",
5
5
  "main": "build/plugin.js",
6
6
  "repository": "github:stephenh/ts-proto",