Skip to content

Commit fa563a8

Browse files
committed
replace DataFunctionArgs
1 parent 1fd11e3 commit fa563a8

File tree

1,952 files changed

+7815
-5101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,952 files changed

+7815
-5101
lines changed

Diff for: CHANGELOG.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Changelog
2+
3+
This file will keep track of significant changes that have happened in the
4+
workshop material that is different from what you'll see in the videos.
5+
6+
## DataFunctionArgs
7+
8+
`DataFunctionArgs` was deprecated in Remix and will be removed in the future. It
9+
is recommended to use `LoaderFunctionArgs` and `ActionFunctionArgs` instead
10+
which are the exact same.

Diff for: epicshop/fix.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ async function updateDataDb() {
111111
path.join(latestPrismaApp, 'prisma'),
112112
path.join(app, 'prisma'),
113113
[/data\.db/],
114-
)
114+
)
115115
: false
116116
if (prismaIsUnchanged) {
117117
logVerbose(

Diff for: epicshop/tsconfig.json

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
{
2-
"compilerOptions": {
3-
"module": "NodeNext",
4-
"target": "es2022",
5-
"esModuleInterop": true,
6-
"forceConsistentCasingInFileNames": true,
7-
"allowJs": true,
8-
"skipLibCheck": true,
9-
"noEmit": true
10-
}
11-
}
1+
{
2+
"compilerOptions": {
3+
"module": "NodeNext",
4+
"target": "es2022",
5+
"esModuleInterop": true,
6+
"forceConsistentCasingInFileNames": true,
7+
"allowJs": true,
8+
"skipLibCheck": true,
9+
"noEmit": true
10+
}
11+
}

Diff for: exercises/01.e2e/01.problem.playwright/README.mdx

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ the configuration options, knock yourself out with
3333
[this reference](https://playwright.dev/docs/test-configuration).
3434

3535
<callout-info>
36-
Playwright-specific commands must be run in `playground` directory. If
37-
you're currently in the workshop's root directory, simply run `cd playground`
38-
to get there.
36+
Playwright-specific commands must be run in `playground` directory. If you're
37+
currently in the workshop's root directory, simply run `cd playground` to get
38+
there.
3939
</callout-info>
4040

4141
To start running the test, open up a terminal in the `playground` directory and

Diff for: exercises/01.e2e/01.problem.playwright/app/components/error-boundary.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export function GeneralErrorBoundary({
3737
? (statusHandlers?.[error.status] ?? defaultStatusHandler)({
3838
error,
3939
params,
40-
})
40+
})
4141
: unexpectedErrorHandler(error)}
4242
</div>
4343
)

Diff for: exercises/01.e2e/01.problem.playwright/app/root.tsx

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { parse } from '@conform-to/zod'
44
import { cssBundleHref } from '@remix-run/css-bundle'
55
import {
66
json,
7-
type DataFunctionArgs,
7+
type ActionFunctionArgs,
8+
type LoaderFunctionArgs,
89
type LinksFunction,
910
} from '@remix-run/node'
1011
import {
@@ -60,7 +61,7 @@ export const links: LinksFunction = () => {
6061
].filter(Boolean)
6162
}
6263

63-
export async function loader({ request }: DataFunctionArgs) {
64+
export async function loader({ request }: LoaderFunctionArgs) {
6465
const [csrfToken, csrfCookieHeader] = await csrf.commitToken(request)
6566
const honeyProps = honeypot.getInputProps()
6667
const { toast, headers: toastHeaders } = await getToast(request)
@@ -82,7 +83,7 @@ export async function loader({ request }: DataFunctionArgs) {
8283
},
8384
},
8485
where: { id: userId },
85-
})
86+
})
8687
: null
8788
return json(
8889
{
@@ -107,7 +108,7 @@ const ThemeFormSchema = z.object({
107108
theme: z.enum(['light', 'dark']),
108109
})
109110

110-
export async function action({ request }: DataFunctionArgs) {
111+
export async function action({ request }: ActionFunctionArgs) {
111112
const formData = await request.formData()
112113
invariantResponse(
113114
formData.get('intent') === 'update-theme',

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/auth.$provider.callback.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { redirect, type DataFunctionArgs } from '@remix-run/node'
1+
import { redirect, type LoaderFunctionArgs } from '@remix-run/node'
22
import {
33
authenticator,
44
getSessionExpirationDate,
@@ -25,7 +25,7 @@ import {
2525

2626
const destroyRedirectTo = { 'set-cookie': destroyRedirectToHeader }
2727

28-
export async function loader({ request, params }: DataFunctionArgs) {
28+
export async function loader({ request, params }: LoaderFunctionArgs) {
2929
const providerName = ProviderNameSchema.parse(params.provider)
3030

3131
const redirectTo = getRedirectCookieValue(request)

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/auth.$provider.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { redirect, type DataFunctionArgs } from '@remix-run/node'
1+
import { redirect, type ActionFunctionArgs } from '@remix-run/node'
22
import { authenticator } from '#app/utils/auth.server.ts'
33
import { handleMockAction } from '#app/utils/connections.server.ts'
44
import { ProviderNameSchema } from '#app/utils/connections.tsx'
@@ -9,7 +9,7 @@ export async function loader() {
99
return redirect('/login')
1010
}
1111

12-
export async function action({ request, params }: DataFunctionArgs) {
12+
export async function action({ request, params }: ActionFunctionArgs) {
1313
const providerName = ProviderNameSchema.parse(params.provider)
1414

1515
try {

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/forgot-password.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as E from '@react-email/components'
44
import {
55
json,
66
redirect,
7-
type DataFunctionArgs,
7+
type ActionFunctionArgs,
88
type MetaFunction,
99
} from '@remix-run/node'
1010
import { Link, useFetcher } from '@remix-run/react'
@@ -25,7 +25,7 @@ const ForgotPasswordSchema = z.object({
2525
usernameOrEmail: z.union([EmailSchema, UsernameSchema]),
2626
})
2727

28-
export async function action({ request }: DataFunctionArgs) {
28+
export async function action({ request }: ActionFunctionArgs) {
2929
const formData = await request.formData()
3030
await validateCSRF(formData, request.headers)
3131
checkHoneypot(formData)

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/login.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { getFieldsetConstraint, parse } from '@conform-to/zod'
33
import {
44
json,
55
redirect,
6-
type DataFunctionArgs,
6+
type ActionFunctionArgs,
7+
type LoaderFunctionArgs,
78
type MetaFunction,
89
} from '@remix-run/node'
910
import { Form, Link, useActionData, useSearchParams } from '@remix-run/react'
@@ -178,12 +179,12 @@ const LoginFormSchema = z.object({
178179
remember: z.boolean().optional(),
179180
})
180181

181-
export async function loader({ request }: DataFunctionArgs) {
182+
export async function loader({ request }: LoaderFunctionArgs) {
182183
await requireAnonymous(request)
183184
return json({})
184185
}
185186

186-
export async function action({ request }: DataFunctionArgs) {
187+
export async function action({ request }: ActionFunctionArgs) {
187188
await requireAnonymous(request)
188189
const formData = await request.formData()
189190
await validateCSRF(formData, request.headers)
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { redirect, type DataFunctionArgs } from '@remix-run/node'
1+
import { redirect, type ActionFunctionArgs } from '@remix-run/node'
22
import { logout } from '#app/utils/auth.server.ts'
33

44
export async function loader() {
55
return redirect('/')
66
}
77

8-
export async function action({ request }: DataFunctionArgs) {
8+
export async function action({ request }: ActionFunctionArgs) {
99
throw await logout({ request })
1010
}

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/onboarding.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { getFieldsetConstraint, parse } from '@conform-to/zod'
33
import {
44
json,
55
redirect,
6-
type DataFunctionArgs,
6+
type ActionFunctionArgs,
7+
type LoaderFunctionArgs,
78
type MetaFunction,
89
} from '@remix-run/node'
910
import {
@@ -69,12 +70,12 @@ async function requireOnboardingEmail(request: Request) {
6970
}
7071
return email
7172
}
72-
export async function loader({ request }: DataFunctionArgs) {
73+
export async function loader({ request }: LoaderFunctionArgs) {
7374
const email = await requireOnboardingEmail(request)
7475
return json({ email })
7576
}
7677

77-
export async function action({ request }: DataFunctionArgs) {
78+
export async function action({ request }: ActionFunctionArgs) {
7879
const email = await requireOnboardingEmail(request)
7980
const formData = await request.formData()
8081
await validateCSRF(formData, request.headers)

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/onboarding_.$provider.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { getFieldsetConstraint, parse } from '@conform-to/zod'
33
import {
44
json,
55
redirect,
6-
type DataFunctionArgs,
6+
type ActionFunctionArgs,
7+
type LoaderFunctionArgs,
78
type MetaFunction,
89
} from '@remix-run/node'
910
import {
@@ -75,7 +76,7 @@ async function requireData({
7576
}
7677
}
7778

78-
export async function loader({ request, params }: DataFunctionArgs) {
79+
export async function loader({ request, params }: LoaderFunctionArgs) {
7980
const { email } = await requireData({ request, params })
8081
const cookieSession = await sessionStorage.getSession(
8182
request.headers.get('cookie'),
@@ -100,7 +101,7 @@ export async function loader({ request, params }: DataFunctionArgs) {
100101
})
101102
}
102103

103-
export async function action({ request, params }: DataFunctionArgs) {
104+
export async function action({ request, params }: ActionFunctionArgs) {
104105
const { email, providerId, providerName } = await requireData({
105106
request,
106107
params,

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/reset-password.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { getFieldsetConstraint, parse } from '@conform-to/zod'
33
import {
44
json,
55
redirect,
6-
type DataFunctionArgs,
6+
type ActionFunctionArgs,
7+
type LoaderFunctionArgs,
78
type MetaFunction,
89
} from '@remix-run/node'
910
import { Form, useActionData, useLoaderData } from '@remix-run/react'
@@ -72,12 +73,12 @@ async function requireResetPasswordUsername(request: Request) {
7273
return resetPasswordUsername
7374
}
7475

75-
export async function loader({ request }: DataFunctionArgs) {
76+
export async function loader({ request }: LoaderFunctionArgs) {
7677
const resetPasswordUsername = await requireResetPasswordUsername(request)
7778
return json({ resetPasswordUsername })
7879
}
7980

80-
export async function action({ request }: DataFunctionArgs) {
81+
export async function action({ request }: ActionFunctionArgs) {
8182
const resetPasswordUsername = await requireResetPasswordUsername(request)
8283
const formData = await request.formData()
8384
const submission = parse(formData, {

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/signup.tsx

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import * as E from '@react-email/components'
44
import {
55
json,
66
redirect,
7-
type DataFunctionArgs,
7+
type ActionFunctionArgs,
8+
type LoaderFunctionArgs,
89
type MetaFunction,
910
} from '@remix-run/node'
1011
import { Form, useActionData, useSearchParams } from '@remix-run/react'
@@ -29,12 +30,12 @@ const SignupSchema = z.object({
2930
redirectTo: z.string().optional(),
3031
})
3132

32-
export async function loader({ request }: DataFunctionArgs) {
33+
export async function loader({ request }: LoaderFunctionArgs) {
3334
await requireAnonymous(request)
3435
return json({})
3536
}
3637

37-
export async function action({ request }: DataFunctionArgs) {
38+
export async function action({ request }: ActionFunctionArgs) {
3839
const formData = await request.formData()
3940
await validateCSRF(formData, request.headers)
4041
checkHoneypot(formData)

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/_auth+/verify.tsx

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { conform, useForm, type Submission } from '@conform-to/react'
22
import { getFieldsetConstraint, parse } from '@conform-to/zod'
33
import { generateTOTP, verifyTOTP } from '@epic-web/totp'
4-
import { json, type DataFunctionArgs } from '@remix-run/node'
4+
import {
5+
json,
6+
type ActionFunctionArgs,
7+
type LoaderFunctionArgs,
8+
} from '@remix-run/node'
59
import {
610
Form,
711
useActionData,
@@ -43,7 +47,7 @@ const VerifySchema = z.object({
4347
[redirectToQueryParam]: z.string().optional(),
4448
})
4549

46-
export async function loader({ request }: DataFunctionArgs) {
50+
export async function loader({ request }: LoaderFunctionArgs) {
4751
const params = new URL(request.url).searchParams
4852
if (!params.has(codeQueryParam)) {
4953
// we don't want to show an error message on page load if the otp hasn't be
@@ -60,7 +64,7 @@ export async function loader({ request }: DataFunctionArgs) {
6064
return validateRequest(request, params)
6165
}
6266

63-
export async function action({ request }: DataFunctionArgs) {
67+
export async function action({ request }: ActionFunctionArgs) {
6468
const formData = await request.formData()
6569
await validateCSRF(formData, request.headers)
6670
return validateRequest(request, formData)

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/admin.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { json, type DataFunctionArgs } from '@remix-run/node'
1+
import { json, type LoaderFunctionArgs } from '@remix-run/node'
22
import { GeneralErrorBoundary } from '#app/components/error-boundary.tsx'
33
import { Spacer } from '#app/components/spacer.tsx'
44
import { requireUserWithRole } from '#app/utils/permissions.ts'
55

6-
export async function loader({ request }: DataFunctionArgs) {
6+
export async function loader({ request }: LoaderFunctionArgs) {
77
await requireUserWithRole(request, 'admin')
88
return json({})
99
}

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/resources+/download-user-data.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { json, type DataFunctionArgs } from '@remix-run/node'
1+
import { json, type LoaderFunctionArgs } from '@remix-run/node'
22
import { requireUserId } from '#app/utils/auth.server.ts'
33
import { prisma } from '#app/utils/db.server.ts'
44
import { getDomainUrl } from '#app/utils/misc.tsx'
55

6-
export async function loader({ request }: DataFunctionArgs) {
6+
export async function loader({ request }: LoaderFunctionArgs) {
77
const userId = await requireUserId(request)
88
const user = await prisma.user.findUniqueOrThrow({
99
where: { id: userId },
@@ -47,7 +47,7 @@ export async function loader({ request }: DataFunctionArgs) {
4747
? {
4848
...user.image,
4949
url: `${domain}/resources/user-images/${user.image.id}`,
50-
}
50+
}
5151
: null,
5252
notes: user.notes.map(note => ({
5353
...note,

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/resources+/note-images.$imageId.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { type DataFunctionArgs } from '@remix-run/node'
1+
import { type LoaderFunctionArgs } from '@remix-run/node'
22
import { prisma } from '#app/utils/db.server.ts'
33
import { invariantResponse } from '#app/utils/misc.tsx'
44

5-
export async function loader({ params }: DataFunctionArgs) {
5+
export async function loader({ params }: LoaderFunctionArgs) {
66
invariantResponse(params.imageId, 'Image ID is required', { status: 400 })
77
const image = await prisma.noteImage.findUnique({
88
where: { id: params.imageId },

Diff for: exercises/01.e2e/01.problem.playwright/app/routes/resources+/user-images.$imageId.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { type DataFunctionArgs } from '@remix-run/node'
1+
import { type LoaderFunctionArgs } from '@remix-run/node'
22
import { prisma } from '#app/utils/db.server.ts'
33
import { invariantResponse } from '#app/utils/misc.tsx'
44

5-
export async function loader({ params }: DataFunctionArgs) {
5+
export async function loader({ params }: LoaderFunctionArgs) {
66
invariantResponse(params.imageId, 'Image ID is required', { status: 400 })
77
const image = await prisma.userImage.findUnique({
88
where: { id: params.imageId },

0 commit comments

Comments
 (0)