Adding changeset for v2

This commit is contained in:
Eric Allam
2023-06-09 14:27:29 +01:00
parent 5a4fa3d2b3
commit 99316df879
10 changed files with 220 additions and 155 deletions
+2 -6
View File
@@ -8,11 +8,7 @@
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": [
"wss",
"webapp",
"integrations",
"emails",
"internal-cli",
"integration-catalog"
"emails"
]
}
}
+8
View File
@@ -0,0 +1,8 @@
---
"@trigger.dev/sdk": major
"@trigger.dev/github": major
"@trigger.dev/slack": major
"@trigger.dev/nextjs": major
---
Preparing packages for V2
+4
View File
@@ -14,6 +14,7 @@
],
"devDependencies": {
"@octokit/webhooks-types": "^6.10.0",
"@octokit/types": "^9.2.3",
"@trigger.dev/tsconfig": "workspace:*",
"@types/node": "18",
"rimraf": "^3.0.2",
@@ -29,5 +30,8 @@
"@trigger.dev/sdk": "workspace:^1.0.0",
"octokit": "^2.0.14",
"zod": "^3.20.2"
},
"engines": {
"node": ">=18"
}
}
+38 -4
View File
@@ -22,6 +22,16 @@ export type GithubIntegrationOptions = {
token?: string;
};
type GithubSources = {
repo: ReturnType<typeof createRepoEventSource>;
org: ReturnType<typeof createOrgEventSource>;
};
type GithubTriggers = {
repo: ReturnType<typeof createRepoTrigger>;
org: ReturnType<typeof createOrgTrigger>;
};
export class Github
implements TriggerIntegration<IntegrationClient<Octokit, typeof tasks>>
{
@@ -47,14 +57,14 @@ export class Github
return { key: "github", title: "GitHub", icon: "github" };
}
get sources() {
get sources(): GithubSources {
return {
repo: this._repoSource,
org: this._orgSource,
};
}
get triggers() {
get triggers(): GithubTriggers {
return {
repo: this._repoTrigger,
org: this._orgTrigger,
@@ -189,7 +199,19 @@ export const events = {
// params.event has to be a union of all the values of the exports events object
type GitHubEvents = (typeof events)[keyof typeof events];
function createRepoTrigger(source: ReturnType<typeof createRepoEventSource>) {
type CreateRepoTriggerReturnType = <
TEventSpecification extends GitHubEvents
>(args: {
event: TEventSpecification;
repo: string;
}) => ExternalSourceTrigger<
TEventSpecification,
ReturnType<typeof createRepoEventSource>
>;
function createRepoTrigger(
source: ReturnType<typeof createRepoEventSource>
): CreateRepoTriggerReturnType {
return <TEventSpecification extends GitHubEvents>({
event,
repo,
@@ -205,7 +227,19 @@ function createRepoTrigger(source: ReturnType<typeof createRepoEventSource>) {
};
}
function createOrgTrigger(source: ReturnType<typeof createOrgEventSource>) {
type CreateOrgTriggerReturnType = <
TEventSpecification extends GitHubEvents
>(args: {
event: TEventSpecification;
org: string;
}) => ExternalSourceTrigger<
TEventSpecification,
ReturnType<typeof createOrgEventSource>
>;
function createOrgTrigger(
source: ReturnType<typeof createOrgEventSource>
): CreateOrgTriggerReturnType {
return <TEventSpecification extends GitHubEvents>({
event,
org,
+10 -2
View File
@@ -30,7 +30,11 @@ function webhookData(data: any): data is WebhookData {
export function createRepoEventSource(
integration: TriggerIntegration<IntegrationClient<Octokit, typeof tasks>>
) {
): ExternalSource<
TriggerIntegration<IntegrationClient<Octokit, typeof tasks>>,
{ repo: string },
"HTTP"
> {
return new ExternalSource("HTTP", {
id: "github.repo",
version: "0.1.1",
@@ -117,7 +121,11 @@ export function createRepoEventSource(
export function createOrgEventSource(
integration: TriggerIntegration<IntegrationClient<Octokit, typeof tasks>>
) {
): ExternalSource<
TriggerIntegration<IntegrationClient<Octokit, typeof tasks>>,
{ org: string },
"HTTP"
> {
return new ExternalSource("HTTP", {
id: "github.org",
version: "0.1.1",
+114 -114
View File
@@ -1,12 +1,23 @@
import { authenticatedTask } from "@trigger.dev/sdk";
import { Octokit } from "octokit";
import type { GetResponseDataTypeFromEndpointMethod } from "@octokit/types";
import type { AuthenticatedTask } from "@trigger.dev/sdk";
export const createIssue = authenticatedTask({
run: async (
params: { title: string; repo: string },
client: InstanceType<typeof Octokit>,
task
) => {
type OctokitClient = InstanceType<typeof Octokit>;
type GithubAuthenticatedTask<
TParams extends Record<string, unknown>,
TFunction extends (...args: any[]) => any
> = AuthenticatedTask<
OctokitClient,
TParams,
GetResponseDataTypeFromEndpointMethod<TFunction>
>;
export const createIssue: GithubAuthenticatedTask<
{ title: string; repo: string },
OctokitClient["rest"]["issues"]["create"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.issues
@@ -33,14 +44,13 @@ export const createIssue = authenticatedTask({
],
};
},
});
};
export const createIssueComment = authenticatedTask({
run: async (
params: { body: string; repo: string; issueNumber: number },
client: InstanceType<typeof Octokit>,
task
) => {
export const createIssueComment: GithubAuthenticatedTask<
{ body: string; repo: string; issueNumber: number },
OctokitClient["rest"]["issues"]["createComment"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.issues
@@ -68,14 +78,13 @@ export const createIssueComment = authenticatedTask({
],
};
},
});
};
export const getRepo = authenticatedTask({
run: async (
params: { repo: string },
client: InstanceType<typeof Octokit>,
task
) => {
export const getRepo: GithubAuthenticatedTask<
{ repo: string },
OctokitClient["rest"]["repos"]["get"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
const response = await client.rest.repos.get({
@@ -97,7 +106,7 @@ export const getRepo = authenticatedTask({
],
};
},
});
};
type ReactionContent =
| "+1"
@@ -109,16 +118,15 @@ type ReactionContent =
| "rocket"
| "eyes";
export const addIssueCommentReaction = authenticatedTask({
run: async (
params: {
repo: string;
commentId: number;
content: ReactionContent;
},
client: InstanceType<typeof Octokit>,
task
) => {
export const addIssueCommentReaction: GithubAuthenticatedTask<
{
repo: string;
commentId: number;
content: ReactionContent;
},
OctokitClient["rest"]["reactions"]["createForIssueComment"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.reactions
@@ -176,20 +184,18 @@ export const addIssueCommentReaction = authenticatedTask({
],
};
},
});
};
export const createIssueCommentWithReaction = authenticatedTask({
run: async (
params: {
body: string;
repo: string;
issueNumber: number;
reaction: ReactionContent;
},
client: InstanceType<typeof Octokit>,
task,
io
) => {
export const createIssueCommentWithReaction: GithubAuthenticatedTask<
{
body: string;
repo: string;
issueNumber: number;
reaction: ReactionContent;
},
OctokitClient["rest"]["issues"]["createComment"]
> = {
run: async (params, client, task, io) => {
const comment = await io.runTask(
`Comment on Issue #${params.issueNumber}`,
createIssueComment.init(params),
@@ -237,20 +243,19 @@ export const createIssueCommentWithReaction = authenticatedTask({
],
};
},
});
};
export const updateWebhook = authenticatedTask({
run: async (
params: {
repo: string;
hookId: number;
url: string;
secret: string;
addEvents?: string[];
},
client: InstanceType<typeof Octokit>,
task
) => {
export const updateWebhook: GithubAuthenticatedTask<
{
repo: string;
hookId: number;
url: string;
secret: string;
addEvents?: string[];
},
OctokitClient["rest"]["repos"]["updateWebhook"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.repos
@@ -283,20 +288,19 @@ export const updateWebhook = authenticatedTask({
],
};
},
});
};
export const updateOrgWebhook = authenticatedTask({
run: async (
params: {
org: string;
hookId: number;
url: string;
secret: string;
addEvents?: string[];
},
client: InstanceType<typeof Octokit>,
task
) => {
export const updateOrgWebhook: GithubAuthenticatedTask<
{
org: string;
hookId: number;
url: string;
secret: string;
addEvents?: string[];
},
OctokitClient["rest"]["orgs"]["updateWebhook"]
> = {
run: async (params, client) => {
return client.rest.orgs
.updateWebhook({
org: params.org,
@@ -326,19 +330,18 @@ export const updateOrgWebhook = authenticatedTask({
],
};
},
});
};
export const createWebhook = authenticatedTask({
run: async (
params: {
repo: string;
url: string;
secret: string;
events: string[];
},
client: InstanceType<typeof Octokit>,
task
) => {
export const createWebhook: GithubAuthenticatedTask<
{
repo: string;
url: string;
secret: string;
events: string[];
},
OctokitClient["rest"]["repos"]["createWebhook"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.repos
@@ -370,19 +373,18 @@ export const createWebhook = authenticatedTask({
],
};
},
});
};
export const createOrgWebhook = authenticatedTask({
run: async (
params: {
org: string;
url: string;
secret: string;
events: string[];
},
client: InstanceType<typeof Octokit>,
task
) => {
export const createOrgWebhook: GithubAuthenticatedTask<
{
org: string;
url: string;
secret: string;
events: string[];
},
OctokitClient["rest"]["orgs"]["createWebhook"]
> = {
run: async (params, client, task) => {
return client.rest.orgs
.createWebhook({
org: params.org,
@@ -412,16 +414,15 @@ export const createOrgWebhook = authenticatedTask({
],
};
},
});
};
export const listWebhooks = authenticatedTask({
run: async (
params: {
repo: string;
},
client: InstanceType<typeof Octokit>,
task
) => {
export const listWebhooks: GithubAuthenticatedTask<
{
repo: string;
},
OctokitClient["rest"]["repos"]["listWebhooks"]
> = {
run: async (params, client) => {
const [owner, repo] = params.repo.split("/");
return client.rest.repos
@@ -443,16 +444,15 @@ export const listWebhooks = authenticatedTask({
],
};
},
});
};
export const listOrgWebhooks = authenticatedTask({
run: async (
params: {
org: string;
},
client: InstanceType<typeof Octokit>,
task
) => {
export const listOrgWebhooks: GithubAuthenticatedTask<
{
org: string;
},
OctokitClient["rest"]["orgs"]["listWebhooks"]
> = {
run: async (params, client) => {
return client.rest.orgs
.listWebhooks({
org: params.org,
@@ -471,7 +471,7 @@ export const listOrgWebhooks = authenticatedTask({
],
};
},
});
};
export const tasks = {
createIssue,
+3
View File
@@ -27,5 +27,8 @@
"@slack/web-api": "^6.8.1",
"@trigger.dev/sdk": "workspace:^1.0.0",
"zod": "^3.20.2"
},
"engines": {
"node": ">=18"
}
}
+10 -9
View File
@@ -1,13 +1,14 @@
import { authenticatedTask } from "@trigger.dev/sdk";
import { clientFactory } from "./client";
import type { AuthenticatedTask } from "@trigger.dev/sdk";
export const postMessage = authenticatedTask({
run: async (
params: { text: string; channel: string },
client: ReturnType<typeof clientFactory>,
task,
io
) => {
type SlackClientType = ReturnType<typeof clientFactory>;
export const postMessage: AuthenticatedTask<
ReturnType<typeof clientFactory>,
{ text: string; channel: string },
Awaited<ReturnType<SlackClientType["chat"]["postMessage"]>>
> = {
run: async (params, client) => {
return client.chat.postMessage({
text: params.text,
channel: params.channel,
@@ -31,4 +32,4 @@ export const postMessage = authenticatedTask({
],
};
},
});
};
+2 -1
View File
@@ -32,7 +32,8 @@
"build:tsup": "tsup"
},
"peerDependencies": {
"@trigger.dev/sdk": "workspace:^1.0.0"
"@trigger.dev/sdk": "workspace:^1.0.0",
"next": "13.3.1"
},
"dependencies": {
"debug": "^4.3.4"
+29 -19
View File
@@ -516,9 +516,10 @@ importers:
integrations/github:
specifiers:
'@octokit/types': ^9.2.3
'@octokit/webhooks': ^10.4.0
'@octokit/webhooks-types': ^6.10.0
'@trigger.dev/sdk': workspace:^1.0.0
'@trigger.dev/sdk': workspace:^2.0.0
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
octokit: ^2.0.14
@@ -531,6 +532,7 @@ importers:
octokit: 2.0.14
zod: 3.20.2
devDependencies:
'@octokit/types': 9.2.3
'@octokit/webhooks-types': 6.10.0
'@trigger.dev/tsconfig': link:../../config-packages/tsconfig
'@types/node': 18.14.0
@@ -540,7 +542,7 @@ importers:
integrations/slack:
specifiers:
'@slack/web-api': ^6.8.1
'@trigger.dev/sdk': workspace:^1.0.0
'@trigger.dev/sdk': workspace:^2.0.0
'@trigger.dev/tsconfig': workspace:*
'@types/node': '18'
rimraf: ^3.0.2
@@ -6089,7 +6091,7 @@ packages:
'@octokit/core': 4.2.0
'@octokit/oauth-app': 4.2.0
'@octokit/plugin-paginate-rest': 6.0.0_@octokit+core@4.2.0
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
'@octokit/webhooks': 10.5.1
transitivePeerDependencies:
- encoding
@@ -6103,7 +6105,7 @@ packages:
'@octokit/auth-oauth-user': 2.1.1
'@octokit/request': 6.2.3
'@octokit/request-error': 3.0.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
'@types/lru-cache': 5.1.1
deprecation: 2.3.1
lru-cache: 6.0.0
@@ -6120,7 +6122,7 @@ packages:
'@octokit/auth-oauth-device': 4.0.4
'@octokit/auth-oauth-user': 2.1.1
'@octokit/request': 6.2.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
'@types/btoa-lite': 1.0.0
btoa-lite: 1.0.0
universal-user-agent: 6.0.0
@@ -6134,7 +6136,7 @@ packages:
dependencies:
'@octokit/oauth-methods': 2.0.5
'@octokit/request': 6.2.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
universal-user-agent: 6.0.0
transitivePeerDependencies:
- encoding
@@ -6147,7 +6149,7 @@ packages:
'@octokit/auth-oauth-device': 4.0.4
'@octokit/oauth-methods': 2.0.5
'@octokit/request': 6.2.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
btoa-lite: 1.0.0
universal-user-agent: 6.0.0
transitivePeerDependencies:
@@ -6158,7 +6160,7 @@ packages:
resolution: {integrity: sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==}
engines: {node: '>= 14'}
dependencies:
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
dev: false
/@octokit/auth-unauthenticated/3.0.4:
@@ -6166,7 +6168,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
'@octokit/request-error': 3.0.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
dev: false
/@octokit/core/4.2.0:
@@ -6177,7 +6179,7 @@ packages:
'@octokit/graphql': 5.0.5
'@octokit/request': 6.2.3
'@octokit/request-error': 3.0.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
before-after-hook: 2.2.3
universal-user-agent: 6.0.0
transitivePeerDependencies:
@@ -6188,7 +6190,7 @@ packages:
resolution: {integrity: sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==}
engines: {node: '>= 14'}
dependencies:
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
is-plain-object: 5.0.0
universal-user-agent: 6.0.0
dev: false
@@ -6198,7 +6200,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
'@octokit/request': 6.2.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
universal-user-agent: 6.0.0
transitivePeerDependencies:
- encoding
@@ -6233,7 +6235,7 @@ packages:
'@octokit/oauth-authorization-url': 5.0.0
'@octokit/request': 6.2.3
'@octokit/request-error': 3.0.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
btoa-lite: 1.0.0
transitivePeerDependencies:
- encoding
@@ -6242,6 +6244,9 @@ packages:
/@octokit/openapi-types/16.0.0:
resolution: {integrity: sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==}
/@octokit/openapi-types/17.2.0:
resolution: {integrity: sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==}
/@octokit/plugin-paginate-rest/6.0.0_@octokit+core@4.2.0:
resolution: {integrity: sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==}
engines: {node: '>= 14'}
@@ -6249,7 +6254,7 @@ packages:
'@octokit/core': '>=4'
dependencies:
'@octokit/core': 4.2.0
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
dev: false
/@octokit/plugin-rest-endpoint-methods/7.0.1_@octokit+core@4.2.0:
@@ -6259,7 +6264,7 @@ packages:
'@octokit/core': '>=3'
dependencies:
'@octokit/core': 4.2.0
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
deprecation: 2.3.1
dev: false
@@ -6270,7 +6275,7 @@ packages:
'@octokit/core': '>=3'
dependencies:
'@octokit/core': 4.2.0
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
bottleneck: 2.19.5
dev: false
@@ -6281,7 +6286,7 @@ packages:
'@octokit/core': ^4.0.0
dependencies:
'@octokit/core': 4.2.0
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
bottleneck: 2.19.5
dev: false
@@ -6289,7 +6294,7 @@ packages:
resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==}
engines: {node: '>= 14'}
dependencies:
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
deprecation: 2.3.1
once: 1.4.0
dev: false
@@ -6300,7 +6305,7 @@ packages:
dependencies:
'@octokit/endpoint': 7.0.5
'@octokit/request-error': 3.0.3
'@octokit/types': 9.0.0
'@octokit/types': 9.2.3
is-plain-object: 5.0.0
node-fetch: 2.6.7
universal-user-agent: 6.0.0
@@ -6313,6 +6318,11 @@ packages:
dependencies:
'@octokit/openapi-types': 16.0.0
/@octokit/types/9.2.3:
resolution: {integrity: sha512-MMeLdHyFIALioycq+LFcA71v0S2xpQUX2cw6pPbHQjaibcHYwLnmK/kMZaWuGfGfjBJZ3wRUq+dOaWsvrPJVvA==}
dependencies:
'@octokit/openapi-types': 17.2.0
/@octokit/webhooks-methods/3.0.2:
resolution: {integrity: sha512-Vlnv5WBscf07tyAvfDbp7pTkMZUwk7z7VwEF32x6HqI+55QRwBTcT+D7DDjZXtad/1dU9E32x0HmtDlF9VIRaQ==}
engines: {node: '>= 14'}