@epic-web/workshop-app 4.28.0 → 4.28.2

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 (90) 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-DE_0qQH_.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber-DeMmiDU5.js.map → _exerciseNumber-DE_0qQH_.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-CXSyM9gG.js} +2 -2
  8. package/build/client/assets/{_exerciseNumber_.finished-DM5HZX6r.js.map → _exerciseNumber_.finished-CXSyM9gG.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-CX6Ujslq.js} +2 -2
  14. package/build/client/assets/{_layout-5idP3Bqx.js.map → _layout-CX6Ujslq.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-88P7VaQm.js +2 -0
  20. package/build/client/assets/{app-C-oFaj2l.js.map → app-88P7VaQm.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-aBqZBC2m.js} +2 -2
  24. package/build/client/assets/{diff-CU8At1c4.js.map → diff-aBqZBC2m.js.map} +1 -1
  25. package/build/client/assets/{diff-hoOood-9.js → diff-uBbcWjMl.js} +2 -2
  26. package/build/client/assets/{diff-hoOood-9.js.map → diff-uBbcWjMl.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-CtC1lrmt.js} +2 -2
  32. package/build/client/assets/{epic-video-BFcdejfC.js.map → epic-video-CtC1lrmt.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-B3ubB4CI.js} +2 -2
  36. package/build/client/assets/{finished-C_v7hO19.js.map → finished-B3ubB4CI.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-CsPok4Mn.js → index-RXedS5cU.js} +2 -2
  43. package/build/client/assets/{index-CsPok4Mn.js.map → index-RXedS5cU.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-BHeB-0xq.js → index-ZRjyMQjt.js} +2 -2
  47. package/build/client/assets/{index-BHeB-0xq.js.map → index-ZRjyMQjt.js.map} +1 -1
  48. package/build/client/assets/{loading-CF7oQHQf.js → loading-DizTwLux.js} +2 -2
  49. package/build/client/assets/{loading-CF7oQHQf.js.map → loading-DizTwLux.js.map} +1 -1
  50. package/build/client/assets/{login-Ca9EDpZj.js → login-CbBI7xkR.js} +2 -2
  51. package/build/client/assets/{login-Ca9EDpZj.js.map → login-CbBI7xkR.js.map} +1 -1
  52. package/build/client/assets/{manifest-ade0c8c3.js → manifest-d831df81.js} +1 -1
  53. package/build/client/assets/{mdx-DvqHp8UI.js → mdx-C-xljcvl.js} +2 -2
  54. package/build/client/assets/{mdx-DvqHp8UI.js.map → mdx-C-xljcvl.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-BIVf8oVW.js} +2 -2
  60. package/build/client/assets/onboarding-BIVf8oVW.js.map +1 -0
  61. package/build/client/assets/preview-DYe41EMN.js +2 -0
  62. package/build/client/assets/preview-DYe41EMN.js.map +1 -0
  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-Wg6CLPzr.js} +2 -2
  70. package/build/client/assets/{root-CbC_P7jJ.js.map → root-Wg6CLPzr.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/test-CSKfnJmn.js +2 -0
  74. package/build/client/assets/{test-Cy-fo6gv.js.map → test-CSKfnJmn.js.map} +1 -1
  75. package/build/client/assets/{tests-DmimqC1q.js → tests-AGbZcka3.js} +2 -2
  76. package/build/client/assets/{tests-DmimqC1q.js.map → tests-AGbZcka3.js.map} +1 -1
  77. package/build/client/assets/{tooltip-DTFU8ajx.js → tooltip-kD4kSf1i.js} +2 -2
  78. package/build/client/assets/{tooltip-DTFU8ajx.js.map → tooltip-kD4kSf1i.js.map} +1 -1
  79. package/build/server/index.js +249 -200
  80. package/build/server/index.js.map +1 -1
  81. package/package.json +3 -3
  82. package/build/client/assets/_layout-DkGEbcMk.js +0 -6
  83. package/build/client/assets/_layout-DkGEbcMk.js.map +0 -1
  84. package/build/client/assets/app-C-oFaj2l.js +0 -2
  85. package/build/client/assets/discord-BBRM_H3g.js +0 -2
  86. package/build/client/assets/discord-BBRM_H3g.js.map +0 -1
  87. package/build/client/assets/onboarding-Dc2TmI9y.js.map +0 -1
  88. package/build/client/assets/preview-WJ-QYhx8.js +0 -2
  89. package/build/client/assets/preview-WJ-QYhx8.js.map +0 -1
  90. package/build/client/assets/test-Cy-fo6gv.js +0 -2
@@ -2729,7 +2729,7 @@ function Confetti({ id }) {
2729
2729
  id
2730
2730
  ) });
2731
2731
  }
2732
- const iconsSvg = "/assets/icons-CnZJXICl.svg";
2732
+ const iconsSvg = "/assets/icons-BtWYk6Ws.svg";
2733
2733
  function AnimatedBars({
2734
2734
  title,
2735
2735
  size = 16,
@@ -4518,6 +4518,7 @@ function useRequireEpicProgress() {
4518
4518
  return progress;
4519
4519
  }
4520
4520
  function useNextExerciseRoute() {
4521
+ const currentPathname = useLocation().pathname;
4521
4522
  const progress = useEpicProgress();
4522
4523
  if (!progress) return null;
4523
4524
  const scoreProgress = (a) => {
@@ -4538,10 +4539,17 @@ function useNextExerciseRoute() {
4538
4539
  if (nextProgress.type === "workshop-instructions") return "/";
4539
4540
  if (nextProgress.type === "workshop-finished") return "/finished";
4540
4541
  const ex = nextProgress.exerciseNumber.toString().padStart(2, "0");
4541
- if (nextProgress.type === "instructions") return `/${ex}`;
4542
- if (nextProgress.type === "finished") return `/${ex}/finished`;
4542
+ if (nextProgress.type === "instructions") return `/exercise/${ex}`;
4543
+ if (nextProgress.type === "finished") return `/exercise/${ex}/finished`;
4543
4544
  const st = nextProgress.stepNumber.toString().padStart(2, "0");
4544
- if (nextProgress.type === "step") return `/${ex}/${st}/problem`;
4545
+ if (nextProgress.type === "step") {
4546
+ const problemRoute = `/exercise/${ex}/${st}/problem`;
4547
+ const solutionRoute = `/exercise/${ex}/${st}/solution`;
4548
+ if (currentPathname === problemRoute || currentPathname === solutionRoute) {
4549
+ return solutionRoute;
4550
+ }
4551
+ return problemRoute;
4552
+ }
4545
4553
  return null;
4546
4554
  }
4547
4555
  const percentageClassNames = {
@@ -4680,12 +4688,20 @@ function ProgressToggle({
4680
4688
  navigationLocationStateFrom
4681
4689
  ]);
4682
4690
  React.useEffect(() => {
4683
- if (!animationRef.current) return;
4691
+ let latest = true;
4684
4692
  if (!startAnimation) return;
4685
- const animationPromises = animationRef.current.getAnimations().map(({ finished }) => finished);
4686
- void Promise.allSettled(animationPromises).then(() => {
4687
- setStartAnimation(false);
4693
+ void new Promise((resolve) => setTimeout(resolve, 200)).then(async () => {
4694
+ if (!latest) return;
4695
+ if (!animationRef.current) return;
4696
+ const animationPromises = animationRef.current.getAnimations().map(({ finished }) => finished);
4697
+ return Promise.allSettled(animationPromises).then(() => {
4698
+ if (!latest) return;
4699
+ setStartAnimation(false);
4700
+ });
4688
4701
  });
4702
+ return () => {
4703
+ latest = false;
4704
+ };
4689
4705
  }, [startAnimation]);
4690
4706
  if (ENV.EPICSHOP_DEPLOYED || !progressItem) return null;
4691
4707
  return /* @__PURE__ */ jsxs(progressFetcher.Form, { method: "POST", action: "/progress", children: [
@@ -5208,125 +5224,140 @@ function MobileNavigation({
5208
5224
  initial: { opacity: 0 },
5209
5225
  animate: { opacity: 1 },
5210
5226
  children: [
5211
- /* @__PURE__ */ jsx(
5227
+ /* @__PURE__ */ jsxs(
5212
5228
  motion.ul,
5213
5229
  {
5214
5230
  variants: listVariants,
5215
5231
  initial: "hidden",
5216
5232
  animate: "visible",
5217
5233
  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,
5234
+ children: [
5235
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
5236
+ NavLink,
5224
5237
  {
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
5238
+ prefetch: "intent",
5239
+ to: "/",
5240
+ className: ({ isActive }) => clsx(
5241
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5242
+ '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',
5243
+ { "bg-foreground text-background": isActive }
5244
+ ),
5245
+ children: "Home"
5246
+ }
5247
+ ) }),
5248
+ data.exercises.map(({ exerciseNumber, title, steps }) => {
5249
+ const isActive = Number(params.exerciseNumber) === exerciseNumber;
5250
+ const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5251
+ const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5252
+ return /* @__PURE__ */ jsxs(
5253
+ NavigationExerciseListItem,
5254
+ {
5255
+ exerciseNumber,
5256
+ children: [
5257
+ /* @__PURE__ */ jsxs(
5258
+ Link,
5259
+ {
5260
+ prefetch: "intent",
5261
+ to: `/${exerciseNum}`,
5262
+ className: clsx(
5263
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5264
+ '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',
5265
+ { "bg-foreground text-background": isActive }
5272
5266
  ),
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(
5267
+ children: [
5268
+ title,
5269
+ showPlayground ? " 🛝" : null
5270
+ ]
5271
+ }
5272
+ ),
5273
+ isActive ? /* @__PURE__ */ jsxs(
5274
+ motion.ul,
5275
+ {
5276
+ variants: listVariants,
5277
+ initial: "hidden",
5278
+ animate: "visible",
5279
+ className: "ml-4 mt-4 flex flex-col",
5280
+ children: [
5281
+ /* @__PURE__ */ jsx(
5278
5282
  NavigationExerciseStepListItem,
5279
5283
  {
5280
- type: "step",
5281
- stepNumber,
5284
+ type: "instructions",
5282
5285
  exerciseNumber,
5283
5286
  children: /* @__PURE__ */ jsx(
5284
5287
  Link,
5285
5288
  {
5286
- to: `/${exerciseNum}/${step}`,
5289
+ to: `/${exerciseNum}`,
5287
5290
  prefetch: "intent",
5288
5291
  className: clsx(
5289
5292
  '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
5293
  {
5291
- "bg-foreground text-background": isActive2
5294
+ "bg-foreground text-background": !params.stepNumber
5292
5295
  }
5293
5296
  ),
5294
- children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5297
+ children: "Intro"
5295
5298
  }
5296
5299
  )
5297
5300
  },
5298
- stepNumber
5299
- );
5300
- }),
5301
- /* @__PURE__ */ jsx(
5302
- NavigationExerciseStepListItem,
5303
- {
5304
- type: "finished",
5305
- exerciseNumber,
5306
- children: /* @__PURE__ */ jsx(
5307
- NavLink,
5301
+ exerciseNumber
5302
+ ),
5303
+ steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5304
+ const isActive2 = Number(params.stepNumber) === stepNumber;
5305
+ const step = stepNumber.toString().padStart(2, "0");
5306
+ const isPlayground = name === data.playground.appName;
5307
+ return /* @__PURE__ */ jsx(
5308
+ NavigationExerciseStepListItem,
5308
5309
  {
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',
5310
+ type: "step",
5311
+ stepNumber,
5312
+ exerciseNumber,
5313
+ children: /* @__PURE__ */ jsx(
5314
+ Link,
5313
5315
  {
5314
- "bg-foreground text-background": isActive2
5316
+ to: `/${exerciseNum}/${step}`,
5317
+ prefetch: "intent",
5318
+ className: clsx(
5319
+ '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',
5320
+ {
5321
+ "bg-foreground text-background": isActive2
5322
+ }
5323
+ ),
5324
+ children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5315
5325
  }
5316
- ),
5317
- children: "📝 Elaboration"
5318
- }
5319
- )
5320
- }
5321
- )
5322
- ]
5323
- }
5324
- ) : null
5325
- ]
5326
- },
5327
- exerciseNumber
5328
- );
5329
- })
5326
+ )
5327
+ },
5328
+ stepNumber
5329
+ );
5330
+ }),
5331
+ /* @__PURE__ */ jsx(
5332
+ NavigationExerciseStepListItem,
5333
+ {
5334
+ type: "finished",
5335
+ exerciseNumber,
5336
+ children: /* @__PURE__ */ jsx(
5337
+ NavLink,
5338
+ {
5339
+ to: `/${exerciseNum}/finished`,
5340
+ prefetch: "intent",
5341
+ className: ({ isActive: isActive2 }) => clsx(
5342
+ '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',
5343
+ {
5344
+ "bg-foreground text-background": isActive2
5345
+ }
5346
+ ),
5347
+ children: "📝 Elaboration"
5348
+ }
5349
+ )
5350
+ }
5351
+ )
5352
+ ]
5353
+ }
5354
+ ) : null
5355
+ ]
5356
+ },
5357
+ exerciseNumber
5358
+ );
5359
+ })
5360
+ ]
5330
5361
  }
5331
5362
  ),
5332
5363
  /* @__PURE__ */ jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsx(
@@ -5499,125 +5530,140 @@ function Navigation({
5499
5530
  initial: { opacity: 0 },
5500
5531
  animate: { opacity: 1 },
5501
5532
  children: [
5502
- /* @__PURE__ */ jsx(
5533
+ /* @__PURE__ */ jsxs(
5503
5534
  motion.ul,
5504
5535
  {
5505
5536
  variants: listVariants,
5506
5537
  initial: "hidden",
5507
5538
  animate: "visible",
5508
5539
  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,
5540
+ children: [
5541
+ /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(
5542
+ NavLink,
5515
5543
  {
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
5544
+ prefetch: "intent",
5545
+ to: "/",
5546
+ className: ({ isActive }) => clsx(
5547
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5548
+ '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',
5549
+ { "bg-foreground text-background": isActive }
5550
+ ),
5551
+ children: "Home"
5552
+ }
5553
+ ) }),
5554
+ data.exercises.map(({ exerciseNumber, title, steps }) => {
5555
+ const isActive = Number(params.exerciseNumber) === exerciseNumber;
5556
+ const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
5557
+ const exerciseNum = exerciseNumber.toString().padStart(2, "0");
5558
+ return /* @__PURE__ */ jsxs(
5559
+ NavigationExerciseListItem,
5560
+ {
5561
+ exerciseNumber,
5562
+ children: [
5563
+ /* @__PURE__ */ jsxs(
5564
+ Link,
5565
+ {
5566
+ prefetch: "intent",
5567
+ to: `/${exerciseNum}`,
5568
+ className: clsx(
5569
+ "relative whitespace-nowrap px-2 py-0.5 pr-3 text-2xl font-bold outline-none hover:underline focus:underline",
5570
+ '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',
5571
+ { "bg-foreground text-background": isActive }
5563
5572
  ),
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(
5573
+ children: [
5574
+ title,
5575
+ showPlayground ? " 🛝" : null
5576
+ ]
5577
+ }
5578
+ ),
5579
+ isActive ? /* @__PURE__ */ jsxs(
5580
+ motion.ul,
5581
+ {
5582
+ variants: listVariants,
5583
+ initial: "hidden",
5584
+ animate: "visible",
5585
+ className: "ml-4 mt-4 flex flex-col",
5586
+ children: [
5587
+ /* @__PURE__ */ jsx(
5569
5588
  NavigationExerciseStepListItem,
5570
5589
  {
5571
- type: "step",
5572
- stepNumber,
5590
+ type: "instructions",
5573
5591
  exerciseNumber,
5574
5592
  children: /* @__PURE__ */ jsx(
5575
5593
  Link,
5576
5594
  {
5577
- to: `/${exerciseNum}/${step}`,
5595
+ to: `/${exerciseNum}`,
5578
5596
  prefetch: "intent",
5579
5597
  className: clsx(
5580
5598
  '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
5599
  {
5582
- "bg-foreground text-background": isActive2
5600
+ "bg-foreground text-background": !params.stepNumber
5583
5601
  }
5584
5602
  ),
5585
- children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5603
+ children: "Intro"
5586
5604
  }
5587
5605
  )
5588
5606
  },
5589
- stepNumber
5590
- );
5591
- }),
5592
- /* @__PURE__ */ jsx(
5593
- NavigationExerciseStepListItem,
5594
- {
5595
- type: "finished",
5596
- exerciseNumber,
5597
- children: /* @__PURE__ */ jsx(
5598
- NavLink,
5607
+ exerciseNumber
5608
+ ),
5609
+ steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
5610
+ const isActive2 = Number(params.stepNumber) === stepNumber;
5611
+ const step = stepNumber.toString().padStart(2, "0");
5612
+ const isPlayground = name === data.playground.appName;
5613
+ return /* @__PURE__ */ jsx(
5614
+ NavigationExerciseStepListItem,
5599
5615
  {
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',
5616
+ type: "step",
5617
+ stepNumber,
5618
+ exerciseNumber,
5619
+ children: /* @__PURE__ */ jsx(
5620
+ Link,
5604
5621
  {
5605
- "bg-foreground text-background": isActive2
5622
+ to: `/${exerciseNum}/${step}`,
5623
+ prefetch: "intent",
5624
+ className: clsx(
5625
+ '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',
5626
+ {
5627
+ "bg-foreground text-background": isActive2
5628
+ }
5629
+ ),
5630
+ children: isPlayground ? `${step}. ${title2} 🛝` : `${step}. ${title2}`
5606
5631
  }
5607
- ),
5608
- children: "📝 Elaboration"
5609
- }
5610
- )
5611
- }
5612
- )
5613
- ]
5614
- }
5615
- ) : null
5616
- ]
5617
- },
5618
- exerciseNumber
5619
- );
5620
- })
5632
+ )
5633
+ },
5634
+ stepNumber
5635
+ );
5636
+ }),
5637
+ /* @__PURE__ */ jsx(
5638
+ NavigationExerciseStepListItem,
5639
+ {
5640
+ type: "finished",
5641
+ exerciseNumber,
5642
+ children: /* @__PURE__ */ jsx(
5643
+ NavLink,
5644
+ {
5645
+ to: `/${exerciseNum}/finished`,
5646
+ prefetch: "intent",
5647
+ className: ({ isActive: isActive2 }) => clsx(
5648
+ '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',
5649
+ {
5650
+ "bg-foreground text-background": isActive2
5651
+ }
5652
+ ),
5653
+ children: "📝 Elaboration"
5654
+ }
5655
+ )
5656
+ }
5657
+ )
5658
+ ]
5659
+ }
5660
+ ) : null
5661
+ ]
5662
+ },
5663
+ exerciseNumber
5664
+ );
5665
+ })
5666
+ ]
5621
5667
  }
5622
5668
  ),
5623
5669
  /* @__PURE__ */ jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsx(
@@ -10099,12 +10145,13 @@ function InBrowserBrowserForRealzImpl({ baseUrl, id, name, initialRoute }, ref)
10099
10145
  } else if (lastDirectionRef.current === "forward") {
10100
10146
  return { ...prevContext, index: newIndex(1) };
10101
10147
  } else if (lastDirectionRef.current === "new") {
10102
- const currentPathname = prevContext.history[prevContext.index];
10103
- const newPathname = new URL(data.url).pathname;
10104
- if (currentPathname === newPathname) return prevContext;
10148
+ const currentFullPath = prevContext.history[prevContext.index];
10149
+ const newUrl = new URL(data.url);
10150
+ const newFullPath = newUrl.pathname + newUrl.search;
10151
+ if (currentFullPath === newFullPath) return prevContext;
10105
10152
  const newHistory = [
10106
10153
  ...prevContext.history.slice(0, prevContext.index + 1),
10107
- newPathname
10154
+ newFullPath
10108
10155
  ];
10109
10156
  return {
10110
10157
  history: newHistory,
@@ -13584,11 +13631,13 @@ const headers = ({ loaderHeaders }) => {
13584
13631
  };
13585
13632
  async function action({ request }) {
13586
13633
  const data = await request.formData();
13634
+ const authInfo = await getAuthInfo();
13587
13635
  const intent = data.get("intent");
13588
13636
  invariantResponse(intent === "complete", "Invalid intent");
13589
13637
  const { onboardingVideo } = getWorkshopConfig();
13590
13638
  await markOnboardingVideoWatched(onboardingVideo);
13591
- throw redirect("/account");
13639
+ if (authInfo) throw redirect("/");
13640
+ else throw redirect("/login");
13592
13641
  }
13593
13642
  function Onboarding() {
13594
13643
  const data = useLoaderData();
@@ -13658,7 +13707,7 @@ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
13658
13707
  __proto__: null,
13659
13708
  loader
13660
13709
  }, Symbol.toStringTag, { value: "Module" }));
13661
- 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-K6Dvbx-E.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-C-oFaj2l.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-WJ-QYhx8.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-CsPok4Mn.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-WJ-QYhx8.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-DP2rzg_V.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-l0sNRNKZ.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-l0sNRNKZ.js", "imports": [], "css": [] } }, "url": "/assets/manifest-ade0c8c3.js", "version": "ade0c8c3" };
13710
+ 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-Wg6CLPzr.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-K6Dvbx-E.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-DE_0qQH_.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-C-xljcvl.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-CX6Ujslq.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.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-C-xljcvl.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-88P7VaQm.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-DizTwLux.js", "/assets/progress-bar-D3kudPcr.js", "/assets/preview-DYe41EMN.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-RXedS5cU.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/accordion-OfO-5m5D.js", "/assets/mdx-C-xljcvl.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-DW0yVaNn.js", "/assets/button-EE0aPg10.js", "/assets/diff-uBbcWjMl.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/discord-BRTW4Rnh.js", "/assets/index-B-hHvmeV.js", "/assets/tests-AGbZcka3.js", "/assets/preview-DYe41EMN.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-CSKfnJmn.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-DizTwLux.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-CtC1lrmt.js", "/assets/accordion-OfO-5m5D.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-DW0yVaNn.js", "/assets/tests-AGbZcka3.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-CXSyM9gG.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-g-C0ilNz.js", "/assets/mdx-C-xljcvl.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-B3ubB4CI.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-g-C0ilNz.js", "/assets/mdx-C-xljcvl.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-ZRjyMQjt.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-COkPRBOZ.js", "/assets/mdx-C-xljcvl.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-CbBI7xkR.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-DizTwLux.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-DP2rzg_V.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-l0sNRNKZ.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-aBqZBC2m.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-CtC1lrmt.js", "/assets/progress-bar-D3kudPcr.js", "/assets/accordion-OfO-5m5D.js", "/assets/mdx-C-xljcvl.js", "/assets/diff-uBbcWjMl.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-BIVf8oVW.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-DizTwLux.js", "/assets/user-DvujSs-t.js", "/assets/workshop-config-CL4F08kr.js", "/assets/button-EE0aPg10.js", "/assets/epic-video-CtC1lrmt.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-l0sNRNKZ.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-DP2rzg_V.js", "imports": [], "css": [] } }, "url": "/assets/manifest-d831df81.js", "version": "d831df81" };
13662
13711
  const mode = "production";
13663
13712
  const assetsBuildDirectory = "build/client";
13664
13713
  const basename = "/";