Skip to content
This repository was archived by the owner on Dec 8, 2021. It is now read-only.

Commit a2e03d3

Browse files
JustinBeckwithalexander-fenster
authored andcommitted
fix!: upgrade to grpc-js (#240)
BREAKING CHANGE: switches from grpc to @grpc/grpc-js. @grpc/grpc-js is a functionally equivalent pure-JS implementation, but does have some differences in its API surface. Also, @grpc/grpc-js requires http2 support so only works in Node.js v8.9+.
1 parent fd39eae commit a2e03d3

File tree

4 files changed

+22
-39
lines changed

4 files changed

+22
-39
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
"@google-cloud/common": "^1.0.0",
3535
"@google-cloud/projectify": "^1.0.0",
3636
"@google-cloud/promisify": "^1.0.0",
37+
"@grpc/grpc-js": "^0.4.0",
3738
"@grpc/proto-loader": "^0.5.0",
3839
"duplexify": "^4.0.0",
3940
"extend": "^3.0.2",
40-
"grpc": "^1.15.1",
4141
"is": "^3.2.1",
4242
"retry-request": "^4.0.0"
4343
},

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import * as grpc from 'grpc';
17+
import * as grpc from '@grpc/grpc-js';
1818

1919
import {GrpcOperation} from './operation';
2020
import {GrpcService} from './service';

src/service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import {
3535
import * as duplexify from 'duplexify';
3636
import {EventEmitter} from 'events';
3737
import * as extend from 'extend';
38-
import * as grpc from 'grpc';
38+
import * as grpc from '@grpc/grpc-js';
3939
import * as is from 'is';
4040
import * as r from 'request';
4141
import * as retryRequest from 'retry-request';
@@ -378,7 +378,7 @@ export class GrpcService extends Service {
378378
[
379379
'gl-node/' + process.versions.node,
380380
'gccl/' + config.packageJson.version,
381-
'grpc/' + require('grpc/package.json').version,
381+
'grpc-js/' + require('@grpc/grpc-js/package.json').version,
382382
].join(' ')
383383
);
384384

test/service.ts

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import * as grpcProtoLoader from '@grpc/proto-loader';
2020
import * as assert from 'assert';
2121
import * as duplexify from 'duplexify';
2222
import * as extend from 'extend';
23-
import * as grpc from 'grpc';
23+
import * as grpc from '@grpc/grpc-js';
2424
import * as is from 'is';
2525
import * as proxyquire from 'proxyquire';
2626
import * as retryRequest from 'retry-request';
@@ -149,7 +149,7 @@ describe('GrpcService', () => {
149149
const EXPECTED_API_CLIENT_HEADER = [
150150
'gl-node/' + process.versions.node,
151151
'gccl/' + CONFIG.packageJson.version,
152-
'grpc/' + require('grpc/package.json').version,
152+
'grpc-js/' + require('@grpc/grpc-js/package.json').version,
153153
].join(' ');
154154

155155
const MOCK_GRPC_API: grpcProtoLoader.PackageDefinition = {
@@ -305,44 +305,39 @@ describe('GrpcService', () => {
305305
it('should set insecure credentials if using customEndpoint', () => {
306306
const config = Object.assign({}, CONFIG, {customEndpoint: true});
307307
const grpcService = new GrpcService(config, OPTIONS);
308-
assert.strictEqual(grpcService.grpcCredentials.name, 'createInsecure');
308+
assert.strictEqual(
309+
grpcService.grpcCredentials.constructor.name,
310+
'InsecureChannelCredentialsImpl'
311+
);
309312
});
310313

311314
it('should default grpcMetadata to empty metadata', () => {
312-
GrpcMetadataOverride = class {
313-
add(prop, val) {
314-
this[prop] = val;
315-
}
316-
};
317-
318-
const fakeGrpcMetadata = Object.assign(new GrpcMetadataOverride(), {
315+
const fakeGrpcMetadata = {
319316
'x-goog-api-client': EXPECTED_API_CLIENT_HEADER,
320-
});
317+
};
321318

322319
const config = Object.assign({}, CONFIG);
323320
delete config.grpcMetadata;
324321

325322
const grpcService = new GrpcService(config, OPTIONS);
326-
assert.deepStrictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
323+
assert.deepStrictEqual(
324+
grpcService.grpcMetadata.getMap(),
325+
fakeGrpcMetadata
326+
);
327327
});
328328

329329
it('should create and localize grpcMetadata', () => {
330-
GrpcMetadataOverride = class {
331-
add(prop, val) {
332-
this[prop] = val;
333-
}
334-
};
335-
336330
const fakeGrpcMetadata = Object.assign(
337-
new GrpcMetadataOverride(),
338331
{
339332
'x-goog-api-client': EXPECTED_API_CLIENT_HEADER,
340333
},
341334
CONFIG.grpcMetadata
342335
);
343-
344336
const grpcService = new GrpcService(CONFIG, OPTIONS);
345-
assert.deepStrictEqual(grpcService.grpcMetadata, fakeGrpcMetadata);
337+
assert.deepStrictEqual(
338+
grpcService.grpcMetadata.getMap(),
339+
fakeGrpcMetadata
340+
);
346341
});
347342

348343
it('should localize maxRetries', () => {
@@ -1682,21 +1677,9 @@ describe('GrpcService', () => {
16821677
it('should return grpcCredentials', done => {
16831678
grpcService.getGrpcCredentials_((err, grpcCredentials) => {
16841679
assert.ifError(err);
1685-
1686-
assert.strictEqual(grpcCredentials.name, 'combineChannelCredentials');
1687-
1688-
const createSslArg = grpcCredentials.args[0];
1689-
assert.strictEqual(createSslArg.name, 'createSsl');
1690-
assert.deepStrictEqual(createSslArg.args.length, 0);
1691-
1692-
const createFromGoogleCredentialArg = grpcCredentials.args[1];
1693-
assert.strictEqual(
1694-
createFromGoogleCredentialArg.name,
1695-
'createFromGoogleCredential'
1696-
);
16971680
assert.strictEqual(
1698-
createFromGoogleCredentialArg.args[0],
1699-
AUTH_CLIENT
1681+
grpcCredentials.constructor.name,
1682+
'SecureChannelCredentialsImpl'
17001683
);
17011684
done();
17021685
});

0 commit comments

Comments
 (0)