From 40d743c8c24db6969eedca1d31d2f832b3f4f276 Mon Sep 17 00:00:00 2001 From: igm Date: Mon, 12 Jan 2026 17:12:06 +0800 Subject: [PATCH] Apply linter formatting fixes to emails package Co-Authored-By: Claude Opus 4.5 --- apps/api-server/src/index.ts | 7 ++-- packages/emails/src/client.ts | 2 +- packages/emails/src/emails/index.ts | 35 +++++++++---------- .../src/emails/login-confirmation.test.ts | 2 +- .../emails/src/emails/login-confirmation.ts | 2 +- packages/emails/src/emails/org-invite.test.ts | 6 ++-- packages/emails/src/emails/org-invite.ts | 2 +- .../emails/src/emails/password-reset.test.ts | 2 +- packages/emails/src/emails/password-reset.ts | 2 +- .../emails/src/emails/verification.test.ts | 6 ++-- packages/emails/src/emails/verification.ts | 2 +- packages/emails/src/helpers.ts | 2 +- packages/emails/src/index.ts | 31 ++++++++-------- packages/emails/src/logging-client.test.ts | 14 +++++--- packages/emails/src/logging-client.ts | 4 ++- packages/emails/src/send.test.ts | 2 +- 16 files changed, 60 insertions(+), 61 deletions(-) diff --git a/apps/api-server/src/index.ts b/apps/api-server/src/index.ts index 37056b5..544556b 100644 --- a/apps/api-server/src/index.ts +++ b/apps/api-server/src/index.ts @@ -2,18 +2,15 @@ import type { APIContext } from "./context.js"; import { LoggingHandlerPlugin } from "@orpc/experimental-pino"; import { RPCHandler } from "@orpc/server/fetch"; import { createDb } from "@reviq/db"; -import { - createLoggingEmailClient, - createPostmarkClient, -} from "@reviq/emails"; +import { createLoggingEmailClient, createPostmarkClient } from "@reviq/emails"; import pino from "pino"; import { BASE_URL, DEFAULT_PORT, DEFAULT_RP_NAME, EMAIL_FROM, - POSTMARK_API_KEY, getAllowedOrigins, + POSTMARK_API_KEY, } from "./constants.js"; import { router } from "./router.js"; diff --git a/packages/emails/src/client.ts b/packages/emails/src/client.ts index beb390f..83545ba 100644 --- a/packages/emails/src/client.ts +++ b/packages/emails/src/client.ts @@ -1,9 +1,9 @@ -import { ServerClient } from "postmark"; import type { ClientSendParams, ClientSendResult, EmailClient, } from "./types.js"; +import { ServerClient } from "postmark"; export function createPostmarkClient(apiKey: string): EmailClient { if (!apiKey) { diff --git a/packages/emails/src/emails/index.ts b/packages/emails/src/emails/index.ts index d9245d0..af8b751 100644 --- a/packages/emails/src/emails/index.ts +++ b/packages/emails/src/emails/index.ts @@ -1,39 +1,36 @@ +export type { + LoginConfirmationEmailParams, + SendLoginConfirmationEmailParams, +} from "./login-confirmation.js"; +export type { + OrgInviteEmailParams, + SendOrgInviteEmailParams, +} from "./org-invite.js"; +export type { + PasswordResetEmailParams, + SendPasswordResetEmailParams, +} from "./password-reset.js"; +export type { + SendVerificationEmailParams, + VerificationEmailParams, +} from "./verification.js"; export { buildLoginConfirmationEmailHtml, buildLoginConfirmationEmailText, sendLoginConfirmationEmail, } from "./login-confirmation.js"; -export type { - LoginConfirmationEmailParams, - SendLoginConfirmationEmailParams, -} from "./login-confirmation.js"; - export { buildOrgInviteEmailHtml, buildOrgInviteEmailText, sendOrgInviteEmail, } from "./org-invite.js"; -export type { - OrgInviteEmailParams, - SendOrgInviteEmailParams, -} from "./org-invite.js"; - export { buildPasswordResetEmailHtml, buildPasswordResetEmailText, sendPasswordResetEmail, } from "./password-reset.js"; -export type { - PasswordResetEmailParams, - SendPasswordResetEmailParams, -} from "./password-reset.js"; - export { buildVerificationEmailHtml, buildVerificationEmailText, sendVerificationEmail, } from "./verification.js"; -export type { - SendVerificationEmailParams, - VerificationEmailParams, -} from "./verification.js"; diff --git a/packages/emails/src/emails/login-confirmation.test.ts b/packages/emails/src/emails/login-confirmation.test.ts index b11c89e..7031b29 100644 --- a/packages/emails/src/emails/login-confirmation.test.ts +++ b/packages/emails/src/emails/login-confirmation.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it, mock, beforeEach } from "bun:test"; import type { EmailClient } from "../types.js"; +import { beforeEach, describe, expect, it, mock } from "bun:test"; import { buildLoginConfirmationEmailHtml, buildLoginConfirmationEmailText, diff --git a/packages/emails/src/emails/login-confirmation.ts b/packages/emails/src/emails/login-confirmation.ts index a54d53e..8a26bfd 100644 --- a/packages/emails/src/emails/login-confirmation.ts +++ b/packages/emails/src/emails/login-confirmation.ts @@ -1,3 +1,4 @@ +import type { EmailClient, EmailResult } from "../types.js"; import { buildUrl, formatExpiryMinutes } from "../helpers.js"; import { sendEmail } from "../send.js"; import { @@ -8,7 +9,6 @@ import { headingStyles, paragraphStyles, } from "../styles.js"; -import type { EmailClient, EmailResult } from "../types.js"; export interface LoginConfirmationEmailParams { confirmUrl: string; diff --git a/packages/emails/src/emails/org-invite.test.ts b/packages/emails/src/emails/org-invite.test.ts index 4f1387d..62bc807 100644 --- a/packages/emails/src/emails/org-invite.test.ts +++ b/packages/emails/src/emails/org-invite.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it, mock, beforeEach } from "bun:test"; import type { EmailClient } from "../types.js"; +import { beforeEach, describe, expect, it, mock } from "bun:test"; import { buildOrgInviteEmailHtml, buildOrgInviteEmailText, @@ -93,9 +93,7 @@ describe("buildOrgInviteEmailText", () => { it("should include the invite URL", () => { const text = buildOrgInviteEmailText(params); - expect(text).toContain( - "https://example.com/invite/accept?token=invite123", - ); + expect(text).toContain("https://example.com/invite/accept?token=invite123"); }); it("should include the organization name", () => { diff --git a/packages/emails/src/emails/org-invite.ts b/packages/emails/src/emails/org-invite.ts index fc8cb20..79ad8d3 100644 --- a/packages/emails/src/emails/org-invite.ts +++ b/packages/emails/src/emails/org-invite.ts @@ -1,4 +1,5 @@ import type { OrgRole } from "@reviq/db-schema"; +import type { EmailClient, EmailResult } from "../types.js"; import { buildUrl, escapeHtml, @@ -15,7 +16,6 @@ import { headingStyles, paragraphStyles, } from "../styles.js"; -import type { EmailClient, EmailResult } from "../types.js"; export interface OrgInviteEmailParams { email: string; diff --git a/packages/emails/src/emails/password-reset.test.ts b/packages/emails/src/emails/password-reset.test.ts index 8d16305..4340ac7 100644 --- a/packages/emails/src/emails/password-reset.test.ts +++ b/packages/emails/src/emails/password-reset.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it, mock, beforeEach } from "bun:test"; import type { EmailClient } from "../types.js"; +import { beforeEach, describe, expect, it, mock } from "bun:test"; import { buildPasswordResetEmailHtml, buildPasswordResetEmailText, diff --git a/packages/emails/src/emails/password-reset.ts b/packages/emails/src/emails/password-reset.ts index b5d3fca..dd62a32 100644 --- a/packages/emails/src/emails/password-reset.ts +++ b/packages/emails/src/emails/password-reset.ts @@ -1,3 +1,4 @@ +import type { EmailClient, EmailResult } from "../types.js"; import { buildUrl, formatExpiryHours } from "../helpers.js"; import { sendEmail } from "../send.js"; import { @@ -8,7 +9,6 @@ import { headingStyles, paragraphStyles, } from "../styles.js"; -import type { EmailClient, EmailResult } from "../types.js"; export interface PasswordResetEmailParams { resetUrl: string; diff --git a/packages/emails/src/emails/verification.test.ts b/packages/emails/src/emails/verification.test.ts index 078ba06..95720e2 100644 --- a/packages/emails/src/emails/verification.test.ts +++ b/packages/emails/src/emails/verification.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it, mock, beforeEach } from "bun:test"; import type { EmailClient } from "../types.js"; +import { beforeEach, describe, expect, it, mock } from "bun:test"; import { buildVerificationEmailHtml, buildVerificationEmailText, @@ -14,7 +14,9 @@ describe("buildVerificationEmailHtml", () => { it("should include the verify URL", () => { const html = buildVerificationEmailHtml(params); - expect(html).toContain('href="https://example.com/auth/verify?token=abc123"'); + expect(html).toContain( + 'href="https://example.com/auth/verify?token=abc123"', + ); }); it("should include the expiry time", () => { diff --git a/packages/emails/src/emails/verification.ts b/packages/emails/src/emails/verification.ts index 6468e74..9c87f42 100644 --- a/packages/emails/src/emails/verification.ts +++ b/packages/emails/src/emails/verification.ts @@ -1,3 +1,4 @@ +import type { EmailClient, EmailResult } from "../types.js"; import { buildUrl, formatExpiryHours } from "../helpers.js"; import { sendEmail } from "../send.js"; import { @@ -8,7 +9,6 @@ import { headingStyles, paragraphStyles, } from "../styles.js"; -import type { EmailClient, EmailResult } from "../types.js"; export interface VerificationEmailParams { verifyUrl: string; diff --git a/packages/emails/src/helpers.ts b/packages/emails/src/helpers.ts index 2c3b3bb..77cfdf6 100644 --- a/packages/emails/src/helpers.ts +++ b/packages/emails/src/helpers.ts @@ -1,5 +1,5 @@ -import { DurationFormat } from "@formatjs/intl-durationformat"; import type { OrgRole } from "@reviq/db-schema"; +import { DurationFormat } from "@formatjs/intl-durationformat"; export function buildUrl( baseUrl: string, diff --git a/packages/emails/src/index.ts b/packages/emails/src/index.ts index c00c47f..61df450 100644 --- a/packages/emails/src/index.ts +++ b/packages/emails/src/index.ts @@ -1,21 +1,4 @@ // Client factories -export { createPostmarkClient } from "./client.js"; -export { createLoggingEmailClient } from "./logging-client.js"; - -// Core types -export type { EmailClient, EmailResult } from "./types.js"; - -// Base send function -export { sendEmail } from "./send.js"; -export type { SendEmailParams } from "./send.js"; - -// Email-specific send functions -export { - sendLoginConfirmationEmail, - sendOrgInviteEmail, - sendPasswordResetEmail, - sendVerificationEmail, -} from "./emails/index.js"; // Email param types export type { @@ -24,3 +7,17 @@ export type { SendPasswordResetEmailParams, SendVerificationEmailParams, } from "./emails/index.js"; +export type { SendEmailParams } from "./send.js"; +// Core types +export type { EmailClient, EmailResult } from "./types.js"; +export { createPostmarkClient } from "./client.js"; +// Email-specific send functions +export { + sendLoginConfirmationEmail, + sendOrgInviteEmail, + sendPasswordResetEmail, + sendVerificationEmail, +} from "./emails/index.js"; +export { createLoggingEmailClient } from "./logging-client.js"; +// Base send function +export { sendEmail } from "./send.js"; diff --git a/packages/emails/src/logging-client.test.ts b/packages/emails/src/logging-client.test.ts index 5653199..e6704f6 100644 --- a/packages/emails/src/logging-client.test.ts +++ b/packages/emails/src/logging-client.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it, mock, beforeEach, afterEach } from "bun:test"; +import { afterEach, beforeEach, describe, expect, it, mock } from "bun:test"; import { createLoggingEmailClient } from "./logging-client.js"; describe("createLoggingEmailClient", () => { @@ -30,9 +30,15 @@ describe("createLoggingEmailClient", () => { expect(result.messageId).toMatch(/^dev-mode-\d+$/); expect(logOutput).toContain("=== DEV MODE EMAIL ==="); - expect(logOutput.some((line) => line.includes("From: noreply@example.com"))).toBe(true); - expect(logOutput.some((line) => line.includes("To: user@example.com"))).toBe(true); - expect(logOutput.some((line) => line.includes("Subject: Test Subject"))).toBe(true); + expect( + logOutput.some((line) => line.includes("From: noreply@example.com")), + ).toBe(true); + expect( + logOutput.some((line) => line.includes("To: user@example.com")), + ).toBe(true); + expect( + logOutput.some((line) => line.includes("Subject: Test Subject")), + ).toBe(true); expect(logOutput.some((line) => line.includes("Hello"))).toBe(true); expect(logOutput).toContain("======================"); }); diff --git a/packages/emails/src/logging-client.ts b/packages/emails/src/logging-client.ts index 7aceb4a..ea44433 100644 --- a/packages/emails/src/logging-client.ts +++ b/packages/emails/src/logging-client.ts @@ -17,7 +17,9 @@ export function createLoggingEmailClient(): EmailClient { console.log("======================"); messageIdCounter++; - return Promise.resolve({ messageId: `dev-mode-${messageIdCounter.toString()}` }); + return Promise.resolve({ + messageId: `dev-mode-${messageIdCounter.toString()}`, + }); }, }; } diff --git a/packages/emails/src/send.test.ts b/packages/emails/src/send.test.ts index c2cb8a3..4694018 100644 --- a/packages/emails/src/send.test.ts +++ b/packages/emails/src/send.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it, mock } from "bun:test"; import type { EmailClient } from "./types.js"; +import { describe, expect, it, mock } from "bun:test"; import { sendEmail } from "./send.js"; describe("sendEmail", () => {