ts-proto 1.167.2 → 1.167.4

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.
@@ -98,11 +98,11 @@ function generateRegularRpcMethod(ctx, methodDesc) {
98
98
  }
99
99
  let encode = (0, ts_poet_1.code) `${rawInputType}.encode(request).finish()`;
100
100
  let beforeRequest;
101
- if (options.rpcBeforeRequest) {
102
- beforeRequest = (0, ts_poet_1.code) `
103
- if (this.rpc.beforeRequest) {
104
- this.rpc.beforeRequest(this.service, "${methodDesc.name}", request);
105
- }`;
101
+ if (options.rpcBeforeRequest && !methodDesc.clientStreaming) {
102
+ beforeRequest = generateBeforeRequest(methodDesc.name);
103
+ }
104
+ else if (methodDesc.clientStreaming && options.rpcBeforeRequest) {
105
+ encode = (0, ts_poet_1.code) `{const encodedRequest = ${encode}; ${generateBeforeRequest(methodDesc.name, "encodedRequest")}; return encodedRequest}`;
106
106
  }
107
107
  let decode = (0, ts_poet_1.code) `${rawOutputType}.decode(${Reader}.create(data))`;
108
108
  if (options.rpcAfterResponse) {
@@ -162,28 +162,35 @@ function generateRegularRpcMethod(ctx, methodDesc) {
162
162
  }
163
163
  `;
164
164
  }
165
+ function generateBeforeRequest(methodName, requestVariableName = "request") {
166
+ return (0, ts_poet_1.code) `
167
+ if (this.rpc.beforeRequest) {
168
+ this.rpc.beforeRequest(this.service, "${methodName}", ${requestVariableName});
169
+ }`;
170
+ }
165
171
  function createDefaultServiceReturn(ctx, methodDesc, decode, errorHandler) {
166
172
  const { options } = ctx;
167
173
  const rawOutputType = (0, types_1.responseType)(ctx, methodDesc, { keepValueType: true });
174
+ const returnStatement = (0, utils_1.arrowFunction)("data", decode, !options.rpcAfterResponse);
168
175
  if (options.returnObservable || methodDesc.serverStreaming) {
169
176
  if (options.useAsyncIterable) {
170
177
  return (0, ts_poet_1.code) `${rawOutputType}.decodeTransform(result)`;
171
178
  }
172
179
  else {
173
- return (0, ts_poet_1.code) `result.pipe(${(0, ts_poet_1.imp)("map@rxjs/operators")}(data => ${decode}))`;
180
+ if (errorHandler) {
181
+ const tc = (0, utils_1.arrowFunction)("data", (0, utils_1.tryCatchBlock)(decode, (0, ts_poet_1.code) `throw error`), !options.rpcAfterResponse);
182
+ return (0, ts_poet_1.code) `result.pipe(${(0, ts_poet_1.imp)("map@rxjs/operators")}(${tc}))`;
183
+ }
184
+ return (0, ts_poet_1.code) `result.pipe(${(0, ts_poet_1.imp)("map@rxjs/operators")}(${returnStatement}))`;
174
185
  }
175
186
  }
176
187
  if (errorHandler) {
177
- let tryBlock = decode;
178
188
  if (!options.rpcAfterResponse) {
179
- tryBlock = (0, ts_poet_1.code) `return ${decode}`;
189
+ decode = (0, ts_poet_1.code) `return ${decode}`;
180
190
  }
181
- return (0, ts_poet_1.code) `promise.then(data => { ${(0, utils_1.tryCatchBlock)(tryBlock, (0, ts_poet_1.code) `return Promise.reject(error);`)}}).catch((error) => { ${errorHandler} })`;
182
- }
183
- else if (options.rpcAfterResponse) {
184
- return (0, ts_poet_1.code) `promise.then(data => { ${decode} } )`;
191
+ return (0, ts_poet_1.code) `promise.then(${(0, utils_1.arrowFunction)("data", (0, utils_1.tryCatchBlock)(decode, (0, ts_poet_1.code) `return Promise.reject(error);`), false)}).catch(${(0, utils_1.arrowFunction)("error", errorHandler, false)})`;
185
192
  }
186
- return (0, ts_poet_1.code) `promise.then(data => ${decode})`;
193
+ return (0, ts_poet_1.code) `promise.then(${returnStatement})`;
187
194
  }
188
195
  function generateServiceClientImpl(ctx, fileDesc, serviceDesc) {
189
196
  const { options } = ctx;
@@ -335,7 +342,7 @@ function generateRpcType(ctx, hasStreamingMethods) {
335
342
  additionalMethods.push((0, ts_poet_1.code) `afterResponse?<T extends { [k in keyof T]: unknown }>(service: string, method: string, response: T): void;`);
336
343
  }
337
344
  if (options.rpcErrorHandler) {
338
- additionalMethods.push((0, ts_poet_1.code) `handleError?(service: string, method: string, error: Error): Error;`);
345
+ additionalMethods.push((0, ts_poet_1.code) `handleError?(service: string, method: string, error: globalThis.Error): globalThis.Error;`);
339
346
  }
340
347
  if (hasStreamingMethods) {
341
348
  const observable = (0, types_1.observableType)(ctx, true);
package/build/main.js CHANGED
@@ -374,31 +374,67 @@ function makeByteUtils(options) {
374
374
  })();
375
375
  `);
376
376
  const globalThis = options.globalThisPolyfill ? globalThisPolyfill : (0, ts_poet_1.conditionalOutput)("globalThis", (0, ts_poet_1.code) ``);
377
- const bytesFromBase64 = (0, ts_poet_1.conditionalOutput)("bytesFromBase64", (0, ts_poet_1.code) `
378
- function bytesFromBase64(b64: string): Uint8Array {
379
- if (${globalThis}.Buffer) {
380
- return Uint8Array.from(${globalThis}.Buffer.from(b64, 'base64'));
381
- } else {
382
- const bin = ${globalThis}.atob(b64);
383
- const arr = new Uint8Array(bin.length);
384
- for (let i = 0; i < bin.length; ++i) {
385
- arr[i] = bin.charCodeAt(i);
377
+ function getBytesFromBase64Snippet() {
378
+ const bytesFromBase64NodeSnippet = (0, ts_poet_1.code) `
379
+ return Uint8Array.from(${globalThis}.Buffer.from(b64, 'base64'));
380
+ `;
381
+ const bytesFromBase64BrowserSnippet = (0, ts_poet_1.code) `
382
+ const bin = ${globalThis}.atob(b64);
383
+ const arr = new Uint8Array(bin.length);
384
+ for (let i = 0; i < bin.length; ++i) {
385
+ arr[i] = bin.charCodeAt(i);
386
+ }
387
+ return arr;
388
+ `;
389
+ switch (options.env) {
390
+ case options_1.EnvOption.NODE:
391
+ return bytesFromBase64NodeSnippet;
392
+ case options_1.EnvOption.BROWSER:
393
+ return bytesFromBase64BrowserSnippet;
394
+ default:
395
+ return (0, ts_poet_1.code) `
396
+ if (${globalThis}.Buffer) {
397
+ ${bytesFromBase64NodeSnippet}
398
+ } else {
399
+ ${bytesFromBase64BrowserSnippet}
386
400
  }
387
- return arr;
401
+ `;
388
402
  }
403
+ }
404
+ const bytesFromBase64 = (0, ts_poet_1.conditionalOutput)("bytesFromBase64", (0, ts_poet_1.code) `
405
+ function bytesFromBase64(b64: string): Uint8Array {
406
+ ${getBytesFromBase64Snippet()}
389
407
  }
390
408
  `);
409
+ function getBase64FromBytesSnippet() {
410
+ const base64FromBytesNodeSnippet = (0, ts_poet_1.code) `
411
+ return ${globalThis}.Buffer.from(arr).toString('base64');
412
+ `;
413
+ const base64FromBytesBrowserSnippet = (0, ts_poet_1.code) `
414
+ const bin: string[] = [];
415
+ arr.forEach((byte) => {
416
+ bin.push(${globalThis}.String.fromCharCode(byte));
417
+ });
418
+ return ${globalThis}.btoa(bin.join(''));
419
+ `;
420
+ switch (options.env) {
421
+ case options_1.EnvOption.NODE:
422
+ return base64FromBytesNodeSnippet;
423
+ case options_1.EnvOption.BROWSER:
424
+ return base64FromBytesBrowserSnippet;
425
+ default:
426
+ return (0, ts_poet_1.code) `
427
+ if (${globalThis}.Buffer) {
428
+ ${base64FromBytesNodeSnippet}
429
+ } else {
430
+ ${base64FromBytesBrowserSnippet}
431
+ }
432
+ `;
433
+ }
434
+ }
391
435
  const base64FromBytes = (0, ts_poet_1.conditionalOutput)("base64FromBytes", (0, ts_poet_1.code) `
392
436
  function base64FromBytes(arr: Uint8Array): string {
393
- if (${globalThis}.Buffer) {
394
- return ${globalThis}.Buffer.from(arr).toString('base64')
395
- } else {
396
- const bin: string[] = [];
397
- arr.forEach((byte) => {
398
- bin.push(${globalThis}.String.fromCharCode(byte));
399
- });
400
- return ${globalThis}.btoa(bin.join(''));
401
- }
437
+ ${getBase64FromBytesSnippet()}
402
438
  }
403
439
  `);
404
440
  return { globalThis, bytesFromBase64, base64FromBytes };
package/build/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tryCatchBlock = exports.impProto = exports.impFile = exports.getPropertyAccessor = exports.safeAccessor = exports.getFieldName = exports.getFieldJsonName = exports.FormattedMethodDescriptor = exports.assertInstanceOf = exports.maybePrefixPackage = exports.prefixDisableLinter = exports.maybeAddComment = exports.upperFirst = exports.lowerFirst = exports.singular = exports.fail = exports.readToBuffer = exports.generateIndexFiles = exports.protoFilesToGenerate = void 0;
3
+ exports.arrowFunction = exports.tryCatchBlock = exports.impProto = exports.impFile = exports.getPropertyAccessor = exports.safeAccessor = exports.getFieldName = exports.getFieldJsonName = exports.FormattedMethodDescriptor = exports.assertInstanceOf = exports.maybePrefixPackage = exports.prefixDisableLinter = exports.maybeAddComment = exports.upperFirst = exports.lowerFirst = exports.singular = exports.fail = exports.readToBuffer = exports.generateIndexFiles = exports.protoFilesToGenerate = void 0;
4
4
  const path = require("path");
5
5
  const ts_poet_1 = require("ts-poet");
6
6
  const options_1 = require("./options");
@@ -254,3 +254,10 @@ function tryCatchBlock(tryBlock, handleErrorBlock) {
254
254
  }`;
255
255
  }
256
256
  exports.tryCatchBlock = tryCatchBlock;
257
+ function arrowFunction(params, body, isOneLine = true) {
258
+ if (isOneLine) {
259
+ return (0, ts_poet_1.code) `(${params}) => ${body}`;
260
+ }
261
+ return (0, ts_poet_1.code) `(${params}) => { ${body} }`;
262
+ }
263
+ exports.arrowFunction = arrowFunction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-proto",
3
- "version": "1.167.2",
3
+ "version": "1.167.4",
4
4
  "description": "",
5
5
  "main": "build/plugin.js",
6
6
  "repository": "github:stephenh/ts-proto",