fix: fix eslint warnings

This commit is contained in:
Mythie
2023-08-31 13:33:13 +10:00
parent 930a80ae18
commit 8a271ff8bc
14 changed files with 31 additions and 25 deletions

View File

@ -27,7 +27,11 @@ export type ClaimedPlanPageProps = {
export default async function ClaimedPlanPage({ searchParams = {} }: ClaimedPlanPageProps) { export default async function ClaimedPlanPage({ searchParams = {} }: ClaimedPlanPageProps) {
const { sessionId } = searchParams; const { sessionId } = searchParams;
const session = await stripe.checkout.sessions.retrieve(sessionId as string); if (typeof sessionId !== 'string') {
redirect('/');
}
const session = await stripe.checkout.sessions.retrieve(sessionId);
const user = await prisma.user.findFirst({ const user = await prisma.user.findFirst({
where: { where: {
@ -157,7 +161,6 @@ export default async function ClaimedPlanPage({ searchParams = {} }: ClaimedPlan
</p> </p>
<Link <Link
// eslint-disable-next-line turbo/no-undeclared-env-vars
href={`${process.env.NEXT_PUBLIC_APP_URL}/login`} href={`${process.env.NEXT_PUBLIC_APP_URL}/login`}
target="_blank" target="_blank"
className="mt-4 block" className="mt-4 block"

View File

@ -22,7 +22,6 @@ export const PricingTable = ({ className, ...props }: PricingTableProps) => {
const event = usePlausible(); const event = usePlausible();
const [period, setPeriod] = useState<'MONTHLY' | 'YEARLY'>(() => const [period, setPeriod] = useState<'MONTHLY' | 'YEARLY'>(() =>
// eslint-disable-next-line turbo/no-undeclared-env-vars
params?.get('planId') === process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_YEARLY_PRICE_ID params?.get('planId') === process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_YEARLY_PRICE_ID
? 'YEARLY' ? 'YEARLY'
: 'MONTHLY', : 'MONTHLY',
@ -30,11 +29,9 @@ export const PricingTable = ({ className, ...props }: PricingTableProps) => {
const planId = useMemo(() => { const planId = useMemo(() => {
if (period === 'MONTHLY') { if (period === 'MONTHLY') {
// eslint-disable-next-line turbo/no-undeclared-env-vars
return process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID; return process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID;
} }
// eslint-disable-next-line turbo/no-undeclared-env-vars
return process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_YEARLY_PRICE_ID; return process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_YEARLY_PRICE_ID;
}, [period]); }, [period]);

View File

@ -139,7 +139,6 @@ export const Widget = ({ className, children, ...props }: WidgetProps) => {
setTimeout(resolve, 1000); setTimeout(resolve, 1000);
}); });
// eslint-disable-next-line turbo/no-undeclared-env-vars
const planId = process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID; const planId = process.env.NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID;
const claimPlanInput = signatureDataUrl const claimPlanInput = signatureDataUrl
@ -147,7 +146,7 @@ export const Widget = ({ className, children, ...props }: WidgetProps) => {
name, name,
email, email,
planId, planId,
signatureDataUrl: signatureDataUrl!, signatureDataUrl: signatureDataUrl,
signatureText: null, signatureText: null,
} }
: { : {
@ -155,7 +154,7 @@ export const Widget = ({ className, children, ...props }: WidgetProps) => {
email, email,
planId, planId,
signatureDataUrl: null, signatureDataUrl: null,
signatureText: signatureText!, signatureText: signatureText ?? '',
}; };
const [result] = await Promise.all([claimPlan(claimPlanInput), delay]); const [result] = await Promise.all([claimPlan(claimPlanInput), delay]);

View File

@ -43,7 +43,6 @@ export default async function handler(
if (user && user.Subscription.length > 0) { if (user && user.Subscription.length > 0) {
return res.status(200).json({ return res.status(200).json({
// eslint-disable-next-line turbo/no-undeclared-env-vars
redirectUrl: `${process.env.NEXT_PUBLIC_APP_URL}/login`, redirectUrl: `${process.env.NEXT_PUBLIC_APP_URL}/login`,
}); });
} }
@ -104,7 +103,6 @@ export default async function handler(
mode: 'subscription', mode: 'subscription',
metadata, metadata,
allow_promotion_codes: true, allow_promotion_codes: true,
// eslint-disable-next-line turbo/no-undeclared-env-vars
success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/claimed?sessionId={CHECKOUT_SESSION_ID}`, success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/claimed?sessionId={CHECKOUT_SESSION_ID}`,
cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/pricing?email=${encodeURIComponent( cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/pricing?email=${encodeURIComponent(
email, email,

View File

@ -17,14 +17,13 @@ import {
SigningStatus, SigningStatus,
} from '@documenso/prisma/client'; } from '@documenso/prisma/client';
const log = (...args: any[]) => console.log('[stripe]', ...args); const log = (...args: unknown[]) => console.log('[stripe]', ...args);
export const config = { export const config = {
api: { bodyParser: false }, api: { bodyParser: false },
}; };
export default async function handler(req: NextApiRequest, res: NextApiResponse) { export default async function handler(req: NextApiRequest, res: NextApiResponse) {
// eslint-disable-next-line turbo/no-undeclared-env-vars
// if (!process.env.NEXT_PUBLIC_ALLOW_SUBSCRIPTIONS) { // if (!process.env.NEXT_PUBLIC_ALLOW_SUBSCRIPTIONS) {
// return res.status(500).json({ // return res.status(500).json({
// success: false, // success: false,
@ -55,6 +54,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
log('event-type:', event.type); log('event-type:', event.type);
if (event.type === 'checkout.session.completed') { if (event.type === 'checkout.session.completed') {
// This typecast is required since we don't want to create a guard for every event type
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const session = event.data.object as Stripe.Checkout.Session; const session = event.data.object as Stripe.Checkout.Session;
if (session.metadata?.source === 'landing') { if (session.metadata?.source === 'landing') {

View File

@ -1,5 +1,6 @@
export type PeriodSelectorValue = '' | '7d' | '14d' | '30d'; export type PeriodSelectorValue = '' | '7d' | '14d' | '30d';
export const isPeriodSelectorValue = (value: unknown): value is PeriodSelectorValue => { export const isPeriodSelectorValue = (value: unknown): value is PeriodSelectorValue => {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
return ['', '7d', '14d', '30d'].includes(value as string); return ['', '7d', '14d', '30d'].includes(value as string);
}; };

View File

@ -43,7 +43,6 @@ export default async function handler(
if (user && user.Subscription.length > 0) { if (user && user.Subscription.length > 0) {
return res.status(200).json({ return res.status(200).json({
// eslint-disable-next-line turbo/no-undeclared-env-vars
redirectUrl: `${process.env.NEXT_PUBLIC_APP_URL}/login`, redirectUrl: `${process.env.NEXT_PUBLIC_APP_URL}/login`,
}); });
} }
@ -104,7 +103,6 @@ export default async function handler(
mode: 'subscription', mode: 'subscription',
metadata, metadata,
allow_promotion_codes: true, allow_promotion_codes: true,
// eslint-disable-next-line turbo/no-undeclared-env-vars
success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/claimed?sessionId={CHECKOUT_SESSION_ID}`, success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/claimed?sessionId={CHECKOUT_SESSION_ID}`,
cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/pricing?email=${encodeURIComponent( cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/pricing?email=${encodeURIComponent(
email, email,

View File

@ -17,14 +17,13 @@ import {
SigningStatus, SigningStatus,
} from '@documenso/prisma/client'; } from '@documenso/prisma/client';
const log = (...args: any[]) => console.log('[stripe]', ...args); const log = (...args: unknown[]) => console.log('[stripe]', ...args);
export const config = { export const config = {
api: { bodyParser: false }, api: { bodyParser: false },
}; };
export default async function handler(req: NextApiRequest, res: NextApiResponse) { export default async function handler(req: NextApiRequest, res: NextApiResponse) {
// eslint-disable-next-line turbo/no-undeclared-env-vars
// if (!process.env.NEXT_PUBLIC_ALLOW_SUBSCRIPTIONS) { // if (!process.env.NEXT_PUBLIC_ALLOW_SUBSCRIPTIONS) {
// return res.status(500).json({ // return res.status(500).json({
// success: false, // success: false,
@ -55,6 +54,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
log('event-type:', event.type); log('event-type:', event.type);
if (event.type === 'checkout.session.completed') { if (event.type === 'checkout.session.completed') {
// This is required since we don't want to create a guard for every event type
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
const session = event.data.object as Stripe.Checkout.Session; const session = event.data.object as Stripe.Checkout.Session;
if (session.metadata?.source === 'landing') { if (session.metadata?.source === 'landing') {

View File

@ -84,6 +84,8 @@ export const setFieldsForDocument = async ({
}) })
: prisma.field.create({ : prisma.field.create({
data: { data: {
// TODO: Rewrite this entire transaction because this is a mess
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
type: field.type!, type: field.type!,
page: field.pageNumber, page: field.pageNumber,
positionX: field.pageX, positionX: field.pageX,

View File

@ -1,7 +1,6 @@
import Stripe from 'stripe'; import Stripe from 'stripe';
// eslint-disable-next-line turbo/no-undeclared-env-vars export const stripe = new Stripe(process.env.NEXT_PRIVATE_STRIPE_API_KEY ?? '', {
export const stripe = new Stripe(process.env.NEXT_PRIVATE_STRIPE_API_KEY!, {
apiVersion: '2022-11-15', apiVersion: '2022-11-15',
typescript: true, typescript: true,
}); });

View File

@ -19,11 +19,13 @@ export const updatePassword = async ({ userId, password }: UpdatePasswordOptions
const hashedPassword = await hash(password, SALT_ROUNDS); const hashedPassword = await hash(password, SALT_ROUNDS);
// Compare the new password with the old password if (user.password) {
const isSamePassword = await compare(password, user.password as string); // Compare the new password with the old password
const isSamePassword = await compare(password, user.password);
if (isSamePassword) { if (isSamePassword) {
throw new Error('Your new password cannot be the same as your old password.'); throw new Error('Your new password cannot be the same as your old password.');
}
} }
const updatedUser = await prisma.user.update({ const updatedUser = await prisma.user.update({

View File

@ -1,5 +1,5 @@
export type FindResultSet<T> = { export type FindResultSet<T> = {
data: T extends Array<any> ? T : T[]; data: T extends Array<unknown> ? T : T[];
count: number; count: number;
currentPage: number; currentPage: number;
perPage: number; perPage: number;

View File

@ -1,5 +1,6 @@
import { DocumentStatus } from '@documenso/prisma/client'; import { DocumentStatus } from '@documenso/prisma/client';
export const isDocumentStatus = (value: unknown): value is DocumentStatus => { export const isDocumentStatus = (value: unknown): value is DocumentStatus => {
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
return Object.values(DocumentStatus).includes(value as DocumentStatus); return Object.values(DocumentStatus).includes(value as DocumentStatus);
}; };

View File

@ -22,10 +22,13 @@
"globalEnv": [ "globalEnv": [
"NEXTAUTH_URL", "NEXTAUTH_URL",
"NEXTAUTH_SECRET", "NEXTAUTH_SECRET",
"NEXT_PUBLIC_APP_URL",
"NEXT_PUBLIC_SITE_URL", "NEXT_PUBLIC_SITE_URL",
"NEXT_PUBLIC_POSTHOG_KEY", "NEXT_PUBLIC_POSTHOG_KEY",
"NEXT_PUBLIC_POSTHOG_HOST", "NEXT_PUBLIC_POSTHOG_HOST",
"NEXT_PUBLIC_FEATURE_BILLING_ENABLED", "NEXT_PUBLIC_FEATURE_BILLING_ENABLED",
"NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_YEARLY_PRICE_ID",
"NEXT_PUBLIC_STRIPE_COMMUNITY_PLAN_MONTHLY_PRICE_ID",
"NEXT_PRIVATE_DATABASE_URL", "NEXT_PRIVATE_DATABASE_URL",
"NEXT_PRIVATE_NEXT_AUTH_SECRET", "NEXT_PRIVATE_NEXT_AUTH_SECRET",
"NEXT_PRIVATE_GOOGLE_CLIENT_ID", "NEXT_PRIVATE_GOOGLE_CLIENT_ID",
@ -44,6 +47,7 @@
"NEXT_PRIVATE_SMTP_APIKEY", "NEXT_PRIVATE_SMTP_APIKEY",
"NEXT_PRIVATE_SMTP_SECURE", "NEXT_PRIVATE_SMTP_SECURE",
"NEXT_PRIVATE_SMTP_FROM_NAME", "NEXT_PRIVATE_SMTP_FROM_NAME",
"NEXT_PRIVATE_SMTP_FROM_ADDRESS" "NEXT_PRIVATE_SMTP_FROM_ADDRESS",
"NEXT_PRIVATE_STRIPE_API_KEY"
] ]
} }