Skip to content

Commit 42a9d0e

Browse files
authored
Merge pull request #5 from cloudnc/chore/remove-deprecated-grpc-dep
chore(Deps): Remove deprecated grpc dependency, replace with @grpc/grpc-js
2 parents d3eb480 + ad3d065 commit 42a9d0e

File tree

5 files changed

+143
-266
lines changed

5 files changed

+143
-266
lines changed

.github/workflows/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ jobs:
2020
node-version: 16.14.2
2121
- name: Install dependencies
2222
run: yarn --frozen-lockfile --non-interactive --no-progress
23+
- name: Format check
24+
run: yarn format:check
2325
- name: Build Lib
2426
run: yarn build
2527
- name: Release

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@
77
"types": "dist/types.d.ts",
88
"scripts": {
99
"tsc": "tsc",
10-
"build": "rm -rf dist && yarn tsc && cp src/package.json dist && cp README.md dist && cp LICENSE.md dist"
10+
"build": "rm -rf dist && yarn tsc && cp src/package.json dist && cp README.md dist && cp LICENSE.md dist",
11+
"format": "prettier --write src/**/*",
12+
"format:check": "prettier --check src/**/*"
1113
},
1214
"dependencies": {
15+
"@grpc/grpc-js": "1.6.10",
1316
"@improbable-eng/grpc-web": "0.15.0",
1417
"@playwright/test": "1.22.2",
1518
"google-protobuf": "3.14.0",
16-
"grpc": "1.24.11",
1719
"playwright-core": "1.22.2"
1820
},
1921
"devDependencies": {
22+
"prettier": "^2.7.1",
2023
"semantic-release": "19.0.2",
2124
"typescript": "4.7.2"
2225
}

src/base/index.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {status as Status} from 'grpc';
1+
import { status as Status } from "@grpc/grpc-js";
22

33
export interface GrpcErrorResponse {
44
status: Status;
@@ -9,7 +9,7 @@ export interface GrpcSuccessResponse {
99
message: Uint8Array;
1010
}
1111

12-
export type GrpcResponse = GrpcSuccessResponse | GrpcErrorResponse
12+
export type GrpcResponse = GrpcSuccessResponse | GrpcErrorResponse;
1313

1414
function fourBytesLength(sized: { length: number }): Uint8Array {
1515
const arr = new Uint8Array(4); // an Int32 takes 4 bytes
@@ -24,19 +24,16 @@ export class GrpcUnknownStatus extends Error {
2424
}
2525
}
2626

27-
export function grpcResponseToBuffer(
28-
response: GrpcResponse
29-
): Buffer {
30-
27+
export function grpcResponseToBuffer(response: GrpcResponse): Buffer {
3128
// error messages need to have a zero length message field to be considered valid
32-
const message = 'message' in response ? response.message : new Uint8Array();
29+
const message = "message" in response ? response.message : new Uint8Array();
3330

3431
// all success responses have status OK
35-
const status = 'status' in response ? response.status : Status.OK;
32+
const status = "status" in response ? response.status : Status.OK;
3633
// error statuses may the detail field to denote a custom error message, otherwise use the string version of the status
3734
let grpcMessage: string | undefined;
3835

39-
if ('detail' in response) {
36+
if ("detail" in response) {
4037
grpcMessage = response.detail;
4138
} else {
4239
const currentStatus = Object.entries(Status).find(

src/playwright/index.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import {expect, Page} from '@playwright/test';
2-
import {grpc} from '@improbable-eng/grpc-web';
3-
import {GrpcResponse, grpcResponseToBuffer,} from '../base';
4-
import {Request} from 'playwright-core';
1+
import { expect, Page } from "@playwright/test";
2+
import { grpc } from "@improbable-eng/grpc-web";
3+
import { GrpcResponse, grpcResponseToBuffer } from "../base";
4+
import { Request } from "playwright-core";
55

66
export interface UnaryMethodDefinitionish
77
extends grpc.UnaryMethodDefinition<any, any> {
@@ -42,28 +42,29 @@ export function readGrpcRequest(request: Request): Uint8Array | null {
4242
export function mockGrpcUnary(
4343
page: Page,
4444
rpc: UnaryMethodDefinitionish,
45-
response: GrpcResponse | ((request: Uint8Array|null) => GrpcResponse)
45+
response: GrpcResponse | ((request: Uint8Array | null) => GrpcResponse)
4646
): MockedGrpcCall {
4747
const url = `/${rpc.service.serviceName}/${rpc.methodName}`;
4848

4949
// note this wildcard route url base is done in order to match both localhost and deployed service usages.
50-
page.route('**' + url, (route) => {
50+
page.route("**" + url, (route) => {
5151
expect(
5252
route.request().method(),
53-
'ALL gRPC requests should be a POST request'
54-
).toBe('POST');
53+
"ALL gRPC requests should be a POST request"
54+
).toBe("POST");
5555

56-
const grpcResponse = typeof response === 'function'
57-
? response(readGrpcRequest(route.request()))
58-
: response;
56+
const grpcResponse =
57+
typeof response === "function"
58+
? response(readGrpcRequest(route.request()))
59+
: response;
5960

6061
const grpcResponseBody = grpcResponseToBuffer(grpcResponse);
6162

6263
return route.fulfill({
6364
body: grpcResponseBody,
64-
contentType: 'application/grpc-web+proto',
65+
contentType: "application/grpc-web+proto",
6566
headers: {
66-
'Access-Control-Allow-Origin': '*',
67+
"Access-Control-Allow-Origin": "*",
6768
},
6869
});
6970
});

0 commit comments

Comments
 (0)