# ---- Build Stage ----
FROM node:23-alpine AS builder

WORKDIR /app

# Install pnpm and necessary build tools (if native modules are used)
RUN apk add --no-cache python3 make g++ pnpm

# Copy package manifests
COPY package.json pnpm-lock.yaml ./

# Install ALL dependencies (including devDependencies needed for build)
RUN pnpm install --frozen-lockfile

# Copy the rest of the source code
COPY . .

# Compile TypeScript
RUN pnpm run build

# Prune devDependencies after build (optional but good practice)
RUN pnpm prune --prod


# ---- Production Stage ----
FROM node:23-alpine

WORKDIR /app

ENV NODE_ENV=production

# Copy necessary files from the builder stage
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./package.json
# Copy other runtime necessities (adjust if needed)
# COPY .env.example ./
# COPY application.yml ./
# COPY plugins ./plugins

# Expose port if needed (though likely not for a Discord bot)
# EXPOSE 3000

# Run the compiled JavaScript application
CMD ["node", "dist/index.js"]
