Skip to content

Commit 87b514e

Browse files
authored
feat(typescript): deduplicate Sender type (#397)
1 parent 4e51a55 commit 87b514e

File tree

2 files changed

+85
-1005
lines changed

2 files changed

+85
-1005
lines changed

scripts/generate-types.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,24 @@ const doNotEditThisFileDisclaimer = `
1414
// make edits in scripts/generate-types.js`;
1515
const eventPayloadsVariable = "EventPayloads";
1616

17-
const generatePayloadType = (typeName) => ({
18-
rootTypeName: typeName,
19-
namedKeyPaths: {
17+
const generatePayloadType = (typeName) => {
18+
const namedKeyPaths = {
2019
[`${typeName}.repository`]: "PayloadRepository",
2120
// This prevents a naming colision between the payload of a `installation_repositories` event
2221
// and the `repositories` attribute of a `installation` event
2322
"WebhookPayloadInstallation.repositories":
2423
"WebhookPayloadInstallation_Repositories",
25-
},
26-
});
24+
};
25+
26+
if (typeName !== "WebhookPayloadMarketplacePurchase") {
27+
namedKeyPaths[`${typeName}.sender`] = "PayloadSender";
28+
}
29+
30+
return {
31+
rootTypeName: typeName,
32+
namedKeyPaths,
33+
};
34+
};
2735

2836
const generateEventNameType = (name, actions) => [
2937
name,
@@ -57,6 +65,17 @@ webhooks.forEach(({ name, actions, examples }) => {
5765
});
5866
});
5967

68+
tw.add(
69+
webhooks.flatMap(({ examples }) =>
70+
examples
71+
.map((example) => example.sender)
72+
.filter((sender) => sender !== undefined)
73+
),
74+
{
75+
rootTypeName: "PayloadSender",
76+
}
77+
);
78+
6079
const getWebhookPayloadTypeFromEvent = `
6180
${doNotEditThisFileDisclaimer}
6281

0 commit comments

Comments
 (0)