import { H3Event, EventHandlerRequest } from "h3"; import { GridFSBucket } from "mongodb"; import mongoose, { Document } from "mongoose"; import { stringifyStream } from "~/lib/functions"; import { IStory } from "~/models/stories"; import { IChapter } from "~/models/stories/chapter"; import getBucket from "../storyHelpers/getBucket"; export default async function ( story: Document<number, {}, IStory> & IStory, event: H3Event<EventHandlerRequest>, cindex?: number, ) { const finObj: any = story.toObject(); const cloned: any & { chapters: IChapter[] } = { ...finObj }; delete finObj.chapters; const bucket = getBucket(); let ds = bucket.openDownloadStreamByName( `/stories/${ cloned.chapters[cindex || event.context.chapterIndex || 0].id }.txt`, ); let stream = await stringifyStream(ds); finObj.currentChapter = { ...cloned.chapters[cindex || event.context.chapterIndex || 0], text: stream .replace(/\n/g, "<br>") .replace(/<br><p>/gm, "<p>") .replace(/<p> <\/p>/gm, "") .replace(/<p><br\s\/><b\s\/><\/p>/gm, ""), }; finObj.totalChapters = story.chapters.length; return finObj; }