Fixed all liniting issues, almost all unused imports or type imports

This commit is contained in:
Matt Aitken
2023-02-10 10:23:05 +00:00
parent 137db98176
commit ad26302925
23 changed files with 62 additions and 98 deletions
@@ -1,5 +1,5 @@
import { Form } from "@remix-run/react";
import { TertiaryA, TertiaryButton } from "./primitives/Buttons";
import { TertiaryButton } from "./primitives/Buttons";
import { Body } from "./primitives/text/Body";
export function ImpersonationBanner({
+14 -17
View File
@@ -1,25 +1,22 @@
import {
EyeIcon,
BoltIcon,
BanknotesIcon,
BellAlertIcon,
WrenchScrewdriverIcon,
BeakerIcon,
BoltIcon,
CloudArrowUpIcon,
WrenchScrewdriverIcon,
} from "@heroicons/react/24/outline";
export function LoginPromoPanel() {
return (
<div className="hidden lg:flex flex-col justify-center p-12 max-w-[30vw] h-full bg-slate-950 border-r border-black/20">
<div className="hidden h-full max-w-[30vw] flex-col justify-center border-r border-black/20 bg-slate-950 p-12 lg:flex">
<ul>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<div className="mt-1.5 flex flex-col items-center gap-2">
<WrenchScrewdriverIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
<div className="h-full w-0.5 bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl mb-2">Create</h2>
<h2 className="mb-2 text-2xl font-semibold">Create</h2>
<p className="mb-10 text-white/60">
Write workflows by creating triggers directly in your code. These
can be 3rd-party integrations, custom events or on a schedule.
@@ -27,13 +24,13 @@ export function LoginPromoPanel() {
</div>
</li>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<div className="mt-1.5 flex flex-col items-center gap-2">
<BoltIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
<div className="h-full w-0.5 bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl mb-2">Run</h2>
<h2 className="mb-2 text-2xl font-semibold">Run</h2>
<p className="mb-10 text-white/60">
When your server runs, your workflow will be registered and you
can authenticate with any APIs youre using.
@@ -41,12 +38,12 @@ export function LoginPromoPanel() {
</div>
</li>
<li className="flex gap-2 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<div className="mt-1.5 flex flex-col items-center gap-2">
<BeakerIcon className="h-8 w-8 text-toxic" />
<div className="w-0.5 h-full bg-toxic/50"></div>
<div className="h-full w-0.5 bg-toxic/50"></div>
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl mb-2">Test</h2>
<h2 className="mb-2 text-2xl font-semibold">Test</h2>
<p className="mb-10 text-white/60">
Test your workflow by triggering them manually in your dashboard.
Follow it as it runs step-by-step.
@@ -55,12 +52,12 @@ export function LoginPromoPanel() {
</li>
<li className="flex gap-3 text-white">
<div className="flex flex-col items-center gap-2 mt-1.5">
<div className="mt-1.5 flex flex-col items-center gap-2">
<CloudArrowUpIcon className="ml-0.5 h-7 w-7 text-toxic" />
</div>
<div className="mb-1">
<h2 className="font-semibold text-2xl mb-2">Deploy</h2>
<h2 className="mb-2 text-2xl font-semibold">Deploy</h2>
<p className="mb-10 text-white/60">
Deploy your new workflow as you would any other code commit and
inspect each workflow run in real time.
+3 -20
View File
@@ -21,7 +21,7 @@ export function PaginationControls({
}
return (
<div className="flex items-center justify-between rounded-b-lg border-t border-slate-850 bg-slate-700/20 pl-4 pr-3 py-3 text-slate-400">
<div className="flex items-center justify-between rounded-b-lg border-t border-slate-850 bg-slate-700/20 py-3 pl-4 pr-3 text-slate-400">
<div className="flex flex-1 justify-between sm:hidden">
{currentPage > 1 && (
<Link
@@ -59,7 +59,7 @@ export function PaginationControls({
<LinkDisabled
to={pageUrl(location, currentPage - 1)}
disabled={currentPage === 1}
className="relative inline-flex items-center rounded-l border border-slate-500 bg-slate-700/20 px-2 text-xs font-medium text-slate-400 hover:bg-slate-400 hover:text-slate-800 hover:border-slate-400 focus:z-20 transition"
className="relative inline-flex items-center rounded-l border border-slate-500 bg-slate-700/20 px-2 text-xs font-medium text-slate-400 transition hover:border-slate-400 hover:bg-slate-400 hover:text-slate-800 focus:z-20"
disabledClassName="opacity-30 cursor-default hover:bg-slate-700/20 hover:border-slate-500 hover:!text-slate-400"
>
<span className="sr-only">Previous</span>
@@ -73,7 +73,7 @@ export function PaginationControls({
<LinkDisabled
to={pageUrl(location, currentPage + 1)}
disabled={currentPage === totalPages}
className="relative inline-flex items-center rounded-r border border-slate-500 bg-slate-700/20 px-2 text-xs font-medium text-slate-400 hover:bg-slate-400 hover:text-slate-800 hover:border-slate-400 focus:z-20 transition"
className="relative inline-flex items-center rounded-r border border-slate-500 bg-slate-700/20 px-2 text-xs font-medium text-slate-400 transition hover:border-slate-400 hover:bg-slate-400 hover:text-slate-800 focus:z-20"
disabledClassName="opacity-30 cursor-default hover:bg-slate-700/20 hover:border-slate-500 hover:!text-slate-400"
>
<span className="sr-only">Next</span>
@@ -140,23 +140,6 @@ function PageLinkComponent({
}
}
function NextPreviousButton({
path,
children,
}: {
path: string;
children: any;
}) {
return (
<Link
to={path}
className="relative inline-flex items-center rounded-l-md border border-slate-300 bg-slate-700/20 px-2 py-2 text-xs font-medium text-slate-500 hover:bg-slate-50 focus:z-20"
>
{children}
</Link>
);
}
type PageLink = EllipsisPageLink | SpecificPageLink;
type EllipsisPageLink = {
@@ -8,7 +8,7 @@ import { useCodeMirror } from "@uiw/react-codemirror";
import classNames from "classnames";
import { useRef, useEffect } from "react";
import { getEditorSetup } from "./codeMirrorSetup";
import { darkTheme, lightTheme } from "./codeMirrorTheme";
import { darkTheme } from "./codeMirrorTheme";
export interface JSONEditorProps extends Omit<ReactCodeMirrorProps, "onBlur"> {
content: string;
@@ -1,4 +1,3 @@
import { useCallback, useEffect, useRef, useState } from "react";
import type { UseDataFunctionReturn } from "remix-typedjson";
import type { loader as appLoader } from "~/routes/__app";
import type { loader as orgLoader } from "~/routes/__app/orgs/$organizationSlug";
@@ -1,7 +1,7 @@
import type { APIConnection, Organization } from ".prisma/client";
import { z } from "zod";
import { prisma } from "~/db.server";
import { Workflow } from "./workflow.server";
import type { Workflow } from "./workflow.server";
export { APIConnection };
@@ -1,11 +1,10 @@
import type { Workflow, WorkflowRun } from ".prisma/client";
import { TriggerMetadataSchema } from "@trigger.dev/common-schemas";
import { getIntegration } from "integration-catalog";
import { JSONSchemaFaker } from "json-schema-faker";
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { JSONSchemaFaker } from "json-schema-faker";
import type { Workflow, WorkflowRun } from ".prisma/client";
import { getIntegration } from "integration-catalog";
import { getIntegrations } from "~/models/integrations.server";
import { EventRule } from "~/models/workflow.server";
import { TriggerMetadataSchema } from "@trigger.dev/common-schemas";
import type { EventRule } from "~/models/workflow.server";
export class WorkflowTestPresenter {
#prismaClient: PrismaClient;
+1 -1
View File
@@ -15,7 +15,7 @@ import { getUser } from "./services/session.server";
import { Toaster, toast } from "react-hot-toast";
import type { ToastMessage } from "~/models/message.server";
import { commitSession, getSession } from "~/models/message.server";
import { useEffect, useRef } from "react";
import { useEffect } from "react";
import { withSentry } from "@sentry/remix";
import { env } from "./env.server";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
+2 -2
View File
@@ -51,12 +51,12 @@ export default function App() {
}
function IntercomSurvey() {
const { boot, shutdown, hide, show, update } = useIntercom();
const { boot, shutdown } = useIntercom();
useEffect(() => {
boot({});
return () => shutdown();
}, []);
}, [boot, shutdown]);
return <></>;
}
@@ -3,7 +3,6 @@ import { WorkflowConnections } from "~/components/integrations/WorkflowConnectio
import { PanelInfo } from "~/components/layout/PanelInfo";
import { PanelWarning } from "~/components/layout/PanelWarning";
import { TertiaryLink } from "~/components/primitives/Buttons";
import { Body } from "~/components/primitives/text/Body";
import { SubTitle } from "~/components/primitives/text/SubTitle";
import { Title } from "~/components/primitives/text/Title";
import { useConnectionSlots } from "~/hooks/useConnectionSlots";
@@ -22,8 +22,8 @@ import type { Delay, Scheduled } from "@trigger.dev/common-schemas";
import type { schemas as resendSchemas } from "@trigger.dev/resend/internal";
import classNames from "classnames";
import humanizeDuration from "humanize-duration";
import { ReactNode, useCallback } from "react";
import { useEffect, useState } from "react";
import type { ReactNode } from "react";
import { useCallback, useEffect, useState } from "react";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import invariant from "tiny-invariant";
import type { z } from "zod";
@@ -31,11 +31,7 @@ import CodeBlock from "~/components/code/CodeBlock";
import { BasicConnectButton } from "~/components/integrations/ConnectButton";
import { Panel } from "~/components/layout/Panel";
import { PanelHeader } from "~/components/layout/PanelHeader";
import {
PrimaryButton,
TertiaryA,
TertiaryButton,
} from "~/components/primitives/Buttons";
import { PrimaryButton, TertiaryButton } from "~/components/primitives/Buttons";
import { Body } from "~/components/primitives/text/Body";
import {
Header1,
@@ -92,7 +88,7 @@ export default function Page() {
const workflow = useCurrentWorkflow();
invariant(workflow, "workflow is required");
const [lastRefreshed, setLastRefreshed] = useState(new Date());
const [lastRefreshed] = useState(new Date());
const reload = useCallback(() => {
document.location.reload();
@@ -12,7 +12,6 @@ import { PanelWarning } from "~/components/layout/PanelWarning";
import { PaginationControls } from "~/components/Pagination";
import { TertiaryLink } from "~/components/primitives/Buttons";
import { StyledListBox } from "~/components/primitives/ListBox";
import { Body } from "~/components/primitives/text/Body";
import { Title } from "~/components/primitives/text/Title";
import { RunsTable } from "~/components/runs/RunsTable";
import {
@@ -1,3 +1,7 @@
import { Form } from "@remix-run/react";
import type { ActionArgs } from "@remix-run/server-runtime";
import invariant from "tiny-invariant";
import { z } from "zod";
import { ApiLogoIcon } from "~/components/code/ApiLogoIcon";
import { Panel } from "~/components/layout/Panel";
import {
@@ -10,24 +14,16 @@ import { SubTitle } from "~/components/primitives/text/SubTitle";
import { Title } from "~/components/primitives/text/Title";
import type { CurrentWorkflow } from "~/hooks/useWorkflows";
import { useCurrentWorkflow } from "~/hooks/useWorkflows";
import invariant from "tiny-invariant";
import { Form } from "@remix-run/react";
import type { ActionArgs, LoaderArgs } from "@remix-run/server-runtime";
import { z } from "zod";
import { requireUserId } from "~/services/session.server";
import {
redirectBackWithErrorMessage,
redirectBackWithSuccessMessage,
redirectWithSuccessMessage,
} from "~/models/message.server";
import { requireUserId } from "~/services/session.server";
import { ArchiveWorkflow } from "~/services/workflows/archiveWorkflow.server";
import { DisableWorkflow } from "~/services/workflows/disableWorkflow.server";
import { EnableWorkflow } from "~/services/workflows/enableWorkflow.server";
import { ArchiveWorkflow } from "~/services/workflows/archiveWorkflow.server";
import { UnarchiveWorkflow } from "~/services/workflows/unarchiveWorkflow.server";
import { PanelWarning } from "~/components/layout/PanelWarning";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import { getRuntimeEnvironmentFromRequest } from "~/models/runtimeEnvironment.server";
import { WorkflowTestPresenter } from "~/presenters/testPresenter.server";
const ActionSchema = z.enum(["disable", "enable", "archive", "unarchive"]);
const FormSchema = z.object({
@@ -9,7 +9,6 @@ import { PanelInfo } from "~/components/layout/PanelInfo";
import { PanelWarning } from "~/components/layout/PanelWarning";
import { PrimaryButton, TertiaryLink } from "~/components/primitives/Buttons";
import { Select } from "~/components/primitives/Select";
import { Body } from "~/components/primitives/text/Body";
import { Title } from "~/components/primitives/text/Title";
import { useCurrentOrganization } from "~/hooks/useOrganizations";
import { useCurrentWorkflow } from "~/hooks/useWorkflows";
+3 -4
View File
@@ -1,10 +1,13 @@
/* This example requires Tailwind CSS v2.0+ */
import { Dialog, Transition } from "@headlessui/react";
import { HomeIcon, XMarkIcon } from "@heroicons/react/24/outline";
import { UserCircleIcon } from "@heroicons/react/24/solid";
import { Outlet } from "@remix-run/react";
import type { LoaderArgs } from "@remix-run/server-runtime";
import classNames from "classnames";
import { Fragment, useState } from "react";
import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson";
import type { User } from "~/models/user.server";
import { getUser, requireUserId } from "~/services/session.server";
const navigation = [{ name: "Home", href: "/admin", icon: HomeIcon }];
@@ -189,10 +192,6 @@ export default function Page() {
);
}
import { UserCircleIcon } from "@heroicons/react/24/solid";
import classNames from "classnames";
import type { User } from "~/models/user.server";
function UserProfilePhoto({
user,
className,
+4 -3
View File
@@ -1,9 +1,10 @@
import { Form } from "@remix-run/react";
import type { ActionArgs } from "@remix-run/server-runtime";
import { redirect } from "@remix-run/server-runtime";
import { typedjson, useTypedLoaderData } from "remix-typedjson";
import { adminGetUsers } from "~/models/admin.server";
import { PrimaryButton } from "~/components/primitives/Buttons";
import { ActionArgs, redirect } from "@remix-run/server-runtime";
import { z } from "zod";
import { PrimaryButton } from "~/components/primitives/Buttons";
import { adminGetUsers } from "~/models/admin.server";
import {
commitImpersonationSession,
setImpersonationId,
+7 -7
View File
@@ -10,7 +10,7 @@ import { ArrowLeftIcon } from "@heroicons/react/24/solid";
import { InboxArrowDownIcon } from "@heroicons/react/24/outline";
import { z } from "zod";
import { LoginPromoPanel } from "~/components/LoginPromoPanel";
import { Logo, LogoSvg } from "~/components/Logo";
import { LogoSvg } from "~/components/Logo";
import { Input } from "~/components/primitives/Input";
import { PrimaryButton } from "~/components/primitives/Buttons";
@@ -65,12 +65,12 @@ export default function LoginMagicLinkPage() {
return (
<div className="flex h-screen w-screen justify-between overflow-y-scroll bg-slate-900">
<LoginPromoPanel />
<div className="flex grow items-center justify-center bg-gradient-background h-full w-full p-4">
<div className="flex w-full max-w-xl flex-col justify-between rounded-lg bg-slate-850 shadow-md min-h-[430px]">
<div className="bg-gradient-background flex h-full w-full grow items-center justify-center p-4">
<div className="flex min-h-[430px] w-full max-w-xl flex-col justify-between rounded-lg bg-slate-850 shadow-md">
<Form className="flex h-full flex-grow flex-col" method="post">
<a
href="https://trigger.dev"
className="flex w-full justify-center mt-12"
className="mt-12 flex w-full justify-center"
>
<LogoSvg className="h-10 lg:h-14" />
</a>
@@ -104,7 +104,7 @@ export default function LoginMagicLinkPage() {
</>
) : (
<>
<p className="text-base lg:text-lg text-slate-200">
<p className="text-base text-slate-200 lg:text-lg">
Enter your email address to get started.
</p>
<div className="flex w-full max-w-sm flex-col">
@@ -121,7 +121,7 @@ export default function LoginMagicLinkPage() {
transition.type === "actionSubmission" &&
transition.submission.formData.get("action") === "send" ? (
<PrimaryButton
className="flex mt-2 py-3 w-full !max-w-full"
className="mt-2 flex w-full !max-w-full py-3"
name="action"
value="send"
type="submit"
@@ -130,7 +130,7 @@ export default function LoginMagicLinkPage() {
</PrimaryButton>
) : (
<PrimaryButton
className="flex mt-2 py-3 w-full !max-w-full"
className="mt-2 flex w-full !max-w-full py-3"
name="action"
value="send"
type="submit"
+6 -6
View File
@@ -4,7 +4,7 @@ import { json, redirect } from "@remix-run/node";
import { Form, Link, useLoaderData } from "@remix-run/react";
import { GitHubLoginButton } from "~/components/GitHubLoginButton";
import { LoginPromoPanel } from "~/components/LoginPromoPanel";
import { Logo, LogoSvg } from "~/components/Logo";
import { LogoSvg } from "~/components/Logo";
import { commitSession, setRedirectTo } from "~/services/redirectTo.server";
import { getUserId } from "~/services/session.server";
@@ -46,10 +46,10 @@ export default function LoginPage() {
return (
<div className="flex h-screen w-screen justify-between overflow-y-scroll bg-slate-900">
<LoginPromoPanel />
<div className="flex grow items-center justify-center h-full w-full p-4">
<div className="flex w-full max-w-xl flex-col justify-between rounded-lg bg-slate-850 shadow-md min-h-[430px]">
<div className="flex h-full w-full grow items-center justify-center p-4">
<div className="flex min-h-[430px] w-full max-w-xl flex-col justify-between rounded-lg bg-slate-850 shadow-md">
<Form
className="flex flex-col flex-grow"
className="flex flex-grow flex-col"
action={`/auth/github${
data.redirectTo ? `?redirectTo=${data.redirectTo}` : ""
}`}
@@ -57,11 +57,11 @@ export default function LoginPage() {
>
<a
href="https://trigger.dev"
className="flex w-full justify-center mt-12 px-4"
className="mt-12 flex w-full justify-center px-4"
>
<LogoSvg className="h-14" />
</a>
<div className="flex flex-col flex-grow justify-between items-center text-center pt-8 pb-12 px-10">
<div className="flex flex-grow flex-col items-center justify-between px-10 pt-8 pb-12 text-center">
<p className="text-base lg:text-lg">
Build better workflows with Trigger.dev.
</p>
@@ -1,4 +1,4 @@
import { ActionArgs } from "@remix-run/server-runtime";
import type { ActionArgs } from "@remix-run/server-runtime";
import { redirect } from "remix-typedjson";
import {
clearImpersonationId,
+1 -1
View File
@@ -4,7 +4,7 @@ import type { Organization } from "~/models/organization.server";
import type { RuntimeEnvironment } from "~/models/runtimeEnvironment.server";
import type { User } from "~/models/user.server";
import type { Workflow } from "~/models/workflow.server";
import { WorkflowRun } from "~/models/workflowRun.server";
import type { WorkflowRun } from "~/models/workflowRun.server";
class BehaviouralAnalytics {
client: PostHog | undefined = undefined;
@@ -1,11 +1,8 @@
import type { Authenticator } from "remix-auth";
import { GitHubStrategy } from "remix-auth-github";
import { env } from "~/env.server";
import { createFirstOrganization } from "~/models/organization.server";
import { findOrCreateUser } from "~/models/user.server";
import type { AuthUser } from "./authUser";
import { scheduleWelcomeEmail } from "./email.server";
import { taskQueue } from "./messageBroker.server";
import { postAuthentication } from "./postAuth.server";
const gitHubStrategy = new GitHubStrategy(
@@ -1,4 +1,5 @@
import { createCookieSessionStorage, Session } from "@remix-run/node";
import type { Session } from "@remix-run/node";
import { createCookieSessionStorage } from "@remix-run/node";
import { env } from "~/env.server";
export const impersonationSessionStorage = createCookieSessionStorage({
@@ -1,6 +1,5 @@
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { DisableWorkflow } from "./disableWorkflow.server";
export class UnarchiveWorkflow {
#prismaClient: PrismaClient;