wip: replace packages with pure files

This commit is contained in:
Justin Lin committed 2025-04-24 23:20:40 +08:00
1 parent 2d95ca382f
commit 87b8ca5d04
112 files changed
+740 -522

No files matched your search

@@ -1,11 +1,11 @@
import { GameSession, commandSchema } from '@linux-odyssey/game'
import { Command, Session } from '@linux-odyssey/models'
import { GameSession, commandSchema } from '../../../../packages/game'
import { Command, Session } from '../../../../packages/models'
import type { Request, Response } from 'express'
import { pushToSession } from '../socket.js'
import { finishSession } from '../../models/sessionManager.js'
import { asyncHandler } from '../../middleware/error.js'
import { questManager } from '../../models/quest.js'
import { CLIFileExistenceChecker } from '../../containers/cli.js'
import { pushToSession } from '../socket'
import { finishSession } from '../../models/sessionManager'
import { asyncHandler } from '../../middleware/error'
import { questManager } from '../../models/quest'
import { CLIFileExistenceChecker } from '../../containers/cli'
export const newCommand = asyncHandler(async (req: Request, res: Response) => {
const command = commandSchema.parse(req.body)
@@ -4,7 +4,7 @@ import { leaderboard } from '../../models/userManager.js'
export default asyncHandler(async (req: Request, res: Response) => {
const users = await leaderboard()
const response = users.map((user) => ({
const response = users.map((user: any) => ({
username: user.user.username,
completedQuests: user.completedQuests,
score: user.score * 1000,
+1 -1
View File
@@ -3,7 +3,7 @@ import type { Socket } from 'socket.io'
import { Duplex } from 'stream'
import validator from 'validator'
import type { Server as HttpServer } from 'http'
import { ISession, Session } from '@linux-odyssey/models'
import { ISession, Session } from '../../../packages/models'
import { getAndStartContainer, attachContainer } from '../containers/docker.js'
import SessionMiddleware from '../middleware/session.js'
import { genJWT } from '../utils/auth.js'
+3 -3
View File
@@ -1,8 +1,8 @@
import { check } from 'express-validator'
import { isValidUsername, isValidEmail } from '@linux-odyssey/utils'
import { User } from '@linux-odyssey/models'
import { passwordPolicy } from '@linux-odyssey/constants'
import { isValidUsername, isValidEmail } from '../../../../packages/utils'
import { User } from '../../../../packages/models'
import { passwordPolicy } from '../../../../packages/constants'
import { noError } from '../../middleware/validator.js'
const checkUsername = () =>
+1 -1
View File
@@ -1,4 +1,4 @@
import { User } from '@linux-odyssey/models'
import { User } from '../../../packages/models'
import type { Profile } from 'passport'
import type { VerifyCallback } from 'passport-oauth2'
import logger from '../utils/logger.js'
+1 -1
View File
@@ -1,6 +1,6 @@
import passport from 'passport'
import type { Express } from 'express'
import { UserProfile } from '@linux-odyssey/models'
import { UserProfile } from '../../../packages/models'
import passwordStrategy from './passwordStrategy.js'
import jwtStrategy from './jwtStrategy.js'
import googleStrategy from './googleStrategy.js'
+1 -1
View File
@@ -3,7 +3,7 @@ import bcrypt from 'bcrypt'
import { Strategy as LocalStrategy } from 'passport-local'
import type { IVerifyOptions } from 'passport-local'
import type { Express } from 'express'
import { User } from '@linux-odyssey/models'
import { User } from '../../../packages/models'
async function verifyPassword(
username: string,
+4 -4
View File
@@ -1,7 +1,7 @@
import connectDB from '@linux-odyssey/models'
import { removeExpired } from '../containers/expiryChecker.js'
import config from '../config.js'
import logger from '../utils/logger.js'
import connectDB from '../../../packages/models'
import { removeExpired } from '../containers/expiryChecker'
import config from '../config'
import logger from '../utils/logger'
connectDB(config.db)
.then(removeExpired)
+4 -6
View File
@@ -1,14 +1,13 @@
import validator from 'validator'
import dotenv from 'dotenv'
import { fileURLToPath } from 'node:url'
import { config as dotenvConfig } from 'dotenv'
import path from 'path'
import { get } from './utils/env.js'
import { loadOrCreateKeyPair } from './utils/crypto.js'
// Import dotenv and load ../.env
dotenv.config({ path: '../.env' })
dotenvConfig({ path: '../.env' })
if (process.env.NODE_ENV !== 'production') {
dotenv.config({ path: '../.env.dev' })
dotenvConfig({ path: '../.env.dev' })
}
function getTrustProxies(key: string): string[] {
@@ -93,8 +92,7 @@ function createConfig() {
}
function getProjectRoot(): string {
const filename = fileURLToPath(import.meta.url)
const root = path.join(path.dirname(filename), '..', '..')
const root = path.join(path.dirname(__filename), '..', '..')
return root
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { execFile } from 'child_process'
import { buildFileCheckCmd } from '@linux-odyssey/utils'
import type { IFileExistenceChecker, IFileInput } from '@linux-odyssey/game'
import { buildFileCheckCmd } from '../../../packages/utils'
import type { IFileExistenceChecker, IFileInput } from '../../../packages/game'
function sanitizeId(id: string) {
return id.replace(/[^a-zA-Z0-9]/g, '')
+2 -2
View File
@@ -1,6 +1,6 @@
import schedule from 'node-schedule'
import { Session } from '@linux-odyssey/models'
import type { ISession } from '@linux-odyssey/models'
import { Session } from '../../../packages/models'
import type { ISession } from '../../../packages/models'
import type { HydratedDocument } from 'mongoose'
import config from '../config.js'
import { deleteContainer } from './docker.js'
+1 -1
View File
@@ -5,7 +5,7 @@ import YAML from 'yaml'
import swaggerUI from 'swagger-ui-express'
import passport from 'passport'
import * as trpcExpress from '@trpc/server/adapters/express'
import connectDB from '@linux-odyssey/models'
import connectDB from '../../packages/models'
import './auth/passport.js'
import socketServer from './api/socket.js'
+5 -1
View File
@@ -3,7 +3,11 @@ import fs from 'fs/promises'
import path from 'path'
import yaml from 'yaml'
import { questSchema, globalExceptionSchema, IQuest } from '@linux-odyssey/game'
import {
questSchema,
globalExceptionSchema,
IQuest,
} from '../../../packages/game'
import logger from '../utils/logger.js'
class QuestValidationError extends Error {
+3 -3
View File
@@ -1,6 +1,6 @@
import { HydratedDocument } from 'mongoose'
import { Session, UserProfile } from '@linux-odyssey/models'
import type { ISession, IUser } from '@linux-odyssey/models'
import { Session, UserProfile } from '../../../packages/models'
import type { ISession, IUser } from '../../../packages/models'
import { createContainer, deleteContainer } from '../containers/docker.js'
import logger from '../utils/logger.js'
import { questManager } from './quest.js'
@@ -113,7 +113,7 @@ export async function isQuestUnlocked(
if (!quest.requirements) {
return true
}
return quest.requirements.every((requiredQuestId) => {
return quest.requirements.every((requiredQuestId: string) => {
const progress = userProfile.progress.get(requiredQuestId)
return progress && progress.completed
})
+1 -1
View File
@@ -1,6 +1,6 @@
import { Express } from 'express'
import { format } from 'date-fns'
import { User, UserProfile } from '@linux-odyssey/models'
import { User, UserProfile } from '../../../packages/models'
import { hashPassword } from '../utils/auth.js'
export async function createUser(
+2 -2
View File
@@ -1,6 +1,6 @@
import { TRPCError } from '@trpc/server'
import { ISession, Session } from '@linux-odyssey/models'
import { GameSession, VoidFileExistenceChecker } from '@linux-odyssey/game'
import { ISession, Session } from '../../../packages/models'
import { GameSession, VoidFileExistenceChecker } from '../../../packages/game'
import { z } from 'zod'
import { createNewSession, isQuestUnlocked } from '../models/sessionManager.js'
import config from '../config.js'
+1 -1
View File
@@ -1,4 +1,4 @@
import { UserProfile } from '@linux-odyssey/models'
import { UserProfile } from '../../../packages/models'
import { TRPCError } from '@trpc/server'
import { protectedProcedure, router } from '../trpc.js'
+1 -1
View File
@@ -1,4 +1,4 @@
import { User } from '@linux-odyssey/models'
import { User } from '../../../packages/models'
import config from '../config.js'
import { createUser } from '../models/userManager.js'
import logger from './logger.js'