@epic-web/workshop-app 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/build/client/assets/{_exerciseNumber-D6KsriIk.js → _exerciseNumber-Byb05FGg.js} +2 -2
  2. package/build/client/assets/{_exerciseNumber-D6KsriIk.js.map → _exerciseNumber-Byb05FGg.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber_.finished-DEzaS_Ji.js → _exerciseNumber_.finished-DUqyxjV2.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber_.finished-DEzaS_Ji.js.map → _exerciseNumber_.finished-DUqyxjV2.js.map} +1 -1
  5. package/build/client/assets/{_layout-C5yGKUmm.js → _layout-BwDoP7Kv.js} +2 -2
  6. package/build/client/assets/{_layout-C5yGKUmm.js.map → _layout-BwDoP7Kv.js.map} +1 -1
  7. package/build/client/assets/_layout-DvQmiuTm.js +6 -0
  8. package/build/client/assets/_layout-DvQmiuTm.js.map +1 -0
  9. package/build/client/assets/account-DbdZ0Vhg.js +2 -0
  10. package/build/client/assets/account-DbdZ0Vhg.js.map +1 -0
  11. package/build/client/assets/{diff-jlCv3hv0.js → diff-Cmd66hnY.js} +2 -2
  12. package/build/client/assets/{diff-jlCv3hv0.js.map → diff-Cmd66hnY.js.map} +1 -1
  13. package/build/client/assets/{diff-assn_bSK.js → diff-CzHloS9Q.js} +2 -2
  14. package/build/client/assets/{diff-assn_bSK.js.map → diff-CzHloS9Q.js.map} +1 -1
  15. package/build/client/assets/{discord-CHsbqaqM.js → discord-DGeGrHNb.js} +2 -2
  16. package/build/client/assets/{discord-CHsbqaqM.js.map → discord-DGeGrHNb.js.map} +1 -1
  17. package/build/client/assets/discord-arMqZKbH.js +2 -0
  18. package/build/client/assets/discord-arMqZKbH.js.map +1 -0
  19. package/build/client/assets/{epic-video-GDpD7_Qt.js → epic-video-Dw5Vkxid.js} +2 -2
  20. package/build/client/assets/{epic-video-GDpD7_Qt.js.map → epic-video-Dw5Vkxid.js.map} +1 -1
  21. package/build/client/assets/{finished-DVV0zwmP.js → finished-DbOxW5dc.js} +2 -2
  22. package/build/client/assets/{finished-DVV0zwmP.js.map → finished-DbOxW5dc.js.map} +1 -1
  23. package/build/client/assets/{index-KgMLc41c.js → index-Bfqa72Xl.js} +2 -2
  24. package/build/client/assets/{index-KgMLc41c.js.map → index-Bfqa72Xl.js.map} +1 -1
  25. package/build/client/assets/{index-CmmC-_8P.js → index-D-V8b9oA.js} +2 -2
  26. package/build/client/assets/{index-CmmC-_8P.js.map → index-D-V8b9oA.js.map} +1 -1
  27. package/build/client/assets/{manifest-c9f53a94.js → manifest-0d355395.js} +1 -1
  28. package/build/client/assets/{mdx-hW1uYjc1.js → mdx-C01HZJEv.js} +2 -2
  29. package/build/client/assets/{mdx-hW1uYjc1.js.map → mdx-C01HZJEv.js.map} +1 -1
  30. package/build/client/assets/{onboarding-DCuSqnkZ.js → onboarding-Dk74xvlh.js} +2 -2
  31. package/build/client/assets/{onboarding-DCuSqnkZ.js.map → onboarding-Dk74xvlh.js.map} +1 -1
  32. package/build/client/assets/presence-DyppfK2V.js +28 -0
  33. package/build/client/assets/presence-DyppfK2V.js.map +1 -0
  34. package/build/client/assets/{root-DojjHZlY.js → root-DCfiv1cO.js} +2 -2
  35. package/build/client/assets/{root-DojjHZlY.js.map → root-DCfiv1cO.js.map} +1 -1
  36. package/build/client/assets/{test-CtH75Laz.js → test-D_qZ9Wu9.js} +2 -2
  37. package/build/client/assets/{test-CtH75Laz.js.map → test-D_qZ9Wu9.js.map} +1 -1
  38. package/build/client/assets/{tests-CTs57UUU.js → tests-Cmesc4Yz.js} +2 -2
  39. package/build/client/assets/{tests-CTs57UUU.js.map → tests-Cmesc4Yz.js.map} +1 -1
  40. package/build/client/assets/user-AF5-S38o.js +2 -0
  41. package/build/client/assets/user-AF5-S38o.js.map +1 -0
  42. package/build/server/index.js +141 -20
  43. package/build/server/index.js.map +1 -1
  44. package/package.json +4 -4
  45. package/build/client/assets/_layout-T2hZtl0D.js +0 -6
  46. package/build/client/assets/_layout-T2hZtl0D.js.map +0 -1
  47. package/build/client/assets/account-CPFwPYf1.js +0 -2
  48. package/build/client/assets/account-CPFwPYf1.js.map +0 -1
  49. package/build/client/assets/discord-DoeazikD.js +0 -2
  50. package/build/client/assets/discord-DoeazikD.js.map +0 -1
  51. package/build/client/assets/presence-CdyMdOKk.js +0 -28
  52. package/build/client/assets/presence-CdyMdOKk.js.map +0 -1
  53. package/build/client/assets/user-BBryXlM_.js +0 -2
  54. package/build/client/assets/user-BBryXlM_.js.map +0 -1
@@ -6,7 +6,7 @@ import { isbot } from "isbot";
6
6
  import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
7
7
  import path from "node:path";
8
8
  import { makeSingletonCache, cachified, fsCache, deleteCache, compiledCodeCache, diffFilesCache, diffCodeCache, shouldForceFresh, getAllFileCacheEntries, ogCache } from "@epic-web/workshop-utils/cache.server";
9
- import { getPreferences, getAuthInfo, readOnboardingData, getDiscordMember, getUserInfo, requireAuthInfo, DiscordMemberSchema, setDiscordMember, deleteDiscordInfo, deleteDb, setPresencePreferences, PlayerPreferencesSchema, setPlayerPreferences, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
9
+ import { getPreferences, getAuthInfo, readOnboardingData, getDiscordMember, requireAuthInfo, DiscordMemberSchema, setDiscordMember, deleteDiscordInfo, deleteDb, setPresencePreferences, PlayerPreferencesSchema, setPlayerPreferences, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
10
10
  import { z } from "zod";
11
11
  import { getWorkshopInstructions, getWorkshopFinished, getExercises, getApps, getPlaygroundAppName, extractNumbersAndTypeFromAppNameOrPath, getAppFromFile, getAppByName, isProblemApp, isPlaygroundApp, isExerciseStepApp, getExercise, isSolutionApp, isExampleApp, getRelativePath as getRelativePath$1, workshopRoot, modifiedTimes, getForceFreshForDir, setPlayground, requireExerciseApp, requireExercise, getExerciseApp, getAppDisplayName, getNextExerciseApp, getPrevExerciseApp, getAppPageRoute } from "@epic-web/workshop-utils/apps.server";
12
12
  import { getWorkshopConfig } from "@epic-web/workshop-utils/config.server";
@@ -120,7 +120,11 @@ const partykitRoom = "epic-web-presence";
120
120
  const partykitBaseUrl = `https://epic-web-presence.kentcdodds.partykit.dev/parties/main/${partykitRoom}`;
121
121
  const UserSchema = z.object({
122
122
  id: z.string(),
123
+ hasAccess: z.boolean().nullable().optional(),
124
+ // TODO: remove the avatarUrl field once people have updated their workshops
123
125
  avatarUrl: z.string().nullable().optional(),
126
+ imageUrlSmall: z.string().nullable().optional(),
127
+ imageUrlLarge: z.string().nullable().optional(),
124
128
  name: z.string().nullable().optional(),
125
129
  location: z.object({
126
130
  workshopTitle: z.string().nullable().optional(),
@@ -1300,6 +1304,95 @@ async function userHasAccessToWorkshop({
1300
1304
  }
1301
1305
  });
1302
1306
  }
1307
+ const UserInfoSchema = z.object({
1308
+ id: z.string(),
1309
+ name: z.string(),
1310
+ email: z.string().email(),
1311
+ image: z.string().nullable(),
1312
+ discordProfile: z.object({
1313
+ avatar: z.string().nullable(),
1314
+ nick: z.string(),
1315
+ user: z.object({
1316
+ id: z.string(),
1317
+ username: z.string(),
1318
+ avatar: z.string(),
1319
+ discriminator: z.string(),
1320
+ global_name: z.string()
1321
+ })
1322
+ })
1323
+ }).transform((data) => {
1324
+ var _a, _b;
1325
+ return {
1326
+ ...data,
1327
+ imageUrlSmall: resizeImageUrl(data.image, { size: 64 }) ?? resolveDiscordAvatar((_a = data.discordProfile) == null ? void 0 : _a.user, {
1328
+ size: 64
1329
+ }) ?? resolveGravatarUrl(data.email, { size: 64 }),
1330
+ imageUrlLarge: resizeImageUrl(data.image, { size: 512 }) ?? resolveDiscordAvatar((_b = data.discordProfile) == null ? void 0 : _b.user, {
1331
+ size: 512
1332
+ }) ?? resolveGravatarUrl(data.email, { size: 512 })
1333
+ };
1334
+ });
1335
+ function resizeImageUrl(url, { size }) {
1336
+ if (!url) return null;
1337
+ const urlObj = new URL(url);
1338
+ urlObj.searchParams.set("size", size.toString());
1339
+ return urlObj.toString();
1340
+ }
1341
+ function resolveGravatarUrl(email, { size }) {
1342
+ if (!email) return null;
1343
+ const hash = md5(email.toLowerCase());
1344
+ const gravatarOptions = new URLSearchParams({
1345
+ size: size.toString(),
1346
+ default: "identicon"
1347
+ });
1348
+ return `https://www.gravatar.com/avatar/${hash}?${gravatarOptions.toString()}`;
1349
+ }
1350
+ function resolveDiscordAvatar(user, { size }) {
1351
+ if (!user) return null;
1352
+ const { avatar, id: userId } = user;
1353
+ if (!avatar) return null;
1354
+ const isGif = avatar.startsWith("a_");
1355
+ const url = new URL(
1356
+ `/avatars/${userId}/${avatar}.${isGif ? "gif" : "png"}`,
1357
+ "https://cdn.discordapp.com"
1358
+ );
1359
+ url.searchParams.set("size", size.toString());
1360
+ return url.toString();
1361
+ }
1362
+ async function getUserInfo({
1363
+ timings,
1364
+ request,
1365
+ forceFresh
1366
+ } = {}) {
1367
+ const authInfo = await getAuthInfo();
1368
+ if (!authInfo) return null;
1369
+ const { tokenSet } = authInfo;
1370
+ const {
1371
+ product: { host }
1372
+ } = getWorkshopConfig();
1373
+ const accessToken = tokenSet.access_token;
1374
+ const url = `https://${host}/oauth/userinfo`;
1375
+ return cachified({
1376
+ key: `${url}:${md5(accessToken)}`,
1377
+ cache: fsCache,
1378
+ request,
1379
+ forceFresh,
1380
+ timings,
1381
+ ttl: 1e3 * 60 * 1,
1382
+ swr: 1e3 * 60 * 60 * 24 * 365,
1383
+ checkValue: UserInfoSchema,
1384
+ async getFreshValue() {
1385
+ const response = await fetch(url, {
1386
+ headers: { authorization: `Bearer ${accessToken}` }
1387
+ });
1388
+ if (!response.ok) {
1389
+ throw new Error(`Failed to fetch user info: ${response.statusText}`);
1390
+ }
1391
+ const data = await response.json();
1392
+ return UserInfoSchema.parse(data);
1393
+ }
1394
+ });
1395
+ }
1303
1396
  const PresenceContext = createContext(null);
1304
1397
  function usePresencePreferences() {
1305
1398
  var _a;
@@ -1317,6 +1410,7 @@ const ExerciseAppParamsSchema = z.object({
1317
1410
  });
1318
1411
  function usePresenceSocket(user) {
1319
1412
  const workshopTitle = useOptionalWorkshopTitle();
1413
+ const { userHasAccess = false } = useRouteLoaderData("root") ?? {};
1320
1414
  const requestInfo = useRequestInfo();
1321
1415
  const rawParams = useParams();
1322
1416
  const prefs = usePresencePreferences();
@@ -1369,7 +1463,9 @@ function usePresenceSocket(user) {
1369
1463
  payload: {
1370
1464
  id: user.id,
1371
1465
  name: user.name,
1372
- avatarUrl: user.avatarUrl,
1466
+ hasAccess: userHasAccess,
1467
+ imageUrlSmall: user.imageUrlSmall,
1468
+ imageUrlLarge: user.imageUrlLarge,
1373
1469
  location
1374
1470
  }
1375
1471
  };
@@ -1385,7 +1481,10 @@ function scoreUsers(location, users) {
1385
1481
  const scoredUsers = users.map((user) => {
1386
1482
  var _a, _b, _c, _d;
1387
1483
  let score = 0;
1388
- const available = 4;
1484
+ const available = 5;
1485
+ if (user.hasAccess) {
1486
+ score += 1;
1487
+ }
1389
1488
  if ((location == null ? void 0 : location.workshopTitle) === ((_a = user.location) == null ? void 0 : _a.workshopTitle)) {
1390
1489
  score += 1;
1391
1490
  if (((_b = location == null ? void 0 : location.exercise) == null ? void 0 : _b.exerciseNumber) && location.exercise.exerciseNumber === ((_d = (_c = user.location) == null ? void 0 : _c.exercise) == null ? void 0 : _d.exerciseNumber)) {
@@ -1953,8 +2052,13 @@ function useUser() {
1953
2052
  return user;
1954
2053
  }
1955
2054
  function useOptionalDiscordMember() {
2055
+ var _a;
1956
2056
  const data = useRouteLoaderData("root");
1957
- return data == null ? void 0 : data.discordMember;
2057
+ return (data == null ? void 0 : data.discordMember) ?? (((_a = data == null ? void 0 : data.user) == null ? void 0 : _a.discordProfile) ? {
2058
+ id: data.user.discordProfile.user.id,
2059
+ displayName: data.user.discordProfile.user.global_name,
2060
+ avatarUrl: data.user.imageUrlLarge
2061
+ } : null);
1958
2062
  }
1959
2063
  function useUserHasAccess() {
1960
2064
  const data = useRouteLoaderData("root");
@@ -2364,8 +2468,17 @@ function FacePile({ isMenuOpened }) {
2364
2468
  var _a, _b;
2365
2469
  const scoreClassNames = getScoreClassNames(score);
2366
2470
  const locationLabel = getLocationLabel(user.location);
2471
+ const imageUrl = user.imageUrlSmall || user.avatarUrl;
2472
+ const hasAccess = user.hasAccess;
2473
+ const local = (_b = (_a = user.location) == null ? void 0 : _a.origin) == null ? void 0 : _b.includes("localhost");
2474
+ let doingLabel;
2475
+ if (hasAccess) {
2476
+ doingLabel = local ? "working" : "referencing";
2477
+ } else {
2478
+ doingLabel = local ? "previewing" : "reviewing";
2479
+ }
2367
2480
  return /* @__PURE__ */ jsxs(Tooltip, { children: [
2368
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: user.avatarUrl ? /* @__PURE__ */ jsx(
2481
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: imageUrl ? /* @__PURE__ */ jsx(
2369
2482
  "img",
2370
2483
  {
2371
2484
  tabIndex: 0,
@@ -2374,7 +2487,7 @@ function FacePile({ isMenuOpened }) {
2374
2487
  "h-8 w-8 rounded-full border object-cover",
2375
2488
  scoreClassNames
2376
2489
  ),
2377
- src: user.avatarUrl
2490
+ src: imageUrl
2378
2491
  }
2379
2492
  ) : /* @__PURE__ */ jsx(
2380
2493
  "div",
@@ -2392,7 +2505,7 @@ function FacePile({ isMenuOpened }) {
2392
2505
  /* @__PURE__ */ jsxs("span", { children: [
2393
2506
  user.name || `${displayNameShort} Dev`,
2394
2507
  " ",
2395
- locationLabel ? ` is ${((_b = (_a = user.location) == null ? void 0 : _a.origin) == null ? void 0 : _b.includes("localhost")) ? "working" : "learning"} ${score === 1 && (loggedInUser == null ? void 0 : loggedInUser.id) !== user.id ? "with you" : ""} on` : null
2508
+ locationLabel ? ` is ${doingLabel} ${score === 1 && (loggedInUser == null ? void 0 : loggedInUser.id) !== user.id ? "with you" : ""} on` : null
2396
2509
  ] }),
2397
2510
  (locationLabel == null ? void 0 : locationLabel.line1) ? /* @__PURE__ */ jsx("span", { children: locationLabel.line1 }) : null,
2398
2511
  (locationLabel == null ? void 0 : locationLabel.line2) ? /* @__PURE__ */ jsx("span", { children: locationLabel.line2 }) : null
@@ -2875,11 +2988,11 @@ function MobileNavigation({
2875
2988
  ),
2876
2989
  to: "/account",
2877
2990
  children: [
2878
- user.avatarUrl ? /* @__PURE__ */ jsx(
2991
+ user.imageUrlSmall ? /* @__PURE__ */ jsx(
2879
2992
  "img",
2880
2993
  {
2881
2994
  alt: user.name ?? user.email,
2882
- src: user.avatarUrl,
2995
+ src: user.imageUrlSmall,
2883
2996
  className: "h-full rounded-full"
2884
2997
  }
2885
2998
  ) : /* @__PURE__ */ jsx(Icon, { name: "User", className: "flex-shrink-0", size: "lg" }),
@@ -3182,11 +3295,11 @@ function Navigation({
3182
3295
  className: "flex h-14 w-full flex-shrink-0 items-center justify-start space-x-3 border-t px-4 py-4 text-center no-underline hover:underline",
3183
3296
  to: "/account",
3184
3297
  children: [
3185
- user.avatarUrl ? /* @__PURE__ */ jsx(
3298
+ user.imageUrlSmall ? /* @__PURE__ */ jsx(
3186
3299
  "img",
3187
3300
  {
3188
3301
  alt: user.name ?? user.email,
3189
- src: user.avatarUrl,
3302
+ src: user.imageUrlSmall,
3190
3303
  className: "h-full rounded-full"
3191
3304
  }
3192
3305
  ) : /* @__PURE__ */ jsx(Icon, { name: "User", className: "flex-shrink-0", size: "lg" }),
@@ -3528,23 +3641,31 @@ function Account() {
3528
3641
  const discordMember = useOptionalDiscordMember();
3529
3642
  const presencePreferences = usePresencePreferences();
3530
3643
  return /* @__PURE__ */ jsxs("main", { className: "container flex h-full w-full max-w-3xl flex-grow flex-col items-center justify-center gap-4", children: [
3531
- /* @__PURE__ */ jsx(
3644
+ user.imageUrlLarge ? /* @__PURE__ */ jsx(
3532
3645
  "img",
3533
3646
  {
3534
3647
  className: "h-36 w-36 rounded-full",
3535
3648
  alt: (discordMember == null ? void 0 : discordMember.displayName) ?? user.name ?? user.email,
3536
- src: user.avatarUrl
3649
+ src: user.imageUrlLarge
3537
3650
  }
3538
- ),
3651
+ ) : /* @__PURE__ */ jsx(Icon, { name: "User", className: "flex-shrink-0", size: "lg" }),
3539
3652
  /* @__PURE__ */ jsx("h1", { className: "mb-1 text-2xl", children: "Your Account" }),
3540
3653
  /* @__PURE__ */ jsx("p", { className: "text-center text-gray-700 dark:text-gray-300", children: user.name ? `Hi ${(discordMember == null ? void 0 : discordMember.displayName) ?? user.name}, your device is logged in with ${user.email}.` : `Your device is logged in with ${user.email}.` }),
3541
3654
  discordMember ? /* @__PURE__ */ jsxs(Fragment, { children: [
3542
3655
  /* @__PURE__ */ jsxs("p", { className: "text-center text-gray-700 dark:text-gray-300", children: [
3543
- "And you are connected to discord as ",
3544
- discordMember.displayName,
3545
- " (",
3546
- discordMember.id,
3547
- ")."
3656
+ "And you are connected to discord as",
3657
+ " ",
3658
+ /* @__PURE__ */ jsx(
3659
+ "a",
3660
+ {
3661
+ href: `https://discord.com/users/${discordMember.id}`,
3662
+ target: "_blank",
3663
+ rel: "noopener noreferrer",
3664
+ className: "underline",
3665
+ children: discordMember.displayName
3666
+ }
3667
+ ),
3668
+ "."
3548
3669
  ] }),
3549
3670
  /* @__PURE__ */ jsxs("div", { className: "flex justify-center gap-2", children: [
3550
3671
  /* @__PURE__ */ jsx(disconnectFetcher.Form, { method: "post", children: /* @__PURE__ */ jsx(Button, { varient: "mono", name: "intent", value: "disconnect-discord", children: "Disconnect Discord" }) }),
@@ -11131,7 +11252,7 @@ const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
11131
11252
  __proto__: null,
11132
11253
  loader
11133
11254
  }, Symbol.toStringTag, { value: "Module" }));
11134
- const serverManifest = { "entry": { "module": "/assets/entry.client-BTYTUpFV.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-DojjHZlY.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/error-boundary-1-dmC941.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/index-DRH72MzK.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-_J-F_Dnc.js", "/assets/presence-CdyMdOKk.js", "/assets/seo-pBpFCWsy.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-CWSCXcBv.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/error-boundary-1-dmC941.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-T2hZtl0D.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/product-C1ynnrN_.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuoaxPEj.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/presence-CdyMdOKk.js", "/assets/progress-DAB3nDa2.js", "/assets/index-_J-F_Dnc.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-CPFwPYf1.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/user-BBryXlM_.js", "/assets/presence-CdyMdOKk.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DoeazikD.js", "imports": ["/assets/discord-CHsbqaqM.js", "/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js", "/assets/user-BBryXlM_.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-88n0To1b.js", "imports": ["/assets/index-BFGhCX_U.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-D6KsriIk.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-BA2Xhzqs.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-C5yGKUmm.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/error-boundary-1-dmC941.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/set-playground-S_rIwJAa.js", "/assets/seo-pBpFCWsy.js", "/assets/misc-BJtHv_Jh.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/tooltip-BgynKV2c.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/index-BuoaxPEj.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/pe-ChIwTk8v.js", "/assets/index-BuA_RWlU.js", "/assets/index-_J-F_Dnc.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-CM8yuYni.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/preview-CW_12I0i.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/request-info-DCIQLE6H.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CmmC-_8P.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-assn_bSK.js", "/assets/error-boundary-1-dmC941.js", "/assets/loading-Dk0n07O3.js", "/assets/discord-CHsbqaqM.js", "/assets/components-9EGYHTc_.js", "/assets/index-DRH72MzK.js", "/assets/set-playground-S_rIwJAa.js", "/assets/tests-CTs57UUU.js", "/assets/preview-CW_12I0i.js", "/assets/index-BuoaxPEj.js", "/assets/accordion-DC885Li1.js", "/assets/mdx-hW1uYjc1.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-CtH75Laz.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tests-CTs57UUU.js", "/assets/components-9EGYHTc_.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/accordion-DC885Li1.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/set-playground-S_rIwJAa.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DEzaS_Ji.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-DVV0zwmP.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-KgMLc41c.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/error-boundary-1-dmC941.js", "/assets/mdx-hW1uYjc1.js", "/assets/misc-BJtHv_Jh.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-pZYDEC_l.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/product-C1ynnrN_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-BNS-kEhc.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-gyrNluke.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-jlCv3hv0.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-assn_bSK.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/components-9EGYHTc_.js", "/assets/accordion-DC885Li1.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/mdx-hW1uYjc1.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-DCuSqnkZ.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-c9f53a94.js", "version": "c9f53a94" };
11255
+ const serverManifest = { "entry": { "module": "/assets/entry.client-BTYTUpFV.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-DCfiv1cO.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/error-boundary-1-dmC941.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/index-DRH72MzK.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-_J-F_Dnc.js", "/assets/presence-DyppfK2V.js", "/assets/seo-pBpFCWsy.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-CWSCXcBv.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/error-boundary-1-dmC941.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-DvQmiuTm.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/product-C1ynnrN_.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuoaxPEj.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/presence-DyppfK2V.js", "/assets/progress-DAB3nDa2.js", "/assets/index-_J-F_Dnc.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DbdZ0Vhg.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/user-AF5-S38o.js", "/assets/presence-DyppfK2V.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-arMqZKbH.js", "imports": ["/assets/discord-DGeGrHNb.js", "/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js", "/assets/user-AF5-S38o.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-88n0To1b.js", "imports": ["/assets/index-BFGhCX_U.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-Byb05FGg.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-C01HZJEv.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-BA2Xhzqs.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BwDoP7Kv.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/error-boundary-1-dmC941.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-C01HZJEv.js", "/assets/progress-DAB3nDa2.js", "/assets/set-playground-S_rIwJAa.js", "/assets/seo-pBpFCWsy.js", "/assets/misc-BJtHv_Jh.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/tooltip-BgynKV2c.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/index-BuoaxPEj.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/pe-ChIwTk8v.js", "/assets/index-BuA_RWlU.js", "/assets/index-_J-F_Dnc.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-CM8yuYni.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/preview-CW_12I0i.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/request-info-DCIQLE6H.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-D-V8b9oA.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-CzHloS9Q.js", "/assets/error-boundary-1-dmC941.js", "/assets/loading-Dk0n07O3.js", "/assets/discord-DGeGrHNb.js", "/assets/components-9EGYHTc_.js", "/assets/index-DRH72MzK.js", "/assets/set-playground-S_rIwJAa.js", "/assets/tests-Cmesc4Yz.js", "/assets/preview-CW_12I0i.js", "/assets/index-BuoaxPEj.js", "/assets/accordion-DC885Li1.js", "/assets/mdx-C01HZJEv.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-D_qZ9Wu9.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tests-Cmesc4Yz.js", "/assets/components-9EGYHTc_.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/accordion-DC885Li1.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/set-playground-S_rIwJAa.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DUqyxjV2.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-C01HZJEv.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-DbOxW5dc.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-C01HZJEv.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-Bfqa72Xl.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/error-boundary-1-dmC941.js", "/assets/mdx-C01HZJEv.js", "/assets/misc-BJtHv_Jh.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-pZYDEC_l.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/product-C1ynnrN_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-BNS-kEhc.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-gyrNluke.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/pe-ChIwTk8v.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-Cmd66hnY.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-CzHloS9Q.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/components-9EGYHTc_.js", "/assets/accordion-DC885Li1.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/mdx-C01HZJEv.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-Dk74xvlh.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/epic-video-Dw5Vkxid.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-AF5-S38o.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-0d355395.js", "version": "0d355395" };
11135
11256
  const mode = "production";
11136
11257
  const assetsBuildDirectory = "build/client";
11137
11258
  const basename = "/";