@epic-web/workshop-app 4.22.4 → 4.23.1

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 (121) hide show
  1. package/build/client/assets/_-BtebIQXw.js +2 -0
  2. package/build/client/assets/{_-DbrWZazo.js.map → _-BtebIQXw.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-DPHRlskl.js +2 -0
  4. package/build/client/assets/{_exerciseNumber-CpcJsfoV.js.map → _exerciseNumber-DPHRlskl.js.map} +1 -1
  5. package/build/client/assets/_exerciseNumber_._stepNumber-D1CLZqv3.js +2 -0
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-B5pmJ29o.js.map → _exerciseNumber_._stepNumber-D1CLZqv3.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-BtU0LxSx.js +2 -0
  8. package/build/client/assets/{_exerciseNumber_.finished-Ddb3J5ls.js.map → _exerciseNumber_.finished-BtU0LxSx.js.map} +1 -1
  9. package/build/client/assets/_layout-D2SdN9lJ.js +2 -0
  10. package/build/client/assets/{_layout-CGLKLU3y.js.map → _layout-D2SdN9lJ.js.map} +1 -1
  11. package/build/client/assets/_layout-D9AYVDws.js +2 -0
  12. package/build/client/assets/_layout-D9AYVDws.js.map +1 -0
  13. package/build/client/assets/_layout-DN2lWivk.js +6 -0
  14. package/build/client/assets/_layout-DN2lWivk.js.map +1 -0
  15. package/build/client/assets/accordion-BTylpyuo.js +2 -0
  16. package/build/client/assets/{accordion-BroSqIct.js.map → accordion-BTylpyuo.js.map} +1 -1
  17. package/build/client/assets/account-Boc55rcF.js +2 -0
  18. package/build/client/assets/{account-7o6O4ruO.js.map → account-Boc55rcF.js.map} +1 -1
  19. package/build/client/assets/app-D21SF96g.js +2 -0
  20. package/build/client/assets/{app-BhrXo-z3.js.map → app-D21SF96g.js.map} +1 -1
  21. package/build/client/assets/{button-BklqyTPS.js → button-D3GGLffs.js} +2 -2
  22. package/build/client/assets/{button-BklqyTPS.js.map → button-D3GGLffs.js.map} +1 -1
  23. package/build/client/assets/diff-Dlhnb9s0.js +2 -0
  24. package/build/client/assets/{diff-Cr4LLBag.js.map → diff-Dlhnb9s0.js.map} +1 -1
  25. package/build/client/assets/diff-_Yp5qaGd.js +2 -0
  26. package/build/client/assets/{diff-BNr0PhFR.js.map → diff-_Yp5qaGd.js.map} +1 -1
  27. package/build/client/assets/discord-BZFQqiA1.js +2 -0
  28. package/build/client/assets/discord-BZFQqiA1.js.map +1 -0
  29. package/build/client/assets/{discord-Dq4e30wV.js → discord-ClGJ4reK.js} +2 -2
  30. package/build/client/assets/{discord-Dq4e30wV.js.map → discord-ClGJ4reK.js.map} +1 -1
  31. package/build/client/assets/{epic-video-CxZy3iqK.js → epic-video-BDMU5eQx.js} +96 -96
  32. package/build/client/assets/{epic-video-CxZy3iqK.js.map → epic-video-BDMU5eQx.js.map} +1 -1
  33. package/build/client/assets/{error-boundary-DDTvdkB4.js → error-boundary-w-YmME9H.js} +2 -2
  34. package/build/client/assets/{error-boundary-DDTvdkB4.js.map → error-boundary-w-YmME9H.js.map} +1 -1
  35. package/build/client/assets/finished-DpVgSUHh.js +2 -0
  36. package/build/client/assets/{finished-CU8QBU41.js.map → finished-DpVgSUHh.js.map} +1 -1
  37. package/build/client/assets/icons-CnZJXICl.svg +544 -0
  38. package/build/client/assets/index-4mfbmNml.js +2 -0
  39. package/build/client/assets/{index-BotyhhDm.js.map → index-4mfbmNml.js.map} +1 -1
  40. package/build/client/assets/index-BMMmOqxO.js +2 -0
  41. package/build/client/assets/{index-c5oITeyN.js.map → index-BMMmOqxO.js.map} +1 -1
  42. package/build/client/assets/{index-BXWoOGxB.js → index-Cr2THg3v.js} +2 -2
  43. package/build/client/assets/{index-BXWoOGxB.js.map → index-Cr2THg3v.js.map} +1 -1
  44. package/build/client/assets/{index-hogig2HK.js → index-CrCyg109.js} +2 -2
  45. package/build/client/assets/{index-hogig2HK.js.map → index-CrCyg109.js.map} +1 -1
  46. package/build/client/assets/index-lG6dAghh.js +36 -0
  47. package/build/client/assets/index-lG6dAghh.js.map +1 -0
  48. package/build/client/assets/loading-CYX0lUnA.js +2 -0
  49. package/build/client/assets/{loading-C5uX0jJw.js.map → loading-CYX0lUnA.js.map} +1 -1
  50. package/build/client/assets/login-BfJnysK5.js +2 -0
  51. package/build/client/assets/login-BfJnysK5.js.map +1 -0
  52. package/build/client/assets/manifest-d74ec995.js +1 -0
  53. package/build/client/assets/mdx-DGrucPXJ.js +2 -0
  54. package/build/client/assets/{mdx-D7ttfz2V.js.map → mdx-DGrucPXJ.js.map} +1 -1
  55. package/build/client/assets/misc-BvHlNnqL.js +2 -0
  56. package/build/client/assets/misc-BvHlNnqL.js.map +1 -0
  57. package/build/client/assets/{nav-chevrons-B82nbdyj.js → nav-chevrons-DNlM2M58.js} +2 -2
  58. package/build/client/assets/{nav-chevrons-B82nbdyj.js.map → nav-chevrons-DNlM2M58.js.map} +1 -1
  59. package/build/client/assets/onboarding-C9YKrBRk.js +2 -0
  60. package/build/client/assets/{onboarding-Co4cldZ0.js.map → onboarding-C9YKrBRk.js.map} +1 -1
  61. package/build/client/assets/preview-cQAZ1sWw.js +2 -0
  62. package/build/client/assets/{preview-CdiZ0d0L.js.map → preview-cQAZ1sWw.js.map} +1 -1
  63. package/build/client/assets/product-BUD74Itn.js +2 -0
  64. package/build/client/assets/product-BUD74Itn.js.map +1 -0
  65. package/build/client/assets/{progress-Biq-ngNF.js → progress-Dn5gs-vs.js} +2 -2
  66. package/build/client/assets/{progress-Biq-ngNF.js.map → progress-Dn5gs-vs.js.map} +1 -1
  67. package/build/client/assets/{progress-bar-CSvo1ZXP.js → progress-bar-C7Wl3UWv.js} +2 -2
  68. package/build/client/assets/{progress-bar-CSvo1ZXP.js.map → progress-bar-C7Wl3UWv.js.map} +1 -1
  69. package/build/client/assets/{root-D_FY953d.js → root-BO8-KppB.js} +6 -6
  70. package/build/client/assets/{root-D_FY953d.js.map → root-BO8-KppB.js.map} +1 -1
  71. package/build/client/assets/set-playground-CCm119Nm.js +2 -0
  72. package/build/client/assets/{set-playground-BXHckvUG.js.map → set-playground-CCm119Nm.js.map} +1 -1
  73. package/build/client/assets/test-CPv5Bgs_.js +2 -0
  74. package/build/client/assets/{test-BRkbo9G9.js.map → test-CPv5Bgs_.js.map} +1 -1
  75. package/build/client/assets/{tests-DQuoxpDA.js → tests-DCK6NqSg.js} +2 -2
  76. package/build/client/assets/{tests-DQuoxpDA.js.map → tests-DCK6NqSg.js.map} +1 -1
  77. package/build/client/assets/{tooltip-BiHTe_7F.js → tooltip-fa2eC7LQ.js} +2 -2
  78. package/build/client/assets/{tooltip-BiHTe_7F.js.map → tooltip-fa2eC7LQ.js.map} +1 -1
  79. package/build/client/assets/workshop-config-CL4F08kr.js +2 -0
  80. package/build/client/assets/workshop-config-CL4F08kr.js.map +1 -0
  81. package/build/client/logo.svg +48 -0
  82. package/build/server/index.js +180 -99
  83. package/build/server/index.js.map +1 -1
  84. package/package.json +3 -3
  85. package/build/client/assets/_-DbrWZazo.js +0 -2
  86. package/build/client/assets/_exerciseNumber-CpcJsfoV.js +0 -2
  87. package/build/client/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js +0 -2
  88. package/build/client/assets/_exerciseNumber_.finished-Ddb3J5ls.js +0 -2
  89. package/build/client/assets/_layout-BLsKV5zF.js +0 -6
  90. package/build/client/assets/_layout-BLsKV5zF.js.map +0 -1
  91. package/build/client/assets/_layout-CGLKLU3y.js +0 -2
  92. package/build/client/assets/_layout-DVR5FOsb.js +0 -2
  93. package/build/client/assets/_layout-DVR5FOsb.js.map +0 -1
  94. package/build/client/assets/accordion-BroSqIct.js +0 -2
  95. package/build/client/assets/account-7o6O4ruO.js +0 -2
  96. package/build/client/assets/app-BhrXo-z3.js +0 -2
  97. package/build/client/assets/client-hints-DNUUFGmB.js +0 -36
  98. package/build/client/assets/client-hints-DNUUFGmB.js.map +0 -1
  99. package/build/client/assets/clsx-B-dksMZM.js +0 -2
  100. package/build/client/assets/clsx-B-dksMZM.js.map +0 -1
  101. package/build/client/assets/diff-BNr0PhFR.js +0 -2
  102. package/build/client/assets/diff-Cr4LLBag.js +0 -2
  103. package/build/client/assets/discord-CHP4_JLJ.js +0 -2
  104. package/build/client/assets/discord-CHP4_JLJ.js.map +0 -1
  105. package/build/client/assets/finished-CU8QBU41.js +0 -2
  106. package/build/client/assets/index-6GyYWV9G.js +0 -2
  107. package/build/client/assets/index-6GyYWV9G.js.map +0 -1
  108. package/build/client/assets/index-BotyhhDm.js +0 -2
  109. package/build/client/assets/index-c5oITeyN.js +0 -2
  110. package/build/client/assets/loading-C5uX0jJw.js +0 -2
  111. package/build/client/assets/login-4cvVFzF8.js +0 -2
  112. package/build/client/assets/login-4cvVFzF8.js.map +0 -1
  113. package/build/client/assets/manifest-da85ee1f.js +0 -1
  114. package/build/client/assets/mdx-D7ttfz2V.js +0 -2
  115. package/build/client/assets/misc-ENVX3CWf.js +0 -2
  116. package/build/client/assets/misc-ENVX3CWf.js.map +0 -1
  117. package/build/client/assets/onboarding-Co4cldZ0.js +0 -2
  118. package/build/client/assets/preview-CdiZ0d0L.js +0 -2
  119. package/build/client/assets/set-playground-BXHckvUG.js +0 -2
  120. package/build/client/assets/test-BRkbo9G9.js +0 -2
  121. package/build/client/icons.svg +0 -529
@@ -1185,8 +1185,15 @@ const WorkshopConfigSchema = z$1.object({
1185
1185
  title: z$1.string(),
1186
1186
  subtitle: z$1.string().optional(),
1187
1187
  instructor: InstructorSchema.optional(),
1188
- epicWorkshopHost: z$1.string().default("www.epicweb.dev"),
1188
+ epicWorkshopHost: z$1.string().optional(),
1189
1189
  epicWorkshopSlug: z$1.string().optional(),
1190
+ product: z$1.object({
1191
+ host: z$1.string().default("www.epicweb.dev"),
1192
+ displayName: z$1.string().default("EpicWeb.dev"),
1193
+ displayNameShort: z$1.string().default("Epic Web"),
1194
+ logo: z$1.string().default("/logo.svg"),
1195
+ slug: z$1.string().optional()
1196
+ }).default({}),
1190
1197
  onboardingVideo: z$1.string().default(
1191
1198
  "https://www.epicweb.dev/tips/get-started-with-the-epic-workshop-app"
1192
1199
  ),
@@ -1209,6 +1216,17 @@ const WorkshopConfigSchema = z$1.object({
1209
1216
  }).optional(),
1210
1217
  initialRoute: z$1.string().optional().default("/")
1211
1218
  // Add this line
1219
+ }).transform((data) => {
1220
+ return {
1221
+ ...data,
1222
+ product: {
1223
+ ...data.product,
1224
+ displayNameShort: data.product.displayNameShort ?? data.product.displayName,
1225
+ // for backwards compatibility
1226
+ host: data.product.host ?? data.epicWorkshopHost,
1227
+ slug: data.product.slug ?? data.epicWorkshopSlug
1228
+ }
1229
+ };
1212
1230
  });
1213
1231
  let cachedConfig = null;
1214
1232
  function bustWorkshopConfigCache() {
@@ -2710,6 +2728,7 @@ function Confetti({ id }) {
2710
2728
  id
2711
2729
  ) });
2712
2730
  }
2731
+ const iconsSvg = "/assets/icons-CnZJXICl.svg";
2713
2732
  function AnimatedBars({
2714
2733
  title,
2715
2734
  size = 16,
@@ -2737,7 +2756,7 @@ function AnimatedBars({
2737
2756
  }
2738
2757
  );
2739
2758
  }
2740
- const sizeClassName = {
2759
+ const sizeClassName$1 = {
2741
2760
  font: "w-[1em] h-[1em]",
2742
2761
  xs: "w-3 h-3",
2743
2762
  sm: "w-4 h-4",
@@ -2746,7 +2765,7 @@ const sizeClassName = {
2746
2765
  xl: "w-7 h-7",
2747
2766
  "2xl": "w-8 h-8"
2748
2767
  };
2749
- const childrenSizeClassName = {
2768
+ const childrenSizeClassName$1 = {
2750
2769
  font: "gap-1.5",
2751
2770
  xs: "gap-1.5",
2752
2771
  sm: "gap-1.5",
@@ -2767,7 +2786,7 @@ function Icon({
2767
2786
  return /* @__PURE__ */ jsxs(
2768
2787
  "span",
2769
2788
  {
2770
- className: `inline-flex items-center ${childrenSizeClassName[size]}`,
2789
+ className: `inline-flex items-center ${childrenSizeClassName$1[size]}`,
2771
2790
  children: [
2772
2791
  /* @__PURE__ */ jsx(Icon, { name, size, className, ...props }),
2773
2792
  children
@@ -2779,10 +2798,10 @@ function Icon({
2779
2798
  "svg",
2780
2799
  {
2781
2800
  ...props,
2782
- className: cn(sizeClassName[size], "inline self-center", className),
2801
+ className: cn(sizeClassName$1[size], "inline self-center", className),
2783
2802
  children: [
2784
2803
  title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
2785
- /* @__PURE__ */ jsx("use", { href: `/icons.svg#${name}`, fill: "transparent" })
2804
+ /* @__PURE__ */ jsx("use", { href: `${iconsSvg}#${name}`, fill: "transparent" })
2786
2805
  ]
2787
2806
  }
2788
2807
  );
@@ -3540,7 +3559,9 @@ async function getEpicProgress({
3540
3559
  } = {}) {
3541
3560
  if (ENV.EPICSHOP_DEPLOYED) return [];
3542
3561
  const authInfo = await getAuthInfo();
3543
- const { epicWorkshopHost } = getWorkshopConfig();
3562
+ const {
3563
+ product: { host }
3564
+ } = getWorkshopConfig();
3544
3565
  if (!authInfo) return [];
3545
3566
  const tokenPart = md5(authInfo.tokenSet.access_token);
3546
3567
  const EpicProgressSchema = z$1.array(
@@ -3550,7 +3571,7 @@ async function getEpicProgress({
3550
3571
  })
3551
3572
  );
3552
3573
  return cachified({
3553
- key: `epic-progress:${epicWorkshopHost}:${tokenPart}`,
3574
+ key: `epic-progress:${host}:${tokenPart}`,
3554
3575
  cache: fsCache,
3555
3576
  request,
3556
3577
  timings,
@@ -3559,7 +3580,7 @@ async function getEpicProgress({
3559
3580
  swr: 1e3 * 60 * 60 * 24 * 30,
3560
3581
  checkValue: EpicProgressSchema,
3561
3582
  async getFreshValue(context) {
3562
- const response = await fetch(`https://${epicWorkshopHost}/api/progress`, {
3583
+ const response = await fetch(`https://${host}/api/progress`, {
3563
3584
  headers: {
3564
3585
  authorization: `Bearer ${authInfo.tokenSet.access_token}`
3565
3586
  }
@@ -3682,8 +3703,10 @@ async function updateProgress({ lessonSlug, complete }, {
3682
3703
  if (!authInfo) {
3683
3704
  return { status: "error", error: "not authenticated" };
3684
3705
  }
3685
- const { epicWorkshopHost } = getWorkshopConfig();
3686
- const response = await fetch(`https://${epicWorkshopHost}/api/progress`, {
3706
+ const {
3707
+ product: { host }
3708
+ } = getWorkshopConfig();
3709
+ const response = await fetch(`https://${host}/api/progress`, {
3687
3710
  method: "POST",
3688
3711
  headers: {
3689
3712
  authorization: `Bearer ${authInfo.tokenSet.access_token}`,
@@ -3720,9 +3743,11 @@ async function getWorkshopData(epicWorkshopSlug, {
3720
3743
  if (ENV.EPICSHOP_DEPLOYED) return { sections: [] };
3721
3744
  const authInfo = await getAuthInfo();
3722
3745
  if (!authInfo) return { sections: [] };
3723
- const { epicWorkshopHost } = getWorkshopConfig();
3746
+ const {
3747
+ product: { host }
3748
+ } = getWorkshopConfig();
3724
3749
  return cachified({
3725
- key: `epic-workshop-data:${epicWorkshopHost}:${epicWorkshopSlug}`,
3750
+ key: `epic-workshop-data:${host}:${epicWorkshopSlug}`,
3726
3751
  cache: fsCache,
3727
3752
  request,
3728
3753
  forceFresh,
@@ -3730,9 +3755,7 @@ async function getWorkshopData(epicWorkshopSlug, {
3730
3755
  checkValue: ModuleSchema,
3731
3756
  async getFreshValue() {
3732
3757
  const response = await fetch(
3733
- `https://${epicWorkshopHost}/api/workshops/${encodeURIComponent(
3734
- epicWorkshopSlug
3735
- )}`
3758
+ `https://${host}/api/workshops/${encodeURIComponent(epicWorkshopSlug)}`
3736
3759
  ).catch((e) => new Response(getErrorMessage(e), { status: 500 }));
3737
3760
  if (response.status < 200 || response.status >= 300) {
3738
3761
  console.error(
@@ -3950,11 +3973,10 @@ const links = () => {
3950
3973
  { rel: "stylesheet", href: tailwindStylesheetUrl },
3951
3974
  { rel: "stylesheet", href: appStylesheetUrl },
3952
3975
  ...cssBundleHref ? [{ rel: "stylesheet", href: cssBundleHref }] : [],
3953
- { rel: "mask-icon", href: "/favicons/favicon.svg" },
3954
3976
  {
3955
- rel: "alternate icon",
3956
- type: "image/png",
3957
- href: "/favicon.png"
3977
+ rel: "icon",
3978
+ href: "/favicon.ico",
3979
+ sizes: "48x48"
3958
3980
  },
3959
3981
  { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }
3960
3982
  ];
@@ -3970,12 +3992,13 @@ const meta$5 = ({ data }) => {
3970
3992
  };
3971
3993
  async function loader$y({ request }) {
3972
3994
  const timings = makeTimings("rootLoader");
3995
+ const workshopConfig = getWorkshopConfig();
3973
3996
  const {
3974
3997
  title: workshopTitle,
3975
3998
  subtitle: workshopSubtitle,
3976
3999
  instructor,
3977
4000
  onboardingVideo
3978
- } = getWorkshopConfig();
4001
+ } = workshopConfig;
3979
4002
  const onboarding = await readOnboardingData();
3980
4003
  if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.tourVideosWatched.includes(onboardingVideo))) {
3981
4004
  if (new URL(request.url).pathname !== "/onboarding") {
@@ -3997,6 +4020,7 @@ async function loader$y({ request }) {
3997
4020
  const presentUsers = await getPresentUsers(user, { request, timings });
3998
4021
  return json$1(
3999
4022
  {
4023
+ workshopConfig,
4000
4024
  workshopTitle,
4001
4025
  workshopSubtitle,
4002
4026
  instructor,
@@ -4151,7 +4175,7 @@ function getWebsocketJS() {
4151
4175
  };
4152
4176
  ws.onclose = (event) => {
4153
4177
  if (event.code === 1006) {
4154
- console.log("Epic Web dev server web socket closed. Reconnecting...");
4178
+ console.log("EpicShop dev server web socket closed. Reconnecting...");
4155
4179
  setTimeout(
4156
4180
  () =>
4157
4181
  epicLiveReloadConnect({
@@ -4162,7 +4186,7 @@ function getWebsocketJS() {
4162
4186
  }
4163
4187
  };
4164
4188
  ws.onerror = (error) => {
4165
- console.log("Epic Web dev server web socket error:");
4189
+ console.log("EpicShop dev server web socket error:");
4166
4190
  console.error(error);
4167
4191
  };
4168
4192
  }
@@ -4235,6 +4259,78 @@ function makeMediaQueryStore(mediaQuery, serverSnapshot) {
4235
4259
  return useSyncExternalStore(subscribe, getSnapshot, () => serverSnapshot);
4236
4260
  };
4237
4261
  }
4262
+ function useWorkshopConfig() {
4263
+ const data = useRouteLoaderData("root");
4264
+ if (!(data == null ? void 0 : data.workshopConfig)) {
4265
+ throw new Error("useWorkshopConfig requires a workshopConfig.");
4266
+ }
4267
+ return data.workshopConfig;
4268
+ }
4269
+ const sizeClassName = {
4270
+ font: "w-[1em] h-[1em]",
4271
+ xs: "w-3 h-3",
4272
+ sm: "w-4 h-4",
4273
+ md: "w-5 h-5",
4274
+ lg: "w-6 h-6",
4275
+ xl: "w-7 h-7",
4276
+ "2xl": "w-8 h-8"
4277
+ };
4278
+ const childrenSizeClassName = {
4279
+ font: "gap-1.5",
4280
+ xs: "gap-1.5",
4281
+ sm: "gap-1.5",
4282
+ md: "gap-2",
4283
+ lg: "gap-2",
4284
+ xl: "gap-3",
4285
+ "2xl": "gap-4"
4286
+ };
4287
+ function Logo({
4288
+ size = "font",
4289
+ style = "themed",
4290
+ className,
4291
+ children,
4292
+ ...props
4293
+ }) {
4294
+ const {
4295
+ product: { logo, displayName }
4296
+ } = useWorkshopConfig();
4297
+ const theme = useTheme();
4298
+ const logoElement = logo.includes(".svg") ? /* @__PURE__ */ jsxs(
4299
+ "svg",
4300
+ {
4301
+ ...props,
4302
+ className: cn(sizeClassName[size], "inline self-center", className),
4303
+ children: [
4304
+ /* @__PURE__ */ jsx("title", { children: displayName }),
4305
+ /* @__PURE__ */ jsx("use", { href: `${logo}#${style === "themed" ? theme : "monochrome"}` })
4306
+ ]
4307
+ }
4308
+ ) : (
4309
+ // @ts-expect-error - svg props can't all be applied to img... meh, probably won't ever be a real issue...
4310
+ /* @__PURE__ */ jsx(
4311
+ "img",
4312
+ {
4313
+ src: logo,
4314
+ alt: displayName,
4315
+ ...props,
4316
+ className: cn(sizeClassName[size], "inline self-center", className)
4317
+ }
4318
+ )
4319
+ );
4320
+ if (children) {
4321
+ return /* @__PURE__ */ jsxs(
4322
+ "span",
4323
+ {
4324
+ className: `inline-flex items-center ${childrenSizeClassName[size]}`,
4325
+ children: [
4326
+ logoElement,
4327
+ children
4328
+ ]
4329
+ }
4330
+ );
4331
+ }
4332
+ return logoElement;
4333
+ }
4238
4334
  const Dialog = DialogPrimitive.Root;
4239
4335
  const DialogTrigger = DialogPrimitive.Trigger;
4240
4336
  const DialogPortal = DialogPrimitive.Portal;
@@ -4689,6 +4785,9 @@ function getScoreClassNames(score) {
4689
4785
  function FacePile({ isMenuOpened }) {
4690
4786
  const loggedInUser = useOptionalUser();
4691
4787
  const { users } = usePresence();
4788
+ const {
4789
+ product: { displayNameShort }
4790
+ } = useWorkshopConfig();
4692
4791
  const limit = isMenuOpened ? 17 : 0;
4693
4792
  const numberOverLimit = users.length - limit;
4694
4793
  if (!users.length) return null;
@@ -4711,7 +4810,7 @@ function FacePile({ isMenuOpened }) {
4711
4810
  )
4712
4811
  }
4713
4812
  ) : null;
4714
- const overLimitLabel = `${numberOverLimit}${isMenuOpened ? " more " : " "}Epic Web Dev${numberOverLimit === 1 ? "" : "s"} working now`;
4813
+ const overLimitLabel = `${numberOverLimit}${isMenuOpened ? " more " : " "}${displayNameShort} Dev${numberOverLimit === 1 ? "" : "s"} working now`;
4715
4814
  return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ jsxs(TooltipProvider, { children: [
4716
4815
  users.slice(0, limit).map(({ user, score }) => {
4717
4816
  var _a2, _b;
@@ -4722,7 +4821,7 @@ function FacePile({ isMenuOpened }) {
4722
4821
  "img",
4723
4822
  {
4724
4823
  tabIndex: 0,
4725
- alt: user.name || "Epic Web Dev",
4824
+ alt: user.name || displayNameShort,
4726
4825
  className: cn(
4727
4826
  "h-8 w-8 rounded-full border object-cover",
4728
4827
  scoreClassNames
@@ -4733,7 +4832,7 @@ function FacePile({ isMenuOpened }) {
4733
4832
  "div",
4734
4833
  {
4735
4834
  tabIndex: 0,
4736
- "aria-label": user.name || "Epic Web Dev",
4835
+ "aria-label": user.name || `${displayNameShort} Dev`,
4737
4836
  className: cn(
4738
4837
  "flex h-8 w-8 items-center justify-center rounded-full border",
4739
4838
  scoreClassNames
@@ -4743,9 +4842,9 @@ function FacePile({ isMenuOpened }) {
4743
4842
  ) }),
4744
4843
  /* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsxs("span", { className: "flex flex-col items-center justify-center gap-1", children: [
4745
4844
  /* @__PURE__ */ jsxs("span", { children: [
4746
- user.name || "An EPIC Web Dev",
4845
+ user.name || `${displayNameShort} Dev`,
4747
4846
  " ",
4748
- locationLabel ? ` is ${((_b = (_a2 = user.location) == null ? void 0 : _a2.origin) == null ? void 0 : _b.includes("epicweb.dev")) ? "learning" : "working"} ${score === 1 && (loggedInUser == null ? void 0 : loggedInUser.id) !== user.id ? "with you" : ""} on` : null
4847
+ locationLabel ? ` is ${((_b = (_a2 = user.location) == null ? void 0 : _a2.origin) == null ? void 0 : _b.includes("localhost")) ? "working" : "learning"} ${score === 1 && (loggedInUser == null ? void 0 : loggedInUser.id) !== user.id ? "with you" : ""} on` : null
4749
4848
  ] }),
4750
4849
  (locationLabel == null ? void 0 : locationLabel.line1) ? /* @__PURE__ */ jsx("span", { children: locationLabel.line1 }) : null,
4751
4850
  (locationLabel == null ? void 0 : locationLabel.line2) ? /* @__PURE__ */ jsx("span", { children: locationLabel.line2 }) : null
@@ -4786,7 +4885,7 @@ function App() {
4786
4885
  const isHydrated = useHydrated();
4787
4886
  const [isMenuOpened, setMenuOpened] = React.useState(false);
4788
4887
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
4789
- user ? null : /* @__PURE__ */ jsx(EpicWebBanner, {}),
4888
+ user ? null : /* @__PURE__ */ jsx(NoUserBanner, {}),
4790
4889
  isHydrated && isWide ? null : /* @__PURE__ */ jsx(
4791
4890
  MobileNavigation,
4792
4891
  {
@@ -4834,8 +4933,11 @@ function getLocationLabel(location) {
4834
4933
  ].filter(Boolean).join(" - ");
4835
4934
  return { line1: location.workshopTitle, line2: exercisePortion };
4836
4935
  }
4837
- function EpicWebBanner() {
4936
+ function NoUserBanner() {
4838
4937
  const isWide = useIsWide();
4938
+ const {
4939
+ product: { host, displayName }
4940
+ } = useWorkshopConfig();
4839
4941
  const details = /* @__PURE__ */ jsx("div", { children: ENV.EPICSHOP_DEPLOYED ? /* @__PURE__ */ jsxs("div", { children: [
4840
4942
  `This is the deployed version. `,
4841
4943
  /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -4857,13 +4959,13 @@ function EpicWebBanner() {
4857
4959
  " ",
4858
4960
  "or",
4859
4961
  " ",
4860
- /* @__PURE__ */ jsx("a", { href: "https://www.epicweb.dev/login", className: "underline", children: "join for free" }),
4962
+ /* @__PURE__ */ jsx("a", { href: `https://${host}/login`, className: "underline", children: "join for free" }),
4861
4963
  " ",
4862
4964
  "for the full experience."
4863
4965
  ] }) });
4864
4966
  return /* @__PURE__ */ jsx("div", { className: "z-10 flex h-16 items-center justify-between border-b bg-gradient-to-tr from-blue-500 to-indigo-500 pl-4 text-white", children: isWide ? /* @__PURE__ */ jsxs(Fragment, { children: [
4865
4967
  /* @__PURE__ */ jsxs("div", { className: "hidden flex-1 flex-wrap items-center gap-4 sm:flex", children: [
4866
- /* @__PURE__ */ jsx(Icon, { name: "EpicWeb", size: "lg" }),
4968
+ /* @__PURE__ */ jsx(Logo, { size: "lg", style: "monochrome" }),
4867
4969
  /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-wrap items-center", children: [
4868
4970
  /* @__PURE__ */ jsxs("p", { className: "mr-2", children: [
4869
4971
  "Welcome to the",
@@ -4871,10 +4973,10 @@ function EpicWebBanner() {
4871
4973
  /* @__PURE__ */ jsx(
4872
4974
  Link,
4873
4975
  {
4874
- to: "https://www.epicweb.dev",
4976
+ to: `https://${host}`,
4875
4977
  className: "underline",
4876
4978
  target: "_blank",
4877
- children: "EpicWeb.dev"
4979
+ children: displayName
4878
4980
  }
4879
4981
  ),
4880
4982
  " ",
@@ -4887,11 +4989,14 @@ function EpicWebBanner() {
4887
4989
  /* @__PURE__ */ jsxs(
4888
4990
  Link,
4889
4991
  {
4890
- to: "https://www.epicweb.dev",
4992
+ to: `https://${host}`,
4891
4993
  target: "_blank",
4892
4994
  className: "flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold",
4893
4995
  children: [
4894
- /* @__PURE__ */ jsx("span", { className: "drop-shadow-sm", children: "Join Epic Web" }),
4996
+ /* @__PURE__ */ jsxs("span", { className: "drop-shadow-sm", children: [
4997
+ "Join ",
4998
+ displayName
4999
+ ] }),
4895
5000
  /* @__PURE__ */ jsx("span", { children: "↗︎" })
4896
5001
  ]
4897
5002
  }
@@ -4899,7 +5004,7 @@ function EpicWebBanner() {
4899
5004
  /* @__PURE__ */ jsxs(
4900
5005
  Link,
4901
5006
  {
4902
- to: ENV.EPICSHOP_DEPLOYED ? "https://www.epicweb.dev/login" : "/login",
5007
+ to: ENV.EPICSHOP_DEPLOYED ? `https://${host}/login` : "/login",
4903
5008
  className: "flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30",
4904
5009
  children: [
4905
5010
  /* @__PURE__ */ jsx(Icon, { name: "User", size: "lg" }),
@@ -4910,18 +5015,18 @@ function EpicWebBanner() {
4910
5015
  ] })
4911
5016
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
4912
5017
  /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-wrap items-center gap-4 sm:hidden", children: [
4913
- /* @__PURE__ */ jsx("a", { href: "https://www.epicweb.dev", children: /* @__PURE__ */ jsx(Icon, { name: "EpicWeb", size: "lg" }) }),
5018
+ /* @__PURE__ */ jsx("a", { href: `https://${host}`, children: /* @__PURE__ */ jsx(Logo, { size: "lg", style: "monochrome" }) }),
4914
5019
  /* @__PURE__ */ jsxs(Dialog, { children: [
4915
5020
  /* @__PURE__ */ jsx(DialogTrigger, { children: /* @__PURE__ */ jsx(Icon, { name: "Question", size: "lg", className: "animate-pulse" }) }),
4916
5021
  /* @__PURE__ */ jsxs(DialogContent, { children: [
4917
5022
  /* @__PURE__ */ jsxs(DialogHeader, { children: [
4918
- /* @__PURE__ */ jsx(Icon, { name: "EpicWeb", size: "lg" }),
4919
- /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: "EpicWeb.dev" })
5023
+ /* @__PURE__ */ jsx(Logo, { size: "lg", style: "monochrome" }),
5024
+ /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: displayName })
4920
5025
  ] }),
4921
5026
  /* @__PURE__ */ jsxs(DialogDescription, { children: [
4922
5027
  "Welcome to the",
4923
5028
  " ",
4924
- /* @__PURE__ */ jsx(Link, { to: "https://www.epicweb.dev", className: "underline", children: "EpicWeb.dev" }),
5029
+ /* @__PURE__ */ jsx(Link, { to: `https://${host}`, className: "underline", children: displayName }),
4925
5030
  " ",
4926
5031
  "Workshop app!"
4927
5032
  ] }),
@@ -4933,7 +5038,7 @@ function EpicWebBanner() {
4933
5038
  /* @__PURE__ */ jsxs(
4934
5039
  Link,
4935
5040
  {
4936
- to: "https://www.epicweb.dev",
5041
+ to: `https://${host}`,
4937
5042
  target: "_blank",
4938
5043
  className: "flex h-full items-center justify-center space-x-1.5 px-5 text-sm font-semibold",
4939
5044
  children: [
@@ -4945,7 +5050,7 @@ function EpicWebBanner() {
4945
5050
  /* @__PURE__ */ jsxs(
4946
5051
  Link,
4947
5052
  {
4948
- to: ENV.EPICSHOP_DEPLOYED ? "https://www.epicweb.dev/login" : "/login",
5053
+ to: ENV.EPICSHOP_DEPLOYED ? `https://${host}/login` : "/login",
4949
5054
  className: "flex h-full items-center justify-center space-x-1.5 bg-white/20 px-5 text-sm font-semibold shadow-md transition hover:bg-white/30",
4950
5055
  children: [
4951
5056
  /* @__PURE__ */ jsx(Icon, { name: "User", size: "lg" }),
@@ -6222,7 +6327,7 @@ async function loader$r({ request, params }) {
6222
6327
  };
6223
6328
  ws.onclose = (event) => {
6224
6329
  if (event.code === 1006) {
6225
- console.log("Epic Web dev server web socket closed. Reconnecting...");
6330
+ console.log("EpicShop dev server web socket closed. Reconnecting...");
6226
6331
  setTimeout(
6227
6332
  () =>
6228
6333
  epicLiveReloadConnect({
@@ -6233,7 +6338,7 @@ async function loader$r({ request, params }) {
6233
6338
  }
6234
6339
  };
6235
6340
  ws.onerror = (error) => {
6236
- console.log("Epic Web dev server web socket error:");
6341
+ console.log("EpicShop dev server web socket error:");
6237
6342
  console.error(error);
6238
6343
  };
6239
6344
  }
@@ -7044,6 +7149,9 @@ function DeferredEpicVideo({
7044
7149
  url,
7045
7150
  title = extractEpicTitle(url)
7046
7151
  }) {
7152
+ const {
7153
+ product: { host, displayName }
7154
+ } = useWorkshopConfig();
7047
7155
  const user = useOptionalUser();
7048
7156
  const epicVideoInfosPromise = React.useContext(EpicVideoInfoContext);
7049
7157
  const linkUI = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(VideoLink, { url, title }) });
@@ -7105,12 +7213,16 @@ function DeferredEpicVideo({
7105
7213
  /* @__PURE__ */ jsxs("div", { children: [
7106
7214
  "To continue watching uninterrupted, please",
7107
7215
  " ",
7108
- /* @__PURE__ */ jsx(
7216
+ /* @__PURE__ */ jsxs(
7109
7217
  "a",
7110
7218
  {
7111
- href: "https://www.epicweb.dev/products/full-stack-vol-1",
7219
+ href: `https://${host}/products`,
7112
7220
  className: "underline",
7113
- children: "upgrade your EpicWeb.dev license"
7221
+ children: [
7222
+ "upgrade your ",
7223
+ displayName,
7224
+ " license"
7225
+ ]
7114
7226
  }
7115
7227
  ),
7116
7228
  " ",
@@ -7123,7 +7235,7 @@ function DeferredEpicVideo({
7123
7235
  /* @__PURE__ */ jsx(
7124
7236
  Link,
7125
7237
  {
7126
- to: "https://www.epicweb.dev/products",
7238
+ to: `https://${host}/products`,
7127
7239
  className: "underline",
7128
7240
  children: "Upgrade"
7129
7241
  }
@@ -7149,7 +7261,7 @@ function DeferredEpicVideo({
7149
7261
  /* @__PURE__ */ jsx(
7150
7262
  Link,
7151
7263
  {
7152
- to: "https://www.epicweb.dev/products",
7264
+ to: `https://${host}/products`,
7153
7265
  className: "underline",
7154
7266
  children: "Upgrade"
7155
7267
  }
@@ -9200,7 +9312,7 @@ function InlineFile({
9200
9312
  const info = /* @__PURE__ */ jsxs("div", { className: "launch-editor-button-wrapper flex underline underline-offset-4", children: [
9201
9313
  children,
9202
9314
  " ",
9203
- /* @__PURE__ */ jsx("svg", { height: 24, width: 24, children: /* @__PURE__ */ jsx("use", { href: `/icons.svg#Keyboard` }) })
9315
+ /* @__PURE__ */ jsx("svg", { height: 24, width: 24, children: /* @__PURE__ */ jsx("use", { href: `${iconsSvg}#Keyboard` }) })
9204
9316
  ] });
9205
9317
  return ENV.EPICSHOP_DEPLOYED && app ? /* @__PURE__ */ jsx("div", { className: "inline-block grow", children: /* @__PURE__ */ jsx(LaunchEditor, { appFile: file, appName: app.name, ...props, children: info }) }) : app ? /* @__PURE__ */ jsx("div", { className: "inline-block grow", children: /* @__PURE__ */ jsx(LaunchEditor, { appFile: file, appName: app.name, ...props, children: info }) }) : type === "playground" ? (
9206
9318
  // playground does not exist yet
@@ -12349,8 +12461,10 @@ const EVENTS = {
12349
12461
  const authEmitter = remember("authEmitter", () => new EventEmitter());
12350
12462
  authEmitter.removeAllListeners();
12351
12463
  async function registerDevice() {
12352
- const { epicWorkshopHost } = getWorkshopConfig();
12353
- const { ISSUER = `https://${epicWorkshopHost}/oauth` } = process.env;
12464
+ const {
12465
+ product: { host }
12466
+ } = getWorkshopConfig();
12467
+ const { ISSUER = `https://${host}/oauth` } = process.env;
12354
12468
  const GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
12355
12469
  try {
12356
12470
  const issuer = await Issuer.discover(ISSUER);
@@ -12457,6 +12571,9 @@ async function action$2() {
12457
12571
  }
12458
12572
  function Login() {
12459
12573
  var _a2;
12574
+ const {
12575
+ product: { displayName }
12576
+ } = useWorkshopConfig();
12460
12577
  const loginFetcher = useFetcher();
12461
12578
  const [clickedVerificationLink, setClickedVerificationLink] = useState(false);
12462
12579
  const [authError, setAuthError] = useState(null);
@@ -12490,8 +12607,15 @@ function Login() {
12490
12607
  }, [lastMessage, navigate, revalidator]);
12491
12608
  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: [
12492
12609
  /* @__PURE__ */ jsx(Logo, { className: "h-16 w-16" }),
12493
- /* @__PURE__ */ jsx("h1", { className: "pt-5 text-2xl font-semibold md:text-3xl", children: "Authenticate with EpicWeb.dev" }),
12494
- /* @__PURE__ */ jsx("h2", { className: "max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300", children: "If you have purchased Epic Web, you'll be able to watch videos, track progress, and more!" }),
12610
+ /* @__PURE__ */ jsxs("h1", { className: "pt-5 text-2xl font-semibold md:text-3xl", children: [
12611
+ "Authenticate with ",
12612
+ displayName
12613
+ ] }),
12614
+ /* @__PURE__ */ jsxs("h2", { className: "max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300", children: [
12615
+ "If you have purchased ",
12616
+ displayName,
12617
+ ", you'll be able to watch videos, track progress, and more!"
12618
+ ] }),
12495
12619
  /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center pt-5", children: [
12496
12620
  userCodeInfo ? /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center gap-3", children: [
12497
12621
  /* @__PURE__ */ jsxs("div", { className: "my-2 flex w-full flex-col items-center gap-2", children: [
@@ -12518,49 +12642,6 @@ function Login() {
12518
12642
  ] })
12519
12643
  ] }) });
12520
12644
  }
12521
- function Logo({ className = "" }) {
12522
- return /* @__PURE__ */ jsxs(
12523
- "svg",
12524
- {
12525
- className,
12526
- viewBox: "0 0 24 24",
12527
- fill: "none",
12528
- xmlns: "http://www.w3.org/2000/svg",
12529
- "aria-hidden": "true",
12530
- children: [
12531
- /* @__PURE__ */ jsx(
12532
- "path",
12533
- {
12534
- d: "M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z",
12535
- fill: "url(#epicGradient)"
12536
- }
12537
- ),
12538
- /* @__PURE__ */ jsx(
12539
- "path",
12540
- {
12541
- d: "M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z",
12542
- fill: "currentColor"
12543
- }
12544
- ),
12545
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
12546
- "linearGradient",
12547
- {
12548
- id: "epicGradient",
12549
- x1: "16.9703",
12550
- y1: "7.03022",
12551
- x2: "7.05798",
12552
- y2: "16.948",
12553
- gradientUnits: "userSpaceOnUse",
12554
- children: [
12555
- /* @__PURE__ */ jsx("stop", { stopColor: "#4F75FF" }),
12556
- /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#30AFFF" })
12557
- ]
12558
- }
12559
- ) })
12560
- ]
12561
- }
12562
- );
12563
- }
12564
12645
  const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12565
12646
  __proto__: null,
12566
12647
  action: action$2,
@@ -13504,7 +13585,7 @@ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
13504
13585
  __proto__: null,
13505
13586
  loader
13506
13587
  }, Symbol.toStringTag, { value: "Module" }));
13507
- 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-D_FY953d.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-B-hHvmeV.js", "/assets/index-6GyYWV9G.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/_-DbrWZazo.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/error-boundary-DDTvdkB4.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-BLsKV5zF.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BXWoOGxB.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-Biq-ngNF.js", "/assets/index-6GyYWV9G.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-7o6O4ruO.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/button-BklqyTPS.js", "/assets/tooltip-BiHTe_7F.js", "/assets/user-D6tTg1yS.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-CHP4_JLJ.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/user-D6tTg1yS.js", "/assets/discord-Dq4e30wV.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-CpcJsfoV.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-D7ttfz2V.js", "/assets/progress-Biq-ngNF.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-B5pmJ29o.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.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-DVR5FOsb.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-D7ttfz2V.js", "/assets/progress-Biq-ngNF.js", "/assets/set-playground-BXHckvUG.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-BhrXo-z3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/pe-CUZaIcdt.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-6GyYWV9G.js", "/assets/preview-CdiZ0d0L.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-c5oITeyN.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-D7ttfz2V.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-BXHckvUG.js", "/assets/button-BklqyTPS.js", "/assets/diff-Cr4LLBag.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/discord-Dq4e30wV.js", "/assets/index-B-hHvmeV.js", "/assets/tests-DQuoxpDA.js", "/assets/preview-CdiZ0d0L.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-BRkbo9G9.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/index-6GyYWV9G.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-BXHckvUG.js", "/assets/tests-DQuoxpDA.js"], "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-Ddb3J5ls.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-D7ttfz2V.js", "/assets/progress-Biq-ngNF.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-CU8QBU41.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-D7ttfz2V.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-Biq-ngNF.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-BotyhhDm.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/mdx-D7ttfz2V.js", "/assets/progress-Biq-ngNF.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-4cvVFzF8.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.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-CGLKLU3y.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/pe-CUZaIcdt.js", "/assets/tooltip-BiHTe_7F.js", "/assets/progress-Biq-ngNF.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-BNr0PhFR.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-CxZy3iqK.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-D7ttfz2V.js", "/assets/diff-Cr4LLBag.js", "/assets/nav-chevrons-B82nbdyj.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-Co4cldZ0.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/pe-CUZaIcdt.js", "/assets/index-6GyYWV9G.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/button-BklqyTPS.js", "/assets/epic-video-CxZy3iqK.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-K6Dvbx-E.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-da85ee1f.js", "version": "da85ee1f" };
13588
+ 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-BO8-KppB.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/error-boundary-w-YmME9H.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-B-hHvmeV.js", "/assets/index-lG6dAghh.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/_-BtebIQXw.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/error-boundary-w-YmME9H.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-DN2lWivk.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/workshop-config-CL4F08kr.js", "/assets/product-BUD74Itn.js", "/assets/index-Cr2THg3v.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-Dn5gs-vs.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-Boc55rcF.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/button-D3GGLffs.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/user-D6tTg1yS.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-BZFQqiA1.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/user-D6tTg1yS.js", "/assets/discord-ClGJ4reK.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-DPHRlskl.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-DGrucPXJ.js", "/assets/progress-Dn5gs-vs.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-D1CLZqv3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.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-D9AYVDws.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-Cr2THg3v.js", "/assets/index-CrCyg109.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-w-YmME9H.js", "/assets/nav-chevrons-DNlM2M58.js", "/assets/mdx-DGrucPXJ.js", "/assets/progress-Dn5gs-vs.js", "/assets/set-playground-CCm119Nm.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-D21SF96g.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/button-D3GGLffs.js", "/assets/loading-CYX0lUnA.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/preview-cQAZ1sWw.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-BMMmOqxO.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/index-Cr2THg3v.js", "/assets/index-CrCyg109.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/accordion-BTylpyuo.js", "/assets/mdx-DGrucPXJ.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-CCm119Nm.js", "/assets/button-D3GGLffs.js", "/assets/diff-Dlhnb9s0.js", "/assets/error-boundary-w-YmME9H.js", "/assets/discord-ClGJ4reK.js", "/assets/index-B-hHvmeV.js", "/assets/tests-DCK6NqSg.js", "/assets/preview-cQAZ1sWw.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-CPv5Bgs_.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/index-Cr2THg3v.js", "/assets/index-CrCyg109.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/accordion-BTylpyuo.js", "/assets/index-lG6dAghh.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-CCm119Nm.js", "/assets/tests-DCK6NqSg.js"], "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-BtU0LxSx.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-DNlM2M58.js", "/assets/mdx-DGrucPXJ.js", "/assets/progress-Dn5gs-vs.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-DpVgSUHh.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-DNlM2M58.js", "/assets/mdx-DGrucPXJ.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-Dn5gs-vs.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-4mfbmNml.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-w-YmME9H.js", "/assets/mdx-DGrucPXJ.js", "/assets/progress-Dn5gs-vs.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-BfJnysK5.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/workshop-config-CL4F08kr.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-D3GGLffs.js", "/assets/loading-CYX0lUnA.js", "/assets/product-BUD74Itn.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-D2SdN9lJ.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/pe-CUZaIcdt.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/progress-Dn5gs-vs.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-_Yp5qaGd.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/index-Cr2THg3v.js", "/assets/index-CrCyg109.js", "/assets/request-info-CEhUGODY.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/epic-video-BDMU5eQx.js", "/assets/progress-bar-C7Wl3UWv.js", "/assets/accordion-BTylpyuo.js", "/assets/mdx-DGrucPXJ.js", "/assets/diff-Dlhnb9s0.js", "/assets/nav-chevrons-DNlM2M58.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-C9YKrBRk.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/misc-BvHlNnqL.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-fa2eC7LQ.js", "/assets/pe-CUZaIcdt.js", "/assets/index-lG6dAghh.js", "/assets/loading-CYX0lUnA.js", "/assets/user-D6tTg1yS.js", "/assets/workshop-config-CL4F08kr.js", "/assets/button-D3GGLffs.js", "/assets/epic-video-BDMU5eQx.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-d74ec995.js", "version": "d74ec995" };
13508
13589
  const mode = "production";
13509
13590
  const assetsBuildDirectory = "build/client";
13510
13591
  const basename = "/";