fixing imports to restore build

All relevant model interfaces now come from @gadget/api
This commit is contained in:
Rob Colbert 2026-04-28 12:47:26 -04:00
parent cc6d3b901a
commit 6ee25642b8
8 changed files with 32 additions and 29 deletions

View File

@ -4,7 +4,7 @@
import { Socket } from "socket.io"; import { Socket } from "socket.io";
import { SocketSession, SocketSessionType } from "./socket-session"; import { SocketSession, SocketSessionType } from "./socket-session";
import { IUser } from "@/models/user"; import { IUser } from "@gadget/api";
export class CodeSession extends SocketSession { export class CodeSession extends SocketSession {
protected type: SocketSessionType = SocketSessionType.Code; protected type: SocketSessionType = SocketSessionType.Code;

View File

@ -29,7 +29,7 @@ export interface CsrfTokenOptions {
import { ApiClientStatus } from "../models/api-client.js"; import { ApiClientStatus } from "../models/api-client.js";
import { CsrfToken, ICsrfToken } from "../models/csrf-token.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 { DtpComponent } from "./component.js";
import { DtpPaginationParameters } from "./pagination-parameters.js"; import { DtpPaginationParameters } from "./pagination-parameters.js";
@ -98,7 +98,7 @@ export abstract class DtpController implements DtpComponent {
} }
const apiClientIdObj = Types.ObjectId.createFromHexString( const apiClientIdObj = Types.ObjectId.createFromHexString(
apiClientId as string apiClientId as string,
); );
const apiClient = await ApiClientService.getById(apiClientIdObj); const apiClient = await ApiClientService.getById(apiClientIdObj);
if (!apiClient) { if (!apiClient) {
@ -155,10 +155,12 @@ export abstract class DtpController implements DtpComponent {
return async ( return async (
req: Request, req: Request,
res: Response, res: Response,
next: NextFunction next: NextFunction,
): Promise<void> => { ): Promise<void> => {
if (!req.user) { if (!req.user) {
res.status(403).json({ success: false, message: "Authentication required" }); res
.status(403)
.json({ success: false, message: "Authentication required" });
return; return;
} }
next(); next();
@ -169,11 +171,13 @@ export abstract class DtpController implements DtpComponent {
return async ( return async (
req: Request, req: Request,
res: Response, res: Response,
next: NextFunction next: NextFunction,
): Promise<void> => { ): Promise<void> => {
const user: IUser | null | undefined = req.user; const user: IUser | null | undefined = req.user;
if (!user || !user.flags.isAdmin) { 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; return;
} }
next(); next();
@ -193,7 +197,7 @@ export abstract class DtpController implements DtpComponent {
"failed to receive a default export class from child controller", "failed to receive a default export class from child controller",
{ {
script: pathObj.name, script: pathObj.name,
} },
); );
throw new Error("Child controller failed to provide a default export"); throw new Error("Child controller failed to provide a default export");
} }
@ -228,7 +232,7 @@ export abstract class DtpController implements DtpComponent {
req: Request, req: Request,
maxPerPage: number, maxPerPage: number,
pageParamName: string = "p", pageParamName: string = "p",
cppParamName: string = "cpp" cppParamName: string = "cpp",
): DtpPaginationParameters { ): DtpPaginationParameters {
const pageParam: string = req.query[pageParamName] const pageParam: string = req.query[pageParamName]
? (req.query[pageParamName] as string) ? (req.query[pageParamName] as string)
@ -255,7 +259,7 @@ export abstract class DtpController implements DtpComponent {
seconds: number, seconds: number,
limit: number, limit: number,
message: string, message: string,
keyGenerator?: (req: Request, res: Response) => string keyGenerator?: (req: Request, res: Response) => string,
): RequestHandler { ): RequestHandler {
return rateLimit({ return rateLimit({
windowMs: seconds * 1000, windowMs: seconds * 1000,
@ -287,7 +291,7 @@ export abstract class DtpController implements DtpComponent {
{ {
dest: path.join(env.https.uploadPath, slug), dest: path.join(env.https.uploadPath, slug),
}, },
options || {} options || {},
); );
return multer(options); return multer(options);
@ -302,7 +306,7 @@ export abstract class DtpController implements DtpComponent {
*/ */
async createCsrfToken( async createCsrfToken(
req: Request, req: Request,
options: CsrfTokenOptions options: CsrfTokenOptions,
): Promise<ICsrfToken> { ): Promise<ICsrfToken> {
const NOW = new Date(); const NOW = new Date();
@ -310,7 +314,7 @@ export abstract class DtpController implements DtpComponent {
{ {
expiresMinutes: 30, expiresMinutes: 30,
}, },
options options,
); );
if (options.expiresMinutes > 120) { if (options.expiresMinutes > 120) {

View File

@ -2,10 +2,9 @@
// Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us> // Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us>
// All Rights Reserved // All Rights Reserved
import { IDroneRegistration } from "@/models/drone-registration"; import { IUser, IDroneRegistration } from "@gadget/api";
import { SocketSession, SocketSessionType } from "./socket-session"; import { SocketSession, SocketSessionType } from "./socket-session";
import { Socket } from "socket.io"; import { Socket } from "socket.io";
import { IUser } from "@/models/user";
export class DroneSession extends SocketSession { export class DroneSession extends SocketSession {
protected type: SocketSessionType = SocketSessionType.Drone; protected type: SocketSessionType = SocketSessionType.Drone;

View File

@ -3,7 +3,7 @@
// All Rights Reserved // All Rights Reserved
import { Socket } from "socket.io"; import { Socket } from "socket.io";
import { IUser } from "@/models/user"; import { IUser } from "@gadget/api";
import { DtpLog } from "./log"; import { DtpLog } from "./log";
export enum SocketSessionType { export enum SocketSessionType {

View File

@ -14,7 +14,7 @@ import EmailVerification, {
EmailVerificationStatus, EmailVerificationStatus,
IEmailVerification, IEmailVerification,
} from "../models/email-verification.js"; } from "../models/email-verification.js";
import { IUser } from "../models/user.js"; import { IUser } from "@gadget/api";
import UserService from "./user.js"; import UserService from "./user.js";
import { DtpService } from "../lib/service.js"; import { DtpService } from "../lib/service.js";
@ -140,7 +140,7 @@ The ${env.site.name} Team
if (verification.status !== EmailVerificationStatus.Pending) { if (verification.status !== EmailVerificationStatus.Pending) {
const error = new Error( const error = new Error(
`Verification code is not pending (status: ${verification.status})` `Verification code is not pending (status: ${verification.status})`,
); );
error.statusCode = 400; error.statusCode = 400;
throw error; throw error;
@ -161,7 +161,7 @@ The ${env.site.name} Team
{ {
status: EmailVerificationStatus.Verified, status: EmailVerificationStatus.Verified,
}, },
{ new: true, populate: this.populateEmailVerification, lean: true } { new: true, populate: this.populateEmailVerification, lean: true },
); );
if (!newVerification) { if (!newVerification) {
const error = new Error("Failed to update verification status"); const error = new Error("Failed to update verification status");

View File

@ -2,14 +2,13 @@
// Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us> // Copyright (C) 2026 Robert Colbert <rob.colbert@openplatform.us>
// All Rights Reserved // 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 { 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 { export interface IDroneDefinition {
hostname: string; hostname: string;
} }

View File

@ -11,7 +11,7 @@ import jwt from "jsonwebtoken";
import dayjs from "dayjs"; import dayjs from "dayjs";
import geoip from "geoip-lite"; 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 { IWebToken, WebToken } from "../models/web-token.js";
import { WebVisit } from "../models/web-visit.js"; import { WebVisit } from "../models/web-visit.js";

View File

@ -8,13 +8,14 @@ import { MongooseBaseQueryOptions, Types } from "mongoose";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
import { filterText } from "dtp-cleantext"; 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 ContactService from "./contact.ts";
import CryptoService from "./crypto.ts"; import CryptoService from "./crypto.ts";
import { DtpPaginationParameters } from "../lib/pagination-parameters.ts";
import { DtpService } from "../lib/service.js"; import { DtpService } from "../lib/service.js";
import { DtpPaginationParameters } from "../lib/pagination-parameters.ts";
export interface IUserUpdate { export interface IUserUpdate {
email: string; email: string;