diff --git a/components/layouts/navbar.vue b/components/layouts/navbar.vue index 7f0bf34..5b3b7fe 100644 --- a/components/layouts/navbar.vue +++ b/components/layouts/navbar.vue @@ -1,5 +1,5 @@ <script lang="ts" setup> - import { log } from "~/lib/server/logger"; + import { log } from "@server/logger"; import { MenuProps } from "ant-design-vue"; const { data, status } = useAuth(); @@ -48,47 +48,55 @@ @click="clickFn" :active-key="cur" > - <a-menu-item key="home"> Home </a-menu-item> - <a-menu-item key="bands"> Bands </a-menu-item> - <a-menu-item key="authors"> Authors </a-menu-item> - <a-menu-item key="forum"> Message Board </a-menu-item> - <a-sub-menu title="My Stuff" v-if="!!data?.user" key="group/my-stuff"> - <a-menu-item key="account"> Account </a-menu-item> - <a-menu-item key="edit-profile"> Edit Profile </a-menu-item> - <a-menu-item key="profile"> View Profile </a-menu-item> - <a-menu-item key="stories"> Stories </a-menu-item> - <a-menu-item key="drafts"> Drafts </a-menu-item> - <a-menu-item key="reviews"> Manage Reviews </a-menu-item> - <a-menu-item key="messages"> Private Messages </a-menu-item> + <a-menu-item key="home"> {{ $tm("navbar.home") }} </a-menu-item> + <a-menu-item key="bands"> {{ $tm("navbar.bands") }} </a-menu-item> + <a-menu-item key="authors"> {{ $tm("navbar.authors") }} </a-menu-item> + <a-menu-item key="forum"> {{ $tm("navbar.forum") }} </a-menu-item> + <a-sub-menu + :title="$tm('navbar.profile.myStuff') as any" + v-if="!!data?.user" + key="group/my-stuff" + > + <a-menu-item key="account"> {{ $tm("navbar.account") }} </a-menu-item> + <a-menu-item key="edit-profile"> + {{ $tm("navbar.editProfile") }} + </a-menu-item> + <a-menu-item key="profile"> {{ $tm("navbar.profile") }} </a-menu-item> + <a-menu-item key="stories"> {{ $tm("navbar.account") }} </a-menu-item> + <a-menu-item key="drafts"> {{ $tm("navbar.account") }} </a-menu-item> + <a-menu-item key="reviews"> {{ $tm("navbar.reviews") }} </a-menu-item> + <a-menu-item key="messages"> {{ $tm("navbar.messages") }} </a-menu-item> </a-sub-menu> <a-menu-item key="admin" v-if="data?.user?.profile.isAdmin || false"> - Admin + {{ $tm("navbar.admin") }} + </a-menu-item> + <a-menu-item key="logout" v-if="!!data?.user"> + {{ $tm("navbar.logout") }} </a-menu-item> - <a-menu-item key="logout" v-if="!!data?.user"> Logout </a-menu-item> </a-menu> <div> <a-button v-if="data?.user" type="primary" - tooltip="Post a new Story" + :tooltip="$tm('newStoryButton')" @click="() => navigateTo('/new-story')" > <!-- <template #icon> </template> --> <icon istyle="regular" name="file-plus" /> - <span style="margin-left: 0.5em"> Post a new Story </span> + <span style="margin-left: 0.5em"> {{ $tm("newStoryButton") }} </span> </a-button> </div> <div class="acbut" v-if="!data"> <a-button size="large" @click="() => navigateTo('/login')"> - Log In + {{ $tm("navbar.login") }} </a-button> <a-button size="large" type="primary" @click="() => navigateTo('/register')" > - Register + {{ $tm("navbar.register") }} </a-button> </div> </div> diff --git a/components/layouts/sidebar.vue b/components/layouts/sidebar.vue index 718aad0..d0a1215 100644 --- a/components/layouts/sidebar.vue +++ b/components/layouts/sidebar.vue @@ -5,7 +5,7 @@ } from "ant-design-vue/es/menu/src/interface"; import { ItemType, theme } from "ant-design-vue"; import Icon from "../icon.vue"; - import { ISidebarItem } from "~/models/sidebarEntry"; + import { ISidebarItem } from "@models/sidebarEntry"; import { AButton, NuxtLink } from "#components"; const loaded = inject<Ref<boolean>>("loaded"); @@ -16,6 +16,7 @@ const selState = ref<string>(""); const { data: injecto } = await useApiFetch<ISidebarItem[]>("/sidebar"); + const { tm, rt } = useI18n(); let items: Ref<ItemType[]> = ref([ { @@ -57,7 +58,9 @@ } as SubMenuType, { key: "fun-features", - label: h("span", { class: "smallcaps" }, ["Fun features"]), + label: h("span", { class: "smallcaps" }, [ + rt(tm<string>("sidebar.features")), + ]), icon: h(Icon, { istyle: "regular", name: "sparkles", diff --git a/components/listings/stories.vue b/components/listings/stories.vue index 95c2280..3a7da0f 100644 --- a/components/listings/stories.vue +++ b/components/listings/stories.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> import singleStory from "~/components/listings/singleStory.vue"; - import { IStory } from "~/models/stories"; + import { IStory } from "@models/stories"; const route = useRoute(); let curPage = ref(route.query.page || 1); const props = defineProps<{ prefix?: string; items?: IStory[] }>(); @@ -25,32 +25,39 @@ // page // } // }) - // let {data: data } = await useApiFetch(`${props.prefix}/stories`, { - // query: { - // page: curPage - // } - // }) - // rdata.value = data; + let { data: data } = await useApiFetch(`${props.prefix}`, { + query: { + page: curPage, + }, + }); + rdata.value = data.value; }; </script> <template> - <a-list - :pagination="{ + <div> + <a-list :data-source="rdata.stories" item-layout="vertical"> + <template #renderItem="{ item }"> + <!-- {{ item.title }} --> + <single-story :story="item" /> + </template> + </a-list> + <a-pagination + :default-page-size="20" + :total="rdata.total" + :default-current="curPage as number" + @change="pagiChange" + :show-quick-jumper="true" + :show-size-changer="false" + /> + </div> + <!-- { defaultPageSize: 20, total: rdata.total, defaultCurrent: curPage as number, - // onChange: pagiChange, - hideOnSinglePage: true, + onChange: pagiChange, + // hideOnSinglePage: true, showSizeChanger: false, - }" - :data-source="rdata.stories" - item-layout="vertical" - > - <template #renderItem="{ item }"> - <!-- {{ item.title }} --> - <single-story :story="item" /> - </template> - </a-list> + }--> </template> <style scoped> .ant-list-items > * + * { diff --git a/components/profile/adminPanel.vue b/components/profile/adminPanel.vue index 1a3a123..d6aca42 100644 --- a/components/profile/adminPanel.vue +++ b/components/profile/adminPanel.vue @@ -1,6 +1,6 @@ <script lang="ts" setup> import { message } from "ant-design-vue"; - import { IUser } from "~/models/user"; + import { IUser } from "@models/user"; const [messageApi, contextHolder] = message.useMessage(); const props = defineProps<{ user: IUser | null }>(); diff --git a/components/reviews/forChapter.vue b/components/reviews/forChapter.vue index ee26639..b7f40be 100644 --- a/components/reviews/forChapter.vue +++ b/components/reviews/forChapter.vue @@ -1,7 +1,7 @@ <script lang="ts" setup> - import { IReview } from "~/models/stories/review"; + import { IReview } from "@models/stories/review"; import singleReview from "./singleReview.vue"; - import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; + import { SingleChapterResult } from "@client/types/slightlyDifferentStory"; const props = defineProps<{ endpoint: string }>(); const story = inject<SingleChapterResult>("story"); const { data: reviews } = (await useApiFetch<IReview[]>( diff --git a/components/reviews/singleReview.vue b/components/reviews/singleReview.vue index 342f65d..9e0b704 100644 --- a/components/reviews/singleReview.vue +++ b/components/reviews/singleReview.vue @@ -1,8 +1,8 @@ <script lang="ts" setup> import { Form as veeForm, Field as veeField, useForm } from "vee-validate"; - import { IReview } from "~/models/stories/review"; - import { comment } from "~/lib/client/editorConfig"; - import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; + import { IReview } from "@models/stories/review"; + import { comment } from "@client/editorConfig"; + import { SingleChapterResult } from "@client/types/slightlyDifferentStory"; const props = defineProps<{ review: IReview; story: SingleChapterResult }>(); const review = toRef(props.review); const story = toRef(props.story); @@ -75,11 +75,16 @@ </template> <template #author> <b style="display: flex"> - <span v-if="review.replyingTo == null">Review by </span> - <span v-else> Response from </span> - <nuxt-link :to="`/user/${review.author._id}`"> - {{ review.author.username }} - </nuxt-link> + <i18n-t keypath="reviews.reviewFrom" v-if="review.replyingTo == null"> + <nuxt-link :to="`/user/${review.author._id}`"> + {{ review.author.username }} + </nuxt-link> + </i18n-t> + <i18n-t keypath="reviews.responseFrom" v-else> + <nuxt-link :to="`/user/${review.author._id}`"> + {{ review.author.username }} + </nuxt-link> + </i18n-t> </b> </template> <template #content> diff --git a/components/story/atoms/bands.vue b/components/story/atoms/bands.vue index ba15c9c..6c01641 100644 --- a/components/story/atoms/bands.vue +++ b/components/story/atoms/bands.vue @@ -1,9 +1,9 @@ <script setup lang="ts"> import { DefaultOptionType } from "ant-design-vue/es/select"; import { RuleExpression, useField } from "vee-validate"; - import { cs } from "~/lib/client/storyFormSchema"; - import { IBand } from "~/models/band"; - import { log } from "~/lib/server/logger"; + import { cs } from "@client/storyFormSchema"; + import { IBand } from "@models/band"; + import { log } from "@server/logger"; import iconEl from "../icon.vue"; diff --git a/components/story/atoms/characters.vue b/components/story/atoms/characters.vue index be0ad80..95e1fb0 100644 --- a/components/story/atoms/characters.vue +++ b/components/story/atoms/characters.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> import { RuleExpression, useField } from "vee-validate"; - import { cs } from "~/lib/client/storyFormSchema"; - import { IBand } from "~/models/band"; + import { cs } from "@client/storyFormSchema"; + import { IBand } from "@models/band"; const fname = inject<string>("curName"); const { sb: selectedBands } = inject<any>("selectedBands"); const allBands = inject<Ref<IBand[]>>("bandlist"); diff --git a/components/story/atoms/pairings.vue b/components/story/atoms/pairings.vue index 7ad9f98..72e1c68 100644 --- a/components/story/atoms/pairings.vue +++ b/components/story/atoms/pairings.vue @@ -1,6 +1,6 @@ <script lang="ts" setup> import { Field, useFieldArray } from "vee-validate"; - import { IBand } from "~/models/band"; + import { IBand } from "@models/band"; const { sb: selectedBands } = inject<any>("selectedBands"); const allBands = inject<Ref<IBand[]>>("bandlist"); diff --git a/components/story/create/singleChapter.vue b/components/story/create/singleChapter.vue index ae05707..95741f2 100644 --- a/components/story/create/singleChapter.vue +++ b/components/story/create/singleChapter.vue @@ -7,9 +7,9 @@ ErrorMessage, } from "vee-validate"; import { NamePath } from "ant-design-vue/es/form/interface"; - import { FormChapter } from "~/lib/client/types/form/story"; + import { FormChapter } from "@client/types/form/story"; - import { story, bare } from "~/lib/client/editorConfig"; + import { story, bare } from "@client/editorConfig"; import elBands from "../atoms/bands.vue"; import genre from "../atoms/genre.vue"; import elCharacters from "../atoms/characters.vue"; diff --git a/components/story/create/storyform.vue b/components/story/create/storyform.vue index 0fc67ca..8499496 100644 --- a/components/story/create/storyform.vue +++ b/components/story/create/storyform.vue @@ -9,13 +9,13 @@ FieldEntry, useForm, } from "vee-validate"; - import { storySchema } from "~/lib/client/storyFormSchema"; + import { storySchema } from "@client/storyFormSchema"; import { FormChapter, FormStory, defaultChapter, - } from "~/lib/client/types/form/story"; - import { autoEdit, autoSave } from "~/lib/client/utils"; + } from "@client/types/form/story"; + import { autoEdit, autoSave } from "@client/utils"; import findUser from "~/components/findUser.vue"; diff --git a/components/story/create/uploadOrPaste.vue b/components/story/create/uploadOrPaste.vue index bdd3b4e..3b65240 100644 --- a/components/story/create/uploadOrPaste.vue +++ b/components/story/create/uploadOrPaste.vue @@ -6,7 +6,7 @@ useField, ErrorMessage, } from "vee-validate"; - import { story } from "~/lib/client/editorConfig"; + import { story } from "@client/editorConfig"; import icon from "~/components/icon.vue"; import baseEditor from "../../baseEditor.vue"; const fname = inject<string>("curName"); diff --git a/components/story/view/chapterPicker.vue b/components/story/view/chapterPicker.vue index 4657804..d7dbd8a 100644 --- a/components/story/view/chapterPicker.vue +++ b/components/story/view/chapterPicker.vue @@ -1,6 +1,6 @@ <script lang="ts" setup> import { LabeledValue } from "ant-design-vue/es/select"; - import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; + import { SingleChapterResult } from "@client/types/slightlyDifferentStory"; const { params } = useRoute(); const cidx = parseInt(params.cidx as string); diff --git a/components/story/view/storyInfo.vue b/components/story/view/storyInfo.vue index 9e3ca86..402a3c0 100644 --- a/components/story/view/storyInfo.vue +++ b/components/story/view/storyInfo.vue @@ -1,6 +1,6 @@ <script lang="ts" setup> import { format } from "date-fns"; - import { type SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; + import { type SingleChapterResult } from "@client/types/slightlyDifferentStory"; import icon from "~/components/icon.vue"; const story = inject<SingleChapterResult | null>("story"); console.log("storyyy--info", story); diff --git a/layouts/default.vue b/layouts/default.vue index 67d7ac6..0a8f542 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -4,7 +4,7 @@ import cfooter from "~/components/layouts/footer.vue"; import sidebarThing from "~/components/layouts/sidebar.vue"; import icon from "~/components/icon.vue"; - import { ISidebarItem } from "~/models/sidebarEntry"; + import { ISidebarItem } from "@models/sidebarEntry"; const { useToken } = theme; const { token } = useToken(); diff --git a/lib/client/middleware.ts b/lib/client/middleware.ts index ce74c6f..de96098 100644 --- a/lib/client/middleware.ts +++ b/lib/client/middleware.ts @@ -1,7 +1,7 @@ import { SingleChapterResult } from "./types/slightlyDifferentStory"; -import { IChapter } from "~/models/stories/chapter"; -import { IStory } from "~/models/stories"; -import { messages } from "~/lib/server/constants"; +import { IChapter } from "@models/stories/chapter"; +import { IStory } from "@models/stories"; +import { messages } from "@server/constants"; export const storyMiddleware = defineNuxtRouteMiddleware(async (to, from) => { const { getSession } = useAuth(); diff --git a/lib/client/types/slightlyDifferentStory.ts b/lib/client/types/slightlyDifferentStory.ts index c1891d0..024fa2d 100644 --- a/lib/client/types/slightlyDifferentStory.ts +++ b/lib/client/types/slightlyDifferentStory.ts @@ -1,5 +1,5 @@ -import { type IStory } from "~/models/stories"; -import { IChapter } from "~/models/stories/chapter"; +import { type IStory } from "@models/stories"; +import { IChapter } from "@models/stories/chapter"; export type SingleChapterResult = Omit<IStory, "chapters"> & { currentChapter: IChapter & { text: string }; diff --git a/lib/client/utils.ts b/lib/client/utils.ts index 0b56bbe..e8f9178 100644 --- a/lib/client/utils.ts +++ b/lib/client/utils.ts @@ -1,6 +1,6 @@ import { debounce } from "lodash-es"; import { message } from "ant-design-vue"; -import { IStory } from "~/models/stories"; +import { IStory } from "@models/stories"; import { useAutoSaveStore } from "~/stores/autosaveStore"; export const autoSave = debounce(async (values: any) => { diff --git a/lib/functions.ts b/lib/functions.ts index c956a97..6171873 100644 --- a/lib/functions.ts +++ b/lib/functions.ts @@ -4,7 +4,7 @@ import { resolve } from "path"; // import iconv from "iconv-lite"; import { GridFSBucketReadStream } from "mongodb"; import { stripHtml } from "string-strip-html"; -import { IStory } from "~/models/stories"; +import { IStory } from "@models/stories"; import { ficsHidden } from "./server/ficmas"; import { PreMiddlewareFunction, Query } from "mongoose"; diff --git a/lib/server/dbHelpers/chapterTransformer.ts b/lib/server/dbHelpers/chapterTransformer.ts index c1361fc..89f4328 100644 --- a/lib/server/dbHelpers/chapterTransformer.ts +++ b/lib/server/dbHelpers/chapterTransformer.ts @@ -1,11 +1,11 @@ import { H3Event, EventHandlerRequest } from "h3"; import { GridFSBucket } from "mongodb"; import mongoose, { Document } from "mongoose"; -import { norm, stringifyStream } from "~/lib/functions"; -import { IStory } from "~/models/stories"; -import { IChapter } from "~/models/stories/chapter"; +import { norm, stringifyStream } from "@functions"; +import { IStory } from "@models/stories"; +import { IChapter } from "@models/stories/chapter"; import getBucket from "../storyHelpers/getBucket"; -import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; +import { SingleChapterResult } from "@client/types/slightlyDifferentStory"; export default async function ( story: Document<number, {}, IStory> & IStory, diff --git a/lib/server/dbHelpers/listQuerier.ts b/lib/server/dbHelpers/listQuerier.ts index 20046b6..76c06bb 100644 --- a/lib/server/dbHelpers/listQuerier.ts +++ b/lib/server/dbHelpers/listQuerier.ts @@ -1,18 +1,18 @@ -import { Band } from "~/models/band"; -import { Challenge } from "~/models/challenges/gen"; -import { IStory, Story } from "~/models/stories"; +import { Band } from "@models/band"; +import { Challenge } from "@models/challenges/gen"; +import { IStory, Story } from "@models/stories"; import { log } from "../logger"; -import { H3Event, EventHandlerRequest } from "h3"; +import { H3Event, EventHandlerRequest, H3EventContext } from "h3"; export default async function ( - query, - context, + query: any, + context: H3EventContext, ev: H3Event<EventHandlerRequest>, limit: number = 0, - sort?, + sort?: any, ): Promise<{ stories: IStory[]; total: number }> { const q = getQuery(ev); - let skipAmt = limit * (parseInt((q.page as string) || "1") - 1) - 1; + let skipAmt = limit * (parseInt((q.page as string) || "1") - 1); if (skipAmt < 0) skipAmt = 0; query["chapters.hidden"] = false; if (context.currentUser) { @@ -22,7 +22,7 @@ export default async function ( query["author"]["$nin"] = context.currentUser.hiddenAuthors; } query["ficmas"] = { - $nin: context.ficmasarray_raw.map((a) => a._id), + $nin: context.ficmasarray_raw!.map((a) => a._id), }; let stories = await Story.find(query, null) .collation({ locale: "en" }) diff --git a/lib/server/dbHelpers/storyQuerier.ts b/lib/server/dbHelpers/storyQuerier.ts index 138e2c8..a0b7f39 100644 --- a/lib/server/dbHelpers/storyQuerier.ts +++ b/lib/server/dbHelpers/storyQuerier.ts @@ -1,8 +1,9 @@ import type { H3Event, EventHandlerRequest } from "h3"; -import { Challenge } from "~/models/challenges/gen"; -import { Story } from "~/models/stories"; +import { Challenge } from "@models/challenges/gen"; +import { Story } from "@models/stories"; +import isIdNan from "@server/middlewareButNotReally/isIdNan"; export default async function (ev: H3Event<EventHandlerRequest>) { - const id = parseInt(getRouterParam(ev, "id") as string); + const id = isIdNan(ev); const chapterIndex = ev.context.chapterIndex; if (isNaN(id) || isNaN(chapterIndex)) throw createError({ diff --git a/lib/server/middlewareButNotReally/storyCheck.ts b/lib/server/middlewareButNotReally/storyCheck.ts index cf1448c..238ae37 100644 --- a/lib/server/middlewareButNotReally/storyCheck.ts +++ b/lib/server/middlewareButNotReally/storyCheck.ts @@ -1,6 +1,6 @@ import type { H3Event, EventHandlerRequest } from "h3"; -import { isFicmasHidden } from "~/lib/functions"; -import { IStory } from "~/models/stories"; +import { isFicmasHidden } from "@functions"; +import { IStory } from "@models/stories"; import { messages } from "../constants"; export default async function ( event: H3Event<EventHandlerRequest>, diff --git a/lib/server/middlewareButNotReally/storyPrivileges.ts b/lib/server/middlewareButNotReally/storyPrivileges.ts index 75dcfef..40ae7df 100644 --- a/lib/server/middlewareButNotReally/storyPrivileges.ts +++ b/lib/server/middlewareButNotReally/storyPrivileges.ts @@ -1,7 +1,7 @@ import type { H3Event, EventHandlerRequest } from "h3"; -import { IStory } from "~/models/stories"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { IDraft } from "~/models/stories/draft"; +import { IStory } from "@models/stories"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { IDraft } from "@models/stories/draft"; export function canDelete(event: H3Event<EventHandlerRequest>, story: IStory) { isLoggedIn(event); return ( @@ -9,6 +9,13 @@ export function canDelete(event: H3Event<EventHandlerRequest>, story: IStory) { story.author._id === event.context.currentUser?._id ); } +export function canDeleteDraft( + event: H3Event<EventHandlerRequest>, + story: IDraft, +) { + isLoggedIn(event); + return story.author === event.context.currentUser?._id; +} export function canModify( event: H3Event<EventHandlerRequest>, story: IStory | IDraft, diff --git a/lib/server/plugnplay.ts b/lib/server/plugnplay.ts index f1c20de..db81fd1 100644 --- a/lib/server/plugnplay.ts +++ b/lib/server/plugnplay.ts @@ -1,7 +1,7 @@ import mongoose from "mongoose"; -import { Biffno } from "~/models/challenges/biffno"; -import { Ficmas } from "~/models/challenges/ficmas"; -import { Challenge } from "~/models/challenges/gen"; +import { Biffno } from "@models/challenges/biffno"; +import { Ficmas } from "@models/challenges/ficmas"; +import { Challenge } from "@models/challenges/gen"; import { log } from "./logger"; export default async function () { @@ -17,6 +17,9 @@ export default async function () { // if (!!!mongoose.connections.length) } catch (e) { console.error(e); - throw createError({ statusCode: 500, message: "whoops." }); + throw createError({ + statusCode: 500, + message: "Could not connect to the database.", + }); } } diff --git a/lib/server/storyHelpers/bodyHandler.ts b/lib/server/storyHelpers/bodyHandler.ts index 4083afb..de9558b 100644 --- a/lib/server/storyHelpers/bodyHandler.ts +++ b/lib/server/storyHelpers/bodyHandler.ts @@ -4,7 +4,7 @@ import { marked } from "marked"; import mammoth from "mammoth"; import san from "sanitize-html"; import { sanitizeConf } from "../constants"; -import { FormChapter } from "~/lib/client/types/form/story"; +import { FormChapter } from "@client/types/form/story"; import { log } from "../logger"; export default async function (bodyObj: FormChapter): Promise<string> { diff --git a/lib/server/storyHelpers/formChapterTransform.ts b/lib/server/storyHelpers/formChapterTransform.ts index 3f6dbb1..07544e8 100644 --- a/lib/server/storyHelpers/formChapterTransform.ts +++ b/lib/server/storyHelpers/formChapterTransform.ts @@ -1,9 +1,7 @@ import san from "sanitize-html"; -import { FormChapter } from "~/lib/client/types/form/story"; -import { countWords } from "~/lib/functions"; -import { IChapter } from "~/models/stories/chapter"; +import { FormChapter } from "@client/types/form/story"; +import { IChapter } from "@models/stories/chapter"; import { sanitizeConf } from "../constants"; -import bodyHandler from "./bodyHandler"; export default function (c: FormChapter): IChapter { let t: IChapter = { diff --git a/models/band.ts b/models/band.ts index 5cd73bd..33aee82 100644 --- a/models/band.ts +++ b/models/band.ts @@ -1,7 +1,7 @@ import mongoose, { connect, Document, Model } from "mongoose"; const { Schema, model } = mongoose; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/challenges/biffno.ts b/models/challenges/biffno.ts index 28fb3bf..18372f9 100644 --- a/models/challenges/biffno.ts +++ b/models/challenges/biffno.ts @@ -1,7 +1,7 @@ import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; -import { IUser } from "~/models/user"; +import { IUser } from "@models/user"; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/challenges/ficmas.ts b/models/challenges/ficmas.ts index 9f240d5..10f8a76 100644 --- a/models/challenges/ficmas.ts +++ b/models/challenges/ficmas.ts @@ -6,10 +6,10 @@ import mongoose, { model, } from "mongoose"; -import { IBand } from "~/models/band"; -import { IUser } from "~/models/user"; +import { IBand } from "@models/band"; +import { IUser } from "@models/user"; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/challenges/gen.ts b/models/challenges/gen.ts index a820dbd..7626bbe 100644 --- a/models/challenges/gen.ts +++ b/models/challenges/gen.ts @@ -1,6 +1,6 @@ import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/privMsg.ts b/models/privMsg.ts index 9f863a5..025937b 100644 --- a/models/privMsg.ts +++ b/models/privMsg.ts @@ -1,6 +1,6 @@ import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; import { IUser } from "./user"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/stories/chapter.ts b/models/stories/chapter.ts index 71334b5..c0189bc 100644 --- a/models/stories/chapter.ts +++ b/models/stories/chapter.ts @@ -1,5 +1,5 @@ import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; -import { IBand } from "~/models/band"; +import { IBand } from "@models/band"; export interface IChapter { title: string; summary: string; diff --git a/models/stories/draft.ts b/models/stories/draft.ts index f98c0b5..1c8e552 100644 --- a/models/stories/draft.ts +++ b/models/stories/draft.ts @@ -1,9 +1,9 @@ import { IStory } from "."; -import { hasMigrated } from "~/lib/dbconfig"; -import { IBand } from "~/models/band"; -import { IFicmas } from "~/models/challenges/ficmas"; -import { IChallenge } from "~/models/challenges/gen"; -import { IUser } from "~/models/user"; +import { hasMigrated } from "@dbconfig"; +import { IBand } from "@models/band"; +import { IFicmas } from "@models/challenges/ficmas"; +import { IChallenge } from "@models/challenges/gen"; +import { IUser } from "@models/user"; import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; import SequenceFactory from "mongoose-sequence"; import { Chapter } from "./chapter"; diff --git a/models/stories/index.ts b/models/stories/index.ts index 8ea08b6..222f400 100644 --- a/models/stories/index.ts +++ b/models/stories/index.ts @@ -4,10 +4,10 @@ import SequenceFactory from "mongoose-sequence"; const AutoIncrement = SequenceFactory(mongoose); import { Chapter, IChapter } from "./chapter"; -import { IUser } from "~/models/user"; -import { Ficmas, IFicmas } from "~/models/challenges/ficmas"; -import { IChallenge, Challenge } from "~/models/challenges/gen"; -import { hasMigrated } from "~/lib/dbconfig"; +import { IUser } from "@models/user"; +import { Ficmas, IFicmas } from "@models/challenges/ficmas"; +import { IChallenge, Challenge } from "@models/challenges/gen"; +import { hasMigrated } from "@dbconfig"; export interface IStory { _id?: number; diff --git a/models/stories/review.ts b/models/stories/review.ts index 01a0748..8d0cc5a 100644 --- a/models/stories/review.ts +++ b/models/stories/review.ts @@ -1,8 +1,8 @@ import mongoose, { Schema, PopulatedDoc, Document, Model } from "mongoose"; import SequenceFactory from "mongoose-sequence"; -import { hasMigrated } from "~/lib/dbconfig"; -import { populate, populateSelected } from "~/lib/functions"; -import { IUser } from "~/models/user"; +import { hasMigrated } from "@dbconfig"; +import { populate, populateSelected } from "@functions"; +import { IUser } from "@models/user"; const AutoIncrement = SequenceFactory(mongoose); diff --git a/models/user.ts b/models/user.ts index d411c06..71c4c1e 100644 --- a/models/user.ts +++ b/models/user.ts @@ -9,7 +9,7 @@ import SequenceFactory from "mongoose-sequence"; import bcrypt from "bcryptjs"; import md5 from "blueimp-md5"; import jwt from "jsonwebtoken"; -import { hasMigrated } from "~/lib/dbconfig"; +import { hasMigrated } from "@dbconfig"; import { IBand } from "./band"; import { IStory } from "./stories/index"; import { QuickMenuItem, QuickMenuSchema } from "./quickMenu"; diff --git a/nuxt.config.ts b/nuxt.config.ts index 4407d56..6a09acf 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,5 +1,5 @@ // https://nuxt.com/docs/api/configuration/nuxt-config -import { IUser } from "~/models/user"; +import { IUser } from "@models/user"; // import speedkitHydrate from "nuxt-speedkit/dist/runtime/hydrate.mjs"; export type SessionData = IUser; @@ -32,8 +32,12 @@ export default defineNuxtConfig({ "@pinia/nuxt", "@vueuse/nuxt", "nuxt-speedkit", + "@nuxtjs/i18n", // "./modules/09.loaded", ], + i18n: { + vueI18n: `./i18n.config.ts`, + }, speedkit: { disableNuxtFontaine: true, lazyOffset: { diff --git a/pages/authors.vue b/pages/authors.vue index 4aace85..7d5fc7f 100644 --- a/pages/authors.vue +++ b/pages/authors.vue @@ -1,7 +1,7 @@ <script lang="ts" setup> import icon from "~/components/icon.vue"; - import { bp, subscriptions } from "~/lib/client/listActions"; - import { IUser } from "~/models/user"; + import { bp, subscriptions } from "@client/listActions"; + import { IUser } from "@models/user"; const { data: authors } = (await useApiFetch<any[]>("/authors")) as { data: Ref<any[]>; diff --git a/pages/band/[id].vue b/pages/band/[id].vue index 05fffee..215127a 100644 --- a/pages/band/[id].vue +++ b/pages/band/[id].vue @@ -1,6 +1,6 @@ <script lang="ts" setup> import storyList from "~/components/listings/stories.vue"; - import { IBand } from "~/models/band"; + import { IBand } from "@models/band"; const route = useRoute(); const { data: band } = await useApiFetch<IBand>(`/band/${route.params.id}`); </script> diff --git a/pages/bands.vue b/pages/bands.vue index 673a6c7..3561009 100644 --- a/pages/bands.vue +++ b/pages/bands.vue @@ -1,8 +1,8 @@ <script lang="ts" setup> - import { IBand } from "~/models/band"; + import { IBand } from "@models/band"; import icon from "~/components/icon.vue"; - import { subscriptions, bp } from "~/lib/client/listActions"; - import { IUser } from "~/models/user"; + import { subscriptions, bp } from "@client/listActions"; + import { IUser } from "@models/user"; const { data: bands } = (await useApiFetch<NonNullable<IBand[]>>( "/band/all", diff --git a/pages/new-story.vue b/pages/new-story.vue index 313da71..22f0087 100644 --- a/pages/new-story.vue +++ b/pages/new-story.vue @@ -1,6 +1,6 @@ <script setup lang="ts"> import storyForm from "~/components/story/create/storyform.vue"; - import { defaultStory } from "~/lib/client/types/form/story"; + import { defaultStory } from "@client/types/form/story"; definePageMeta({ middleware: ["auth"], }); diff --git a/pages/register.vue b/pages/register.vue index a2696d3..dc8eaaa 100644 --- a/pages/register.vue +++ b/pages/register.vue @@ -15,7 +15,7 @@ import { useChallengeV2 } from "vue-recaptcha"; import { notification } from "ant-design-vue"; - import { log } from "~/lib/server/logger"; + import { log } from "@server/logger"; import termsOfServices from "~/components/tos.vue"; useRecaptchaProvider(); diff --git a/pages/story/[id]/[cidx]/index.vue b/pages/story/[id]/[cidx]/index.vue index 4f35356..65e8897 100644 --- a/pages/story/[id]/[cidx]/index.vue +++ b/pages/story/[id]/[cidx]/index.vue @@ -1,7 +1,7 @@ <script setup lang="ts"> - import { SingleChapterResult } from "~/lib/client/types/slightlyDifferentStory"; + import { SingleChapterResult } from "@client/types/slightlyDifferentStory"; import { theme } from "ant-design-vue"; - import { storyMiddleware } from "~/lib/client/middleware"; + import { storyMiddleware } from "@client/middleware"; import forChapter from "~/components/reviews/forChapter.vue"; import storyInfo from "~/components/story/view/storyInfo.vue"; import chapterPicker from "~/components/story/view/chapterPicker.vue"; diff --git a/pages/story/[id]/chapters.vue b/pages/story/[id]/chapters.vue index daaa440..541899a 100644 --- a/pages/story/[id]/chapters.vue +++ b/pages/story/[id]/chapters.vue @@ -1,6 +1,6 @@ <script lang="ts" setup> - import { storyMiddleware } from "~/lib/client/middleware"; - import { IStory } from "~/models/stories"; + import { storyMiddleware } from "@client/middleware"; + import { IStory } from "@models/stories"; definePageMeta({ middleware: [storyMiddleware], diff --git a/pages/story/[id]/edit.vue b/pages/story/[id]/edit.vue index 11ed759..09e59d1 100644 --- a/pages/story/[id]/edit.vue +++ b/pages/story/[id]/edit.vue @@ -1,11 +1,11 @@ <script lang="ts" setup> import { v4 } from "uuid"; import storyForm from "~/components/story/create/storyform.vue"; - import { FormStory } from "~/lib/client/types/form/story"; - import { IStory } from "~/models/stories"; - import { IChapter } from "~/models/stories/chapter"; + import { FormStory } from "@client/types/form/story"; + import { IStory } from "@models/stories"; + import { IChapter } from "@models/stories/chapter"; - import { storyEditMiddleware } from "~/lib/client/middleware"; + import { storyEditMiddleware } from "@client/middleware"; const rtr = useRoute(); const { data: { value: originalStory }, diff --git a/pages/user/[id].vue b/pages/user/[id].vue index 548d2b8..5e1b098 100644 --- a/pages/user/[id].vue +++ b/pages/user/[id].vue @@ -1,8 +1,8 @@ <script lang="ts" setup> import { format, formatDistanceToNow, formatRelative } from "date-fns"; - import { IUser } from "~/models/user"; - import { IStory } from "~/models/stories"; - import { favourites } from "~/lib/client/listActions"; + import { IUser } from "@models/user"; + import { IStory } from "@models/stories"; + import { favourites } from "@client/listActions"; import singleStory from "~/components/listings/singleStory.vue"; import icon from "~/components/icon.vue"; import adminPanel from "~/components/profile/adminPanel.vue"; diff --git a/plugins/01.db.server.ts b/plugins/01.db.server.ts index 63aac4d..8803497 100644 --- a/plugins/01.db.server.ts +++ b/plugins/01.db.server.ts @@ -1,9 +1,9 @@ import mongoose from "mongoose"; import * as net from "net"; -import plugnplay from "~/lib/server/plugnplay"; -import { Biffno } from "~/models/challenges/biffno"; -import { Ficmas } from "~/models/challenges/ficmas"; -import { Challenge } from "~/models/challenges/gen"; +import plugnplay from "@server/plugnplay"; +import { Biffno } from "@models/challenges/biffno"; +import { Ficmas } from "@models/challenges/ficmas"; +import { Challenge } from "@models/challenges/gen"; export default defineNuxtPlugin({ name: "mongo", // enforce: 'pre', diff --git a/server/api/all-users.get.ts b/server/api/all-users.get.ts index 9d7b78c..d792b1b 100644 --- a/server/api/all-users.get.ts +++ b/server/api/all-users.get.ts @@ -1,4 +1,4 @@ -import { User } from "~/models/user"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { const q = getQuery(ev); diff --git a/server/api/auth/login.post.ts b/server/api/auth/login.post.ts index a86e82d..32f64d8 100644 --- a/server/api/auth/login.post.ts +++ b/server/api/auth/login.post.ts @@ -1,7 +1,7 @@ import mongoose from "mongoose"; import jwt from "jsonwebtoken"; -import { IUser, User } from "~/models/user"; -import { log } from "~/lib/server/logger"; +import { IUser, User } from "@models/user"; +import { log } from "@server/logger"; export default eventHandler(async (event) => { const wrongMsg = "wrong credentials"; diff --git a/server/api/auth/register.post.ts b/server/api/auth/register.post.ts index 91e9057..9a446c2 100644 --- a/server/api/auth/register.post.ts +++ b/server/api/auth/register.post.ts @@ -1,9 +1,9 @@ import { weirdToNormalChars as w2nc } from "weird-to-normal-chars"; import crypto from "crypto"; -import { usernameRegex } from "~/lib/server/constants"; -import { User } from "~/models/user"; +import { usernameRegex } from "@server/constants"; +import { User } from "@models/user"; import mongoose from "mongoose"; -import captcha from "~/lib/server/middlewareButNotReally/captcha"; +import captcha from "@server/middlewareButNotReally/captcha"; export default eventHandler(async (event) => { const body = await readBody(event); diff --git a/server/api/auth/session.get.ts b/server/api/auth/session.get.ts index 337b303..4fda71d 100644 --- a/server/api/auth/session.get.ts +++ b/server/api/auth/session.get.ts @@ -1,5 +1,5 @@ import jwt from "jsonwebtoken"; -import { log } from "~/lib/server/logger"; +import { log } from "@server/logger"; export default eventHandler((event) => { let ahead = ( getHeaders(event).authorization || diff --git a/server/api/authors.get.ts b/server/api/authors.get.ts index 84b9042..c0b7c72 100644 --- a/server/api/authors.get.ts +++ b/server/api/authors.get.ts @@ -1,4 +1,4 @@ -import { User } from "~/models/user"; +import { User } from "@models/user"; let authorSingleton: { lastRefreshed: number; data: { diff --git a/server/api/band/[id]/index.get.ts b/server/api/band/[id]/index.get.ts index 7574bc5..e8d1ab5 100644 --- a/server/api/band/[id]/index.get.ts +++ b/server/api/band/[id]/index.get.ts @@ -1,5 +1,5 @@ -import { messages } from "~/lib/server/constants"; -import { Band } from "~/models/band"; +import { messages } from "@server/constants"; +import { Band } from "@models/band"; export default eventHandler(async (ev) => { const id = parseInt(getRouterParam(ev, "id") as string); diff --git a/server/api/band/[id]/index.put.ts b/server/api/band/[id]/index.put.ts index 2e5c9ba..b254cbc 100644 --- a/server/api/band/[id]/index.put.ts +++ b/server/api/band/[id]/index.put.ts @@ -1,7 +1,7 @@ -import { messages } from "~/lib/server/constants"; -import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Band, IBand } from "~/models/band"; +import { messages } from "@server/constants"; +import isAdmin from "@server/middlewareButNotReally/isAdmin"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Band, IBand } from "@models/band"; export default eventHandler(async (ev) => { isAdmin(ev); diff --git a/server/api/band/[id]/stories.get.ts b/server/api/band/[id]/stories.get.ts index 2e6f86a..e5f02b1 100644 --- a/server/api/band/[id]/stories.get.ts +++ b/server/api/band/[id]/stories.get.ts @@ -1,6 +1,6 @@ -import { listQuerier } from "~/lib/server/dbHelpers"; -import { Band } from "~/models/band"; -import { Story } from "~/models/stories"; +import { listQuerier } from "@server/dbHelpers"; +import { Band } from "@models/band"; +import { Story } from "@models/stories"; export default eventHandler(async (event) => { const params = getRouterParams(event); diff --git a/server/api/band/all.get.ts b/server/api/band/all.get.ts index 7bbb85d..48354a7 100644 --- a/server/api/band/all.get.ts +++ b/server/api/band/all.get.ts @@ -1,5 +1,5 @@ -import { Band } from "~/models/band"; -import { IUser } from "~/models/user"; +import { Band } from "@models/band"; +import { IUser } from "@models/user"; export default cachedEventHandler(async (ev) => { let bands = await Band.find({ diff --git a/server/api/exists/email.get.ts b/server/api/exists/email.get.ts index e5b768f..3ea078a 100644 --- a/server/api/exists/email.get.ts +++ b/server/api/exists/email.get.ts @@ -1,5 +1,5 @@ -import { usernameRegex } from "~/lib/server/constants"; -import { User } from "~/models/user"; +import { usernameRegex } from "@server/constants"; +import { User } from "@models/user"; export default eventHandler(async (event) => { const query = getQuery(event); diff --git a/server/api/exists/username.get.ts b/server/api/exists/username.get.ts index c2d6d3b..ac23875 100644 --- a/server/api/exists/username.get.ts +++ b/server/api/exists/username.get.ts @@ -1,5 +1,5 @@ -import { usernameRegex } from "~/lib/server/constants"; -import { User } from "~/models/user"; +import { usernameRegex } from "@server/constants"; +import { User } from "@models/user"; export default eventHandler(async (event) => { const query = getQuery(event); diff --git a/server/api/latest.get.ts b/server/api/latest.get.ts index 4e5bef7..258581f 100644 --- a/server/api/latest.get.ts +++ b/server/api/latest.get.ts @@ -1,6 +1,5 @@ -import { listQuerier } from "~/lib/server/dbHelpers"; -import { Story } from "~/models/stories"; -import { log } from "~/lib/server/logger"; +import { listQuerier } from "@server/dbHelpers"; +import { log } from "@server/logger"; export default eventHandler(async (ev) => { const s = await listQuerier({}, ev.context, ev, 20, { diff --git a/server/api/review/[id]/index.delete.ts b/server/api/review/[id]/index.delete.ts index 191bbed..806ffcc 100644 --- a/server/api/review/[id]/index.delete.ts +++ b/server/api/review/[id]/index.delete.ts @@ -1,7 +1,7 @@ -import { messages } from "~/lib/server/constants"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Story } from "~/models/stories"; -import { Review } from "~/models/stories/review"; +import { messages } from "@server/constants"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Story } from "@models/stories"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/review/[id]/index.put.ts b/server/api/review/[id]/index.put.ts index f47ac4b..80edaf9 100644 --- a/server/api/review/[id]/index.put.ts +++ b/server/api/review/[id]/index.put.ts @@ -1,8 +1,8 @@ import san from "sanitize-html"; -import { messages } from "~/lib/server/constants"; -import { log } from "~/lib/server/logger"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Review } from "~/models/stories/review"; +import { messages } from "@server/constants"; +import { log } from "@server/logger"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/review/[id]/reply.post.ts b/server/api/review/[id]/reply.post.ts index 51c7d98..0f97eed 100644 --- a/server/api/review/[id]/reply.post.ts +++ b/server/api/review/[id]/reply.post.ts @@ -1,8 +1,8 @@ import san from "sanitize-html"; -import { messages } from "~/lib/server/constants"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Story } from "~/models/stories"; -import { Review } from "~/models/stories/review"; +import { messages } from "@server/constants"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Story } from "@models/stories"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/sidebar/index.get.ts b/server/api/sidebar/index.get.ts index 6c92adb..9e4d0f6 100644 --- a/server/api/sidebar/index.get.ts +++ b/server/api/sidebar/index.get.ts @@ -1,4 +1,4 @@ -import { SidebarItem } from "~/models/sidebarEntry"; +import { SidebarItem } from "@models/sidebarEntry"; export default cachedEventHandler(async (ev) => { const si = await SidebarItem.find({}); diff --git a/server/api/story/[id]/[chapter]/index.get.ts b/server/api/story/[id]/[chapter]/index.get.ts index 0c8d522..9f3e83b 100644 --- a/server/api/story/[id]/[chapter]/index.get.ts +++ b/server/api/story/[id]/[chapter]/index.get.ts @@ -1,6 +1,6 @@ -import { chapterTransformer } from "~/lib/server/dbHelpers"; -import { storyQuerier } from "~/lib/server/dbHelpers"; -import storyCheck from "~/lib/server/middlewareButNotReally/storyCheck"; +import { chapterTransformer } from "@server/dbHelpers"; +import { storyQuerier } from "@server/dbHelpers"; +import storyCheck from "@server/middlewareButNotReally/storyCheck"; export default eventHandler(async (ev) => { const story = await storyQuerier(ev); diff --git a/server/api/story/[id]/[chapter]/index.put.ts b/server/api/story/[id]/[chapter]/index.put.ts index 8ecea81..053c4d2 100644 --- a/server/api/story/[id]/[chapter]/index.put.ts +++ b/server/api/story/[id]/[chapter]/index.put.ts @@ -1,11 +1,11 @@ -import { FormChapter } from "~/lib/client/types/form/story"; -import { countWords } from "~/lib/functions"; -import { messages } from "~/lib/server/constants"; -import { storyQuerier } from "~/lib/server/dbHelpers"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { canModify } from "~/lib/server/middlewareButNotReally/storyPrivileges"; -import { replaceOrUploadContent, bodyHandler } from "~/lib/server/storyHelpers"; -import { Story } from "~/models/stories"; +import { FormChapter } from "@client/types/form/story"; +import { countWords } from "@functions"; +import { messages } from "@server/constants"; +import { storyQuerier } from "@server/dbHelpers"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { canModify } from "@server/middlewareButNotReally/storyPrivileges"; +import { replaceOrUploadContent, bodyHandler } from "@server/storyHelpers"; +import { Story } from "@models/stories"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/story/[id]/[chapter]/reviews/index.get.ts b/server/api/story/[id]/[chapter]/reviews/index.get.ts index 2987b82..80998f0 100644 --- a/server/api/story/[id]/[chapter]/reviews/index.get.ts +++ b/server/api/story/[id]/[chapter]/reviews/index.get.ts @@ -1,5 +1,5 @@ -import { storyQuerier } from "~/lib/server/dbHelpers"; -import { Review } from "~/models/stories/review"; +import { storyQuerier } from "@server/dbHelpers"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { let story = await storyQuerier(ev); diff --git a/server/api/story/[id]/[chapter]/reviews/index.post.ts b/server/api/story/[id]/[chapter]/reviews/index.post.ts index 1fcfc64..7e025a8 100644 --- a/server/api/story/[id]/[chapter]/reviews/index.post.ts +++ b/server/api/story/[id]/[chapter]/reviews/index.post.ts @@ -1,8 +1,8 @@ import san from "sanitize-html"; -import { storyQuerier } from "~/lib/server/dbHelpers"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Story } from "~/models/stories"; -import { Review } from "~/models/stories/review"; +import { storyQuerier } from "@server/dbHelpers"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Story } from "@models/stories"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/story/[id]/full.get.ts b/server/api/story/[id]/full.get.ts index 77fb26d..af06ca7 100644 --- a/server/api/story/[id]/full.get.ts +++ b/server/api/story/[id]/full.get.ts @@ -1,7 +1,7 @@ -import { storyQuerier } from "~/lib/server/dbHelpers"; -import { chapterTransformer } from "~/lib/server/dbHelpers"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { messages } from "~/lib/server/constants"; +import { storyQuerier } from "@server/dbHelpers"; +import { chapterTransformer } from "@server/dbHelpers"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { messages } from "@server/constants"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/story/[id]/index.delete.ts b/server/api/story/[id]/index.delete.ts index 2107737..ab975a1 100644 --- a/server/api/story/[id]/index.delete.ts +++ b/server/api/story/[id]/index.delete.ts @@ -1,7 +1,7 @@ -import { messages } from "~/lib/server/constants"; -import { storyQuerier } from "~/lib/server/dbHelpers"; -import { canDelete } from "~/lib/server/middlewareButNotReally/storyPrivileges"; -import { Story } from "~/models/stories"; +import { messages } from "@server/constants"; +import { storyQuerier } from "@server/dbHelpers"; +import { canDelete } from "@server/middlewareButNotReally/storyPrivileges"; +import { Story } from "@models/stories"; export default eventHandler(async (ev) => { const tmpS = await storyQuerier(ev); diff --git a/server/api/story/[id]/index.get.ts b/server/api/story/[id]/index.get.ts index a98743c..33d6716 100644 --- a/server/api/story/[id]/index.get.ts +++ b/server/api/story/[id]/index.get.ts @@ -1,5 +1,5 @@ -import { storyQuerier } from "~/lib/server/dbHelpers"; -import storyCheck from "~/lib/server/middlewareButNotReally/storyCheck"; +import { storyQuerier } from "@server/dbHelpers"; +import storyCheck from "@server/middlewareButNotReally/storyCheck"; export default eventHandler(async (ev) => { const story = await storyQuerier(ev); let chrs = await storyCheck(ev, story, 0); diff --git a/server/api/story/[id]/index.put.ts b/server/api/story/[id]/index.put.ts index e5a2d18..1407938 100644 --- a/server/api/story/[id]/index.put.ts +++ b/server/api/story/[id]/index.put.ts @@ -1,18 +1,18 @@ import { Readable } from "stream"; import { Document } from "mongoose"; -import { IStory, Story } from "~/models/stories"; -import { FormStory } from "~/lib/client/types/form/story"; -import { storyQuerier } from "~/lib/server/dbHelpers"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { canModify } from "~/lib/server/middlewareButNotReally/storyPrivileges"; +import { IStory, Story } from "@models/stories"; +import { FormStory } from "@client/types/form/story"; +import { storyQuerier } from "@server/dbHelpers"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { canModify } from "@server/middlewareButNotReally/storyPrivileges"; import { bodyHandler, getBucket, modelFormChapter, replaceOrUploadContent, -} from "~/lib/server/storyHelpers"; -import { countWords } from "~/lib/functions"; -import { messages } from "~/lib/server/constants"; +} from "@server/storyHelpers"; +import { countWords } from "@functions"; +import { messages } from "@server/constants"; export default eventHandler(async (ev) => { let os: diff --git a/server/api/story/[id]/lovers.get.ts b/server/api/story/[id]/lovers.get.ts index 42759c0..2ba8a55 100644 --- a/server/api/story/[id]/lovers.get.ts +++ b/server/api/story/[id]/lovers.get.ts @@ -1,7 +1,8 @@ -import { User } from "~/models/user"; +import { User } from "@models/user"; +import isIdNan from "@server/middlewareButNotReally/isIdNan"; export default eventHandler(async (ev) => { - const id = parseInt(getRouterParam(ev, "id") as string); + const id = isIdNan(ev); let dat = await User.find({ "favs.stories": { $in: [id], diff --git a/server/api/story/new.post.ts b/server/api/story/new.post.ts index 75180db..3f7d320 100644 --- a/server/api/story/new.post.ts +++ b/server/api/story/new.post.ts @@ -1,15 +1,11 @@ import { Readable } from "stream"; import san from "sanitize-html"; -import { FormStory } from "~/lib/client/types/form/story"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { - getBucket, - bodyHandler, - modelFormChapter, -} from "~/lib/server/storyHelpers"; -import { Story } from "~/models/stories"; -import { sanitizeConf } from "~/lib/server/constants"; -import { countWords } from "~/lib/functions"; +import { FormStory } from "@client/types/form/story"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { getBucket, bodyHandler, modelFormChapter } from "@server/storyHelpers"; +import { Story } from "@models/stories"; +import { sanitizeConf } from "@server/constants"; +import { countWords } from "@functions"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/totals.get.ts b/server/api/totals.get.ts index ffc7ed2..a4e6a02 100644 --- a/server/api/totals.get.ts +++ b/server/api/totals.get.ts @@ -1,6 +1,6 @@ import mongoose from "mongoose"; -import { Story } from "~/models/stories"; -import { User } from "~/models/user"; +import { Story } from "@models/stories"; +import { User } from "@models/user"; let authorSingleton: { lastRefreshed: number; diff --git a/server/api/upload/avatar.post.ts b/server/api/upload/avatar.post.ts index 1136b33..ad8a365 100644 --- a/server/api/upload/avatar.post.ts +++ b/server/api/upload/avatar.post.ts @@ -1,6 +1,6 @@ import { v4 } from "uuid"; import { resolve } from "path"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; import sharp from "sharp"; export default eventHandler(async (ev) => { diff --git a/server/api/upload/content.post.ts b/server/api/upload/content.post.ts index 92b6665..02ac9b1 100644 --- a/server/api/upload/content.post.ts +++ b/server/api/upload/content.post.ts @@ -1,9 +1,9 @@ import { writeFileSync } from "fs"; import { extname } from "path"; import { v4 } from "uuid"; -import { ContentFilenameRegex } from "~/lib/server/constants"; -import { log } from "~/lib/server/logger"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; +import { ContentFilenameRegex } from "@server/constants"; +import { log } from "@server/logger"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; export default eventHandler(async (ev) => { const noMultipart = "no multipart data found!???!?"; diff --git a/server/api/user/[id]/admin.post.ts b/server/api/user/[id]/admin.post.ts index e84ad07..44f692d 100644 --- a/server/api/user/[id]/admin.post.ts +++ b/server/api/user/[id]/admin.post.ts @@ -1,6 +1,6 @@ -import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import isAdmin from "@server/middlewareButNotReally/isAdmin"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/[id]/ban.post.ts b/server/api/user/[id]/ban.post.ts index 9a0bc80..e9cc465 100644 --- a/server/api/user/[id]/ban.post.ts +++ b/server/api/user/[id]/ban.post.ts @@ -1,6 +1,6 @@ -import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import isAdmin from "@server/middlewareButNotReally/isAdmin"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/[id]/block.post.ts b/server/api/user/[id]/block.post.ts index 7e59889..c4f4cec 100644 --- a/server/api/user/[id]/block.post.ts +++ b/server/api/user/[id]/block.post.ts @@ -1,5 +1,5 @@ -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/[id]/index.get.ts b/server/api/user/[id]/index.get.ts index 4d13231..07c40a0 100644 --- a/server/api/user/[id]/index.get.ts +++ b/server/api/user/[id]/index.get.ts @@ -1,7 +1,7 @@ -import { messages } from "~/lib/server/constants"; -import { Ficmas } from "~/models/challenges/ficmas"; -import { Challenge } from "~/models/challenges/gen"; -import { IUser, User } from "~/models/user"; +import { messages } from "@server/constants"; +import { Ficmas } from "@models/challenges/ficmas"; +import { Challenge } from "@models/challenges/gen"; +import { IUser, User } from "@models/user"; export default cachedEventHandler(async (ev) => { const id = parseInt(getRouterParam(ev, "id")!); diff --git a/server/api/user/[id]/shared-ip.get.ts b/server/api/user/[id]/shared-ip.get.ts index 410c287..262a4bb 100644 --- a/server/api/user/[id]/shared-ip.get.ts +++ b/server/api/user/[id]/shared-ip.get.ts @@ -1,7 +1,7 @@ -import { messages } from "~/lib/server/constants"; -import isAdmin from "~/lib/server/middlewareButNotReally/isAdmin"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import { messages } from "@server/constants"; +import isAdmin from "@server/middlewareButNotReally/isAdmin"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/[id]/stories.get.ts b/server/api/user/[id]/stories.get.ts index b73c0d4..588a584 100644 --- a/server/api/user/[id]/stories.get.ts +++ b/server/api/user/[id]/stories.get.ts @@ -1,4 +1,4 @@ -import { listQuerier } from "~/lib/server/dbHelpers"; +import { listQuerier } from "@server/dbHelpers"; export default cachedEventHandler(async (ev) => { const id = parseInt(getRouterParam(ev, "id")!); diff --git a/server/api/user/[id]/unblock.post.ts b/server/api/user/[id]/unblock.post.ts index 0ca732d..274e52c 100644 --- a/server/api/user/[id]/unblock.post.ts +++ b/server/api/user/[id]/unblock.post.ts @@ -1,5 +1,5 @@ -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/me/favs.put.ts b/server/api/user/me/favs.put.ts index 35260ab..3912d88 100644 --- a/server/api/user/me/favs.put.ts +++ b/server/api/user/me/favs.put.ts @@ -1,6 +1,6 @@ -import { FavPayload, SubPayload } from "~/lib/client/types/form/favSub"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import { FavPayload, SubPayload } from "@client/types/form/favSub"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/me/hide.put.ts b/server/api/user/me/hide.put.ts index 58a4037..d530724 100644 --- a/server/api/user/me/hide.put.ts +++ b/server/api/user/me/hide.put.ts @@ -1,6 +1,6 @@ -import { HidePayload } from "~/lib/client/types/form/favSub"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import { HidePayload } from "@client/types/form/favSub"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/me/index.put.ts b/server/api/user/me/index.put.ts index 0980385..cb99373 100644 --- a/server/api/user/me/index.put.ts +++ b/server/api/user/me/index.put.ts @@ -1,10 +1,10 @@ import san from "sanitize-html"; import { weirdToNormalChars } from "weird-to-normal-chars"; -import { Profile, MyStuff } from "~/lib/client/types/form/myStuff"; -import { apiRoot, messages } from "~/lib/server/constants"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Review } from "~/models/stories/review"; -import { IUser, User } from "~/models/user"; +import { Profile, MyStuff } from "@client/types/form/myStuff"; +import { apiRoot, messages } from "@server/constants"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Review } from "@models/stories/review"; +import { IUser, User } from "@models/user"; import axios from "axios"; function emsg(arg: string): any { diff --git a/server/api/user/me/profile.put.ts b/server/api/user/me/profile.put.ts index d6fe683..a8aeb6c 100644 --- a/server/api/user/me/profile.put.ts +++ b/server/api/user/me/profile.put.ts @@ -1,10 +1,10 @@ import san from "sanitize-html"; import axios from "axios"; -import { Profile } from "~/lib/client/types/form/myStuff"; -import { apiRoot, h2m } from "~/lib/server/constants"; -import forumId from "~/lib/server/forumId"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import { Profile } from "@client/types/form/myStuff"; +import { apiRoot, h2m } from "@server/constants"; +import forumId from "@server/forumId"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/me/reviews.get.ts b/server/api/user/me/reviews.get.ts index ab779f9..def87b8 100644 --- a/server/api/user/me/reviews.get.ts +++ b/server/api/user/me/reviews.get.ts @@ -1,6 +1,6 @@ -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { Story } from "~/models/stories"; -import { Review } from "~/models/stories/review"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { Story } from "@models/stories"; +import { Review } from "@models/stories/review"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/api/user/me/subscriptions.put.ts b/server/api/user/me/subscriptions.put.ts index 6446604..031d911 100644 --- a/server/api/user/me/subscriptions.put.ts +++ b/server/api/user/me/subscriptions.put.ts @@ -1,6 +1,6 @@ -import { SubPayload } from "~/lib/client/types/form/favSub"; -import isLoggedIn from "~/lib/server/middlewareButNotReally/isLoggedIn"; -import { User } from "~/models/user"; +import { SubPayload } from "@client/types/form/favSub"; +import isLoggedIn from "@server/middlewareButNotReally/isLoggedIn"; +import { User } from "@models/user"; export default eventHandler(async (ev) => { isLoggedIn(ev); diff --git a/server/middleware/00.dbconn.ts b/server/middleware/00.dbconn.ts index 5fe194c..a88f9ce 100644 --- a/server/middleware/00.dbconn.ts +++ b/server/middleware/00.dbconn.ts @@ -1,6 +1,6 @@ import mongoose from "mongoose"; -import { log } from "~/lib/server/logger"; -import plugnplay from "~/lib/server/plugnplay"; +import { log } from "@server/logger"; +import plugnplay from "@server/plugnplay"; export default eventHandler(async (event) => { log.info("middleware connecting", { label: "middleware/db" }); diff --git a/server/middleware/05.currentUser.ts b/server/middleware/05.currentUser.ts index c7d22be..38eaaff 100644 --- a/server/middleware/05.currentUser.ts +++ b/server/middleware/05.currentUser.ts @@ -1,6 +1,6 @@ import jwt from "jsonwebtoken"; -import { log } from "~/lib/server/logger"; -import { User } from "~/models/user"; +import { log } from "@server/logger"; +import { User } from "@models/user"; export default defineEventHandler(async (event) => { let ahead = ( diff --git a/server/middleware/10.ficmasData.ts b/server/middleware/10.ficmasData.ts index 65ae9f8..71b7767 100644 --- a/server/middleware/10.ficmasData.ts +++ b/server/middleware/10.ficmasData.ts @@ -1,4 +1,4 @@ -import { Ficmas } from "~/models/challenges/ficmas"; +import { Ficmas } from "@models/challenges/ficmas"; export default eventHandler(async (event) => { let y = new Date().getFullYear(); diff --git a/server/middleware/20.cidx.ts b/server/middleware/20.cidx.ts index 60d2b44..49b12dd 100644 --- a/server/middleware/20.cidx.ts +++ b/server/middleware/20.cidx.ts @@ -1,4 +1,7 @@ +import { log } from "@server/logger"; + export default eventHandler((ev) => { let chapParam = getRouterParams(ev).chapter; + log.silly(JSON.stringify(getRouterParams(ev)), { label: "sigh" }); ev.context.chapterIndex = !!chapParam ? parseInt(chapParam) - 1 : 0; }); diff --git a/server/middleware/90.log.ts b/server/middleware/90.log.ts index 514e5e2..dec5665 100644 --- a/server/middleware/90.log.ts +++ b/server/middleware/90.log.ts @@ -1,4 +1,4 @@ -import { log } from "~/lib/server/logger"; +import { log } from "@server/logger"; export default eventHandler(async (ev) => { const p = log.startTimer(); diff --git a/server/tsconfig.json b/server/tsconfig.json index 78394c7..cb1c48f 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -2,6 +2,17 @@ "extends": "../.nuxt/tsconfig.server.json", "compilerOptions": { "allowJs": true, - "outDir": "../out" + "outDir": "../out", + "paths": { + "@models/*": ["../models/*"], + "@client/*": ["./lib/client/*"], + "@server/*": ["../lib/server/*"], + "@models/**": ["../models/**"], + "@client/**": ["../lib/client/**"], + "@server/**": ["../lib/server/**"], + "@functions": ["../lib/functions.ts"], + "@dbconfig": ["../lib/dbconfig.ts"], + "@constants": ["../lib/constants.ts"] + } } } diff --git a/tsconfig.json b/tsconfig.json index 41c5ff8..d15e716 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,7 +4,17 @@ "allowJs": true, "noImplicitAny": false, "noImplicitThis": false, - "verbatimModuleSyntax": false + "verbatimModuleSyntax": false, + "paths": { + "@models/*": ["./models/*"], + "@client/*": ["./lib/client/*"], + "@server/*": ["./lib/server/*"], + "@client/**": ["./lib/client/**"], + "@models/**": ["./models/**"], + "@server/**": ["./lib/server/**"], + "@functions": ["./lib/functions.ts"], + "@dbconfig": ["./lib/dbconfig.ts"] + } }, "extends": "./.nuxt/tsconfig.json" } diff --git a/typings/auth.d.ts b/typings/auth.d.ts index 95ab118..460bf04 100644 --- a/typings/auth.d.ts +++ b/typings/auth.d.ts @@ -1,4 +1,4 @@ -import { IUser } from "~/models/user"; +import { IUser } from "@models/user"; import { SessionData as SDI } from "#auth"; declare module "#auth" { diff --git a/typings/express.d.ts b/typings/express.d.ts index de9bdec..d784ef8 100644 --- a/typings/express.d.ts +++ b/typings/express.d.ts @@ -1,6 +1,6 @@ import { Document } from "mongoose"; -import { IStory } from "~/models/stories"; -import { IUser } from "~/models/user"; +import { IStory } from "@models/stories"; +import { IUser } from "@models/user"; import { Request } from "express"; declare global { diff --git a/typings/fetchResult.ts b/typings/fetchResult.ts index 2f5decf..5bf525e 100644 --- a/typings/fetchResult.ts +++ b/typings/fetchResult.ts @@ -1,4 +1,4 @@ -import { IStory } from "~/models/stories"; +import { IStory } from "@models/stories"; export interface StoryFetchResult { stories: IStory[]; diff --git a/typings/h3.d.ts b/typings/h3.d.ts index e9fcca6..30ff45b 100644 --- a/typings/h3.d.ts +++ b/typings/h3.d.ts @@ -1,6 +1,6 @@ import type { H3Event, H3EventContext } from "h3"; -import { IFicmas } from "~/models/challenges/ficmas"; -import { IUser } from "~/models/user"; +import { IFicmas } from "@models/challenges/ficmas"; +import { IUser } from "@models/user"; declare module "h3" { interface H3EventContext { currentUser?: IUser; diff --git a/typings/next.d.ts b/typings/next.d.ts index 10599fd..fc2051a 100644 --- a/typings/next.d.ts +++ b/typings/next.d.ts @@ -1,6 +1,6 @@ import { Document } from "mongoose"; -import { IStory } from "~/models/stories"; -import { IUser } from "~/models/user"; +import { IStory } from "@models/stories"; +import { IUser } from "@models/user"; declare module "next" { export interface NextApiRequest {