Removed shamefully-hoist and updated all packages to respect that

This commit is contained in:
giancarlo
2024-04-10 01:45:03 +08:00
parent 9e1199f3f4
commit f729bf6077
33 changed files with 1504 additions and 1470 deletions

1
.npmrc
View File

@@ -1,4 +1,3 @@
shamefully-hoist=true
peer-legacy-deps=true
dedupe-peer-dependencies=true
use-lockfile-v6=true

View File

@@ -10,10 +10,10 @@ import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import { withI18n } from '~/lib/i18n/with-i18n';
export const generateMetadata = async () => {
const i18n = await createI18nServerInstance();
const { t } = await createI18nServerInstance();
return {
title: i18n.t('auth:passwordResetLabel'),
title: t('auth:passwordResetLabel'),
};
};

View File

@@ -1,4 +1,4 @@
import type { Provider } from '@supabase/gotrue-js';
import type { Provider } from '@supabase/supabase-js';
import { z } from 'zod';

View File

@@ -38,26 +38,25 @@
"@makerkit/data-loader-supabase-nextjs": "^0.0.9",
"@marsidev/react-turnstile": "^0.5.4",
"@radix-ui/react-icons": "^1.3.0",
"@supabase/ssr": "^0.1.0",
"@supabase/ssr": "^0.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"@tanstack/react-query-next-experimental": "^5.28.14",
"@tanstack/react-query-next-experimental": "^5.29.0",
"@tanstack/react-table": "^8.15.3",
"date-fns": "^3.6.0",
"edge-csrf": "^1.0.9",
"i18next": "^23.10.1",
"i18next": "^23.11.0",
"i18next-resources-to-backend": "^1.2.0",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.62",
"next": "14.2.0-canary.63",
"next-sitemap": "^4.2.3",
"next-themes": "0.3.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"recharts": "^2.12.3",
"recharts": "^2.12.4",
"sonner": "^1.4.41",
"tailwindcss-animate": "^1.0.7",
"zod": "^3.22.4"
},
"devDependencies": {
@@ -68,7 +67,7 @@
"@next/bundle-analyzer": "14.2.0-canary.54",
"@types/mdx": "^2.0.12",
"@types/node": "^20.12.3",
"@types/react": "^18.2.73",
"@types/react": "^18.2.75",
"@types/react-dom": "^18.2.22",
"autoprefixer": "^10.4.19",
"dotenv-cli": "^7.4.1",

View File

@@ -1 +0,0 @@
{}

View File

@@ -37,6 +37,7 @@
"pnpm": "^8.15.6",
"prettier": "^3.2.5",
"turbo": "^1.13.2",
"typescript": "^5.4.3",
"yarn": "^1.22.22"
}
}

View File

@@ -21,7 +21,12 @@
"@kit/supabase": "^0.1.0",
"@kit/ui": "0.1.0",
"@supabase/supabase-js": "^2.42.0",
"date-fns": "^3.6.0",
"lucide-react": "^0.363.0",
"next": "^14.1.4",
"react": "^18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"zod": "^3.22.4"
},
"devDependencies": {
@@ -37,7 +42,13 @@
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:^",
"@supabase/supabase-js": "^2.42.0",
"@types/react": "^18.2.75",
"date-fns": "^3.6.0",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.63",
"react": "18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"zod": "^3.22.4"
},
"eslintConfig": {

View File

@@ -17,7 +17,9 @@
"@kit/billing": "0.1.0",
"@kit/shared": "0.1.0",
"@kit/supabase": "0.1.0",
"@kit/ui": "0.1.0"
"@kit/ui": "0.1.0",
"react": "^18.2.0",
"zod": "^3.22.4"
},
"dependencies": {
"@lemonsqueezy/lemonsqueezy.js": "2.2.0"
@@ -30,7 +32,10 @@
"@kit/supabase": "workspace:^",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:^"
"@kit/ui": "workspace:^",
"@types/react": "^18.2.75",
"react": "18.2.0",
"zod": "^3.22.4"
},
"eslintConfig": {
"root": true,

View File

@@ -18,7 +18,10 @@
"@kit/billing": "0.1.0",
"@kit/shared": "0.1.0",
"@kit/supabase": "0.1.0",
"@kit/ui": "0.1.0"
"@kit/ui": "0.1.0",
"date-fns": "^3.6.0",
"react": "^18.2.0",
"zod": "^3.22.4"
},
"dependencies": {
"@stripe/react-stripe-js": "^2.6.2",
@@ -33,7 +36,11 @@
"@kit/supabase": "workspace:^",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:^"
"@kit/ui": "workspace:^",
"@types/react": "^18.2.75",
"date-fns": "^3.6.0",
"react": "18.2.0",
"zod": "^3.22.4"
},
"eslintConfig": {
"root": true,

View File

@@ -28,7 +28,8 @@
"@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "*"
"@kit/ui": "*",
"mdx": "0.3.1"
},
"eslintConfig": {
"root": true,

View File

@@ -1,16 +1,7 @@
import type { MDXComponents as MDXComponentsType } from 'mdx/types';
import { getMDXComponent } from 'next-contentlayer/hooks';
import { MDXComponents } from '@kit/ui/mdx-components';
export function Mdx({
code,
}: React.PropsWithChildren<{
code: string;
}>) {
export function Mdx({ code }: { code: string }) {
const Component = getMDXComponent(code);
return (
<Component components={MDXComponents as unknown as MDXComponentsType} />
);
return <Component />;
}

View File

@@ -14,34 +14,56 @@
"./personal-account-settings": "./src/components/personal-account-settings/index.ts",
"./hooks/*": "./src/hooks/*.ts"
},
"dependencies": {
"nanoid": "^5.0.7"
},
"devDependencies": {
"@hookform/resolvers": "^3.3.4",
"@kit/billing-gateway": "workspace:^",
"@kit/email-templates": "workspace:^",
"@kit/billing-gateway": "*",
"@kit/email-templates": "*",
"@kit/eslint-config": "workspace:*",
"@kit/mailers": "workspace:^",
"@kit/mailers": "*",
"@kit/prettier-config": "workspace:*",
"@kit/shared": "workspace:^",
"@kit/supabase": "workspace:^",
"@kit/shared": "*",
"@kit/supabase": "*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:^",
"@kit/ui": "*",
"@radix-ui/react-icons": "^1.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"@types/react": "^18.2.75",
"@types/react-dom": "^18.2.22",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.63",
"next-themes": "0.3.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
"zod": "^3.22.4"
},
"peerDependencies": {
"@hookform/resolvers": "^3.3.4",
"@kit/billing-gateway": "workspace:^",
"@kit/email-templates": "workspace:^",
"@kit/mailers": "workspace:^",
"@kit/shared": "0.1.0",
"@kit/supabase": "0.1.0",
"@kit/ui": "0.1.0",
"@kit/ui": "workspace:^",
"@radix-ui/react-icons": "^1.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"lucide-react": "^0.363.0",
"sonner": "^1.4.41"
"next": "^14.1.4",
"next-themes": "0.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
"zod": "^3.22.4"
},
"prettier": "@kit/prettier-config",
"eslintConfig": {

View File

@@ -1,6 +1,6 @@
'use client';
import type { User } from '@supabase/gotrue-js';
import type { User } from '@supabase/supabase-js';
import { zodResolver } from '@hookform/resolvers/zod';
import { useForm } from 'react-hook-form';

View File

@@ -1,6 +1,6 @@
import { useCallback, useState } from 'react';
import type { Factor } from '@supabase/gotrue-js';
import type { Factor } from '@supabase/supabase-js';
import { ExclamationTriangleIcon } from '@radix-ui/react-icons';
import { useMutation, useQueryClient } from '@tanstack/react-query';

View File

@@ -2,7 +2,7 @@
import { useState } from 'react';
import type { User } from '@supabase/gotrue-js';
import type { User } from '@supabase/supabase-js';
import { zodResolver } from '@hookform/resolvers/zod';
import { ExclamationTriangleIcon } from '@radix-ui/react-icons';

View File

@@ -16,7 +16,11 @@
"@kit/ui": "workspace:*",
"@makerkit/data-loader-supabase-core": "^0.0.7",
"@makerkit/data-loader-supabase-nextjs": "^0.0.9",
"@tanstack/react-query": "^5.29.0",
"@tanstack/react-table": "^8.15.3",
"lucide-react": "^0.363.0",
"next": "^14.1.4",
"react": "^18.2.0",
"react-hook-form": "^7.51.2",
"zod": "^3.22.4"
},
@@ -32,7 +36,12 @@
"@makerkit/data-loader-supabase-core": "^0.0.7",
"@makerkit/data-loader-supabase-nextjs": "^0.0.9",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"@tanstack/react-table": "^8.15.3",
"@types/react": "^18.2.75",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.63",
"react": "18.2.0",
"react-hook-form": "^7.51.2",
"zod": "^3.22.4"
},

View File

@@ -21,14 +21,35 @@
"@hookform/resolvers": "^3.3.4",
"@kit/eslint-config": "workspace:*",
"@kit/prettier-config": "workspace:*",
"@kit/shared": "workspace:*",
"@kit/supabase": "workspace:*",
"@kit/shared": "*",
"@kit/supabase": "*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "*",
"@marsidev/react-turnstile": "^0.5.4",
"@radix-ui/react-icons": "^1.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"@types/react": "^18.2.75",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.63",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
"zod": "^3.22.4"
},
"peerDependencies": {
"@hookform/resolvers": "^3.3.4",
"@kit/shared": "workspace:*",
"@kit/supabase": "workspace:*",
"@kit/ui": "workspace:*",
"@marsidev/react-turnstile": "^0.5.4",
"@radix-ui/react-icons": "^1.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"lucide-react": "^0.363.0",
"next": "^14.1.4",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
"zod": "^3.22.4"

View File

@@ -12,33 +12,54 @@
"./components": "./src/components/index.ts",
"./webhooks": "./src/server/services/webhooks/index.ts"
},
"dependencies": {
"nanoid": "^5.0.7"
},
"devDependencies": {
"@hookform/resolvers": "^3.3.4",
"@kit/accounts": "workspace:^",
"@kit/accounts": "*",
"@kit/billing-gateway": "workspace:*",
"@kit/email-templates": "workspace:^",
"@kit/email-templates": "*",
"@kit/eslint-config": "workspace:*",
"@kit/mailers": "workspace:^",
"@kit/mailers": "*",
"@kit/prettier-config": "workspace:*",
"@kit/shared": "workspace:^",
"@kit/supabase": "workspace:^",
"@kit/shared": "*",
"@kit/supabase": "*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@kit/ui": "workspace:^",
"@kit/ui": "*",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6",
"@tanstack/react-table": "^8.15.3",
"@types/react": "^18.2.75",
"@types/react-dom": "^18.2.22",
"class-variance-authority": "^0.7.0",
"date-fns": "^3.6.0",
"lucide-react": "^0.363.0",
"react-i18next": "^14.1.0"
"next": "14.2.0-canary.63",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
"zod": "^3.22.4"
},
"peerDependencies": {
"@hookform/resolvers": "^3.3.4",
"@kit/accounts": "0.1.0",
"@kit/email-templates": "0.1.0",
"@kit/mailers": "0.1.0",
"@kit/shared": "0.1.0",
"@kit/supabase": "0.1.0",
"@kit/ui": "0.1.0",
"@kit/ui": "workspace:^",
"@supabase/supabase-js": "^2.42.0",
"lucide-react": "^0.363.0"
"@tanstack/react-query": "5.28.6",
"lucide-react": "^0.363.0",
"next": "^14.1.4",
"react": "^18.2.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"zod": "^3.22.4"
},
"prettier": "@kit/prettier-config",
"eslintConfig": {

View File

@@ -20,7 +20,7 @@
"@kit/shared": "workspace:^",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"i18next": "^23.10.1",
"i18next": "^23.11.0",
"i18next-browser-languagedetector": "7.2.0",
"i18next-resources-to-backend": "^1.2.0",
"react-i18next": "^14.1.0"

View File

@@ -26,16 +26,12 @@ export function I18nProvider({
async function withI18nClient(lang: string, resolver: Resolver) {
if (typeof window !== 'undefined') {
client = await loadClientI18n(lang, resolver);
const { initializeI18nClient } = await import('./i18n.client');
client = await initializeI18nClient(lang, resolver);
} else {
const { initializeServerI18n } = await import('./i18n.server');
client = await initializeServerI18n(lang, resolver);
}
}
async function loadClientI18n(lang: string | undefined, resolver: Resolver) {
const { initializeI18nClient } = await import('./i18n.client');
return initializeI18nClient(lang, resolver);
}

View File

@@ -5,19 +5,17 @@ import { initReactI18next } from 'react-i18next';
import { I18N_COOKIE_NAME, getI18nSettings } from './i18n.settings';
let promise: Promise<i18n>;
export function initializeI18nClient(
lng: string | undefined,
i18nResolver: (lang: string, namespace: string) => Promise<object>,
): Promise<i18n> {
const settings = getI18nSettings(lng);
if (promise !== undefined) {
return promise;
if (i18next.isInitialized) {
return Promise.resolve(i18next);
}
promise = new Promise<i18n>((resolve, reject) => {
return new Promise<i18n>((resolve, reject) => {
void i18next
.use(initReactI18next)
.use(
@@ -49,6 +47,4 @@ export function initializeI18nClient(
},
);
});
return promise;
}

View File

@@ -17,6 +17,11 @@ export async function initializeServerI18n(
i18nResolver: (language: string, namespace: string) => Promise<object>,
) {
const i18nInstance = createInstance();
if (i18nInstance.isInitialized) {
return i18nInstance;
}
const settings = getI18nSettings(lang);
await i18nInstance

View File

@@ -19,7 +19,6 @@ export const defaultI18nNamespaces = [
'teams',
'billing',
'marketing',
'admin',
];
export function getI18nSettings(

View File

@@ -21,7 +21,8 @@
"@kit/prettier-config": "workspace:*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@types/nodemailer": "6.4.14"
"@types/nodemailer": "6.4.14",
"zod": "^3.22.4"
},
"eslintConfig": {
"root": true,

View File

@@ -16,6 +16,9 @@
"./config/edge": "./src/config/sentry.server.edge.ts"
},
"dependencies": {
"@opentelemetry/resources": "1.23.0",
"@opentelemetry/sdk-node": "0.50.0",
"@opentelemetry/semantic-conventions": "^1.23.0",
"@sentry/nextjs": "^7.109.0",
"@sentry/opentelemetry-node": "^7.109.0"
},

View File

@@ -28,7 +28,6 @@ export async function registerSentryInstrumentation() {
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: INSTRUMENTATION_SERVICE_NAME,
}),
// @ts-expect-error: an error in the lib
spanProcessor: new SentrySpanProcessor(),
textMapPropagator: new SentryPropagator(),
});

View File

@@ -15,7 +15,10 @@
},
"peerDependencies": {
"@kit/auth": "workspace:*",
"@kit/supabase": "workspace:*"
"@kit/supabase": "workspace:*",
"@supabase/supabase-js": "^2.42.0",
"next": "^14.1.4",
"zod": "^3.22.4"
},
"devDependencies": {
"@kit/auth": "*",
@@ -23,7 +26,10 @@
"@kit/prettier-config": "workspace:*",
"@kit/supabase": "*",
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*"
"@kit/tsconfig": "workspace:*",
"@supabase/supabase-js": "^2.42.0",
"next": "14.2.0-canary.63",
"zod": "^3.22.4"
},
"eslintConfig": {
"root": true,

View File

@@ -29,15 +29,22 @@
"@kit/tailwind-config": "workspace:*",
"@kit/tsconfig": "workspace:*",
"@supabase/gotrue-js": "2.62.2",
"@supabase/ssr": "^0.1.0",
"@supabase/ssr": "^0.3.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "5.28.6"
"@tanstack/react-query": "5.28.6",
"@types/react": "^18.2.75",
"next": "14.2.0-canary.63",
"react": "18.2.0",
"zod": "^3.22.4"
},
"peerDependencies": {
"@epic-web/invariant": "^1.0.0",
"@supabase/ssr": "^0.1.0",
"@supabase/supabase-js": "^2.42.0",
"@tanstack/react-query": "^5.28.6"
"@tanstack/react-query": "^5.28.6",
"next": "^14.1.4",
"react": "^18.2.0",
"zod": "^3.22.4"
},
"eslintConfig": {
"root": true,

View File

@@ -39,6 +39,8 @@
"class-variance-authority": "^0.7.0",
"date-fns": "^3.2.0",
"lucide-react": "^0.366.0",
"next": "^14.1.4",
"next-themes": "^0.3.0",
"react-hook-form": "^7.51.2",
"react-i18next": "^14.1.0",
"sonner": "^1.4.41",
@@ -51,12 +53,14 @@
"@kit/tsconfig": "workspace:*",
"@radix-ui/react-icons": "^1.3.0",
"@tanstack/react-table": "^8.15.3",
"@types/react": "^18.2.73",
"@types/react": "^18.2.75",
"@types/react-dom": "^18.2.22",
"class-variance-authority": "^0.7.0",
"date-fns": "^3.6.0",
"eslint": "^8.57.0",
"lucide-react": "^0.363.0",
"next": "14.2.0-canary.63",
"next-themes": "0.3.0",
"prettier": "^3.2.5",
"react-day-picker": "^8.10.0",
"react-hook-form": "^7.51.2",
@@ -119,7 +123,6 @@
"./auth-change-listener": "./src/makerkit/auth-change-listener.tsx",
"./loading-overlay": "./src/makerkit/loading-overlay.tsx",
"./profile-avatar": "./src/makerkit/profile-avatar.tsx",
"./mdx-components": "./src/makerkit/mdx-components.tsx",
"./mode-toggle": "./src/makerkit/mode-toggle.tsx",
"./enhanced-data-table": "./src/makerkit/data-table.tsx"
},

View File

@@ -1,80 +0,0 @@
import { forwardRef } from 'react';
import Image from 'next/image';
import { cn } from '../utils';
import { LazyRender } from './lazy-render';
const NextImage: React.FC<{
width: number;
height: number;
src: string;
alt: string;
class?: string;
}> = (props) => {
const className = cn(props.class, `object-cover`);
return <Image className={className} src={props.src} alt={props.alt} />;
};
const ExternalLink = forwardRef<
React.ElementRef<'a'>,
React.AnchorHTMLAttributes<unknown>
>(function ExternalLink(props, ref) {
const href = props.href ?? '';
const isRoot = href === '/';
const isInternalLink =
isRoot || href.startsWith(process.env.NEXT_PUBLIC_SITE_URL!);
if (isInternalLink) {
return (
<a {...props} ref={ref} href={href}>
{props.children}
</a>
);
}
return (
<a
href={href}
ref={ref}
{...props}
target="_blank"
rel="noopener noreferrer"
>
{props.children}
</a>
);
});
const Video: React.FC<{
src: string;
width?: string;
type?: string;
}> = ({ src, type, width }) => {
const useType = type ?? 'video/mp4';
return (
<LazyRender rootMargin={'-200px 0px'}>
<video
className="my-4"
width={width ?? `100%`}
height="auto"
playsInline
autoPlay
muted
loop
>
<source src={src} type={useType} />
</video>
</LazyRender>
);
};
export const MDXComponents = {
img: NextImage,
a: ExternalLink,
Video,
Image: NextImage,
};

2637
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,5 @@
import type { Config } from 'tailwindcss';
import tailwindCssAnimate from 'tailwindcss-animate';
import { fontFamily } from 'tailwindcss/defaultTheme';
export default {
@@ -109,5 +110,5 @@ export default {
},
},
},
plugins: [require('tailwindcss-animate')],
plugins: [tailwindCssAnimate],
} satisfies Config;

View File

@@ -16,7 +16,8 @@
"dependencies": {
"autoprefixer": "^10.4.19",
"postcss": "8.4.33",
"tailwindcss": "3.4.1"
"tailwindcss": "3.4.1",
"tailwindcss-animate": "^1.0.7"
},
"devDependencies": {
"@kit/eslint-config": "workspace:^",