From 6ee25642b89b64ffa5f9986cde6e662959ee1672 Mon Sep 17 00:00:00 2001 From: Rob Colbert Date: Tue, 28 Apr 2026 12:47:26 -0400 Subject: [PATCH] fixing imports to restore build All relevant model interfaces now come from @gadget/api --- gadget-code/src/lib/code-session.ts | 2 +- gadget-code/src/lib/controller.ts | 28 +++++++++++++++------------ gadget-code/src/lib/drone-session.ts | 3 +-- gadget-code/src/lib/socket-session.ts | 2 +- gadget-code/src/services/contact.ts | 6 +++--- gadget-code/src/services/drone.ts | 11 +++++------ gadget-code/src/services/session.ts | 2 +- gadget-code/src/services/user.ts | 7 ++++--- 8 files changed, 32 insertions(+), 29 deletions(-) diff --git a/gadget-code/src/lib/code-session.ts b/gadget-code/src/lib/code-session.ts index 7bdc46f..cceb22f 100644 --- a/gadget-code/src/lib/code-session.ts +++ b/gadget-code/src/lib/code-session.ts @@ -4,7 +4,7 @@ import { Socket } from "socket.io"; import { SocketSession, SocketSessionType } from "./socket-session"; -import { IUser } from "@/models/user"; +import { IUser } from "@gadget/api"; export class CodeSession extends SocketSession { protected type: SocketSessionType = SocketSessionType.Code; diff --git a/gadget-code/src/lib/controller.ts b/gadget-code/src/lib/controller.ts index 39aec88..fad5969 100644 --- a/gadget-code/src/lib/controller.ts +++ b/gadget-code/src/lib/controller.ts @@ -29,7 +29,7 @@ export interface CsrfTokenOptions { import { ApiClientStatus } from "../models/api-client.js"; import { CsrfToken, ICsrfToken } from "../models/csrf-token.js"; -import { IUser } from "../models/user.js"; +import { IUser } from "@gadget/api"; import { DtpComponent } from "./component.js"; import { DtpPaginationParameters } from "./pagination-parameters.js"; @@ -98,7 +98,7 @@ export abstract class DtpController implements DtpComponent { } const apiClientIdObj = Types.ObjectId.createFromHexString( - apiClientId as string + apiClientId as string, ); const apiClient = await ApiClientService.getById(apiClientIdObj); if (!apiClient) { @@ -155,10 +155,12 @@ export abstract class DtpController implements DtpComponent { return async ( req: Request, res: Response, - next: NextFunction + next: NextFunction, ): Promise => { if (!req.user) { - res.status(403).json({ success: false, message: "Authentication required" }); + res + .status(403) + .json({ success: false, message: "Authentication required" }); return; } next(); @@ -169,11 +171,13 @@ export abstract class DtpController implements DtpComponent { return async ( req: Request, res: Response, - next: NextFunction + next: NextFunction, ): Promise => { const user: IUser | null | undefined = req.user; if (!user || !user.flags.isAdmin) { - res.status(403).json({ success: false, message: "Admin access required" }); + res + .status(403) + .json({ success: false, message: "Admin access required" }); return; } next(); @@ -193,7 +197,7 @@ export abstract class DtpController implements DtpComponent { "failed to receive a default export class from child controller", { script: pathObj.name, - } + }, ); throw new Error("Child controller failed to provide a default export"); } @@ -228,7 +232,7 @@ export abstract class DtpController implements DtpComponent { req: Request, maxPerPage: number, pageParamName: string = "p", - cppParamName: string = "cpp" + cppParamName: string = "cpp", ): DtpPaginationParameters { const pageParam: string = req.query[pageParamName] ? (req.query[pageParamName] as string) @@ -255,7 +259,7 @@ export abstract class DtpController implements DtpComponent { seconds: number, limit: number, message: string, - keyGenerator?: (req: Request, res: Response) => string + keyGenerator?: (req: Request, res: Response) => string, ): RequestHandler { return rateLimit({ windowMs: seconds * 1000, @@ -287,7 +291,7 @@ export abstract class DtpController implements DtpComponent { { dest: path.join(env.https.uploadPath, slug), }, - options || {} + options || {}, ); return multer(options); @@ -302,7 +306,7 @@ export abstract class DtpController implements DtpComponent { */ async createCsrfToken( req: Request, - options: CsrfTokenOptions + options: CsrfTokenOptions, ): Promise { const NOW = new Date(); @@ -310,7 +314,7 @@ export abstract class DtpController implements DtpComponent { { expiresMinutes: 30, }, - options + options, ); if (options.expiresMinutes > 120) { diff --git a/gadget-code/src/lib/drone-session.ts b/gadget-code/src/lib/drone-session.ts index 8e06277..2f2e080 100644 --- a/gadget-code/src/lib/drone-session.ts +++ b/gadget-code/src/lib/drone-session.ts @@ -2,10 +2,9 @@ // Copyright (C) 2026 Robert Colbert // All Rights Reserved -import { IDroneRegistration } from "@/models/drone-registration"; +import { IUser, IDroneRegistration } from "@gadget/api"; import { SocketSession, SocketSessionType } from "./socket-session"; import { Socket } from "socket.io"; -import { IUser } from "@/models/user"; export class DroneSession extends SocketSession { protected type: SocketSessionType = SocketSessionType.Drone; diff --git a/gadget-code/src/lib/socket-session.ts b/gadget-code/src/lib/socket-session.ts index 24231d7..4bf0feb 100644 --- a/gadget-code/src/lib/socket-session.ts +++ b/gadget-code/src/lib/socket-session.ts @@ -3,7 +3,7 @@ // All Rights Reserved import { Socket } from "socket.io"; -import { IUser } from "@/models/user"; +import { IUser } from "@gadget/api"; import { DtpLog } from "./log"; export enum SocketSessionType { diff --git a/gadget-code/src/services/contact.ts b/gadget-code/src/services/contact.ts index 2a6d3bf..188698a 100644 --- a/gadget-code/src/services/contact.ts +++ b/gadget-code/src/services/contact.ts @@ -14,7 +14,7 @@ import EmailVerification, { EmailVerificationStatus, IEmailVerification, } from "../models/email-verification.js"; -import { IUser } from "../models/user.js"; +import { IUser } from "@gadget/api"; import UserService from "./user.js"; import { DtpService } from "../lib/service.js"; @@ -140,7 +140,7 @@ The ${env.site.name} Team if (verification.status !== EmailVerificationStatus.Pending) { const error = new Error( - `Verification code is not pending (status: ${verification.status})` + `Verification code is not pending (status: ${verification.status})`, ); error.statusCode = 400; throw error; @@ -161,7 +161,7 @@ The ${env.site.name} Team { status: EmailVerificationStatus.Verified, }, - { new: true, populate: this.populateEmailVerification, lean: true } + { new: true, populate: this.populateEmailVerification, lean: true }, ); if (!newVerification) { const error = new Error("Failed to update verification status"); diff --git a/gadget-code/src/services/drone.ts b/gadget-code/src/services/drone.ts index 576be90..90bfe7c 100644 --- a/gadget-code/src/services/drone.ts +++ b/gadget-code/src/services/drone.ts @@ -2,14 +2,13 @@ // Copyright (C) 2026 Robert Colbert // All Rights Reserved -import DroneRegistration, { - DroneStatus, - IDroneRegistration, -} from "@/models/drone-registration.js"; -import { DtpService } from "../lib/service.js"; -import { IUser } from "@/models/user.js"; import { PopulateOptions, Types } from "mongoose"; +import { IUser, DroneStatus, IDroneRegistration } from "@gadget/api"; +import DroneRegistration from "@/models/drone-registration.js"; + +import { DtpService } from "../lib/service.js"; + export interface IDroneDefinition { hostname: string; } diff --git a/gadget-code/src/services/session.ts b/gadget-code/src/services/session.ts index d9bcad3..a038d65 100644 --- a/gadget-code/src/services/session.ts +++ b/gadget-code/src/services/session.ts @@ -11,7 +11,7 @@ import jwt from "jsonwebtoken"; import dayjs from "dayjs"; import geoip from "geoip-lite"; -import { IUser } from "../models/user.js"; +import { IUser } from "@gadget/api"; import { IWebToken, WebToken } from "../models/web-token.js"; import { WebVisit } from "../models/web-visit.js"; diff --git a/gadget-code/src/services/user.ts b/gadget-code/src/services/user.ts index 8d31e8e..3676021 100644 --- a/gadget-code/src/services/user.ts +++ b/gadget-code/src/services/user.ts @@ -8,13 +8,14 @@ import { MongooseBaseQueryOptions, Types } from "mongoose"; import { v4 as uuidv4 } from "uuid"; import { filterText } from "dtp-cleantext"; -import User, { IUser } from "../models/user.ts"; +import User from "../models/user.ts"; +import { IUser } from "@gadget/api"; + import ContactService from "./contact.ts"; import CryptoService from "./crypto.ts"; -import { DtpPaginationParameters } from "../lib/pagination-parameters.ts"; - import { DtpService } from "../lib/service.js"; +import { DtpPaginationParameters } from "../lib/pagination-parameters.ts"; export interface IUserUpdate { email: string;