New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

nice-grpc

Package Overview
Dependencies
Maintainers
1
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nice-grpc - npm Package Compare versions

Comparing version 2.1.8 to 2.1.9

3

lib/client/createBidiStreamingMethod.js

@@ -25,4 +25,3 @@ "use strict";

const { metadata = (0, nice_grpc_common_1.Metadata)(), onHeader, onTrailer } = options;
const signal = (options.signal ??
new AbortController().signal);
const signal = options.signal ?? new AbortController().signal;
const pipeAbortController = new AbortController();

@@ -29,0 +28,0 @@ const call = client.makeBidiStreamRequest(grpcMethodDefinition.path, grpcMethodDefinition.requestSerialize, grpcMethodDefinition.responseDeserialize, (0, convertMetadata_1.convertMetadataToGrpcJs)(metadata));

@@ -25,4 +25,3 @@ "use strict";

const { metadata = (0, nice_grpc_common_1.Metadata)(), onHeader, onTrailer } = options;
const signal = (options.signal ??
new AbortController().signal);
const signal = options.signal ?? new AbortController().signal;
const call = client.makeServerStreamRequest(grpcMethodDefinition.path, grpcMethodDefinition.requestSerialize, grpcMethodDefinition.responseDeserialize, request, (0, convertMetadata_1.convertMetadataToGrpcJs)(metadata));

@@ -29,0 +28,0 @@ call.on('metadata', metadata => {

@@ -1,1 +0,5 @@

export {};
/// <reference types="node" />
export type CallContextMaybeCancel = {
signal: AbortSignal;
cancel?: () => void;
};

@@ -8,15 +8,29 @@ "use strict";

function createCallContext(call) {
const ac = new AbortController();
const maybeCancel = {
signal: ac.signal,
cancel() {
ac.abort();
},
};
const header = (0, nice_grpc_common_1.Metadata)();
const trailer = (0, nice_grpc_common_1.Metadata)();
const abortController = new AbortController();
if (call.cancelled) {
abortController.abort();
maybeCancel.cancel?.();
maybeCancel.cancel = undefined;
}
else {
call.on('close', () => {
maybeCancel.cancel = undefined;
});
call.on('finish', () => {
maybeCancel.cancel = undefined;
});
call.on('cancelled', () => {
abortController.abort();
maybeCancel.cancel?.();
maybeCancel.cancel = undefined;
});
}
let headerSent = false;
return {
const context = {
metadata: (0, convertMetadata_1.convertMetadataFromGrpcJs)(call.metadata),

@@ -33,6 +47,7 @@ peer: call.getPeer(),

trailer,
signal: abortController.signal,
signal: maybeCancel.signal,
};
return { context, maybeCancel };
}
exports.createCallContext = createCallContext;
//# sourceMappingURL=createCallContext.js.map

@@ -24,3 +24,3 @@ "use strict";

else {
process.emitWarning(`${path}: Uncaught error in server implementation method: ${error instanceof Error ? error.stack : error}`);
process.emitWarning(`${path}: Uncaught error in server implementation method. Server methods should only throw ServerError or AbortError. ${error instanceof Error ? error.stack : error}`);
return {

@@ -27,0 +27,0 @@ code: grpc_js_1.status.UNKNOWN,

@@ -34,3 +34,3 @@ "use strict";

return call => {
const context = (0, createCallContext_1.createCallContext)(call);
const { context, maybeCancel } = (0, createCallContext_1.createCallContext)(call);
Promise.resolve()

@@ -68,2 +68,3 @@ .then(async () => {

finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -75,3 +76,3 @@ }

}, err => {
call.destroy((0, createErrorStatusObject_1.createErrorStatusObject)(definition.path, err, (0, convertMetadata_1.convertMetadataToGrpcJs)(context.trailer)));
call.emit('error', (0, createErrorStatusObject_1.createErrorStatusObject)(definition.path, err, (0, convertMetadata_1.convertMetadataToGrpcJs)(context.trailer)));
});

@@ -78,0 +79,0 @@ };

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createClientStreamingMethodHandler = void 0;
const convertMetadata_1 = require("../utils/convertMetadata");
const isAsyncIterable_1 = require("../utils/isAsyncIterable");
const readableToAsyncIterable_1 = require("../utils/readableToAsyncIterable");
const createCallContext_1 = require("./createCallContext");
const createErrorStatusObject_1 = require("./createErrorStatusObject");
const readableToAsyncIterable_1 = require("../utils/readableToAsyncIterable");
const convertMetadata_1 = require("../utils/convertMetadata");
/** @internal */

@@ -33,3 +33,3 @@ function createClientStreamingMethodHandler(definition, implementation, middleware) {

return (call, callback) => {
const context = (0, createCallContext_1.createCallContext)(call);
const { context, maybeCancel } = (0, createCallContext_1.createCallContext)(call);
Promise.resolve()

@@ -54,2 +54,3 @@ .then(async () => {

finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -56,0 +57,0 @@ }

@@ -33,3 +33,3 @@ "use strict";

return call => {
const context = (0, createCallContext_1.createCallContext)(call);
const { context, maybeCancel } = (0, createCallContext_1.createCallContext)(call);
Promise.resolve()

@@ -67,2 +67,3 @@ .then(async () => {

finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -74,3 +75,3 @@ }

}, err => {
call.destroy((0, createErrorStatusObject_1.createErrorStatusObject)(definition.path, err, (0, convertMetadata_1.convertMetadataToGrpcJs)(context.trailer)));
call.emit('error', (0, createErrorStatusObject_1.createErrorStatusObject)(definition.path, err, (0, convertMetadata_1.convertMetadataToGrpcJs)(context.trailer)));
});

@@ -77,0 +78,0 @@ };

@@ -32,3 +32,3 @@ "use strict";

return (call, callback) => {
const context = (0, createCallContext_1.createCallContext)(call);
const { context, maybeCancel } = (0, createCallContext_1.createCallContext)(call);
Promise.resolve()

@@ -53,2 +53,3 @@ .then(async () => {

finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -55,0 +56,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.readableToAsyncIterable = void 0;
let nodejsInternalsCompatibilityCheckedOnce = false;
/**
* Exactly once check that an object has Node.js readable stream internal object looks roughly like we expect.
*/
function nodejsInternalsAccessible(obj) {
if (nodejsInternalsCompatibilityCheckedOnce) {
return true;
}
const safe = obj &&
typeof obj === 'object' &&
'errored' in obj &&
'errorEmitted' in obj &&
'endEmitted' in obj &&
'closeEmitted' in obj &&
typeof obj.errorEmitted === 'boolean' &&
typeof obj.endEmitted === 'boolean' &&
typeof obj.closeEmitted === 'boolean';
nodejsInternalsCompatibilityCheckedOnce = safe;
return safe;
}
/**
* This is a copy of NodeJS createAsyncIterator(stream), with removed stream

@@ -24,2 +44,5 @@ * destruction.

const state = stream._readableState;
if (!nodejsInternalsAccessible(state)) {
throw new Error('nice-grpc: _readableState members incompatible');
}
let error = state.errored;

@@ -26,0 +49,0 @@ let errorEmitted = state.errorEmitted;

{
"name": "nice-grpc",
"version": "2.1.8",
"version": "2.1.9",
"description": "A Node.js gRPC library that is nice to you",

@@ -38,3 +38,3 @@ "keywords": [

"@types/google-protobuf": "^3.7.4",
"@types/node": "^14.18.23",
"@types/node": "^18.0.0",
"defer-promise": "^2.0.1",

@@ -47,7 +47,7 @@ "google-protobuf": "^3.14.0",

"dependencies": {
"@grpc/grpc-js": "~1.9.14",
"@grpc/grpc-js": "^1.10.8",
"abort-controller-x": "^0.4.0",
"nice-grpc-common": "^2.0.2"
},
"gitHead": "2d8eccc332adbf869b6450efe5de14125d7cb4e6"
"gitHead": "706e43411400630c951a391695ca639f2af4d943"
}

@@ -13,3 +13,2 @@ import {Client, ClientWritableStream} from '@grpc/grpc-js';

} from '../service-definitions';
import {CompatAbortSignal} from '../utils/compatAbortSignal';
import {

@@ -52,4 +51,3 @@ convertMetadataFromGrpcJs,

const signal = (options.signal ??
new AbortController().signal) as CompatAbortSignal;
const signal = options.signal ?? new AbortController().signal;

@@ -56,0 +54,0 @@ const pipeAbortController = new AbortController();

@@ -13,3 +13,2 @@ import {Client} from '@grpc/grpc-js';

} from '../service-definitions';
import {CompatAbortSignal} from '../utils/compatAbortSignal';
import {

@@ -52,4 +51,3 @@ convertMetadataFromGrpcJs,

const signal = (options.signal ??
new AbortController().signal) as CompatAbortSignal;
const signal = options.signal ?? new AbortController().signal;

@@ -56,0 +54,0 @@ const call = client.makeServerStreamRequest(

@@ -8,14 +8,38 @@ import {ServerSurfaceCall} from '@grpc/grpc-js/build/src/server-call';

// https://github.com/deeplay-io/nice-grpc/issues/607
// https://github.com/deeplay-io/nice-grpc/issues/555
export type CallContextMaybeCancel = {
signal: AbortSignal;
cancel?: () => void;
};
/** @internal */
export function createCallContext(call: ServerSurfaceCall): CallContext {
export function createCallContext(call: ServerSurfaceCall): {
context: CallContext;
maybeCancel: CallContextMaybeCancel;
} {
const ac = new AbortController();
const maybeCancel: CallContextMaybeCancel = {
signal: ac.signal,
cancel() {
ac.abort();
},
};
const header = Metadata();
const trailer = Metadata();
const abortController = new AbortController();
if (call.cancelled) {
abortController.abort();
maybeCancel.cancel?.();
maybeCancel.cancel = undefined;
} else {
call.on('close', () => {
maybeCancel.cancel = undefined;
});
call.on('finish', () => {
maybeCancel.cancel = undefined;
});
call.on('cancelled', () => {
abortController.abort();
maybeCancel.cancel?.();
maybeCancel.cancel = undefined;
});

@@ -26,3 +50,3 @@ }

return {
const context = {
metadata: convertMetadataFromGrpcJs(call.metadata),

@@ -40,4 +64,6 @@ peer: call.getPeer(),

trailer,
signal: abortController.signal,
signal: maybeCancel.signal,
};
return {context, maybeCancel};
}

@@ -25,3 +25,3 @@ import {Metadata, status, StatusObject} from '@grpc/grpc-js';

process.emitWarning(
`${path}: Uncaught error in server implementation method: ${
`${path}: Uncaught error in server implementation method. Server methods should only throw ServerError or AbortError. ${
error instanceof Error ? error.stack : error

@@ -28,0 +28,0 @@ }`,

@@ -12,5 +12,5 @@ import {handleBidiStreamingCall} from '@grpc/grpc-js';

import {readableToAsyncIterable} from '../utils/readableToAsyncIterable';
import {BidiStreamingMethodImplementation} from './ServiceImplementation';
import {createCallContext} from './createCallContext';
import {createErrorStatusObject} from './createErrorStatusObject';
import {BidiStreamingMethodImplementation} from './ServiceImplementation';

@@ -59,3 +59,3 @@ /** @internal */

return call => {
const context = createCallContext(call);
const {context, maybeCancel} = createCallContext(call);

@@ -106,2 +106,3 @@ Promise.resolve()

} finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -115,3 +116,4 @@ }

err => {
call.destroy(
call.emit(
'error',
createErrorStatusObject(

@@ -121,3 +123,3 @@ definition.path,

convertMetadataToGrpcJs(context.trailer),
) as any,
),
);

@@ -124,0 +126,0 @@ },

@@ -7,9 +7,9 @@ import {handleClientStreamingCall} from '@grpc/grpc-js';

} from 'nice-grpc-common';
import {MethodDefinition} from '../service-definitions';
import {convertMetadataToGrpcJs} from '../utils/convertMetadata';
import {isAsyncIterable} from '../utils/isAsyncIterable';
import {readableToAsyncIterable} from '../utils/readableToAsyncIterable';
import {ClientStreamingMethodImplementation} from './ServiceImplementation';
import {createCallContext} from './createCallContext';
import {ClientStreamingMethodImplementation} from './ServiceImplementation';
import {createErrorStatusObject} from './createErrorStatusObject';
import {readableToAsyncIterable} from '../utils/readableToAsyncIterable';
import {MethodDefinition} from '../service-definitions';
import {convertMetadataToGrpcJs} from '../utils/convertMetadata';

@@ -58,3 +58,3 @@ /** @internal */

return (call, callback) => {
const context = createCallContext(call);
const {context, maybeCancel} = createCallContext(call);

@@ -93,2 +93,3 @@ Promise.resolve()

} finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -95,0 +96,0 @@ }

@@ -11,5 +11,5 @@ import {handleServerStreamingCall} from '@grpc/grpc-js';

import {isAsyncIterable} from '../utils/isAsyncIterable';
import {ServerStreamingMethodImplementation} from './ServiceImplementation';
import {createCallContext} from './createCallContext';
import {createErrorStatusObject} from './createErrorStatusObject';
import {ServerStreamingMethodImplementation} from './ServiceImplementation';

@@ -58,3 +58,3 @@ /** @internal */

return call => {
const context = createCallContext(call);
const {context, maybeCancel} = createCallContext(call);

@@ -105,2 +105,3 @@ Promise.resolve()

} finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -114,3 +115,4 @@ }

err => {
call.destroy(
call.emit(
'error',
createErrorStatusObject(

@@ -120,3 +122,3 @@ definition.path,

convertMetadataToGrpcJs(context.trailer),
) as any,
),
);

@@ -123,0 +125,0 @@ },

@@ -10,5 +10,5 @@ import {handleUnaryCall} from '@grpc/grpc-js';

import {isAsyncIterable} from '../utils/isAsyncIterable';
import {UnaryMethodImplementation} from './ServiceImplementation';
import {createCallContext} from './createCallContext';
import {createErrorStatusObject} from './createErrorStatusObject';
import {UnaryMethodImplementation} from './ServiceImplementation';

@@ -54,3 +54,3 @@ /** @internal */

return (call, callback) => {
const context = createCallContext(call);
const {context, maybeCancel} = createCallContext(call);

@@ -89,2 +89,3 @@ Promise.resolve()

} finally {
maybeCancel.cancel = undefined;
context.sendHeader();

@@ -91,0 +92,0 @@ }

import {ObjectReadable} from '@grpc/grpc-js/build/src/object-stream';
type NodeInternalReadableState = {
errored: unknown;
errorEmitted: boolean;
endEmitted: boolean;
closeEmitted: boolean;
};
let nodejsInternalsCompatibilityCheckedOnce = false;
/**
* Exactly once check that an object has Node.js readable stream internal object looks roughly like we expect.
*/
function nodejsInternalsAccessible(obj: any): obj is NodeInternalReadableState {
if (nodejsInternalsCompatibilityCheckedOnce) {
return true;
}
const safe =
obj &&
typeof obj === 'object' &&
'errored' in obj &&
'errorEmitted' in obj &&
'endEmitted' in obj &&
'closeEmitted' in obj &&
typeof obj.errorEmitted === 'boolean' &&
typeof obj.endEmitted === 'boolean' &&
typeof obj.closeEmitted === 'boolean';
nodejsInternalsCompatibilityCheckedOnce = safe;
return safe;
}
/**
* This is a copy of NodeJS createAsyncIterator(stream), with removed stream

@@ -26,2 +58,5 @@ * destruction.

const state = (stream as any)._readableState;
if (!nodejsInternalsAccessible(state)) {
throw new Error('nice-grpc: _readableState members incompatible');
}

@@ -28,0 +63,0 @@ let error = state.errored;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc