Skip to content

Commit fc4ddd3

Browse files
authored
fix(typescript): mark verify parameters as required (#373) thanks @G-Rath
1 parent c352451 commit fc4ddd3

File tree

5 files changed

+17
-8
lines changed

5 files changed

+17
-8
lines changed

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { WebhookEvents } from "./generated/get-webhook-payload-type-from-event";
1818
// U holds the return value of `transform` function in Options
1919
class Webhooks<T extends WebhookEvent = WebhookEvent, U = {}> {
2020
public sign: (payload: string | object) => string;
21-
public verify: (eventPayload?: object, signature?: string) => boolean;
21+
public verify: (eventPayload: object, signature: string) => boolean;
2222
public on: <E extends WebhookEvents>(
2323
event: E | E[],
2424
callback: HandlerFunction<E, U>

src/middleware/verify-and-receive.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ export function verifyAndReceive(
55
state: State,
66
event: WebhookEvent & { signature: string }
77
): any {
8-
const matchesSignature = verify(state.secret, event.payload, event.signature);
8+
// verify will validate that the secret is not undefined
9+
const matchesSignature = verify(
10+
state.secret!,
11+
event.payload,
12+
event.signature
13+
);
914

1015
if (!matchesSignature) {
1116
const error = new Error(

src/verify/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ The `verify` method can be used as a standalone method.
44

55
```js
66
const { verify } = require('@octokit/webhooks')
7-
const matchesSignature = verify(secret, eventData, signature)
7+
const matchesSignature = verify(secret, eventPayload, signature)
88
// true or false
99
```
1010

1111
<table width="100%">
1212
<tr>
1313
<td>
1414
<code>
15-
options.secret
15+
secret
1616
</code>
1717
<em>(String)</em>
1818
</td>
@@ -51,6 +51,6 @@ const matchesSignature = verify(secret, eventData, signature)
5151
</tr>
5252
</table>
5353

54-
Returns `true` or `false`. Throws error if `secret, ``eventPayload` or `signature` not passed.
54+
Returns `true` or `false`. Throws error if `secret`, `eventPayload` or `signature` not passed.
5555

5656
Back to [@octokit/webhooks README](..).

src/verify/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ const getAlgorithm = (signature: string) => {
77
};
88

99
export function verify(
10-
secret?: string,
11-
eventPayload?: object,
12-
signature?: string
10+
secret: string,
11+
eventPayload: object,
12+
signature: string
1313
): boolean {
1414
if (!secret || !eventPayload || !signature) {
1515
throw new TypeError(

test/integration/verify-test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,22 @@ const signatureSHA256 =
99
"sha256=4864d2759938a15468b5df9ade20bf161da9b4f737ea61794142f3484236bda3";
1010

1111
test("verify() without options throws", () => {
12+
// @ts-expect-error
1213
expect(() => verify()).toThrow();
1314
});
1415

1516
test("verify(undefined, eventPayload) without secret throws", () => {
17+
// @ts-expect-error
1618
expect(() => verify.bind(null, undefined, eventPayload)()).toThrow();
1719
});
1820

1921
test("verify(secret) without eventPayload throws", () => {
22+
// @ts-expect-error
2023
expect(() => verify.bind(null, secret)()).toThrow();
2124
});
2225

2326
test("verify(secret, eventPayload) without options.signature throws", () => {
27+
// @ts-expect-error
2428
expect(() => verify.bind(null, secret, eventPayload)()).toThrow();
2529
});
2630

0 commit comments

Comments
 (0)