diff --git a/.changeset/lemon-jobs-repair.md b/.changeset/lemon-jobs-repair.md new file mode 100644 index 000000000..c2c42a32d --- /dev/null +++ b/.changeset/lemon-jobs-repair.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/nestjs": patch +--- + +fix: [nestjs integration] fastify HTTP adapter detection now works correctly for response headers diff --git a/.github/ISSUE_TEMPLATE/instrumentation_request.yml b/.github/ISSUE_TEMPLATE/instrumentation_request.yml new file mode 100644 index 000000000..157e226fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/instrumentation_request.yml @@ -0,0 +1,21 @@ +name: OpenTelemetry Auto-Instrumentation Request +description: Suggest an SDK that you'd like to be auto-instrumented in the Run log view +title: "auto-instrumentation: " +labels: ["🌟 enhancement"] +body: + - type: textarea + attributes: + label: What API or SDK would you to have automatic spans for? + description: A clear description of which API or SDK you'd like, and links to it. + validations: + required: true + - type: textarea + attributes: + label: Is there an existing OpenTelemetry auto-instrumentation package? + description: You can search for existing ones – https://opentelemetry.io/ecosystem/registry/?component=instrumentation&language=js + validations: + required: true + - type: textarea + attributes: + label: Additional information + description: Add any other information related to the feature here. If your feature request is related to any issues or discussions, link them here. diff --git a/.vscode/launch.json b/.vscode/launch.json index 25375c084..01f730f61 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -33,7 +33,7 @@ "type": "node-terminal", "request": "launch", "name": "Debug V3 Dev CLI", - "command": "pnpm exec trigger.dev dev", + "command": "pnpm exec trigger.dev dev --log-level debug", "cwd": "${workspaceFolder}/references/v3-catalog", "sourceMaps": true }, diff --git a/apps/webapp/app/models/member.server.ts b/apps/webapp/app/models/member.server.ts index 716590898..bfb51bdf7 100644 --- a/apps/webapp/app/models/member.server.ts +++ b/apps/webapp/app/models/member.server.ts @@ -225,3 +225,36 @@ export async function resendInvite({ inviteId }: { inviteId: string }) { }, }); } + +export async function revokeInvite({ + userId, + slug, + inviteId, +}: { + userId: string; + slug: string; + inviteId: string; +}) { + const org = await prisma.organization.findFirst({ + where: { slug, members: { some: { userId } } }, + }); + + if (!org) { + throw new Error("User does not have access to this organization"); + } + const invite = await prisma.orgMemberInvite.delete({ + where: { + id: inviteId, + }, + select: { + email: true, + organization: true, + }, + }); + + if (!invite) { + throw new Error("Invite not found"); + } + + return { email: invite.email, organization: invite.organization }; +} diff --git a/apps/webapp/app/presenters/v3/SpanPresenter.server.ts b/apps/webapp/app/presenters/v3/SpanPresenter.server.ts index a9759e4d6..6dd1d3ff1 100644 --- a/apps/webapp/app/presenters/v3/SpanPresenter.server.ts +++ b/apps/webapp/app/presenters/v3/SpanPresenter.server.ts @@ -55,7 +55,7 @@ export class SpanPresenter { output: span.output ? JSON.stringify(span.output, null, 2) : undefined, payload: span.payload ? JSON.stringify(span.payload, null, 2) : undefined, properties: span.properties ? JSON.stringify(span.properties, null, 2) : undefined, - showActionBar: (span.properties?.show as any)?.actions === true, + showActionBar: span.show?.actions === true, }, }; } diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx index 80718a213..f6cd7a4fc 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx @@ -31,7 +31,12 @@ import { useUser } from "~/hooks/useUser"; import { getTeamMembersAndInvites, removeTeamMember } from "~/models/member.server"; import { redirectWithSuccessMessage } from "~/models/message.server"; import { requireUserId } from "~/services/session.server"; -import { inviteTeamMemberPath, organizationTeamPath, resendInvitePath } from "~/utils/pathBuilder"; +import { + inviteTeamMemberPath, + organizationTeamPath, + resendInvitePath, + revokeInvitePath, +} from "~/utils/pathBuilder"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); @@ -147,8 +152,9 @@ export default function Page() { Invite sent {} -
+
+
))} @@ -272,7 +278,7 @@ function LeaveTeamModal({ function ResendButton({ invite }: { invite: Invite }) { return ( -
+