diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..243a99b44 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +/apps/web/src/app/[locale]/(main)/(plugins) +/apps/web/src/app/[locale]/admin/(auth)/(plugins) \ No newline at end of file diff --git a/apps/docs/content/docs/dev/debugging.mdx b/apps/docs/content/docs/dev/debugging.mdx index ef063e84d..3f3d1a845 100644 --- a/apps/docs/content/docs/dev/debugging.mdx +++ b/apps/docs/content/docs/dev/debugging.mdx @@ -38,7 +38,7 @@ Want to know exactly what's happening with your API calls? Next.js has your back ```ts title="next.config.ts" import type { NextConfig } from 'next'; -import { vitNodeNextConfig } from 'vitnode/config/next.config'; +import { vitNodeNextConfig } from '@vitnode/core/config/next.config'; const nextConfig: NextConfig = { // [!code ++] diff --git a/apps/docs/content/docs/dev/fetcher.mdx b/apps/docs/content/docs/dev/fetcher.mdx index c1d181a1a..c38504f37 100644 --- a/apps/docs/content/docs/dev/fetcher.mdx +++ b/apps/docs/content/docs/dev/fetcher.mdx @@ -15,8 +15,8 @@ The VitNode fetcher provides a type-safe RPC (Remote Procedure Call) style inter First, import the required dependencies: ```ts -import { fetcher } from 'vitnode/lib/fetcher'; -import { usersModule } from 'vitnode/api/modules/users/users.module'; +import { fetcher } from '@vitnode/core/lib/fetcher'; +import { usersModule } from '@vitnode/core/api/modules/users/users.module'; ``` Make your first API call: diff --git a/apps/docs/content/docs/dev/i18n/namespaces.mdx b/apps/docs/content/docs/dev/i18n/namespaces.mdx index 01a624306..3d65491c1 100644 --- a/apps/docs/content/docs/dev/i18n/namespaces.mdx +++ b/apps/docs/content/docs/dev/i18n/namespaces.mdx @@ -49,7 +49,7 @@ To translate your content, select the plugin in `frontend` folder, go to `langs` To get access to the translation strings in other namespaces you need to use the `TranslationsProvider` component. ```tsx title="apps/frontend/src/app/[locale]/(main)/{your_plugin}/layout.tsx" -import { I18nProvider } from 'vitnode/components/i18n-provider'; +import { I18nProvider } from '@vitnode/core/components/i18n-provider'; export default function Layout({ children }: { children: React.ReactNode }) { return {children}; diff --git a/apps/docs/content/docs/dev/pagination.mdx b/apps/docs/content/docs/dev/pagination.mdx index 6f68cafcb..9e2d5d272 100644 --- a/apps/docs/content/docs/dev/pagination.mdx +++ b/apps/docs/content/docs/dev/pagination.mdx @@ -167,8 +167,8 @@ import { middlewareModule } from '@/api/modules/middleware/middleware.module'; import { DataTable, SearchParamsDataTable, -} from 'vitnode/components/table/data-table'; -import { fetcher } from 'vitnode/lib/fetcher'; +} from '@vitnode/core/components/table/data-table'; +import { fetcher } from '@vitnode/core/lib/fetcher'; export const UsersAdminView = async ({ searchParams, diff --git a/apps/docs/content/docs/dev/sso.mdx b/apps/docs/content/docs/dev/sso.mdx index a682cf9bd..fb9bfafc8 100644 --- a/apps/docs/content/docs/dev/sso.mdx +++ b/apps/docs/content/docs/dev/sso.mdx @@ -17,7 +17,7 @@ import { Callout } from 'fumadocs-ui/components/callout'; Let's start with the basics. Create a new file for your SSO provider: ```ts title="src/utils/sso/discord_api.ts" -import { SSOApiPlugin, getRedirectUri } from 'vitnode/api/models/sso'; +import { SSOApiPlugin, getRedirectUri } from '@vitnode/core/api/models/sso'; export const DiscordSSOApiPlugin = ({ clientId, @@ -43,7 +43,7 @@ This is like creating a blueprint for your SSO provider. The `id` will be used i Now let's add the magic that sends users to Discord for login: ```ts title="src/utils/sso/discord_api.ts" -import { SSOApiPlugin, getRedirectUri } from 'vitnode/api/models/sso'; +import { SSOApiPlugin, getRedirectUri } from '@vitnode/core/api/models/sso'; export const DiscordSSOApiPlugin = ({ clientId, @@ -94,7 +94,7 @@ export const DiscordSSOApiPlugin = ({ After the user approves access, Discord sends us a code. Let's exchange it for an access token: ```ts title="src/utils/sso/discord_api.ts" -import { SSOApiPlugin, getRedirectUri } from 'vitnode/api/models/sso'; +import { SSOApiPlugin, getRedirectUri } from '@vitnode/core/api/models/sso'; import { HTTPException } from 'hono/http-exception'; import { ContentfulStatusCode } from 'hono/utils/http-status'; import { z } from 'zod'; @@ -205,7 +205,7 @@ export const DiscordSSOApiPlugin = ({ Finally, let's get the user's profile data using our shiny new access token: ```ts title="src/utils/sso/discord_api.ts" -import { SSOApiPlugin, getRedirectUri } from 'vitnode/api/models/sso'; +import { SSOApiPlugin, getRedirectUri } from '@vitnode/core/api/models/sso'; import { HTTPException } from 'hono/http-exception'; import { ContentfulStatusCode } from 'hono/utils/http-status'; import { z } from 'zod'; @@ -324,7 +324,7 @@ Last step! Let's plug your new SSO provider into your app: ```ts title="src/app/api/[...route]/route.ts" import { OpenAPIHono } from '@hono/zod-openapi'; import { handle } from 'hono/vercel'; -import { VitNodeAPI } from 'vitnode/api/config'; +import { VitNodeAPI } from '@vitnode/core/api/config'; import { DiscordSSOApiPlugin } from '@/utils/sso/discord_api'; const app = new OpenAPIHono().basePath('/api'); diff --git a/apps/docs/content/docs/guides/sso/discord.mdx b/apps/docs/content/docs/guides/sso/discord.mdx index 42fbce732..69fa65f35 100644 --- a/apps/docs/content/docs/guides/sso/discord.mdx +++ b/apps/docs/content/docs/guides/sso/discord.mdx @@ -60,7 +60,7 @@ Add the Discord SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { DiscordSSOApiPlugin } from 'vitnode/api/plugins/sso/discord'; +import { DiscordSSOApiPlugin } from '@vitnode/core/api/plugins/sso/discord'; VitNodeAPI({ app, diff --git a/apps/docs/content/docs/guides/sso/facebook.mdx b/apps/docs/content/docs/guides/sso/facebook.mdx index e22ee76d1..f1d1486f3 100644 --- a/apps/docs/content/docs/guides/sso/facebook.mdx +++ b/apps/docs/content/docs/guides/sso/facebook.mdx @@ -54,7 +54,7 @@ Add the Facebook SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { FacebookSSOApiPlugin } from 'vitnode/api/plugins/sso/facebook'; +import { FacebookSSOApiPlugin } from '@vitnode/core/api/plugins/sso/facebook'; VitNodeAPI({ app, diff --git a/apps/docs/content/docs/guides/sso/google.mdx b/apps/docs/content/docs/guides/sso/google.mdx index cdff7c524..d9a9edcf2 100644 --- a/apps/docs/content/docs/guides/sso/google.mdx +++ b/apps/docs/content/docs/guides/sso/google.mdx @@ -115,7 +115,7 @@ Add the Discord SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { GoogleSSOApiPlugin } from 'vitnode/api/plugins/sso/google'; +import { GoogleSSOApiPlugin } from '@vitnode/core/api/plugins/sso/google'; VitNodeAPI({ app, diff --git a/apps/docs/content/docs/ui/auto-form.mdx b/apps/docs/content/docs/ui/auto-form.mdx index 64e38b530..8f26ba47c 100644 --- a/apps/docs/content/docs/ui/auto-form.mdx +++ b/apps/docs/content/docs/ui/auto-form.mdx @@ -7,8 +7,8 @@ description: Component creates form based on Zod schemas & react-hook-form with ```tsx import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormInput } from 'vitnode/components/form/fields/input'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormInput } from '@vitnode/core/components/form/fields/input'; ``` ```ts diff --git a/apps/docs/content/docs/ui/checkbox.mdx b/apps/docs/content/docs/ui/checkbox.mdx index f15f008ab..b8de36019 100644 --- a/apps/docs/content/docs/ui/checkbox.mdx +++ b/apps/docs/content/docs/ui/checkbox.mdx @@ -17,8 +17,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormCheckbox } from 'vitnode/components/form/fields/checkbox'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormCheckbox } from '@vitnode/core/components/form/fields/checkbox'; ``` ```ts @@ -50,7 +50,7 @@ const formSchema = z.object({ ```ts -import { Checkbox } from 'vitnode-frontend/components/ui/checkbox'; +import { Checkbox } from '@vitnode/core-frontend/components/ui/checkbox'; ``` ```tsx diff --git a/apps/docs/content/docs/ui/data-table.mdx b/apps/docs/content/docs/ui/data-table.mdx index 91a3fc155..779c9b19e 100644 --- a/apps/docs/content/docs/ui/data-table.mdx +++ b/apps/docs/content/docs/ui/data-table.mdx @@ -6,7 +6,7 @@ description: A table component with sorting, filtering, and pagination compatibl ## Usage ```ts -import { DataTable } from 'vitnode/components/table/data-table'; +import { DataTable } from '@vitnode/core/components/table/data-table'; ``` ```tsx @@ -131,9 +131,9 @@ Here's a complete example showing how to use the `DataTable` component in a page import { DataTable, SearchParamsDataTable, -} from 'vitnode/components/table/data-table'; +} from '@vitnode/core/components/table/data-table'; import { userModule } from '@/api/modules/user/user.module'; -import { fetcher } from 'vitnode/lib/fetcher'; +import { fetcher } from '@vitnode/core/lib/fetcher'; export const UsersView = async ({ searchParams, diff --git a/apps/docs/content/docs/ui/input.mdx b/apps/docs/content/docs/ui/input.mdx index b680b91a2..29fa01c93 100644 --- a/apps/docs/content/docs/ui/input.mdx +++ b/apps/docs/content/docs/ui/input.mdx @@ -16,8 +16,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormInput } from 'vitnode/components/form/fields/input'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormInput } from '@vitnode/core/components/form/fields/input'; ``` ```ts @@ -60,7 +60,7 @@ const formSchema = z.object({ ```ts -import { Input } from 'vitnode-frontend/components/ui/input'; +import { Input } from '@vitnode/core-frontend/components/ui/input'; ``` ```tsx diff --git a/apps/docs/content/docs/ui/not-found.mdx b/apps/docs/content/docs/ui/not-found.mdx index dd6da8737..b6727048f 100644 --- a/apps/docs/content/docs/ui/not-found.mdx +++ b/apps/docs/content/docs/ui/not-found.mdx @@ -6,7 +6,7 @@ description: xxx VitNode has implemented own 404 page. You can create your own page by modifying the `app/[locale]/(main)/not-found.tsx` file. ```tsx -import { ErrorView } from 'vitnode/views/error/error-view'; +import { ErrorView } from '@vitnode/core/views/error/error-view'; export default function NotFoundPage() { return ; diff --git a/apps/docs/content/docs/ui/radio-group.mdx b/apps/docs/content/docs/ui/radio-group.mdx index e23a85c59..1cb0ab80b 100644 --- a/apps/docs/content/docs/ui/radio-group.mdx +++ b/apps/docs/content/docs/ui/radio-group.mdx @@ -16,8 +16,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormRadioGroup } from 'vitnode/components/form/fields/radio-group'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormRadioGroup } from '@vitnode/core/components/form/fields/radio-group'; ``` ```ts @@ -62,11 +62,11 @@ const formSchema = z.object({ ```ts -import { Label } from 'vitnode-frontend/components/ui/label'; +import { Label } from '@vitnode/core-frontend/components/ui/label'; import { RadioGroup, RadioGroupItem, -} from 'vitnode-frontend/components/ui/radio-group'; +} from '@vitnode/core-frontend/components/ui/radio-group'; ``` ```tsx diff --git a/apps/docs/content/docs/ui/select.mdx b/apps/docs/content/docs/ui/select.mdx index 243ed70d4..764a02d69 100644 --- a/apps/docs/content/docs/ui/select.mdx +++ b/apps/docs/content/docs/ui/select.mdx @@ -17,8 +17,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormSelect } from 'vitnode/components/form/fields/select'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormSelect } from '@vitnode/core/components/form/fields/select'; ``` ```ts @@ -69,7 +69,7 @@ import { SelectItem, SelectTrigger, SelectValue, -} from 'vitnode-frontend/components/ui/select'; +} from '@vitnode/core-frontend/components/ui/select'; ``` ```tsx diff --git a/apps/docs/content/docs/ui/switch.mdx b/apps/docs/content/docs/ui/switch.mdx index 59d726019..15eb39115 100644 --- a/apps/docs/content/docs/ui/switch.mdx +++ b/apps/docs/content/docs/ui/switch.mdx @@ -17,8 +17,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormCheckbox } from 'vitnode/components/form/fields/checkbox'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormCheckbox } from '@vitnode/core/components/form/fields/checkbox'; ``` ```ts @@ -50,7 +50,7 @@ const formSchema = z.object({ ```ts -import { Switch } from 'vitnode-frontend/components/ui/switch'; +import { Switch } from '@vitnode/core-frontend/components/ui/switch'; ``` ```tsx diff --git a/apps/docs/content/docs/ui/textarea.mdx b/apps/docs/content/docs/ui/textarea.mdx index 285c7e54a..da393a549 100644 --- a/apps/docs/content/docs/ui/textarea.mdx +++ b/apps/docs/content/docs/ui/textarea.mdx @@ -17,8 +17,8 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; ```ts import { z } from 'zod'; -import { AutoForm } from 'vitnode/components/form/auto-form'; -import { AutoFormTextarea } from 'vitnode/components/form/fields/textarea'; +import { AutoForm } from '@vitnode/core/components/form/auto-form'; +import { AutoFormTextarea } from '@vitnode/core/components/form/fields/textarea'; ``` ```ts @@ -50,7 +50,7 @@ const formSchema = z.object({ ```ts -import { Textarea } from 'vitnode-frontend/components/ui/textarea'; +import { Textarea } from '@vitnode/core-frontend/components/ui/textarea'; ``` ```tsx diff --git a/apps/docs/package.json b/apps/docs/package.json index 1f2437197..82d756631 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -18,7 +18,7 @@ "next": "^15.3.1", "react": "^19.1.0", "react-dom": "^19.1.0", - "vitnode": "workspace:*" + "@vitnode/core": "workspace:*" }, "devDependencies": { "@tailwindcss/postcss": "^4.1.4", diff --git a/apps/docs/src/app/(home)/page.tsx b/apps/docs/src/app/(home)/page.tsx index cea07d8aa..aca80a00b 100644 --- a/apps/docs/src/app/(home)/page.tsx +++ b/apps/docs/src/app/(home)/page.tsx @@ -1,8 +1,8 @@ import Link from 'fumadocs-core/link'; import { PlusIcon } from 'lucide-react'; import { Metadata } from 'next'; -import { buttonVariants } from 'vitnode/components/ui/button'; -import { cn } from 'vitnode/lib/utils'; +import { buttonVariants } from '@vitnode/core/components/ui/button'; +import { cn } from '@vitnode/core/lib/utils'; export const metadata: Metadata = { title: 'VitNode: Extendable Framework for Building Apps', diff --git a/apps/docs/src/components/logo-vitnode.tsx b/apps/docs/src/components/logo-vitnode.tsx index 5dc63d957..6268f597e 100644 --- a/apps/docs/src/components/logo-vitnode.tsx +++ b/apps/docs/src/components/logo-vitnode.tsx @@ -1,4 +1,4 @@ -import { cn } from 'vitnode/lib/utils'; +import { cn } from '@vitnode/core/lib/utils'; export const LogoVitNode = ({ className, diff --git a/apps/docs/src/content/docs/guides/sso/discord.mdx b/apps/docs/src/content/docs/guides/sso/discord.mdx index 42fbce732..69fa65f35 100644 --- a/apps/docs/src/content/docs/guides/sso/discord.mdx +++ b/apps/docs/src/content/docs/guides/sso/discord.mdx @@ -60,7 +60,7 @@ Add the Discord SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { DiscordSSOApiPlugin } from 'vitnode/api/plugins/sso/discord'; +import { DiscordSSOApiPlugin } from '@vitnode/core/api/plugins/sso/discord'; VitNodeAPI({ app, diff --git a/apps/docs/src/content/docs/guides/sso/facebook.mdx b/apps/docs/src/content/docs/guides/sso/facebook.mdx index e22ee76d1..f1d1486f3 100644 --- a/apps/docs/src/content/docs/guides/sso/facebook.mdx +++ b/apps/docs/src/content/docs/guides/sso/facebook.mdx @@ -54,7 +54,7 @@ Add the Facebook SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { FacebookSSOApiPlugin } from 'vitnode/api/plugins/sso/facebook'; +import { FacebookSSOApiPlugin } from '@vitnode/core/api/plugins/sso/facebook'; VitNodeAPI({ app, diff --git a/apps/docs/src/content/docs/guides/sso/google.mdx b/apps/docs/src/content/docs/guides/sso/google.mdx index cdff7c524..d9a9edcf2 100644 --- a/apps/docs/src/content/docs/guides/sso/google.mdx +++ b/apps/docs/src/content/docs/guides/sso/google.mdx @@ -115,7 +115,7 @@ Add the Discord SSO plugin to your API routes. ```ts title="src/app/api/[...route]/route.ts" // [!code ++] -import { GoogleSSOApiPlugin } from 'vitnode/api/plugins/sso/google'; +import { GoogleSSOApiPlugin } from '@vitnode/core/api/plugins/sso/google'; VitNodeAPI({ app, diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts index 19e4cd5ad..adef895c1 100644 --- a/apps/web/next.config.ts +++ b/apps/web/next.config.ts @@ -1,5 +1,5 @@ import type { NextConfig } from 'next'; -import { vitNodeNextConfig } from 'vitnode/config/next.config'; +import { vitNodeNextConfig } from '@vitnode/core/config/next.config'; const nextConfig: NextConfig = { /* config options here */ diff --git a/apps/web/package.json b/apps/web/package.json index 66b5cf072..f689f91fa 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -36,8 +36,8 @@ "react-dom": "^19.1.0", "react-hook-form": "^7.56.1", "sonner": "^2.0.3", - "vitnode": "workspace:*", - "vitnode-blog": "workspace:*", + "@vitnode/core": "workspace:*", + "@vitnode/blog": "workspace:*", "zod": "^3.24.3" }, "devDependencies": { diff --git a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/layout.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/layout.tsx index 8bc961a91..112fe952e 100644 --- a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/layout.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/layout.tsx @@ -1,4 +1,4 @@ -import { TestLayout } from 'vitnode-blog/views/test/layout'; +import { TestLayout } from '@vitnode/blog/views/test/layout'; export default function Layout({ children }: { children: React.ReactNode }) { return {children}; diff --git a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/page.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/page.tsx index d89100e90..c3458bc27 100644 --- a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/page.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/page.tsx @@ -1,6 +1,6 @@ -import { Test } from 'vitnode-blog/views/test'; -import { TestClient } from 'vitnode-blog/views/test/client'; -import { Link } from 'vitnode/lib/navigation'; +import { Test } from '@vitnode/blog/views/test'; +import { TestClient } from '@vitnode/blog/views/test/client'; +import { Link } from '@vitnode/core/lib/navigation'; export default function Page() { return ( diff --git a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/test/page.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/test/page.tsx index c34490860..46501b448 100644 --- a/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/test/page.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-blog)/blog/test/page.tsx @@ -1,4 +1,4 @@ -import { Link } from 'vitnode/lib/navigation'; +import { Link } from '@vitnode/core/lib/navigation'; export default function Page() { return ( diff --git a/apps/web/src/app/[locale]/(main)/(vitnode)/login/page.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/page.tsx similarity index 83% rename from apps/web/src/app/[locale]/(main)/(vitnode)/login/page.tsx rename to apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/page.tsx index 9a04c0d56..291f8fbe6 100644 --- a/apps/web/src/app/[locale]/(main)/(vitnode)/login/page.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/page.tsx @@ -1,7 +1,7 @@ import type { Metadata } from 'next/dist/types'; +import { SignInView } from '@vitnode/core/views/auth/sign-in/sign-in-view'; import { getTranslations } from 'next-intl/server'; -import { SignInView } from 'vitnode/views/auth/sign-in/sign-in-view'; export const generateMetadata = async ({ locale, diff --git a/apps/web/src/app/[locale]/(main)/(vitnode)/login/sso/[providerId]/page.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/sso/[providerId]/page.tsx similarity index 80% rename from apps/web/src/app/[locale]/(main)/(vitnode)/login/sso/[providerId]/page.tsx rename to apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/sso/[providerId]/page.tsx index bf0d48947..31b3fd3f1 100644 --- a/apps/web/src/app/[locale]/(main)/(vitnode)/login/sso/[providerId]/page.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/login/sso/[providerId]/page.tsx @@ -1,4 +1,4 @@ -import { CallbackSSOView } from 'vitnode/views/auth/sso/callback/callback-sso-view'; +import { CallbackSSOView } from '@vitnode/core/views/auth/sso/callback/callback-sso-view'; export default async function Page({ params, diff --git a/apps/web/src/app/[locale]/(main)/(vitnode)/register/page.tsx b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/register/page.tsx similarity index 83% rename from apps/web/src/app/[locale]/(main)/(vitnode)/register/page.tsx rename to apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/register/page.tsx index 4c9e16800..fa13dda37 100644 --- a/apps/web/src/app/[locale]/(main)/(vitnode)/register/page.tsx +++ b/apps/web/src/app/[locale]/(main)/(plugins)/(vitnode-core)/register/page.tsx @@ -1,7 +1,7 @@ import type { Metadata } from 'next/dist/types'; +import { SignUpView } from '@vitnode/core/views/auth/sign-up/sign-up-view'; import { getTranslations } from 'next-intl/server'; -import { SignUpView } from 'vitnode/views/auth/sign-up/sign-up-view'; export const generateMetadata = async ({ locale, diff --git a/apps/web/src/app/[locale]/(main)/layout.tsx b/apps/web/src/app/[locale]/(main)/layout.tsx index 7b48fe071..b55a566bb 100644 --- a/apps/web/src/app/[locale]/(main)/layout.tsx +++ b/apps/web/src/app/[locale]/(main)/layout.tsx @@ -1,5 +1,5 @@ -import { LogoVitNode } from 'vitnode/components/logo-vitnode'; -import { ThemeLayout } from 'vitnode/views/layouts/theme/layout'; +import { LogoVitNode } from '@vitnode/core/components/logo-vitnode'; +import { ThemeLayout } from '@vitnode/core/views/layouts/theme/layout'; export default function Layout({ children }: { children: React.ReactNode }) { return ( diff --git a/apps/web/src/app/[locale]/(main)/not-found.tsx b/apps/web/src/app/[locale]/(main)/not-found.tsx index 9fe5db24c..1c4db2aeb 100644 --- a/apps/web/src/app/[locale]/(main)/not-found.tsx +++ b/apps/web/src/app/[locale]/(main)/not-found.tsx @@ -1,4 +1,4 @@ -import { ErrorView } from 'vitnode/views/error/error-view'; +import { ErrorView } from '@vitnode/core/views/error/error-view'; export default function NotFoundPage() { return ; diff --git a/apps/web/src/app/[locale]/(main)/page.tsx b/apps/web/src/app/[locale]/(main)/page.tsx index 1afe41cf8..11db00745 100644 --- a/apps/web/src/app/[locale]/(main)/page.tsx +++ b/apps/web/src/app/[locale]/(main)/page.tsx @@ -1,9 +1,9 @@ +import { LogoVitNode } from '@vitnode/core/components/logo-vitnode'; +import { buttonVariants } from '@vitnode/core/components/ui/button'; +import { Link } from '@vitnode/core/lib/navigation'; +import { cn } from '@vitnode/core/lib/utils'; import { ArrowRight, Book, Terminal } from 'lucide-react'; import { getTranslations } from 'next-intl/server'; -import { LogoVitNode } from 'vitnode/components/logo-vitnode'; -import { buttonVariants } from 'vitnode/components/ui/button'; -import { Link } from 'vitnode/lib/navigation'; -import { cn } from 'vitnode/lib/utils'; export default async function Home({ params, diff --git a/apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/test/page.tsx b/apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/test/page.tsx new file mode 100644 index 000000000..f0f142aca --- /dev/null +++ b/apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/test/page.tsx @@ -0,0 +1,5 @@ +import { TestView } from '@vitnode/core/views/admin/views/core/test'; + +export default function Page() { + return ; +} diff --git a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/users/page.tsx b/apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/users/page.tsx similarity index 58% rename from apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/users/page.tsx rename to apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/users/page.tsx index 306e0807b..baf01a179 100644 --- a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/users/page.tsx +++ b/apps/web/src/app/[locale]/admin/(auth)/(plugins)/(vitnode-core)/users/page.tsx @@ -1,4 +1,4 @@ -import { UsersAdminView } from 'vitnode/views/admin/views/core/users/users-admin-view'; +import { UsersAdminView } from '@vitnode/core/views/admin/views/core/users/users-admin-view'; export default function Page( props: React.ComponentProps, diff --git a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/page.tsx b/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/page.tsx deleted file mode 100644 index 63745336c..000000000 --- a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { DashboardAdminView } from 'vitnode/views/admin/views/core/dashboard/dashboard-admin-view'; - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/test/page.tsx b/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/test/page.tsx deleted file mode 100644 index 92ea2fc30..000000000 --- a/apps/web/src/app/[locale]/admin/(auth)/(vitnode)/core/test/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { TestView } from 'vitnode/views/admin/views/core/test'; - -export default function Page() { - return ; -} diff --git a/apps/web/src/app/[locale]/admin/(auth)/layout.tsx b/apps/web/src/app/[locale]/admin/(auth)/layout.tsx index 952523ac1..70967ed39 100644 --- a/apps/web/src/app/[locale]/admin/(auth)/layout.tsx +++ b/apps/web/src/app/[locale]/admin/(auth)/layout.tsx @@ -1,4 +1,4 @@ -import { AdminLayout } from 'vitnode/views/admin/layouts/admin-layout'; +import { AdminLayout } from '@vitnode/core/views/admin/layouts/admin-layout'; export default function Layout( props: React.ComponentProps, diff --git a/apps/web/src/app/[locale]/admin/not-found.tsx b/apps/web/src/app/[locale]/admin/not-found.tsx index 9fe5db24c..1c4db2aeb 100644 --- a/apps/web/src/app/[locale]/admin/not-found.tsx +++ b/apps/web/src/app/[locale]/admin/not-found.tsx @@ -1,4 +1,4 @@ -import { ErrorView } from 'vitnode/views/error/error-view'; +import { ErrorView } from '@vitnode/core/views/error/error-view'; export default function NotFoundPage() { return ; diff --git a/apps/web/src/app/[locale]/admin/page.tsx b/apps/web/src/app/[locale]/admin/page.tsx index 1f2c8426c..9238ffa31 100644 --- a/apps/web/src/app/[locale]/admin/page.tsx +++ b/apps/web/src/app/[locale]/admin/page.tsx @@ -1,4 +1,4 @@ -import { SignInAdminView } from 'vitnode/views/admin/sign-in/sign-in-admin-view'; +import { SignInAdminView } from '@vitnode/core/views/admin/sign-in/sign-in-admin-view'; export default function Page() { return ; diff --git a/apps/web/src/app/[locale]/layout.tsx b/apps/web/src/app/[locale]/layout.tsx index bce550ffd..e19ecf39c 100644 --- a/apps/web/src/app/[locale]/layout.tsx +++ b/apps/web/src/app/[locale]/layout.tsx @@ -1,12 +1,12 @@ +import type { RootLayoutProps } from '@vitnode/core/views/layouts/root-layout'; import type { Metadata } from 'next'; -import type { RootLayoutProps } from 'vitnode/views/layouts/root-layout'; import { vitNodeConfig } from '@/vitnode.config'; -import { Geist, Geist_Mono } from 'next/font/google'; import { generateMetadataRootLayout, RootLayout, -} from 'vitnode/views/layouts/root-layout'; +} from '@vitnode/core/views/layouts/root-layout'; +import { Geist, Geist_Mono } from 'next/font/google'; const geistSans = Geist({ variable: '--font-geist-sans', diff --git a/apps/web/src/app/api/[...route]/route.ts b/apps/web/src/app/api/[...route]/route.ts index 267ff5d37..7721aa797 100644 --- a/apps/web/src/app/api/[...route]/route.ts +++ b/apps/web/src/app/api/[...route]/route.ts @@ -1,8 +1,8 @@ import { vitNodeApiConfig } from '@/vitnode.api.config'; import { vitNodeConfig } from '@/vitnode.config'; import { OpenAPIHono } from '@hono/zod-openapi'; +import { VitNodeAPI } from '@vitnode/core/api/config'; import { handle } from 'hono/vercel'; -import { VitNodeAPI } from 'vitnode/api/config'; const app = new OpenAPIHono().basePath('/api'); VitNodeAPI({ diff --git a/apps/web/src/app/global-error.tsx b/apps/web/src/app/global-error.tsx index d93df4e31..5633ed557 100644 --- a/apps/web/src/app/global-error.tsx +++ b/apps/web/src/app/global-error.tsx @@ -1,11 +1,11 @@ 'use client'; import { vitNodeConfig } from '@/vitnode.config'; -import { Geist, Geist_Mono } from 'next/font/google'; +import { GlobalErrorView } from '@vitnode/core/views/error/global-error-view'; import './globals.css'; -import { GlobalErrorView } from 'vitnode/views/error/global-error-view'; +import { Geist, Geist_Mono } from 'next/font/google'; const geistSans = Geist({ variable: '--font-geist-sans', diff --git a/apps/web/src/app/globals.css b/apps/web/src/app/globals.css index b11b3fb84..3123b1d23 100644 --- a/apps/web/src/app/globals.css +++ b/apps/web/src/app/globals.css @@ -2,8 +2,8 @@ @import 'tw-animate-css'; -@source "../../node_modules/vitnode/dist/src/components"; -@source "../../node_modules/vitnode/dist/src/views"; +@source "../../node_modules/@vitnode/core/dist/src/components"; +@source "../../node_modules/@vitnode/core/dist/src/views"; @custom-variant dark (&:is(.dark *)); diff --git a/apps/web/src/vitnode.api.config.ts b/apps/web/src/vitnode.api.config.ts index 06b3cc7bb..e977708b5 100644 --- a/apps/web/src/vitnode.api.config.ts +++ b/apps/web/src/vitnode.api.config.ts @@ -1,9 +1,9 @@ -import { blogApiPlugin } from 'vitnode-blog/config.api'; -import { NodemailerEmailPlugin } from 'vitnode/api/plugins/email/nodemailer'; -import { DiscordSSOApiPlugin } from 'vitnode/api/plugins/sso/discord'; -import { FacebookSSOApiPlugin } from 'vitnode/api/plugins/sso/facebook'; -import { GoogleSSOApiPlugin } from 'vitnode/api/plugins/sso/google'; -import { buildApiConfig } from 'vitnode/vitnode.config'; +import { blogApiPlugin } from '@vitnode/blog/config.api'; +import { NodemailerEmailPlugin } from '@vitnode/core/api/plugins/email/nodemailer'; +import { DiscordSSOApiPlugin } from '@vitnode/core/api/plugins/sso/discord'; +import { FacebookSSOApiPlugin } from '@vitnode/core/api/plugins/sso/facebook'; +import { GoogleSSOApiPlugin } from '@vitnode/core/api/plugins/sso/google'; +import { buildApiConfig } from '@vitnode/core/vitnode.config'; export const vitNodeApiConfig = buildApiConfig({ plugins: [blogApiPlugin()], diff --git a/apps/web/src/vitnode.config.ts b/apps/web/src/vitnode.config.ts index 6dab4cc08..4999c2f4f 100644 --- a/apps/web/src/vitnode.config.ts +++ b/apps/web/src/vitnode.config.ts @@ -1,6 +1,6 @@ +import { blogPlugin } from '@vitnode/blog/plugin'; +import { buildConfig, handleRequestConfig } from '@vitnode/core/vitnode.config'; import { getRequestConfig } from 'next-intl/server'; -import { blogPlugin } from 'vitnode-blog/plugin'; -import { buildConfig, handleRequestConfig } from 'vitnode/vitnode.config'; export const vitNodeConfig = buildConfig({ metadata: { diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json index dd37eba80..6f354539d 100644 --- a/packages/vitnode/package.json +++ b/packages/vitnode/package.json @@ -1,5 +1,5 @@ { - "name": "vitnode", + "name": "@vitnode/core", "version": "2.0.0-canary.0", "devDependencies": { "@hono/swagger-ui": "^0.5.1", diff --git a/packages/vitnode/scripts/plugin.ts b/packages/vitnode/scripts/plugin.ts index 83d785505..1497df257 100644 --- a/packages/vitnode/scripts/plugin.ts +++ b/packages/vitnode/scripts/plugin.ts @@ -33,6 +33,9 @@ export const processPlugin = ({ initMessage }: { initMessage: string }) => { return; } + // Transform plugin name for path usage + const pluginPathName = pluginName.replace(/\//g, '-').replace(/@/g, ''); + const mainDest = join( repoRoot, 'apps', @@ -41,9 +44,7 @@ export const processPlugin = ({ initMessage }: { initMessage: string }) => { 'app', '[locale]', '(main)', - pluginName === 'vitnode' - ? join('(vitnode)') - : join('(plugins)', `(${pluginName})`), + join('(plugins)', `(${pluginPathName})`), ); const adminDest = join( repoRoot, @@ -54,9 +55,7 @@ export const processPlugin = ({ initMessage }: { initMessage: string }) => { '[locale]', 'admin', '(auth)', - pluginName === 'vitnode' - ? join('(vitnode)', 'core') - : join('(plugins)', `(${pluginName})`), + join('(plugins)', `(${pluginPathName})`), ); // tell the copier about both trees diff --git a/packages/vitnode/scripts/prepare/prepare-plugins.ts b/packages/vitnode/scripts/prepare/prepare-plugins.ts index 1752cad63..c19fde63c 100644 --- a/packages/vitnode/scripts/prepare/prepare-plugins.ts +++ b/packages/vitnode/scripts/prepare/prepare-plugins.ts @@ -44,6 +44,9 @@ export const preparePlugins = async () => { return; } + // Transform plugin name for path usage + const pluginPathName = pluginName.replace(/\//g, '-').replace(/@/g, ''); + const mainDest = join( repoRoot, 'apps', @@ -52,9 +55,7 @@ export const preparePlugins = async () => { 'app', '[locale]', '(main)', - pluginName === 'vitnode' - ? join('(vitnode)') - : join('(plugins)', `(${pluginName})`), + join('(plugins)', `(${pluginPathName})`), ); const adminDest = join( repoRoot, @@ -65,9 +66,7 @@ export const preparePlugins = async () => { '[locale]', 'admin', '(auth)', - pluginName === 'vitnode' - ? join('(vitnode)', 'core') - : join('(plugins)', `(${pluginName})`), + join('(plugins)', `(${pluginPathName})`), ); // Define source configurations for this plugin diff --git a/packages/vitnode/src/api/lib/check-plugin-name.ts b/packages/vitnode/src/api/lib/check-plugin-name.ts index 816b7e6e5..32c7dfa2f 100644 --- a/packages/vitnode/src/api/lib/check-plugin-name.ts +++ b/packages/vitnode/src/api/lib/check-plugin-name.ts @@ -22,9 +22,9 @@ export const checkPluginName = (pluginName: string): null | PackageJSON => { const path = join(process.cwd(), 'node_modules', pluginName, 'package.json'); - if (!existsSync(path) && pluginName !== 'vitnode') { + if (!existsSync(path)) { throw new Error( - `package.json file not found at ${path}. If you are the developer of this plugin, please ensure you are using the correct plugin name as specified in its package.json.`, + `package.json file not found at ${path}. Please ensure you are using the correct plugin name as specified in its package.json.`, ); } diff --git a/packages/vitnode/src/api/lib/route.ts b/packages/vitnode/src/api/lib/route.ts index 8b069003c..22f917372 100644 --- a/packages/vitnode/src/api/lib/route.ts +++ b/packages/vitnode/src/api/lib/route.ts @@ -33,13 +33,10 @@ export const buildRoute = < getRoutingPath: () => RoutingPath; }; } => { - const pluginTag = - plugin === 'vitnode' - ? 'Core' - : plugin - .split(/[-_]/) - .map(word => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); + const pluginTag = plugin + .split(/[-_]/) + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); const tags = [pluginTag, ...(route.tags ?? [])]; diff --git a/packages/vitnode/src/api/modules/admin/admin.module.ts b/packages/vitnode/src/api/modules/admin/admin.module.ts index 70b3935b5..940f41372 100644 --- a/packages/vitnode/src/api/modules/admin/admin.module.ts +++ b/packages/vitnode/src/api/modules/admin/admin.module.ts @@ -5,7 +5,7 @@ import { usersAdminModule } from './users/users.admin.module'; export const adminModule = buildModule({ name: 'admin', - plugin: 'vitnode', + plugin: '@vitnode/core', routes: [sessionAdminRoute], modules: [usersAdminModule], }); diff --git a/packages/vitnode/src/api/modules/admin/routes/session.route.ts b/packages/vitnode/src/api/modules/admin/routes/session.route.ts index b8d907e6c..cb29bacf1 100644 --- a/packages/vitnode/src/api/modules/admin/routes/session.route.ts +++ b/packages/vitnode/src/api/modules/admin/routes/session.route.ts @@ -4,7 +4,7 @@ import { HTTPException } from 'hono/http-exception'; import { z } from 'zod'; export const sessionAdminRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'Verify admin session', diff --git a/packages/vitnode/src/api/modules/admin/users/routes/list.route.ts b/packages/vitnode/src/api/modules/admin/users/routes/list.route.ts index 37d02485e..3efa998f9 100644 --- a/packages/vitnode/src/api/modules/admin/users/routes/list.route.ts +++ b/packages/vitnode/src/api/modules/admin/users/routes/list.route.ts @@ -9,7 +9,7 @@ import { core_users } from '@/database/schema/users'; import { z } from '@hono/zod-openapi'; export const listUsersAdminRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'Get list of all users', diff --git a/packages/vitnode/src/api/modules/admin/users/routes/users.route.ts b/packages/vitnode/src/api/modules/admin/users/routes/users.route.ts index 14132f645..72545e7c0 100644 --- a/packages/vitnode/src/api/modules/admin/users/routes/users.route.ts +++ b/packages/vitnode/src/api/modules/admin/users/routes/users.route.ts @@ -9,7 +9,7 @@ import { core_users } from '@/database/schema/users'; import { z } from '@hono/zod-openapi'; export const usersAdminRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'Get list of all users (Admin only)', diff --git a/packages/vitnode/src/api/modules/admin/users/users.admin.module.ts b/packages/vitnode/src/api/modules/admin/users/users.admin.module.ts index 1ea5193b5..513a0b86e 100644 --- a/packages/vitnode/src/api/modules/admin/users/users.admin.module.ts +++ b/packages/vitnode/src/api/modules/admin/users/users.admin.module.ts @@ -4,6 +4,6 @@ import { listUsersAdminRoute } from './routes/list.route'; export const usersAdminModule = buildModule({ name: 'users', - plugin: 'vitnode', + plugin: '@vitnode/core', routes: [listUsersAdminRoute], }); diff --git a/packages/vitnode/src/api/modules/middleware/middleware.module.ts b/packages/vitnode/src/api/modules/middleware/middleware.module.ts index 7669ea521..bc1f307aa 100644 --- a/packages/vitnode/src/api/modules/middleware/middleware.module.ts +++ b/packages/vitnode/src/api/modules/middleware/middleware.module.ts @@ -4,7 +4,7 @@ import { routeMiddleware } from './route'; import { routeTestMiddleware } from './test'; export const middlewareModule = buildModule({ - plugin: 'vitnode', + plugin: '@vitnode/core', name: 'middleware', routes: [routeMiddleware, routeTestMiddleware], }); diff --git a/packages/vitnode/src/api/modules/middleware/route.ts b/packages/vitnode/src/api/modules/middleware/route.ts index 7e6e8045b..6dd8dd71c 100644 --- a/packages/vitnode/src/api/modules/middleware/route.ts +++ b/packages/vitnode/src/api/modules/middleware/route.ts @@ -3,7 +3,7 @@ import { EmailModel } from '@/api/models/email'; import { z } from 'zod'; export const routeMiddleware = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { path: '/', method: 'get', diff --git a/packages/vitnode/src/api/modules/middleware/test.ts b/packages/vitnode/src/api/modules/middleware/test.ts index a6d5bd054..b2f65987e 100644 --- a/packages/vitnode/src/api/modules/middleware/test.ts +++ b/packages/vitnode/src/api/modules/middleware/test.ts @@ -10,7 +10,7 @@ import { } from '../../lib/with-pagination'; export const routeTestMiddleware = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { path: '/test', method: 'get', diff --git a/packages/vitnode/src/api/modules/users/routes/session.route.ts b/packages/vitnode/src/api/modules/users/routes/session.route.ts index e7942c3eb..597e924c4 100644 --- a/packages/vitnode/src/api/modules/users/routes/session.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/session.route.ts @@ -3,7 +3,7 @@ import { SessionAdminModel } from '@/api/models/session-admin'; import { z } from 'zod'; export const sessionRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'Verify session', diff --git a/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts b/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts index 4ee8f87e7..85b49b1df 100644 --- a/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/sign-in.route.ts @@ -5,7 +5,7 @@ import { UserModel } from '@/api/models/user'; import { z } from 'zod'; export const signInRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'post', description: 'Sign in with email and password', diff --git a/packages/vitnode/src/api/modules/users/routes/sign-out.route.ts b/packages/vitnode/src/api/modules/users/routes/sign-out.route.ts index 32c260ed4..f13f5c08a 100644 --- a/packages/vitnode/src/api/modules/users/routes/sign-out.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/sign-out.route.ts @@ -4,7 +4,7 @@ import { SessionAdminModel } from '@/api/models/session-admin'; import { z } from '@hono/zod-openapi'; export const signOutRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'delete', description: 'Sign out the current admin', diff --git a/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts b/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts index b048b56e7..cad27f562 100644 --- a/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/sign-up.route.ts @@ -6,7 +6,7 @@ import { z } from 'zod'; const nameRegex = /^(?!.* {2})[\p{L}\p{N}._@ -]*$/u; export const signUpRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'post', description: 'Create a new user', diff --git a/packages/vitnode/src/api/modules/users/routes/test.route.ts b/packages/vitnode/src/api/modules/users/routes/test.route.ts index 47b7128e7..bfeb97879 100644 --- a/packages/vitnode/src/api/modules/users/routes/test.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/test.route.ts @@ -2,7 +2,7 @@ import { buildRoute } from '@/api/lib/route'; import { z } from 'zod'; export const testRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'Test route', diff --git a/packages/vitnode/src/api/modules/users/sso/routes/callback.route.ts b/packages/vitnode/src/api/modules/users/sso/routes/callback.route.ts index 8bef71c4c..3fb9f1426 100644 --- a/packages/vitnode/src/api/modules/users/sso/routes/callback.route.ts +++ b/packages/vitnode/src/api/modules/users/sso/routes/callback.route.ts @@ -4,7 +4,7 @@ import { SSOModel } from '@/api/models/sso'; import { z } from 'zod'; export const callbackRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'get', description: 'SSO Callback', diff --git a/packages/vitnode/src/api/modules/users/sso/routes/create-url.route.ts b/packages/vitnode/src/api/modules/users/sso/routes/create-url.route.ts index 818b6eb3c..0bca51227 100644 --- a/packages/vitnode/src/api/modules/users/sso/routes/create-url.route.ts +++ b/packages/vitnode/src/api/modules/users/sso/routes/create-url.route.ts @@ -3,7 +3,7 @@ import { SSOModel } from '@/api/models/sso'; import { z } from 'zod'; export const createUrlRoute = buildRoute({ - plugin: 'vitnode', + plugin: '@vitnode/core', route: { method: 'post', description: 'Generate SSO URL', diff --git a/packages/vitnode/src/api/modules/users/sso/sso.module.ts b/packages/vitnode/src/api/modules/users/sso/sso.module.ts index 51f8a2e89..7dd405e66 100644 --- a/packages/vitnode/src/api/modules/users/sso/sso.module.ts +++ b/packages/vitnode/src/api/modules/users/sso/sso.module.ts @@ -5,6 +5,6 @@ import { createUrlRoute } from './routes/create-url.route'; export const ssoUserModule = buildModule({ name: 'sso', - plugin: 'vitnode', + plugin: '@vitnode/core', routes: [callbackRoute, createUrlRoute], }); diff --git a/packages/vitnode/src/api/modules/users/users.module.ts b/packages/vitnode/src/api/modules/users/users.module.ts index 76126e18a..55aaafcee 100644 --- a/packages/vitnode/src/api/modules/users/users.module.ts +++ b/packages/vitnode/src/api/modules/users/users.module.ts @@ -8,7 +8,7 @@ import { testRoute } from './routes/test.route'; import { ssoUserModule } from './sso/sso.module'; export const usersModule = buildModule({ - plugin: 'vitnode', + plugin: '@vitnode/core', name: 'users', routes: [sessionRoute, signInRoute, signOutRoute, signUpRoute, testRoute], modules: [ssoUserModule], diff --git a/packages/vitnode/src/api/plugin.ts b/packages/vitnode/src/api/plugin.ts index 307e5556d..8b9570d88 100644 --- a/packages/vitnode/src/api/plugin.ts +++ b/packages/vitnode/src/api/plugin.ts @@ -4,6 +4,6 @@ import { middlewareModule } from './modules/middleware/middleware.module'; import { usersModule } from './modules/users/users.module'; export const newBuildPluginApiCore = buildApiPlugin({ - name: 'vitnode', + name: '@vitnode/core', modules: [middlewareModule, usersModule, adminModule], }); diff --git a/plugins/blog/package.json b/plugins/blog/package.json index d6f16cacb..21a2783a3 100644 --- a/plugins/blog/package.json +++ b/plugins/blog/package.json @@ -1,5 +1,5 @@ { - "name": "vitnode-blog", + "name": "@vitnode/blog", "version": "2.0.0-canary.0", "description": "Backend wrapper for VitNode projects", "author": "VitNode", @@ -28,7 +28,7 @@ "next-intl": "^4.1.0", "react": "^19.1.0", "react-dom": "^19.1.0", - "vitnode": "workspace:*", + "@vitnode/core": "workspace:*", "zod": "^3.24.3" }, "devDependencies": { diff --git a/plugins/blog/src/api/modules/categories/categories.module.ts b/plugins/blog/src/api/modules/categories/categories.module.ts index 438103d9a..47f947ab2 100644 --- a/plugins/blog/src/api/modules/categories/categories.module.ts +++ b/plugins/blog/src/api/modules/categories/categories.module.ts @@ -1,9 +1,9 @@ -import { buildModule } from 'vitnode/api/lib/module'; +import { buildModule } from '@vitnode/core/api/lib/module'; import { categoriesRoute } from './route'; export const categoriesModule = buildModule({ - plugin: 'vitnode-blog', + plugin: '@vitnode/blog', name: 'categories', routes: [categoriesRoute], }); diff --git a/plugins/blog/src/api/modules/categories/route.ts b/plugins/blog/src/api/modules/categories/route.ts index d4a2dd6b9..4942e01a5 100644 --- a/plugins/blog/src/api/modules/categories/route.ts +++ b/plugins/blog/src/api/modules/categories/route.ts @@ -1,8 +1,8 @@ import { z } from '@hono/zod-openapi'; -import { buildRoute } from 'vitnode/api/lib/route'; +import { buildRoute } from '@vitnode/core/api/lib/route'; export const categoriesRoute = buildRoute({ - plugin: 'vitnode-blog', + plugin: '@vitnode/blog', route: { method: 'get', path: '/', diff --git a/plugins/blog/src/app/blog/page.tsx b/plugins/blog/src/app/blog/page.tsx index 085899b19..1cb582c95 100644 --- a/plugins/blog/src/app/blog/page.tsx +++ b/plugins/blog/src/app/blog/page.tsx @@ -1,4 +1,4 @@ -import { Link } from 'vitnode/lib/navigation'; +import { Link } from '@vitnode/core/lib/navigation'; import { Test } from '../../views/test'; import { TestClient } from '../../views/test/client'; diff --git a/plugins/blog/src/app/blog/test/page.tsx b/plugins/blog/src/app/blog/test/page.tsx index c34490860..46501b448 100644 --- a/plugins/blog/src/app/blog/test/page.tsx +++ b/plugins/blog/src/app/blog/test/page.tsx @@ -1,4 +1,4 @@ -import { Link } from 'vitnode/lib/navigation'; +import { Link } from '@vitnode/core/lib/navigation'; export default function Page() { return ( diff --git a/plugins/blog/src/config.api.ts b/plugins/blog/src/config.api.ts index a0e33347c..8bfc91cc9 100644 --- a/plugins/blog/src/config.api.ts +++ b/plugins/blog/src/config.api.ts @@ -1,4 +1,4 @@ -import { buildApiPlugin } from 'vitnode/api/lib/plugin'; +import { buildApiPlugin } from '@vitnode/core/api/lib/plugin'; import { categoriesModule } from './api/modules/categories/categories.module'; import { configPlugin } from './config'; diff --git a/plugins/blog/src/config.ts b/plugins/blog/src/config.ts index 6afc7e884..38223aa5d 100644 --- a/plugins/blog/src/config.ts +++ b/plugins/blog/src/config.ts @@ -1,3 +1,3 @@ export const configPlugin = { - name: 'vitnode-blog' as const, + name: '@vitnode/blog' as const, }; diff --git a/plugins/blog/src/plugin.tsx b/plugins/blog/src/plugin.tsx index 9527c5e0a..6f36f84bb 100644 --- a/plugins/blog/src/plugin.tsx +++ b/plugins/blog/src/plugin.tsx @@ -1,4 +1,4 @@ -import { buildPlugin } from 'vitnode/lib/plugin'; +import { buildPlugin } from '@vitnode/core/lib/plugin'; import { configPlugin } from './config'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc982b2cb..30986f26f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: apps/docs: dependencies: + '@vitnode/core': + specifier: workspace:* + version: link:../../packages/vitnode babel-plugin-react-compiler: specifier: 19.1.0-rc.1 version: 19.1.0-rc.1 @@ -53,9 +56,6 @@ importers: react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) - vitnode: - specifier: workspace:* - version: link:../../packages/vitnode devDependencies: '@tailwindcss/postcss': specifier: ^4.1.4 @@ -99,6 +99,12 @@ importers: '@react-email/components': specifier: 0.0.39 version: 0.0.39(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@vitnode/blog': + specifier: workspace:* + version: link:../../plugins/blog + '@vitnode/core': + specifier: workspace:* + version: link:../../packages/vitnode babel-plugin-react-compiler: specifier: 19.1.0-rc.1 version: 19.1.0-rc.1 @@ -122,7 +128,7 @@ importers: version: 15.3.2(@playwright/test@1.52.0)(babel-plugin-react-compiler@19.1.0-rc.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ^4.1.0 - version: 4.1.0(next@15.3.2(@playwright/test@1.52.0)(babel-plugin-react-compiler@19.1.0-rc.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.1.0(next@15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 @@ -135,12 +141,6 @@ importers: sonner: specifier: ^2.0.3 version: 2.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - vitnode: - specifier: workspace:* - version: link:../../packages/vitnode - vitnode-blog: - specifier: workspace:* - version: link:../../plugins/blog zod: specifier: ^3.24.3 version: 3.24.4 @@ -426,6 +426,9 @@ importers: '@hono/zod-openapi': specifier: ^0.19.6 version: 0.19.6(hono@4.7.9)(zod@3.24.4) + '@vitnode/core': + specifier: workspace:* + version: link:../../packages/vitnode drizzle-kit: specifier: ^0.31.0 version: 0.31.1 @@ -443,16 +446,13 @@ importers: version: 15.3.2(@playwright/test@1.52.0)(babel-plugin-react-compiler@19.1.0-rc.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-intl: specifier: ^4.1.0 - version: 4.1.0(next@15.3.2(@playwright/test@1.52.0)(babel-plugin-react-compiler@19.1.0-rc.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) + version: 4.1.0(next@15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3) react: specifier: ^19.1.0 version: 19.1.0 react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) - vitnode: - specifier: workspace:* - version: link:../../packages/vitnode zod: specifier: ^3.24.3 version: 3.24.4 @@ -12848,7 +12848,7 @@ snapshots: optionalDependencies: typescript: 5.8.3 - next-intl@4.1.0(next@15.3.2(@playwright/test@1.52.0)(babel-plugin-react-compiler@19.1.0-rc.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): + next-intl@4.1.0(next@15.3.2(@playwright/test@1.52.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0