@epic-web/workshop-app 4.28.1 → 4.28.3

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 (94) hide show
  1. package/build/client/assets/{_-C82olNpL.js → _-D0Tgngwe.js} +2 -2
  2. package/build/client/assets/{_-C82olNpL.js.map → _-D0Tgngwe.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber-DeMmiDU5.js → _exerciseNumber-j9COGU-R.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber-DeMmiDU5.js.map → _exerciseNumber-j9COGU-R.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-qCtEMlS2.js → _exerciseNumber_._stepNumber-7kSd_6hH.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-qCtEMlS2.js.map → _exerciseNumber_._stepNumber-7kSd_6hH.js.map} +1 -1
  7. package/build/client/assets/{_exerciseNumber_.finished-DM5HZX6r.js → _exerciseNumber_.finished-DDNPeo8x.js} +2 -2
  8. package/build/client/assets/{_exerciseNumber_.finished-DM5HZX6r.js.map → _exerciseNumber_.finished-DDNPeo8x.js.map} +1 -1
  9. package/build/client/assets/_layout-BPwIOXxN.js +6 -0
  10. package/build/client/assets/_layout-BPwIOXxN.js.map +1 -0
  11. package/build/client/assets/{_layout-DATuycts.js → _layout-BwzhY4NI.js} +2 -2
  12. package/build/client/assets/{_layout-DATuycts.js.map → _layout-BwzhY4NI.js.map} +1 -1
  13. package/build/client/assets/{_layout-5idP3Bqx.js → _layout-DZWGV4Uf.js} +2 -2
  14. package/build/client/assets/{_layout-5idP3Bqx.js.map → _layout-DZWGV4Uf.js.map} +1 -1
  15. package/build/client/assets/{accordion-CKwXYK9L.js → accordion-OfO-5m5D.js} +2 -2
  16. package/build/client/assets/{accordion-CKwXYK9L.js.map → accordion-OfO-5m5D.js.map} +1 -1
  17. package/build/client/assets/{account-D1DCJCnR.js → account-BatJhmSV.js} +2 -2
  18. package/build/client/assets/{account-D1DCJCnR.js.map → account-BatJhmSV.js.map} +1 -1
  19. package/build/client/assets/app-CJ9ElQg6.js +2 -0
  20. package/build/client/assets/{app-B6_qsli7.js.map → app-CJ9ElQg6.js.map} +1 -1
  21. package/build/client/assets/{button-CQ6cnotS.js → button-EE0aPg10.js} +2 -2
  22. package/build/client/assets/{button-CQ6cnotS.js.map → button-EE0aPg10.js.map} +1 -1
  23. package/build/client/assets/{diff-CU8At1c4.js → diff-BEEJhGiC.js} +2 -2
  24. package/build/client/assets/{diff-CU8At1c4.js.map → diff-BEEJhGiC.js.map} +1 -1
  25. package/build/client/assets/{diff-hoOood-9.js → diff-BXHLJqTK.js} +2 -2
  26. package/build/client/assets/{diff-hoOood-9.js.map → diff-BXHLJqTK.js.map} +1 -1
  27. package/build/client/assets/{discord-CgdmSzxV.js → discord-BRTW4Rnh.js} +2 -2
  28. package/build/client/assets/{discord-CgdmSzxV.js.map → discord-BRTW4Rnh.js.map} +1 -1
  29. package/build/client/assets/discord-BhzUjmbI.js +2 -0
  30. package/build/client/assets/discord-BhzUjmbI.js.map +1 -0
  31. package/build/client/assets/{epic-video-BFcdejfC.js → epic-video-DZzPuXR8.js} +2 -2
  32. package/build/client/assets/{epic-video-BFcdejfC.js.map → epic-video-DZzPuXR8.js.map} +1 -1
  33. package/build/client/assets/{error-boundary-CqgVAFiu.js → error-boundary-COkPRBOZ.js} +2 -2
  34. package/build/client/assets/{error-boundary-CqgVAFiu.js.map → error-boundary-COkPRBOZ.js.map} +1 -1
  35. package/build/client/assets/{finished-C_v7hO19.js → finished-Dop_5v80.js} +2 -2
  36. package/build/client/assets/{finished-C_v7hO19.js.map → finished-Dop_5v80.js.map} +1 -1
  37. package/build/client/assets/{icons-CnZJXICl.svg → icons-BtWYk6Ws.svg} +17 -0
  38. package/build/client/assets/{index-9dWszLxO.js → index-BwhlO_gF.js} +2 -2
  39. package/build/client/assets/{index-9dWszLxO.js.map → index-BwhlO_gF.js.map} +1 -1
  40. package/build/client/assets/{index-j_VpxCZh.js → index-CXyf3Reb.js} +2 -2
  41. package/build/client/assets/{index-j_VpxCZh.js.map → index-CXyf3Reb.js.map} +1 -1
  42. package/build/client/assets/{index-BHeB-0xq.js → index-D-l_qaLC.js} +2 -2
  43. package/build/client/assets/{index-BHeB-0xq.js.map → index-D-l_qaLC.js.map} +1 -1
  44. package/build/client/assets/{index-DlJAkutV.js → index-YNIH4TH8.js} +2 -2
  45. package/build/client/assets/{index-DlJAkutV.js.map → index-YNIH4TH8.js.map} +1 -1
  46. package/build/client/assets/{index-CoqhTiwT.js → index-ZZCxObNp.js} +2 -2
  47. package/build/client/assets/{index-CoqhTiwT.js.map → index-ZZCxObNp.js.map} +1 -1
  48. package/build/client/assets/loading-sXkYDMsx.js +2 -0
  49. package/build/client/assets/loading-sXkYDMsx.js.map +1 -0
  50. package/build/client/assets/login-Cc73KLYm.js +2 -0
  51. package/build/client/assets/login-Cc73KLYm.js.map +1 -0
  52. package/build/client/assets/{manifest-0d2d0a8f.js → manifest-1d60a768.js} +1 -1
  53. package/build/client/assets/{mdx-DvqHp8UI.js → mdx-DwC5Oacq.js} +2 -2
  54. package/build/client/assets/{mdx-DvqHp8UI.js.map → mdx-DwC5Oacq.js.map} +1 -1
  55. package/build/client/assets/{misc-Txs7O6JX.js → misc-CxCgA-_O.js} +2 -2
  56. package/build/client/assets/{misc-Txs7O6JX.js.map → misc-CxCgA-_O.js.map} +1 -1
  57. package/build/client/assets/{nav-chevrons-Cbc1bd_j.js → nav-chevrons-g-C0ilNz.js} +2 -2
  58. package/build/client/assets/{nav-chevrons-Cbc1bd_j.js.map → nav-chevrons-g-C0ilNz.js.map} +1 -1
  59. package/build/client/assets/{onboarding-Dc2TmI9y.js → onboarding-DE9gclYS.js} +2 -2
  60. package/build/client/assets/onboarding-DE9gclYS.js.map +1 -0
  61. package/build/client/assets/{preview-CWCIw-lc.js → preview-C7dtR2VR.js} +2 -2
  62. package/build/client/assets/{preview-CWCIw-lc.js.map → preview-C7dtR2VR.js.map} +1 -1
  63. package/build/client/assets/{product-f8Gd2MQ6.js → product-BAWG1Vut.js} +2 -2
  64. package/build/client/assets/{product-f8Gd2MQ6.js.map → product-BAWG1Vut.js.map} +1 -1
  65. package/build/client/assets/{progress-C7kc6YXZ.js → progress-BFm2U-l5.js} +2 -2
  66. package/build/client/assets/{progress-C7kc6YXZ.js.map → progress-BFm2U-l5.js.map} +1 -1
  67. package/build/client/assets/{progress-bar-bUuKn1Q8.js → progress-bar-D3kudPcr.js} +2 -2
  68. package/build/client/assets/{progress-bar-bUuKn1Q8.js.map → progress-bar-D3kudPcr.js.map} +1 -1
  69. package/build/client/assets/{root-CbC_P7jJ.js → root-BOrI36ez.js} +3 -3
  70. package/build/client/assets/{root-CbC_P7jJ.js.map → root-BOrI36ez.js.map} +1 -1
  71. package/build/client/assets/{set-playground-Cr0qL9N9.js → set-playground-DW0yVaNn.js} +2 -2
  72. package/build/client/assets/{set-playground-Cr0qL9N9.js.map → set-playground-DW0yVaNn.js.map} +1 -1
  73. package/build/client/assets/tailwind-CFrdHbaR.css +1 -0
  74. package/build/client/assets/test-N2HloCnX.js +2 -0
  75. package/build/client/assets/{test-Cy-fo6gv.js.map → test-N2HloCnX.js.map} +1 -1
  76. package/build/client/assets/{tests-DmimqC1q.js → tests-DUg6VXec.js} +2 -2
  77. package/build/client/assets/{tests-DmimqC1q.js.map → tests-DUg6VXec.js.map} +1 -1
  78. package/build/client/assets/{tooltip-DTFU8ajx.js → tooltip-kD4kSf1i.js} +2 -2
  79. package/build/client/assets/{tooltip-DTFU8ajx.js.map → tooltip-kD4kSf1i.js.map} +1 -1
  80. package/build/server/index.js +293 -211
  81. package/build/server/index.js.map +1 -1
  82. package/package.json +3 -3
  83. package/build/client/assets/_layout-DkGEbcMk.js +0 -6
  84. package/build/client/assets/_layout-DkGEbcMk.js.map +0 -1
  85. package/build/client/assets/app-B6_qsli7.js +0 -2
  86. package/build/client/assets/discord-BBRM_H3g.js +0 -2
  87. package/build/client/assets/discord-BBRM_H3g.js.map +0 -1
  88. package/build/client/assets/loading-CF7oQHQf.js +0 -2
  89. package/build/client/assets/loading-CF7oQHQf.js.map +0 -1
  90. package/build/client/assets/login-Ca9EDpZj.js +0 -2
  91. package/build/client/assets/login-Ca9EDpZj.js.map +0 -1
  92. package/build/client/assets/onboarding-Dc2TmI9y.js.map +0 -1
  93. package/build/client/assets/tailwind-DTowOebn.css +0 -1
  94. package/build/client/assets/test-Cy-fo6gv.js +0 -2
@@ -1218,7 +1218,6 @@ const WorkshopConfigSchema = z$1.object({
1218
1218
  postupdate: z$1.string().optional()
1219
1219
  }).optional(),
1220
1220
  initialRoute: z$1.string().optional().default("/")
1221
- // Add this line
1222
1221
  }).transform((data) => {
1223
1222
  return {
1224
1223
  ...data,
@@ -2729,7 +2728,7 @@ function Confetti({ id }) {
2729
2728
  id
2730
2729
  ) });
2731
2730
  }
2732
- const iconsSvg = "/assets/icons-CnZJXICl.svg";
2731
+ const iconsSvg = "/assets/icons-BtWYk6Ws.svg";
2733
2732
  function AnimatedBars({
2734
2733
  title,
2735
2734
  size = 16,
@@ -3400,7 +3399,7 @@ const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
3400
3399
  useTheme
3401
3400
  }, Symbol.toStringTag, { value: "Module" }));
3402
3401
  const appStylesheetUrl = "/assets/app-b7uXHF5m.css";
3403
- const tailwindStylesheetUrl = "/assets/tailwind-DTowOebn.css";
3402
+ const tailwindStylesheetUrl = "/assets/tailwind-CFrdHbaR.css";
3404
3403
  const cookieName = "EpicShop_confetti";
3405
3404
  function getConfetti(request) {
3406
3405
  const cookieHeader = request.headers.get("cookie");
@@ -4518,6 +4517,7 @@ function useRequireEpicProgress() {
4518
4517
  return progress;
4519
4518
  }
4520
4519
  function useNextExerciseRoute() {
4520
+ const currentPathname = useLocation().pathname;
4521
4521
  const progress = useEpicProgress();
4522
4522
  if (!progress) return null;
4523
4523
  const scoreProgress = (a) => {
@@ -4538,10 +4538,17 @@ function useNextExerciseRoute() {
4538
4538
  if (nextProgress.type === "workshop-instructions") return "/";
4539
4539
  if (nextProgress.type === "workshop-finished") return "/finished";
4540
4540
  const ex = nextProgress.exerciseNumber.toString().padStart(2, "0");
4541
- if (nextProgress.type === "instructions") return `/${ex}`;
4542
- if (nextProgress.type === "finished") return `/${ex}/finished`;
4541
+ if (nextProgress.type === "instructions") return `/exercise/${ex}`;
4542
+ if (nextProgress.type === "finished") return `/exercise/${ex}/finished`;
4543
4543
  const st = nextProgress.stepNumber.toString().padStart(2, "0");
4544
- if (nextProgress.type === "step") return `/${ex}/${st}/problem`;
4544
+ if (nextProgress.type === "step") {
4545
+ const problemRoute = `/exercise/${ex}/${st}/problem`;
4546
+ const solutionRoute = `/exercise/${ex}/${st}/solution`;
4547
+ if (currentPathname === problemRoute || currentPathname === solutionRoute) {
4548
+ return solutionRoute;
4549
+ }
4550
+ return problemRoute;
4551
+ }
4545
4552
  return null;
4546
4553
  }
4547
4554
  const percentageClassNames = {
@@ -4680,12 +4687,20 @@ function ProgressToggle({
4680
4687
  navigationLocationStateFrom
4681
4688
  ]);
4682
4689
  React.useEffect(() => {
4683
- if (!animationRef.current) return;
4690
+ let latest = true;
4684
4691
  if (!startAnimation) return;
4685
- const animationPromises = animationRef.current.getAnimations().map(({ finished }) => finished);
4686
- void Promise.allSettled(animationPromises).then(() => {
4687
- setStartAnimation(false);
4692
+ void new Promise((resolve) => setTimeout(resolve, 200)).then(async () => {
4693
+ if (!latest) return;
4694
+ if (!animationRef.current) return;
4695
+ const animationPromises = animationRef.current.getAnimations().map(({ finished }) => finished);
4696
+ return Promise.allSettled(animationPromises).then(() => {
4697
+ if (!latest) return;
4698
+ setStartAnimation(false);
4699
+ });
4688
4700
  });
4701
+ return () => {
4702
+ latest = false;
4703
+ };
4689
4704
  }, [startAnimation]);
4690
4705
  if (ENV.EPICSHOP_DEPLOYED || !progressItem) return null;
4691
4706
  return /* @__PURE__ */ jsxs(progressFetcher.Form, { method: "POST", action: "/progress", children: [
@@ -5208,125 +5223,140 @@ function MobileNavigation({
5208
5223
  initial: { opacity: 0 },
5209
5224
  animate: { opacity: 1 },
5210
5225
  children: [
5211
- /* @__PURE__ */ jsx(
5226
+ /* @__PURE__ */ jsxs(
5212
5227
  motion.ul,
5213
5228
  {
5214
5229
  variants: listVariants,
5215
5230
  initial: "hidden",
5216
5231
  animate: "visible",
5217
5232
  className: "flex flex-col",
5218
- children: data.exercises.map(({ exerciseNumber, title, steps }) => {
5219
- const isActive = Number(params.exerciseNumber) === exerciseNumber;
5220
- const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5221
- const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5222
- return /* @__PURE__ */ jsxs(
5223
- NavigationExerciseListItem,
5233
+ children: [
5234
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
5235
+ NavLink,
5224
5236
  {
5225
- exerciseNumber,
5226
- children: [
5227
- /* @__PURE__ */ jsxs(
5228
- Link,
5229
- {
5230
- prefetch: "intent",
5231
- to: `/${exerciseNum}`,
5232
- className: clsx(
5233
- "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5234
- 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5235
- { "bg-foreground text-background": isActive }
5236
- ),
5237
- children: [
5238
- title,
5239
- showPlayground ? " 🛝" : null
5240
- ]
5241
- }
5242
- ),
5243
- isActive ? /* @__PURE__ */ jsxs(
5244
- motion.ul,
5245
- {
5246
- variants: listVariants,
5247
- initial: "hidden",
5248
- animate: "visible",
5249
- className: "ml-4 mt-4 flex flex-col",
5250
- children: [
5251
- /* @__PURE__ */ jsx(
5252
- NavigationExerciseStepListItem,
5253
- {
5254
- type: "instructions",
5255
- exerciseNumber,
5256
- children: /* @__PURE__ */ jsx(
5257
- Link,
5258
- {
5259
- to: `/${exerciseNum}`,
5260
- prefetch: "intent",
5261
- className: clsx(
5262
- 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5263
- {
5264
- "bg-foreground text-background": !params.stepNumber
5265
- }
5266
- ),
5267
- children: "Intro"
5268
- }
5269
- )
5270
- },
5271
- exerciseNumber
5237
+ prefetch: "intent",
5238
+ to: "/",
5239
+ className: ({ isActive }) => clsx(
5240
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5241
+ 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5242
+ { "bg-foreground text-background": isActive }
5243
+ ),
5244
+ children: "Home"
5245
+ }
5246
+ ) }),
5247
+ data.exercises.map(({ exerciseNumber, title, steps }) => {
5248
+ const isActive = Number(params.exerciseNumber) === exerciseNumber;
5249
+ const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5250
+ const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5251
+ return /* @__PURE__ */ jsxs(
5252
+ NavigationExerciseListItem,
5253
+ {
5254
+ exerciseNumber,
5255
+ children: [
5256
+ /* @__PURE__ */ jsxs(
5257
+ Link,
5258
+ {
5259
+ prefetch: "intent",
5260
+ to: `/${exerciseNum}`,
5261
+ className: clsx(
5262
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5263
+ 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5264
+ { "bg-foreground text-background": isActive }
5272
5265
  ),
5273
- steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5274
- const isActive2 = Number(params.stepNumber) === stepNumber;
5275
- const step = stepNumber.toString().padStart(2, "0");
5276
- const isPlayground = name === data.playground.appName;
5277
- return /* @__PURE__ */ jsx(
5266
+ children: [
5267
+ title,
5268
+ showPlayground ? " 🛝" : null
5269
+ ]
5270
+ }
5271
+ ),
5272
+ isActive ? /* @__PURE__ */ jsxs(
5273
+ motion.ul,
5274
+ {
5275
+ variants: listVariants,
5276
+ initial: "hidden",
5277
+ animate: "visible",
5278
+ className: "ml-4 mt-4 flex flex-col",
5279
+ children: [
5280
+ /* @__PURE__ */ jsx(
5278
5281
  NavigationExerciseStepListItem,
5279
5282
  {
5280
- type: "step",
5281
- stepNumber,
5283
+ type: "instructions",
5282
5284
  exerciseNumber,
5283
5285
  children: /* @__PURE__ */ jsx(
5284
5286
  Link,
5285
5287
  {
5286
- to: `/${exerciseNum}/${step}`,
5288
+ to: `/${exerciseNum}`,
5287
5289
  prefetch: "intent",
5288
5290
  className: clsx(
5289
5291
  'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5290
5292
  {
5291
- "bg-foreground text-background": isActive2
5293
+ "bg-foreground text-background": !params.stepNumber
5292
5294
  }
5293
5295
  ),
5294
- children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5296
+ children: "Intro"
5295
5297
  }
5296
5298
  )
5297
5299
  },
5298
- stepNumber
5299
- );
5300
- }),
5301
- /* @__PURE__ */ jsx(
5302
- NavigationExerciseStepListItem,
5303
- {
5304
- type: "finished",
5305
- exerciseNumber,
5306
- children: /* @__PURE__ */ jsx(
5307
- NavLink,
5300
+ exerciseNumber
5301
+ ),
5302
+ steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5303
+ const isActive2 = Number(params.stepNumber) === stepNumber;
5304
+ const step = stepNumber.toString().padStart(2, "0");
5305
+ const isPlayground = name === data.playground.appName;
5306
+ return /* @__PURE__ */ jsx(
5307
+ NavigationExerciseStepListItem,
5308
5308
  {
5309
- to: `/${exerciseNum}/finished`,
5310
- prefetch: "intent",
5311
- className: ({ isActive: isActive2 }) => clsx(
5312
- 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5309
+ type: "step",
5310
+ stepNumber,
5311
+ exerciseNumber,
5312
+ children: /* @__PURE__ */ jsx(
5313
+ Link,
5313
5314
  {
5314
- "bg-foreground text-background": isActive2
5315
+ to: `/${exerciseNum}/${step}`,
5316
+ prefetch: "intent",
5317
+ className: clsx(
5318
+ 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5319
+ {
5320
+ "bg-foreground text-background": isActive2
5321
+ }
5322
+ ),
5323
+ children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5315
5324
  }
5316
- ),
5317
- children: "📝 Elaboration"
5318
- }
5319
- )
5320
- }
5321
- )
5322
- ]
5323
- }
5324
- ) : null
5325
- ]
5326
- },
5327
- exerciseNumber
5328
- );
5329
- })
5325
+ )
5326
+ },
5327
+ stepNumber
5328
+ );
5329
+ }),
5330
+ /* @__PURE__ */ jsx(
5331
+ NavigationExerciseStepListItem,
5332
+ {
5333
+ type: "finished",
5334
+ exerciseNumber,
5335
+ children: /* @__PURE__ */ jsx(
5336
+ NavLink,
5337
+ {
5338
+ to: `/${exerciseNum}/finished`,
5339
+ prefetch: "intent",
5340
+ className: ({ isActive: isActive2 }) => clsx(
5341
+ 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5342
+ {
5343
+ "bg-foreground text-background": isActive2
5344
+ }
5345
+ ),
5346
+ children: "📝 Elaboration"
5347
+ }
5348
+ )
5349
+ }
5350
+ )
5351
+ ]
5352
+ }
5353
+ ) : null
5354
+ ]
5355
+ },
5356
+ exerciseNumber
5357
+ );
5358
+ })
5359
+ ]
5330
5360
  }
5331
5361
  ),
5332
5362
  /* @__PURE__ */ jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsx(
@@ -5499,125 +5529,140 @@ function Navigation({
5499
5529
  initial: { opacity: 0 },
5500
5530
  animate: { opacity: 1 },
5501
5531
  children: [
5502
- /* @__PURE__ */ jsx(
5532
+ /* @__PURE__ */ jsxs(
5503
5533
  motion.ul,
5504
5534
  {
5505
5535
  variants: listVariants,
5506
5536
  initial: "hidden",
5507
5537
  animate: "visible",
5508
5538
  className: "flex flex-col",
5509
- children: data.exercises.map(({ exerciseNumber, title, steps }) => {
5510
- const isActive = Number(params.exerciseNumber) === exerciseNumber;
5511
- const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5512
- const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5513
- return /* @__PURE__ */ jsxs(
5514
- NavigationExerciseListItem,
5539
+ children: [
5540
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
5541
+ NavLink,
5515
5542
  {
5516
- exerciseNumber,
5517
- children: [
5518
- /* @__PURE__ */ jsxs(
5519
- Link,
5520
- {
5521
- prefetch: "intent",
5522
- to: `/${exerciseNum}`,
5523
- className: clsx(
5524
- "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5525
- 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5526
- { "bg-foreground text-background": isActive }
5527
- ),
5528
- children: [
5529
- title,
5530
- showPlayground ? " 🛝" : null
5531
- ]
5532
- }
5533
- ),
5534
- isActive ? /* @__PURE__ */ jsxs(
5535
- motion.ul,
5536
- {
5537
- variants: listVariants,
5538
- initial: "hidden",
5539
- animate: "visible",
5540
- className: "ml-4 mt-4 flex flex-col",
5541
- children: [
5542
- /* @__PURE__ */ jsx(
5543
- NavigationExerciseStepListItem,
5544
- {
5545
- type: "instructions",
5546
- exerciseNumber,
5547
- children: /* @__PURE__ */ jsx(
5548
- Link,
5549
- {
5550
- to: `/${exerciseNum}`,
5551
- prefetch: "intent",
5552
- className: clsx(
5553
- 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5554
- {
5555
- "bg-foreground text-background": !params.stepNumber
5556
- }
5557
- ),
5558
- children: "Intro"
5559
- }
5560
- )
5561
- },
5562
- exerciseNumber
5543
+ prefetch: "intent",
5544
+ to: "/",
5545
+ className: ({ isActive }) => clsx(
5546
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5547
+ 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5548
+ { "bg-foreground text-background": isActive }
5549
+ ),
5550
+ children: "Home"
5551
+ }
5552
+ ) }),
5553
+ data.exercises.map(({ exerciseNumber, title, steps }) => {
5554
+ const isActive = Number(params.exerciseNumber) === exerciseNumber;
5555
+ const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5556
+ const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5557
+ return /* @__PURE__ */ jsxs(
5558
+ NavigationExerciseListItem,
5559
+ {
5560
+ exerciseNumber,
5561
+ children: [
5562
+ /* @__PURE__ */ jsxs(
5563
+ Link,
5564
+ {
5565
+ prefetch: "intent",
5566
+ to: `/${exerciseNum}`,
5567
+ className: clsx(
5568
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5569
+ 'after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5570
+ { "bg-foreground text-background": isActive }
5563
5571
  ),
5564
- steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5565
- const isActive2 = Number(params.stepNumber) === stepNumber;
5566
- const step = stepNumber.toString().padStart(2, "0");
5567
- const isPlayground = name === data.playground.appName;
5568
- return /* @__PURE__ */ jsx(
5572
+ children: [
5573
+ title,
5574
+ showPlayground ? " 🛝" : null
5575
+ ]
5576
+ }
5577
+ ),
5578
+ isActive ? /* @__PURE__ */ jsxs(
5579
+ motion.ul,
5580
+ {
5581
+ variants: listVariants,
5582
+ initial: "hidden",
5583
+ animate: "visible",
5584
+ className: "ml-4 mt-4 flex flex-col",
5585
+ children: [
5586
+ /* @__PURE__ */ jsx(
5569
5587
  NavigationExerciseStepListItem,
5570
5588
  {
5571
- type: "step",
5572
- stepNumber,
5589
+ type: "instructions",
5573
5590
  exerciseNumber,
5574
5591
  children: /* @__PURE__ */ jsx(
5575
5592
  Link,
5576
5593
  {
5577
- to: `/${exerciseNum}/${step}`,
5594
+ to: `/${exerciseNum}`,
5578
5595
  prefetch: "intent",
5579
5596
  className: clsx(
5580
5597
  'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5581
5598
  {
5582
- "bg-foreground text-background": isActive2
5599
+ "bg-foreground text-background": !params.stepNumber
5583
5600
  }
5584
5601
  ),
5585
- children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5602
+ children: "Intro"
5586
5603
  }
5587
5604
  )
5588
5605
  },
5589
- stepNumber
5590
- );
5591
- }),
5592
- /* @__PURE__ */ jsx(
5593
- NavigationExerciseStepListItem,
5594
- {
5595
- type: "finished",
5596
- exerciseNumber,
5597
- children: /* @__PURE__ */ jsx(
5598
- NavLink,
5606
+ exerciseNumber
5607
+ ),
5608
+ steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5609
+ const isActive2 = Number(params.stepNumber) === stepNumber;
5610
+ const step = stepNumber.toString().padStart(2, "0");
5611
+ const isPlayground = name === data.playground.appName;
5612
+ return /* @__PURE__ */ jsx(
5613
+ NavigationExerciseStepListItem,
5599
5614
  {
5600
- to: `/${exerciseNum}/finished`,
5601
- prefetch: "intent",
5602
- className: ({ isActive: isActive2 }) => clsx(
5603
- 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5615
+ type: "step",
5616
+ stepNumber,
5617
+ exerciseNumber,
5618
+ children: /* @__PURE__ */ jsx(
5619
+ Link,
5604
5620
  {
5605
- "bg-foreground text-background": isActive2
5621
+ to: `/${exerciseNum}/${step}`,
5622
+ prefetch: "intent",
5623
+ className: clsx(
5624
+ 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-xl font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5625
+ {
5626
+ "bg-foreground text-background": isActive2
5627
+ }
5628
+ ),
5629
+ children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5606
5630
  }
5607
- ),
5608
- children: "📝 Elaboration"
5609
- }
5610
- )
5611
- }
5612
- )
5613
- ]
5614
- }
5615
- ) : null
5616
- ]
5617
- },
5618
- exerciseNumber
5619
- );
5620
- })
5631
+ )
5632
+ },
5633
+ stepNumber
5634
+ );
5635
+ }),
5636
+ /* @__PURE__ */ jsx(
5637
+ NavigationExerciseStepListItem,
5638
+ {
5639
+ type: "finished",
5640
+ exerciseNumber,
5641
+ children: /* @__PURE__ */ jsx(
5642
+ NavLink,
5643
+ {
5644
+ to: `/${exerciseNum}/finished`,
5645
+ prefetch: "intent",
5646
+ className: ({ isActive: isActive2 }) => clsx(
5647
+ 'relative whitespace-nowrap px-2 py-0.5 pr-3 text-base font-medium outline-none after:absolute after:-bottom-2.5 after:-right-2.5 after:h-5 after:w-5 after:rotate-45 after:scale-75 after:bg-background after:content-[""] hover:underline focus:underline',
5648
+ {
5649
+ "bg-foreground text-background": isActive2
5650
+ }
5651
+ ),
5652
+ children: "📝 Elaboration"
5653
+ }
5654
+ )
5655
+ }
5656
+ )
5657
+ ]
5658
+ }
5659
+ ) : null
5660
+ ]
5661
+ },
5662
+ exerciseNumber
5663
+ );
5664
+ })
5665
+ ]
5621
5666
  }
5622
5667
  ),
5623
5668
  /* @__PURE__ */ jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsx(
@@ -6979,6 +7024,7 @@ const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
6979
7024
  usePlayerPreferences
6980
7025
  }, Symbol.toStringTag, { value: "Module" }));
6981
7026
  function Loading({
7027
+ className,
6982
7028
  children = "Loading"
6983
7029
  }) {
6984
7030
  const { reducedMotion } = useHints();
@@ -6988,7 +7034,10 @@ function Loading({
6988
7034
  return /* @__PURE__ */ jsxs(
6989
7035
  "div",
6990
7036
  {
6991
- className: "flex items-center gap-2 font-mono text-sm font-medium uppercase",
7037
+ className: cn(
7038
+ "flex items-center gap-2 font-mono text-sm font-medium uppercase",
7039
+ className
7040
+ ),
6992
7041
  role: "status",
6993
7042
  children: [
6994
7043
  /* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Characters, {}) }),
@@ -12750,22 +12799,22 @@ function Login() {
12750
12799
  }
12751
12800
  }
12752
12801
  }, [lastMessage, navigate, revalidator]);
12753
- return /* @__PURE__ */ jsx("main", { className: "flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
12802
+ return /* @__PURE__ */ jsx("main", { className: "flex h-full w-full flex-grow flex-col items-center justify-center p-10", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center", children: [
12754
12803
  /* @__PURE__ */ jsx(Logo, { className: "h-16 w-16" }),
12755
12804
  /* @__PURE__ */ jsxs("h1", { className: "pt-5 text-2xl font-semibold md:text-3xl", children: [
12756
- "Authenticate with ",
12805
+ "Login to ",
12757
12806
  displayName
12758
12807
  ] }),
12759
- /* @__PURE__ */ jsxs("h2", { className: "max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300", children: [
12760
- "If you have access to this workshop on ",
12761
- displayName,
12762
- ", you'll be able to watch videos, track progress, and more!"
12763
- ] }),
12764
12808
  /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center pt-5", children: [
12765
- userCodeInfo ? /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center gap-3", children: [
12809
+ userCodeInfo ? /* @__PURE__ */ jsxs("div", { className: "flex w-full max-w-md flex-col items-center gap-3", children: [
12766
12810
  /* @__PURE__ */ jsxs("div", { className: "my-2 flex w-full flex-col items-center gap-2", children: [
12767
12811
  /* @__PURE__ */ jsx("p", { className: "text-lg", children: "Your verification code is: " }),
12768
- /* @__PURE__ */ jsx("div", { className: "mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40", children: /* @__PURE__ */ jsx("code", { children: userCodeInfo.code }) })
12812
+ /* @__PURE__ */ jsx("div", { className: "mb-3 w-full bg-gray-100 px-5 py-3 text-center text-lg font-bold dark:bg-black/40", children: /* @__PURE__ */ jsx("code", { children: userCodeInfo.code }) }),
12813
+ /* @__PURE__ */ jsxs("p", { className: "text-base", children: [
12814
+ "You'll use this to verify your device on ",
12815
+ displayName,
12816
+ ". Click verify code below to open the verification page."
12817
+ ] })
12769
12818
  ] }),
12770
12819
  /* @__PURE__ */ jsx(
12771
12820
  ButtonLink,
@@ -12775,11 +12824,42 @@ function Login() {
12775
12824
  target: "_blank",
12776
12825
  rel: "noreferrer",
12777
12826
  onClick: () => setClickedVerificationLink(true),
12778
- children: "Continue"
12827
+ children: "Verify Auth Code"
12779
12828
  }
12780
12829
  ),
12781
- clickedVerificationLink ? /* @__PURE__ */ jsx("div", { className: "pt-5 opacity-60", children: /* @__PURE__ */ jsx(Loading, { children: "Waiting for confirmation" }) }) : null
12782
- ] }) : /* @__PURE__ */ jsx(loginFetcher.Form, { method: "POST", children: /* @__PURE__ */ jsx(Button, { varient: "primary", type: "submit", children: loginFetcher.state === "idle" && ((_a2 = loginFetcher.data) == null ? void 0 : _a2.status) !== "pending" ? `Retrieve Code` : `Retrieving Code...` }) }),
12830
+ clickedVerificationLink ? /* @__PURE__ */ jsxs("div", { className: "justify-center pt-5 text-center opacity-60", children: [
12831
+ /* @__PURE__ */ jsx(Loading, { className: "justify-center", children: "Waiting for confirmation" }),
12832
+ /* @__PURE__ */ jsxs("p", { className: "pt-2", children: [
12833
+ "Please open",
12834
+ " ",
12835
+ /* @__PURE__ */ jsx(
12836
+ "a",
12837
+ {
12838
+ href: userCodeInfo.url,
12839
+ target: "_blank",
12840
+ className: "underline",
12841
+ children: "your auth page"
12842
+ }
12843
+ ),
12844
+ " ",
12845
+ "in a new tab to continue."
12846
+ ] })
12847
+ ] }) : null
12848
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-8", children: [
12849
+ /* @__PURE__ */ jsxs("div", { className: "flex max-w-lg flex-col gap-2 gap-3 pt-3 text-base text-gray-700 dark:text-gray-300", children: [
12850
+ /* @__PURE__ */ jsxs("p", { children: [
12851
+ "If you have access to this workshop on ",
12852
+ displayName,
12853
+ ", you'll be able to watch videos, track progress, run tests, view the diffs, and more!"
12854
+ ] }),
12855
+ /* @__PURE__ */ jsxs("p", { children: [
12856
+ "First you need to authenticate your device by requesting an access code and verifying on ",
12857
+ displayName,
12858
+ "."
12859
+ ] })
12860
+ ] }),
12861
+ /* @__PURE__ */ jsx(loginFetcher.Form, { method: "POST", children: /* @__PURE__ */ jsx(Button, { varient: "primary", type: "submit", children: loginFetcher.state === "idle" && ((_a2 = loginFetcher.data) == null ? void 0 : _a2.status) !== "pending" ? `Retrieve Auth Code` : `Retrieving Auth Code...` }) })
12862
+ ] }),
12783
12863
  authError ? /* @__PURE__ */ jsxs("div", { className: "mt-4 text-red-500", children: [
12784
12864
  "There was an error: ",
12785
12865
  /* @__PURE__ */ jsx("pre", { children: authError })
@@ -13585,11 +13665,13 @@ const headers = ({ loaderHeaders }) => {
13585
13665
  };
13586
13666
  async function action({ request }) {
13587
13667
  const data = await request.formData();
13668
+ const authInfo = await getAuthInfo();
13588
13669
  const intent = data.get("intent");
13589
13670
  invariantResponse(intent === "complete", "Invalid intent");
13590
13671
  const { onboardingVideo } = getWorkshopConfig();
13591
13672
  await markOnboardingVideoWatched(onboardingVideo);
13592
- throw redirect("/account");
13673
+ if (authInfo) throw redirect("/");
13674
+ else throw redirect("/login");
13593
13675
  }
13594
13676
  function Onboarding() {
13595
13677
  const data = useLoaderData();
@@ -13659,7 +13741,7 @@ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
13659
13741
  __proto__: null,
13660
13742
  loader
13661
13743
  }, Symbol.toStringTag, { value: "Module" }));
13662
- const serverManifest = { "entry": { "module": "/assets/entry.client-3M2p-8I3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-CbC_P7jJ.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/error-boundary-CqgVAFiu.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-B-hHvmeV.js", "/assets/index-DlJAkutV.js", "/assets/presence-Cr--lRCr.js", "/assets/seo-pBpFCWsy.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/_-C82olNpL.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/error-boundary-CqgVAFiu.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-DkGEbcMk.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/workshop-config-CL4F08kr.js", "/assets/product-f8Gd2MQ6.js", "/assets/index-j_VpxCZh.js", "/assets/user-DvujSs-t.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-C7kc6YXZ.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-D1DCJCnR.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/button-CQ6cnotS.js", "/assets/tooltip-DTFU8ajx.js", "/assets/user-DvujSs-t.js", "/assets/presence-Cr--lRCr.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+/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-BBRM_H3g.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/user-DvujSs-t.js", "/assets/discord-CgdmSzxV.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-BUs3av-e.js", "imports": ["/assets/index-1cKOJFpX.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-DeMmiDU5.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-DvqHp8UI.js", "/assets/progress-C7kc6YXZ.js", "/assets/seo-pBpFCWsy.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-qCtEMlS2.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.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-5idP3Bqx.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-j_VpxCZh.js", "/assets/index-9dWszLxO.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-CqgVAFiu.js", "/assets/nav-chevrons-Cbc1bd_j.js", "/assets/mdx-DvqHp8UI.js", "/assets/progress-C7kc6YXZ.js", "/assets/set-playground-Cr0qL9N9.js", "/assets/seo-pBpFCWsy.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-B6_qsli7.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/button-CQ6cnotS.js", "/assets/loading-CF7oQHQf.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/preview-CWCIw-lc.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-CoqhTiwT.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/tooltip-DTFU8ajx.js", "/assets/index-j_VpxCZh.js", "/assets/index-9dWszLxO.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/accordion-CKwXYK9L.js", "/assets/mdx-DvqHp8UI.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cr0qL9N9.js", "/assets/button-CQ6cnotS.js", "/assets/diff-hoOood-9.js", "/assets/error-boundary-CqgVAFiu.js", "/assets/discord-CgdmSzxV.js", "/assets/index-B-hHvmeV.js", "/assets/tests-DmimqC1q.js", "/assets/preview-CWCIw-lc.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-Cy-fo6gv.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/index-j_VpxCZh.js", "/assets/index-9dWszLxO.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/epic-video-BFcdejfC.js", "/assets/accordion-CKwXYK9L.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cr0qL9N9.js", "/assets/tests-DmimqC1q.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-DM5HZX6r.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-Cbc1bd_j.js", "/assets/mdx-DvqHp8UI.js", "/assets/progress-C7kc6YXZ.js", "/assets/seo-pBpFCWsy.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-C_v7hO19.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-Cbc1bd_j.js", "/assets/mdx-DvqHp8UI.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-C7kc6YXZ.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-BHeB-0xq.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-CqgVAFiu.js", "/assets/mdx-DvqHp8UI.js", "/assets/progress-C7kc6YXZ.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-Ca9EDpZj.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/workshop-config-CL4F08kr.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-CQ6cnotS.js", "/assets/loading-CF7oQHQf.js", "/assets/product-f8Gd2MQ6.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-hcqGIpir.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-DATuycts.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/pe-CUZaIcdt.js", "/assets/tooltip-DTFU8ajx.js", "/assets/progress-C7kc6YXZ.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-CU8At1c4.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/tooltip-DTFU8ajx.js", "/assets/index-j_VpxCZh.js", "/assets/index-9dWszLxO.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BFcdejfC.js", "/assets/progress-bar-bUuKn1Q8.js", "/assets/accordion-CKwXYK9L.js", "/assets/mdx-DvqHp8UI.js", "/assets/diff-hoOood-9.js", "/assets/nav-chevrons-Cbc1bd_j.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-Dc2TmI9y.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-Txs7O6JX.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-DTFU8ajx.js", "/assets/pe-CUZaIcdt.js", "/assets/index-DlJAkutV.js", "/assets/loading-CF7oQHQf.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/button-CQ6cnotS.js", "/assets/epic-video-BFcdejfC.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/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.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-0d2d0a8f.js", "version": "0d2d0a8f" };
13744
+ const serverManifest = { "entry": { "module": "/assets/entry.client-3M2p-8I3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-BOrI36ez.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-B-hHvmeV.js", "/assets/index-YNIH4TH8.js", "/assets/presence-Cr--lRCr.js", "/assets/seo-pBpFCWsy.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/_-D0Tgngwe.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/error-boundary-COkPRBOZ.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-BPwIOXxN.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/workshop-config-CL4F08kr.js", "/assets/product-BAWG1Vut.js", "/assets/index-CXyf3Reb.js", "/assets/user-DvujSs-t.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-BFm2U-l5.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-BatJhmSV.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/button-EE0aPg10.js", "/assets/tooltip-kD4kSf1i.js", "/assets/user-DvujSs-t.js", "/assets/presence-Cr--lRCr.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+/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-BhzUjmbI.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/user-DvujSs-t.js", "/assets/discord-BRTW4Rnh.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-BUs3av-e.js", "imports": ["/assets/index-1cKOJFpX.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-j9COGU-R.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-DwC5Oacq.js", "/assets/progress-BFm2U-l5.js", "/assets/seo-pBpFCWsy.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-7kSd_6hH.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.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-DZWGV4Uf.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-CXyf3Reb.js", "/assets/index-BwhlO_gF.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/nav-chevrons-g-C0ilNz.js", "/assets/mdx-DwC5Oacq.js", "/assets/progress-BFm2U-l5.js", "/assets/set-playground-DW0yVaNn.js", "/assets/seo-pBpFCWsy.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-CJ9ElQg6.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/button-EE0aPg10.js", "/assets/loading-sXkYDMsx.js", "/assets/progress-bar-D3kudPcr.js", "/assets/preview-C7dtR2VR.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-ZZCxObNp.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/tooltip-kD4kSf1i.js", "/assets/index-CXyf3Reb.js", "/assets/index-BwhlO_gF.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/accordion-OfO-5m5D.js", "/assets/mdx-DwC5Oacq.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-DW0yVaNn.js", "/assets/button-EE0aPg10.js", "/assets/diff-BXHLJqTK.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/discord-BRTW4Rnh.js", "/assets/index-B-hHvmeV.js", "/assets/tests-DUg6VXec.js", "/assets/preview-C7dtR2VR.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-N2HloCnX.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/index-CXyf3Reb.js", "/assets/index-BwhlO_gF.js", "/assets/progress-bar-D3kudPcr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/accordion-OfO-5m5D.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-DW0yVaNn.js", "/assets/tests-DUg6VXec.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-DDNPeo8x.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-g-C0ilNz.js", "/assets/mdx-DwC5Oacq.js", "/assets/progress-BFm2U-l5.js", "/assets/seo-pBpFCWsy.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-Dop_5v80.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-g-C0ilNz.js", "/assets/mdx-DwC5Oacq.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BFm2U-l5.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-D-l_qaLC.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/mdx-DwC5Oacq.js", "/assets/progress-BFm2U-l5.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-Cc73KLYm.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/workshop-config-CL4F08kr.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-EE0aPg10.js", "/assets/loading-sXkYDMsx.js", "/assets/product-BAWG1Vut.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-hcqGIpir.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-BwzhY4NI.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/pe-CUZaIcdt.js", "/assets/tooltip-kD4kSf1i.js", "/assets/progress-BFm2U-l5.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-BEEJhGiC.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/tooltip-kD4kSf1i.js", "/assets/index-CXyf3Reb.js", "/assets/index-BwhlO_gF.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-DZzPuXR8.js", "/assets/progress-bar-D3kudPcr.js", "/assets/accordion-OfO-5m5D.js", "/assets/mdx-DwC5Oacq.js", "/assets/diff-BXHLJqTK.js", "/assets/nav-chevrons-g-C0ilNz.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-DE9gclYS.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-CxCgA-_O.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-kD4kSf1i.js", "/assets/pe-CUZaIcdt.js", "/assets/index-YNIH4TH8.js", "/assets/loading-sXkYDMsx.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/button-EE0aPg10.js", "/assets/epic-video-DZzPuXR8.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/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.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-1d60a768.js", "version": "1d60a768" };
13663
13745
  const mode = "production";
13664
13746
  const assetsBuildDirectory = "build/client";
13665
13747
  const basename = "/";