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.
- package/build/generate-services.js +21 -14
- package/build/main.js +55 -19
- package/build/utils.js +8 -1
- package/package.json +1 -1
|
@@ -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 = (
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
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
|
-
|
|
189
|
+
decode = (0, ts_poet_1.code) `return ${decode}`;
|
|
180
190
|
}
|
|
181
|
-
return (0, ts_poet_1.code) `promise.then(
|
|
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(
|
|
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
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|