Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: use built-in AbortController instead of node-abort-controller #178

Merged
merged 16 commits into from
Aug 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,22 @@ jobs:

strategy:
matrix:
node-version:
- 12.x
- 14.x
- "16.8"
environment:
- node-version: '14.15'
node-options: --require "abort-controller/polyfill"
- node-version: '14.17'
node-options: --experimental-abortcontroller
- node-version: 16.x
- node-version: 18.x

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
- name: Use Node.js ${{ matrix.environment.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
node-version: ${{ matrix.environment.node-version }}
- run: yarn --frozen-lockfile
- run: yarn build
- run: yarn test
- env:
NODE_OPTIONS: ${{ matrix.environment.node-options }}
run: yarn test
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
},
"devDependencies": {
"@types/jest": "^27.4.0",
"abort-controller": "^3.0.0",
"jest": "^27.0.4",
"lerna": "^4.0.0",
"prettier": "^2.3.1",
Expand Down
5 changes: 2 additions & 3 deletions packages/nice-grpc-client-middleware-deadline/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@
"devDependencies": {
"@tsconfig/recommended": "^1.0.1",
"@types/google-protobuf": "^3.7.4",
"abort-controller-x": "^0.2.6",
"abort-controller-x": "^0.4.0",
"google-protobuf": "^3.14.0",
"grpc-tools": "^1.10.0",
"grpc_tools_node_protoc_ts": "^5.0.1",
"nice-grpc": "^1.2.2"
},
"dependencies": {
"nice-grpc-common": "^1.1.0",
"node-abort-controller": "^2.0.0"
"nice-grpc-common": "^1.1.0"
}
}
1 change: 0 additions & 1 deletion packages/nice-grpc-client-middleware-deadline/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {ClientError, ClientMiddleware, Status} from 'nice-grpc-common';
import AbortController from 'node-abort-controller';

export type DeadlineOptions = {
deadline?: Date | number;
Expand Down
5 changes: 2 additions & 3 deletions packages/nice-grpc-client-middleware-retry/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,12 @@ const response = await client.exampleMethod(request, {

### Infinite retries

You can also set `retryMaxAttempts` to `Infinity` and use `AbortSignal` to
You can also set `retryMaxAttempts` to `Infinity` and use
[`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) to
[cancel](https://github.com/deeplay-io/nice-grpc/tree/master/packages/nice-grpc#cancelling-calls)
the retried call:

```ts
import AbortController from 'node-abort-controller';

const abortController = new AbortController();

setTimeout(() => {
Expand Down
5 changes: 2 additions & 3 deletions packages/nice-grpc-client-middleware-retry/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@
"ts-proto": "^1.112.0"
},
"dependencies": {
"abort-controller-x": "^0.2.6",
"nice-grpc-common": "^1.1.0",
"node-abort-controller": "^2.0.0"
"abort-controller-x": "^0.4.0",
"nice-grpc-common": "^1.1.0"
}
}
1 change: 0 additions & 1 deletion packages/nice-grpc-client-middleware-retry/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {delay, rethrowAbortError} from 'abort-controller-x';
import {ClientError, ClientMiddleware, Status} from 'nice-grpc-common';
import AbortController from 'node-abort-controller';

/**
* These options are added to `CallOptions` by
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
"@tsconfig/recommended": "^1.0.1"
},
"dependencies": {
"node-abort-controller": "^2.0.0",
"ts-error": "^1.0.6"
}
}
2 changes: 0 additions & 2 deletions packages/nice-grpc-common/src/client/CallOptions.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import {AbortSignal} from 'node-abort-controller';

import {Metadata} from '../Metadata';

/**
Expand Down
2 changes: 0 additions & 2 deletions packages/nice-grpc-common/src/server/CallContext.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import {AbortSignal} from 'node-abort-controller';

import {Metadata} from '../Metadata';

/**
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-common/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@tsconfig/recommended/tsconfig.json",
"compilerOptions": {
"target": "ES2018",
"outDir": "lib",
"sourceMap": true,
"declaration": true,
Expand Down
6 changes: 3 additions & 3 deletions packages/nice-grpc-server-health/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
"author": "Daniel Lytkin <aikoven@deeplay.io>",
"license": "MIT",
"devDependencies": {
"@tsconfig/node12": "^1.0.8",
"@types/node": "^12.0.0",
"@tsconfig/node14": "^1.0.3",
"@types/node": "^14.18.23",
"grpc-tools": "^1.10.0",
"jest-os-detection": "^1.3.1",
"mkdirp": "^1.0.4",
Expand All @@ -34,7 +34,7 @@
"ts-proto": "^1.112.0"
},
"dependencies": {
"abort-controller-x": "^0.2.6",
"abort-controller-x": "^0.4.0",
"nice-grpc": "^1.2.2",
"protobufjs": "^6.11.2",
"typed-emitter": "^2.0.0"
Expand Down
3 changes: 1 addition & 2 deletions packages/nice-grpc-server-health/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@tsconfig/node12/tsconfig.json",
"extends": "@tsconfig/node14/tsconfig.json",
"compilerOptions": {
"target": "ES2018",
"outDir": "lib",
"sourceMap": true,
"declaration": true,
Expand Down
5 changes: 2 additions & 3 deletions packages/nice-grpc-server-middleware-terminator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@
"devDependencies": {
"@tsconfig/recommended": "^1.0.1",
"@types/defer-promise": "^1.0.0",
"abort-controller-x": "^0.2.6",
"abort-controller-x": "^0.4.0",
"defer-promise": "^2.0.1",
"grpc-tools": "^1.10.0",
"nice-grpc": "^1.2.2",
"ts-proto": "^1.112.0"
},
"dependencies": {
"nice-grpc-common": "^1.1.0",
"node-abort-controller": "^2.0.0"
"nice-grpc-common": "^1.1.0"
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import {forever, isAbortError} from 'abort-controller-x';
import defer from 'defer-promise';
import {createChannel, createClient, createServer} from 'nice-grpc';
import AbortController from 'node-abort-controller';
import {TerminatorMiddleware} from '.';
import {TestDefinition} from '../fixtures/test';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import {
ServerMiddlewareCall,
Status,
} from 'nice-grpc-common';
import AbortController from 'node-abort-controller';

export type TerminatorContext = {
abortOnTerminate(): void;
Expand Down
3 changes: 2 additions & 1 deletion packages/nice-grpc-server-reflection/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
"author": "Daniel Lytkin <aikoven@deeplay.io>",
"license": "MIT",
"devDependencies": {
"@tsconfig/node12": "^1.0.8",
"@tsconfig/node14": "^1.0.3",
"@types/node": "^14.18.23",
"cpr": "^3.0.1",
"grpc-tools": "^1.11.0",
"grpc_tools_node_protoc_ts": "^5.1.3",
Expand Down
3 changes: 1 addition & 2 deletions packages/nice-grpc-server-reflection/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@tsconfig/node12/tsconfig.json",
"extends": "@tsconfig/node14/tsconfig.json",
"compilerOptions": {
"target": "ES2018",
"outDir": "lib",
"sourceMap": true,
"declaration": true,
Expand Down
8 changes: 7 additions & 1 deletion packages/nice-grpc-web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ A Browser gRPC client library that is nice to you. Built on top of
[`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal).
- Middleware support via concise API that uses Async Generators.

## Prerequisites

Global
[`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController)
is required. A [polyfill](https://www.npmjs.com/package/abort-controller) is
available for older browsers.

## Installation

```
Expand Down Expand Up @@ -273,7 +280,6 @@ A client call can be cancelled using
[`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal).

```ts
import AbortController from 'node-abort-controller';
import {isAbortError} from 'abort-controller-x';

const abortController = new AbortController();
Expand Down
5 changes: 2 additions & 3 deletions packages/nice-grpc-web/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,8 @@
},
"dependencies": {
"@improbable-eng/grpc-web": "^0.15.0",
"abort-controller-x": "^0.2.6",
"abort-controller-x": "^0.4.0",
"js-base64": "^3.7.2",
"nice-grpc-common": "^1.1.0",
"node-abort-controller": "^2.0.0"
"nice-grpc-common": "^1.1.0"
}
}
1 change: 0 additions & 1 deletion packages/nice-grpc-web/src/__tests__/bidiStreaming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import {createServer, ServerError} from 'nice-grpc';
import AbortController from 'node-abort-controller';
import {createChannel, createClient, Metadata, Status} from '..';
import {TestService} from '../../fixtures/grpc-js/test_grpc_pb';
import {TestRequest, TestResponse} from '../../fixtures/grpc-js/test_pb';
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-web/src/__tests__/clientStreaming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import {createServer, ServerError} from 'nice-grpc';
import AbortController from 'node-abort-controller';
import {createChannel, createClient, Metadata, Status} from '..';
import {TestService} from '../../fixtures/grpc-js/test_grpc_pb';
import {TestRequest, TestResponse} from '../../fixtures/grpc-js/test_pb';
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-web/src/__tests__/serverStreaming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import {createServer, ServerError} from 'nice-grpc';
import AbortController from 'node-abort-controller';
import {createChannel, createClient, Metadata, Status} from '..';
import {TestService} from '../../fixtures/grpc-js/test_grpc_pb';
import {TestRequest, TestResponse} from '../../fixtures/grpc-js/test_pb';
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-web/src/__tests__/unary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import {createServer, ServerError} from 'nice-grpc';
import AbortController from 'node-abort-controller';
import {createChannel, createClient, Metadata, Status} from '..';
import {TestService} from '../../fixtures/grpc-js/test_grpc_pb';
import {TestRequest, TestResponse} from '../../fixtures/grpc-js/test_pb';
Expand Down
2 changes: 1 addition & 1 deletion packages/nice-grpc-web/src/__tests__/utils/grpcwebproxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export async function startProxy(
const childProcess = spawn(
executablePath,
[
`--server_bind_address=localhost`,
`--server_bind_address=0.0.0.0`,
`--server_http_debug_port=${listenPort}`,
`--run_tls_server=false`,
`--backend_addr=${backendAddress}`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
} from 'nice-grpc-common';
import {grpc} from '@improbable-eng/grpc-web';
import {AbortError, isAbortError, throwIfAborted} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {AsyncSink} from '../utils/AsyncSink';
import {
AnyMethodDefinition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
} from 'nice-grpc-common';
import {grpc} from '@improbable-eng/grpc-web';
import {execute, isAbortError, throwIfAborted} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
AnyMethodDefinition,
MethodDefinition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
MethodDescriptor,
Status,
} from 'nice-grpc-common';
import AbortController from 'node-abort-controller';
import {
MethodDefinition,
toGrpcWebMethodDefinition,
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc-web/src/client/createUnaryMethod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
} from 'nice-grpc-common';
import {grpc} from '@improbable-eng/grpc-web';
import {execute} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
MethodDefinition,
toGrpcWebMethodDefinition,
Expand Down
10 changes: 9 additions & 1 deletion packages/nice-grpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,15 @@ A Node.js gRPC library that is nice to you. Built on top of
- Client and server middleware support via concise API that uses Async
Generators.

## Prerequisites

Supports NodeJS 14+. Global `AbortController` is required which is
[available in NodeJS](https://nodejs.org/api/globals.html#class-abortcontroller)
since 15.0.0, NodeJS 14.17+ requires the
[--experimental-abortcontroller](https://nodejs.org/docs/latest-v14.x/api/cli.html#cli_experimental_abortcontroller)
flag. A [polyfill](https://www.npmjs.com/package/abort-controller) is available
for older NodeJS versions.

## Installation

```
Expand Down Expand Up @@ -804,7 +813,6 @@ A client call can be cancelled using
[`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal).

```ts
import AbortController from 'node-abort-controller';
import {isAbortError} from 'abort-controller-x';

const abortController = new AbortController();
Expand Down
8 changes: 4 additions & 4 deletions packages/nice-grpc/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,11 @@
"author": "Daniel Lytkin <aikoven@deeplay.io>",
"license": "MIT",
"devDependencies": {
"@tsconfig/node12": "^1.0.8",
"@tsconfig/node14": "^1.0.3",
"@types/defer-promise": "^1.0.0",
"@types/get-port": "^4.2.0",
"@types/google-protobuf": "^3.7.4",
"@types/node": "^14.18.23",
"defer-promise": "^2.0.1",
"get-port": "^5.1.1",
"google-protobuf": "^3.14.0",
Expand All @@ -47,8 +48,7 @@
},
"dependencies": {
"@grpc/grpc-js": "^1.6.1",
"abort-controller-x": "^0.2.4",
"nice-grpc-common": "^1.1.0",
"node-abort-controller": "^1.2.1"
"abort-controller-x": "^0.4.0",
"nice-grpc-common": "^1.1.0"
}
}
1 change: 0 additions & 1 deletion packages/nice-grpc/src/__tests__/bidiStreaming.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
createChannel,
createClient,
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc/src/__tests__/clientStreaming.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
createChannel,
createClient,
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc/src/__tests__/serverStreaming.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
createChannel,
createClient,
Expand Down
1 change: 0 additions & 1 deletion packages/nice-grpc/src/__tests__/unary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import getPort = require('get-port');
import defer = require('defer-promise');
import {forever, isAbortError} from 'abort-controller-x';
import AbortController from 'node-abort-controller';
import {
createChannel,
createClient,
Expand Down
Loading