@epic-web/workshop-app 4.2.7 → 4.2.8

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 (104) hide show
  1. package/build/client/assets/{_-ByTWgb53.js → _-CsdFvUbA.js} +2 -2
  2. package/build/client/assets/{_-ByTWgb53.js.map → _-CsdFvUbA.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber-s_qbmGEJ.js → _exerciseNumber-DWZNkWZM.js} +2 -2
  4. package/build/client/assets/{_exerciseNumber-s_qbmGEJ.js.map → _exerciseNumber-DWZNkWZM.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-D1wwEMQx.js → _exerciseNumber_._stepNumber-P76hDsE6.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-D1wwEMQx.js.map → _exerciseNumber_._stepNumber-P76hDsE6.js.map} +1 -1
  7. package/build/client/assets/{_exerciseNumber_.finished-DJgT9oaU.js → _exerciseNumber_.finished-CpC-flTW.js} +2 -2
  8. package/build/client/assets/{_exerciseNumber_.finished-DJgT9oaU.js.map → _exerciseNumber_.finished-CpC-flTW.js.map} +1 -1
  9. package/build/client/assets/{_layout-49l6Rvwp.js → _layout-BSoUgboG.js} +2 -2
  10. package/build/client/assets/{_layout-49l6Rvwp.js.map → _layout-BSoUgboG.js.map} +1 -1
  11. package/build/client/assets/{_layout-D7Qo_r0X.js → _layout-C8fK4Z98.js} +2 -2
  12. package/build/client/assets/{_layout-D7Qo_r0X.js.map → _layout-C8fK4Z98.js.map} +1 -1
  13. package/build/client/assets/_layout-D1A2zp9y.js +2 -0
  14. package/build/client/assets/{_layout-Bj9PyQQD.js.map → _layout-D1A2zp9y.js.map} +1 -1
  15. package/build/client/assets/{_layout-BaPtC79F.js → _layout-DEZ-aTmx.js} +2 -2
  16. package/build/client/assets/{_layout-BaPtC79F.js.map → _layout-DEZ-aTmx.js.map} +1 -1
  17. package/build/client/assets/{account-Bk4o4AzZ.js → account-BeKnQB9r.js} +2 -2
  18. package/build/client/assets/{account-Bk4o4AzZ.js.map → account-BeKnQB9r.js.map} +1 -1
  19. package/build/client/assets/{button-DnQOyJAN.js → button-Da1iG51o.js} +2 -2
  20. package/build/client/assets/{button-DnQOyJAN.js.map → button-Da1iG51o.js.map} +1 -1
  21. package/build/client/assets/{client-hints-KnbHFIgn.js → client-hints-B2pbEa_9.js} +2 -2
  22. package/build/client/assets/{client-hints-KnbHFIgn.js.map → client-hints-B2pbEa_9.js.map} +1 -1
  23. package/build/client/assets/{components-Dj3sm47B.js → components-BM_XUa9h.js} +15 -15
  24. package/build/client/assets/{components-Dj3sm47B.js.map → components-BM_XUa9h.js.map} +1 -1
  25. package/build/client/assets/diff-BDeBUdSw.js +2 -0
  26. package/build/client/assets/{diff-CLRdJhCn.js.map → diff-BDeBUdSw.js.map} +1 -1
  27. package/build/client/assets/{diff-CT3-9rtW.js → diff-BQhWtDyS.js} +2 -2
  28. package/build/client/assets/{diff-CT3-9rtW.js.map → diff-BQhWtDyS.js.map} +1 -1
  29. package/build/client/assets/{discord-CsluX01E.js → discord-BMNnObT9.js} +2 -2
  30. package/build/client/assets/{discord-CsluX01E.js.map → discord-BMNnObT9.js.map} +1 -1
  31. package/build/client/assets/discord-DdAReDkL.js +2 -0
  32. package/build/client/assets/discord-DdAReDkL.js.map +1 -0
  33. package/build/client/assets/{entry.client-DBBrAxtJ.js → entry.client-XC5tKTFs.js} +2 -2
  34. package/build/client/assets/{entry.client-DBBrAxtJ.js.map → entry.client-XC5tKTFs.js.map} +1 -1
  35. package/build/client/assets/{epic-video-Df7qGSN7.js → epic-video-CxRPT-8l.js} +2 -2
  36. package/build/client/assets/{epic-video-Df7qGSN7.js.map → epic-video-CxRPT-8l.js.map} +1 -1
  37. package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js +2 -0
  38. package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js.map +1 -0
  39. package/build/client/assets/{error-boundary-Bg54_knF.js → error-boundary-tJSWbP6w.js} +2 -2
  40. package/build/client/assets/{error-boundary-Bg54_knF.js.map → error-boundary-tJSWbP6w.js.map} +1 -1
  41. package/build/client/assets/{finished-Dw3SJA8A.js → finished-CMGRmsnb.js} +2 -2
  42. package/build/client/assets/{finished-Dw3SJA8A.js.map → finished-CMGRmsnb.js.map} +1 -1
  43. package/build/client/assets/{index-BL4aE6WC.js → index-B8G3eD8F.js} +2 -2
  44. package/build/client/assets/{index-BL4aE6WC.js.map → index-B8G3eD8F.js.map} +1 -1
  45. package/build/client/assets/index-BDqSZ0-h.js +36 -0
  46. package/build/client/assets/{index-D1WEsmVZ.js.map → index-BDqSZ0-h.js.map} +1 -1
  47. package/build/client/assets/{index-BfoHqrT5.js → index-BymJEf3X.js} +2 -2
  48. package/build/client/assets/{index-BfoHqrT5.js.map → index-BymJEf3X.js.map} +1 -1
  49. package/build/client/assets/{index-YgRENgjt.js → index-CQZ5FyEE.js} +2 -2
  50. package/build/client/assets/{index-YgRENgjt.js.map → index-CQZ5FyEE.js.map} +1 -1
  51. package/build/client/assets/{index-CLnz0tXz.js → index-Dc59VwXx.js} +2 -2
  52. package/build/client/assets/{index-CLnz0tXz.js.map → index-Dc59VwXx.js.map} +1 -1
  53. package/build/client/assets/{loading-D-DClzm1.js → loading-DsjO-T0W.js} +2 -2
  54. package/build/client/assets/{loading-D-DClzm1.js.map → loading-DsjO-T0W.js.map} +1 -1
  55. package/build/client/assets/{login-CjvZj820.js → login-CcuvIoiW.js} +2 -2
  56. package/build/client/assets/{login-CjvZj820.js.map → login-CcuvIoiW.js.map} +1 -1
  57. package/build/client/assets/manifest-1656ae4d.js +1 -0
  58. package/build/client/assets/mdx-CZ_BPVoS.js +2 -0
  59. package/build/client/assets/{mdx-ytg-y2nh.js.map → mdx-CZ_BPVoS.js.map} +1 -1
  60. package/build/client/assets/misc-C1rq7sPa.js +2 -0
  61. package/build/client/assets/{misc-CXGQ7VS9.js.map → misc-C1rq7sPa.js.map} +1 -1
  62. package/build/client/assets/{nav-chevrons-D8c9lJW6.js → nav-chevrons-C-dN3WfT.js} +2 -2
  63. package/build/client/assets/{nav-chevrons-D8c9lJW6.js.map → nav-chevrons-C-dN3WfT.js.map} +1 -1
  64. package/build/client/assets/{onboarding-BxcIdiGj.js → onboarding-CfXLKsN3.js} +2 -2
  65. package/build/client/assets/{onboarding-BxcIdiGj.js.map → onboarding-CfXLKsN3.js.map} +1 -1
  66. package/build/client/assets/{presence-u-05JV3Z.js → presence-BF7lWuVd.js} +2 -2
  67. package/build/client/assets/{presence-u-05JV3Z.js.map → presence-BF7lWuVd.js.map} +1 -1
  68. package/build/client/assets/{progress-bar-DX6yYES2.js → progress-bar-BmszwN_j.js} +2 -2
  69. package/build/client/assets/{progress-bar-DX6yYES2.js.map → progress-bar-BmszwN_j.js.map} +1 -1
  70. package/build/client/assets/{progress-CBZt2pmu.js → progress-mfa_5CZx.js} +2 -2
  71. package/build/client/assets/{progress-CBZt2pmu.js.map → progress-mfa_5CZx.js.map} +1 -1
  72. package/build/client/assets/{root-B02acrJe.js → root-1Cc21xa6.js} +2 -2
  73. package/build/client/assets/{root-B02acrJe.js.map → root-1Cc21xa6.js.map} +1 -1
  74. package/build/client/assets/{support-QTdmLyE7.js → support--jou3sWH.js} +2 -2
  75. package/build/client/assets/{support-QTdmLyE7.js.map → support--jou3sWH.js.map} +1 -1
  76. package/build/client/assets/{tooltip-CVFWPOu0.js → tooltip-BlVFw-is.js} +2 -2
  77. package/build/client/assets/{tooltip-CVFWPOu0.js.map → tooltip-BlVFw-is.js.map} +1 -1
  78. package/build/client/assets/{use-event-source-DXlRuRq2.js → use-event-source-DPLyo0Bh.js} +2 -2
  79. package/build/client/assets/{use-event-source-DXlRuRq2.js.map → use-event-source-DPLyo0Bh.js.map} +1 -1
  80. package/build/client/assets/{user-DiGtbaa7.js → user-p2QVtDZI.js} +2 -2
  81. package/build/client/assets/{user-DiGtbaa7.js.map → user-p2QVtDZI.js.map} +1 -1
  82. package/build/server/index.js +184 -709
  83. package/build/server/index.js.map +1 -1
  84. package/package.json +3 -3
  85. package/build/client/assets/_layout-Bj9PyQQD.js +0 -2
  86. package/build/client/assets/app._id-l0sNRNKZ.js +0 -2
  87. package/build/client/assets/app._id-l0sNRNKZ.js.map +0 -1
  88. package/build/client/assets/app._id._-l0sNRNKZ.js +0 -2
  89. package/build/client/assets/app._id._-l0sNRNKZ.js.map +0 -1
  90. package/build/client/assets/app._id.api._-l0sNRNKZ.js +0 -2
  91. package/build/client/assets/app._id.api._-l0sNRNKZ.js.map +0 -1
  92. package/build/client/assets/app._id.epic_ws_.js_-l0sNRNKZ.js +0 -2
  93. package/build/client/assets/app._id.epic_ws_.js_-l0sNRNKZ.js.map +0 -1
  94. package/build/client/assets/app._id.test._testName-l0sNRNKZ.js +0 -2
  95. package/build/client/assets/app._id.test._testName-l0sNRNKZ.js.map +0 -1
  96. package/build/client/assets/diff-CLRdJhCn.js +0 -2
  97. package/build/client/assets/discord-CK7yz4w6.js +0 -2
  98. package/build/client/assets/discord-CK7yz4w6.js.map +0 -1
  99. package/build/client/assets/index-D1WEsmVZ.js +0 -36
  100. package/build/client/assets/kcd_ws_.js_-l0sNRNKZ.js +0 -2
  101. package/build/client/assets/kcd_ws_.js_-l0sNRNKZ.js.map +0 -1
  102. package/build/client/assets/manifest-ca420c07.js +0 -1
  103. package/build/client/assets/mdx-ytg-y2nh.js +0 -2
  104. package/build/client/assets/misc-CXGQ7VS9.js +0 -2
@@ -3163,7 +3163,7 @@ const ThemeFormSchema = z$1.object({
3163
3163
  redirectTo: z$1.string().optional(),
3164
3164
  theme: z$1.enum(["system", "light", "dark"])
3165
3165
  });
3166
- async function action$d({ request }) {
3166
+ async function action$c({ request }) {
3167
3167
  const formData = await request.formData();
3168
3168
  const submission = parseWithZod(formData, {
3169
3169
  schema: ThemeFormSchema
@@ -3242,10 +3242,10 @@ function useTheme() {
3242
3242
  }
3243
3243
  return requestInfo.session.theme ?? hints.theme;
3244
3244
  }
3245
- const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3245
+ const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3246
3246
  __proto__: null,
3247
3247
  ThemeSwitch,
3248
- action: action$d,
3248
+ action: action$c,
3249
3249
  useTheme
3250
3250
  }, Symbol.toStringTag, { value: "Module" }));
3251
3251
  const appStylesheetUrl = "/assets/app-B0HiIPBO.css";
@@ -3799,7 +3799,7 @@ const links = () => {
3799
3799
  const meta$5 = ({ data }) => {
3800
3800
  return [{ title: data == null ? void 0 : data.workshopTitle }];
3801
3801
  };
3802
- async function loader$w({ request }) {
3802
+ async function loader$r({ request }) {
3803
3803
  const timings = makeTimings("rootLoader");
3804
3804
  const onboarding = await readOnboardingData();
3805
3805
  if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.finishedTourVideo)) {
@@ -4004,10 +4004,10 @@ const route0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
4004
4004
  default: AppWithProviders,
4005
4005
  headers: headers$8,
4006
4006
  links,
4007
- loader: loader$w,
4007
+ loader: loader$r,
4008
4008
  meta: meta$5
4009
4009
  }, Symbol.toStringTag, { value: "Module" }));
4010
- async function loader$v() {
4010
+ async function loader$q() {
4011
4011
  throw new Response("Not found", { status: 404 });
4012
4012
  }
4013
4013
  function NotFound() {
@@ -4034,7 +4034,7 @@ const route1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
4034
4034
  __proto__: null,
4035
4035
  ErrorBoundary: ErrorBoundary$4,
4036
4036
  default: NotFound,
4037
- loader: loader$v
4037
+ loader: loader$q
4038
4038
  }, Symbol.toStringTag, { value: "Module" }));
4039
4039
  function useEpicProgress() {
4040
4040
  const data = useRouteLoaderData("root");
@@ -4165,7 +4165,7 @@ function useProgressItem({
4165
4165
  }
4166
4166
  return null;
4167
4167
  }
4168
- async function action$c({ request }) {
4168
+ async function action$b({ request }) {
4169
4169
  ensureUndeployed();
4170
4170
  await requireAuthInfo({ request });
4171
4171
  const formData = await request.formData();
@@ -4327,10 +4327,10 @@ function ProgressToggle({
4327
4327
  )
4328
4328
  ] });
4329
4329
  }
4330
- const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4330
+ const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4331
4331
  __proto__: null,
4332
4332
  ProgressToggle,
4333
- action: action$c,
4333
+ action: action$b,
4334
4334
  useEpicProgress,
4335
4335
  useExerciseProgressClassName,
4336
4336
  useNextExerciseRoute,
@@ -4355,7 +4355,7 @@ function useOptionalDiscordMember() {
4355
4355
  const data = useRouteLoaderData("root");
4356
4356
  return data == null ? void 0 : data.discordMember;
4357
4357
  }
4358
- async function loader$u({ request }) {
4358
+ async function loader$p({ request }) {
4359
4359
  var _a2;
4360
4360
  const timings = makeTimings("stepLoader");
4361
4361
  const [exercises, workshopTitle, playgroundAppName] = await Promise.all([
@@ -5052,7 +5052,7 @@ const route2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
5052
5052
  __proto__: null,
5053
5053
  default: App,
5054
5054
  headers: headers$7,
5055
- loader: loader$u
5055
+ loader: loader$p
5056
5056
  }, Symbol.toStringTag, { value: "Module" }));
5057
5057
  function ExercisesLayout() {
5058
5058
  return /* @__PURE__ */ jsx("div", { className: "flex h-full flex-grow", children: /* @__PURE__ */ jsx(Outlet, {}) });
@@ -5130,7 +5130,7 @@ const ignoredInputs = [
5130
5130
  "mux-player",
5131
5131
  "summary"
5132
5132
  ];
5133
- async function action$b({ request }) {
5133
+ async function action$a({ request }) {
5134
5134
  const result = PlayerPreferencesSchema.safeParse(await request.json());
5135
5135
  if (!result.success) {
5136
5136
  return json({ status: "error", error: result.error.flatten() }, {
@@ -5316,10 +5316,10 @@ function isDeepEqual(obj1, obj2) {
5316
5316
  }
5317
5317
  return true;
5318
5318
  }
5319
- const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5319
+ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5320
5320
  __proto__: null,
5321
5321
  MuxPlayer,
5322
- action: action$b,
5322
+ action: action$a,
5323
5323
  usePlayerPreferences
5324
5324
  }, Symbol.toStringTag, { value: "Module" }));
5325
5325
  const EpicVideoInfoContext = React.createContext(null);
@@ -6106,7 +6106,7 @@ const LaunchSchema = z$1.intersection(
6106
6106
  }),
6107
6107
  getFileDescriptorSchema(z$1.array(z$1.string()))
6108
6108
  );
6109
- async function action$a({ request }) {
6109
+ async function action$9({ request }) {
6110
6110
  ensureUndeployed();
6111
6111
  const formData = await request.formData();
6112
6112
  const syncTo = {
@@ -6349,11 +6349,11 @@ function EditFileOnGitHub({
6349
6349
  );
6350
6350
  }
6351
6351
  const LaunchEditor = ENV.EPICSHOP_DEPLOYED ? ENV.EPICSHOP_GITHUB_ROOT ? LaunchGitHub : ({ children }) => /* @__PURE__ */ jsx(SimpleTooltip, { content: "Cannot open files in deployed app", children: /* @__PURE__ */ jsx("button", { className: "launch_button cursor-not-allowed", children }) }) : LaunchEditorImpl;
6352
- const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6352
+ const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6353
6353
  __proto__: null,
6354
6354
  EditFileOnGitHub,
6355
6355
  LaunchEditor,
6356
- action: action$a
6356
+ action: action$9
6357
6357
  }, Symbol.toStringTag, { value: "Module" }));
6358
6358
  const safePath = (s) => s.replace(/\\/g, "/");
6359
6359
  function getRelativePath(file, separator, type) {
@@ -6552,7 +6552,7 @@ const meta$4 = ({
6552
6552
  }
6553
6553
  ];
6554
6554
  };
6555
- async function loader$t({ request, params }) {
6555
+ async function loader$o({ request, params }) {
6556
6556
  const timings = makeTimings("exerciseNumberLoader");
6557
6557
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
6558
6558
  const [exercises, workshopTitle] = await Promise.all([
@@ -6696,10 +6696,10 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
6696
6696
  ErrorBoundary: ErrorBoundary$3,
6697
6697
  default: ExerciseNumberRoute,
6698
6698
  headers: headers$6,
6699
- loader: loader$t,
6699
+ loader: loader$o,
6700
6700
  meta: meta$4
6701
6701
  }, Symbol.toStringTag, { value: "Module" }));
6702
- async function loader$s({ request, params }) {
6702
+ async function loader$n({ request, params }) {
6703
6703
  const timings = makeTimings("stepLoader");
6704
6704
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
6705
6705
  const [exercises, workshopTitle] = await Promise.all([
@@ -6756,7 +6756,7 @@ const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
6756
6756
  ErrorBoundary: ErrorBoundary$2,
6757
6757
  default: StepRoute,
6758
6758
  headers: headers$5,
6759
- loader: loader$s
6759
+ loader: loader$n
6760
6760
  }, Symbol.toStringTag, { value: "Module" }));
6761
6761
  const EmojiDataSchema = z$1.union([
6762
6762
  z$1.object({
@@ -6873,7 +6873,7 @@ function getDiscordAuthURL() {
6873
6873
  discordAuthUrl.searchParams.append("scope", scope);
6874
6874
  return discordAuthUrl.toString();
6875
6875
  }
6876
- async function loader$r({ request }) {
6876
+ async function loader$m({ request }) {
6877
6877
  const authInfo = await requireAuthInfo({ request });
6878
6878
  const discordCode = new URL(request.url).searchParams.get("code");
6879
6879
  invariantResponse(discordCode, "Missing code");
@@ -6926,12 +6926,12 @@ async function loader$r({ request }) {
6926
6926
  description: `Your Discord account "${member.displayName}" has been connected!`
6927
6927
  });
6928
6928
  }
6929
- const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6929
+ const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6930
6930
  __proto__: null,
6931
6931
  getDiscordAuthURL,
6932
- loader: loader$r
6932
+ loader: loader$m
6933
6933
  }, Symbol.toStringTag, { value: "Module" }));
6934
- async function loader$q() {
6934
+ async function loader$l() {
6935
6935
  return json({ discordAuthUrl: getDiscordAuthURL() });
6936
6936
  }
6937
6937
  function useDiscordCTALink({
@@ -7030,11 +7030,11 @@ function DiscordRoute() {
7030
7030
  ] }) })
7031
7031
  ] });
7032
7032
  }
7033
- const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7033
+ const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7034
7034
  __proto__: null,
7035
7035
  DiscordCTA,
7036
7036
  default: DiscordRoute,
7037
- loader: loader$q,
7037
+ loader: loader$l,
7038
7038
  useDiscordCTALink
7039
7039
  }, Symbol.toStringTag, { value: "Module" }));
7040
7040
  function DiscordChat() {
@@ -7574,7 +7574,7 @@ const SetPlaygroundSchema = z$1.object({
7574
7574
  appName: z$1.string(),
7575
7575
  reset: z$1.string().nullable().optional().transform((v) => v === "true")
7576
7576
  });
7577
- async function action$9({ request }) {
7577
+ async function action$8({ request }) {
7578
7578
  ensureUndeployed();
7579
7579
  const formData = await request.formData();
7580
7580
  const rawData = {
@@ -7744,12 +7744,12 @@ function SetAppToPlayground({ appName }) {
7744
7744
  }
7745
7745
  );
7746
7746
  }
7747
- const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7747
+ const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7748
7748
  __proto__: null,
7749
7749
  PlaygroundChooser,
7750
7750
  SetAppToPlayground,
7751
7751
  SetPlayground,
7752
- action: action$9
7752
+ action: action$8
7753
7753
  }, Symbol.toStringTag, { value: "Module" }));
7754
7754
  function PlaygroundWindow({
7755
7755
  playgroundAppName,
@@ -7868,7 +7868,7 @@ function ButtonLink({
7868
7868
  }
7869
7869
  ) });
7870
7870
  }
7871
- async function action$8({ request }) {
7871
+ async function action$7({ request }) {
7872
7872
  ensureUndeployed();
7873
7873
  const formData = await request.formData();
7874
7874
  const intent = formData.get("intent");
@@ -7997,12 +7997,12 @@ function AppStarter({ name }) {
7997
7997
  fetcher.state === "idle" ? /* @__PURE__ */ jsx(Button, { type: "submit", name: "intent", value: "start", varient: "mono", children: "Start App" }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Loading, { children: "Starting App" }) })
7998
7998
  ] });
7999
7999
  }
8000
- const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8000
+ const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8001
8001
  __proto__: null,
8002
8002
  AppStarter,
8003
8003
  AppStopper,
8004
8004
  PortStopper,
8005
- action: action$8
8005
+ action: action$7
8006
8006
  }, Symbol.toStringTag, { value: "Module" }));
8007
8007
  const historyCallDataSchema = z$1.intersection(
8008
8008
  z$1.object({
@@ -8474,7 +8474,7 @@ function checkFileExists(file) {
8474
8474
  () => false
8475
8475
  );
8476
8476
  }
8477
- async function action$7({ request }) {
8477
+ async function action$6({ request }) {
8478
8478
  var _a2, _b2;
8479
8479
  ensureUndeployed();
8480
8480
  const formData = await request.formData();
@@ -8537,10 +8537,10 @@ function UpdateMdxCache({
8537
8537
  )
8538
8538
  ] });
8539
8539
  }
8540
- const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8540
+ const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8541
8541
  __proto__: null,
8542
8542
  UpdateMdxCache,
8543
- action: action$7
8543
+ action: action$6
8544
8544
  }, Symbol.toStringTag, { value: "Module" }));
8545
8545
  const StepContext = React.createContext(null);
8546
8546
  function useStepContext() {
@@ -9125,7 +9125,7 @@ const testEventSchema = z$1.union([
9125
9125
  })
9126
9126
  ]);
9127
9127
  const testEventQueueSchema = z$1.array(testEventSchema);
9128
- async function loader$p({ request }) {
9128
+ async function loader$k({ request }) {
9129
9129
  ensureUndeployed();
9130
9130
  const url = new URL(request.url);
9131
9131
  const name = url.searchParams.get("name");
@@ -9202,7 +9202,7 @@ async function loader$p({ request }) {
9202
9202
  };
9203
9203
  });
9204
9204
  }
9205
- async function action$6({ request }) {
9205
+ async function action$5({ request }) {
9206
9206
  var _a2;
9207
9207
  ensureUndeployed();
9208
9208
  const formData = await request.formData();
@@ -9445,14 +9445,14 @@ function StopTest({
9445
9445
  )
9446
9446
  ] });
9447
9447
  }
9448
- const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9448
+ const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9449
9449
  __proto__: null,
9450
9450
  ClearTest,
9451
9451
  StopTest,
9452
9452
  TestOutput,
9453
9453
  TestRunner,
9454
- action: action$6,
9455
- loader: loader$p
9454
+ action: action$5,
9455
+ loader: loader$k
9456
9456
  }, Symbol.toStringTag, { value: "Module" }));
9457
9457
  function Tests({
9458
9458
  appInfo: playgroundAppInfo,
@@ -9849,7 +9849,7 @@ const meta$3 = ({
9849
9849
  }
9850
9850
  ];
9851
9851
  };
9852
- async function loader$o({ request, params }) {
9852
+ async function loader$j({ request, params }) {
9853
9853
  var _a2, _b2;
9854
9854
  const timings = makeTimings("exerciseStepTypeLoader");
9855
9855
  const workshopTitle = await getWorkshopTitle();
@@ -10283,10 +10283,10 @@ const route6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
10283
10283
  ErrorBoundary: ErrorBoundary$1,
10284
10284
  default: ExercisePartRoute,
10285
10285
  headers: headers$4,
10286
- loader: loader$o,
10286
+ loader: loader$j,
10287
10287
  meta: meta$3
10288
10288
  }, Symbol.toStringTag, { value: "Module" }));
10289
- async function loader$n({ params }) {
10289
+ async function loader$i({ params }) {
10290
10290
  const problemApp = await getExerciseApp({ ...params, type: "problem" }).then(
10291
10291
  (a) => isProblemApp(a) ? a : null
10292
10292
  );
@@ -10304,7 +10304,7 @@ async function loader$n({ params }) {
10304
10304
  }
10305
10305
  const route7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10306
10306
  __proto__: null,
10307
- loader: loader$n
10307
+ loader: loader$i
10308
10308
  }, Symbol.toStringTag, { value: "Module" }));
10309
10309
  const meta$2 = ({
10310
10310
  data,
@@ -10322,7 +10322,7 @@ const meta$2 = ({
10322
10322
  }
10323
10323
  ];
10324
10324
  };
10325
- async function loader$m({ request, params }) {
10325
+ async function loader$h({ request, params }) {
10326
10326
  const timings = makeTimings("exerciseFinishedLoader");
10327
10327
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
10328
10328
  const exercise = await getExercise(params.exerciseNumber, {
@@ -10487,15 +10487,15 @@ const route8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
10487
10487
  __proto__: null,
10488
10488
  default: ExerciseFinished$1,
10489
10489
  headers: headers$3,
10490
- loader: loader$m,
10490
+ loader: loader$h,
10491
10491
  meta: meta$2
10492
10492
  }, Symbol.toStringTag, { value: "Module" }));
10493
- async function loader$l({ request }) {
10493
+ async function loader$g({ request }) {
10494
10494
  ensureUndeployed();
10495
10495
  await requireAuthInfo({ request });
10496
10496
  return json({ discordAuthUrl: getDiscordAuthURL() });
10497
10497
  }
10498
- async function action$5({ request }) {
10498
+ async function action$4({ request }) {
10499
10499
  ensureUndeployed();
10500
10500
  const formData = await request.formData();
10501
10501
  const intent = formData.get("intent");
@@ -10600,9 +10600,9 @@ function Account() {
10600
10600
  }
10601
10601
  const route9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10602
10602
  __proto__: null,
10603
- action: action$5,
10603
+ action: action$4,
10604
10604
  default: Account,
10605
- loader: loader$l
10605
+ loader: loader$g
10606
10606
  }, Symbol.toStringTag, { value: "Module" }));
10607
10607
  async function resolveApps({
10608
10608
  request,
@@ -10672,7 +10672,7 @@ async function compileTs(filePath, fullPath, {
10672
10672
  }
10673
10673
  });
10674
10674
  }
10675
- async function loader$k({ request, params }) {
10675
+ async function loader$f({ request, params }) {
10676
10676
  const timings = makeTimings("app-file");
10677
10677
  const { fileApp, app } = await resolveApps({ request, params, timings });
10678
10678
  if (!fileApp || !app) {
@@ -10728,10 +10728,10 @@ async function loader$k({ request, params }) {
10728
10728
  }
10729
10729
  const route10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10730
10730
  __proto__: null,
10731
- loader: loader$k
10731
+ loader: loader$f
10732
10732
  }, Symbol.toStringTag, { value: "Module" }));
10733
- async function loader$j(args) {
10734
- const api = await getApiModule$1(args);
10733
+ async function loader$e(args) {
10734
+ const api = await getApiModule(args);
10735
10735
  invariantResponse(
10736
10736
  api.mod.loader,
10737
10737
  "Attempted to make a GET request to the api endpoint but the api module does not export a loader function",
@@ -10744,8 +10744,8 @@ async function loader$j(args) {
10744
10744
  api.cleanupError(error);
10745
10745
  }
10746
10746
  }
10747
- async function action$4(args) {
10748
- const api = await getApiModule$1(args);
10747
+ async function action$3(args) {
10748
+ const api = await getApiModule(args);
10749
10749
  invariantResponse(
10750
10750
  api.mod.action,
10751
10751
  "Attempted to make a non-GET request to the api endpoint but the api module does not export an action function",
@@ -10758,11 +10758,11 @@ async function action$4(args) {
10758
10758
  api.cleanupError(error);
10759
10759
  }
10760
10760
  }
10761
- const ApiModuleSchema$1 = z$1.object({
10761
+ const ApiModuleSchema = z$1.object({
10762
10762
  loader: z$1.function().optional(),
10763
10763
  action: z$1.function().optional()
10764
10764
  });
10765
- async function getApiModule$1({ request, params }) {
10765
+ async function getApiModule({ request, params }) {
10766
10766
  const timings = makeTimings("app-api");
10767
10767
  const { fileApp, app } = await resolveApps({ request, params, timings });
10768
10768
  if (!fileApp || !app) {
@@ -10788,6 +10788,9 @@ async function getApiModule$1({ request, params }) {
10788
10788
  const { outputFiles, errors } = await compileTs(apiFile, app.fullPath, {
10789
10789
  esbuildOptions: {
10790
10790
  platform: "node",
10791
+ packages: "external",
10792
+ // just adds noise to errors and doesn't appear to help with debugging
10793
+ sourcemap: false,
10791
10794
  // remove the process.env define
10792
10795
  define: {}
10793
10796
  },
@@ -10808,7 +10811,7 @@ async function getApiModule$1({ request, params }) {
10808
10811
  /* @vite-ignore */
10809
10812
  dataUrl
10810
10813
  ).catch(cleanupError);
10811
- const apiModule = ApiModuleSchema$1.safeParse(mod);
10814
+ const apiModule = ApiModuleSchema.safeParse(mod);
10812
10815
  if (!apiModule.success) {
10813
10816
  throw new Response(
10814
10817
  `Invalid api module. It should export a loader and/or action: ${apiModule.error.message}`,
@@ -10828,10 +10831,78 @@ async function getApiModule$1({ request, params }) {
10828
10831
  }
10829
10832
  const route11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10830
10833
  __proto__: null,
10831
- action: action$4,
10832
- loader: loader$j
10834
+ action: action$3,
10835
+ loader: loader$e
10836
+ }, Symbol.toStringTag, { value: "Module" }));
10837
+ async function loader$d({ request, params }) {
10838
+ const timings = makeTimings("epic_ws script");
10839
+ const { fileApp, app } = await resolveApps({ request, params, timings });
10840
+ if (!fileApp || !app) {
10841
+ throw new Response(`Apps not found`, { status: 404 });
10842
+ }
10843
+ if (app.dev.type === "script") {
10844
+ return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
10845
+ }
10846
+ const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
10847
+ const js = (
10848
+ /* javascript */
10849
+ `
10850
+ function epicLiveReloadConnect(config) {
10851
+ const protocol = location.protocol === "https:" ? "wss:" : "ws:";
10852
+ const host = location.hostname;
10853
+ const port = location.port;
10854
+ const socketPath = protocol + "//" + host + ":" + port + "/__ws";
10855
+ const ws = new WebSocket(socketPath);
10856
+ ws.onmessage = (message) => {
10857
+ const event = JSON.parse(message.data);
10858
+ if (event.type !== 'epicshop:file-change') return;
10859
+ const { filePaths } = event.data;
10860
+ if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
10861
+ console.log(
10862
+ ['🐨 Reloading', window.frameElement?.getAttribute('title')]
10863
+ .filter(Boolean)
10864
+ .join(' '),
10865
+ );
10866
+ window.location.reload();
10867
+ }
10868
+ };
10869
+ ws.onopen = () => {
10870
+ if (config && typeof config.onOpen === "function") {
10871
+ config.onOpen();
10872
+ }
10873
+ };
10874
+ ws.onclose = (event) => {
10875
+ if (event.code === 1006) {
10876
+ console.log("Epic Web dev server web socket closed. Reconnecting...");
10877
+ setTimeout(
10878
+ () =>
10879
+ epicLiveReloadConnect({
10880
+ onOpen: () => window.location.reload(),
10881
+ }),
10882
+ 1000
10883
+ );
10884
+ }
10885
+ };
10886
+ ws.onerror = (error) => {
10887
+ console.log("Epic Web dev server web socket error:");
10888
+ console.error(error);
10889
+ };
10890
+ }
10891
+ epicLiveReloadConnect();
10892
+ `
10893
+ );
10894
+ return new Response(js, {
10895
+ headers: {
10896
+ "Content-Length": Buffer.byteLength(js).toString(),
10897
+ "Content-Type": "text/javascript"
10898
+ }
10899
+ });
10900
+ }
10901
+ const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10902
+ __proto__: null,
10903
+ loader: loader$d
10833
10904
  }, Symbol.toStringTag, { value: "Module" }));
10834
- async function loader$i({ request, params }) {
10905
+ async function loader$c({ request, params }) {
10835
10906
  var _a2;
10836
10907
  const timings = makeTimings("app");
10837
10908
  const { fileApp, app } = await resolveApps({ request, params, timings });
@@ -10915,79 +10986,11 @@ async function loader$i({ request, params }) {
10915
10986
  }
10916
10987
  });
10917
10988
  }
10918
- const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10919
- __proto__: null,
10920
- loader: loader$i
10921
- }, Symbol.toStringTag, { value: "Module" }));
10922
- async function loader$h({ request, params }) {
10923
- const timings = makeTimings("epic_ws script");
10924
- const { fileApp, app } = await resolveApps({ request, params, timings });
10925
- if (!fileApp || !app) {
10926
- throw new Response(`Apps not found`, { status: 404 });
10927
- }
10928
- if (app.dev.type === "script") {
10929
- return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
10930
- }
10931
- const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
10932
- const js = (
10933
- /* javascript */
10934
- `
10935
- function epicLiveReloadConnect(config) {
10936
- const protocol = location.protocol === "https:" ? "wss:" : "ws:";
10937
- const host = location.hostname;
10938
- const port = location.port;
10939
- const socketPath = protocol + "//" + host + ":" + port + "/__ws";
10940
- const ws = new WebSocket(socketPath);
10941
- ws.onmessage = (message) => {
10942
- const event = JSON.parse(message.data);
10943
- if (event.type !== 'epicshop:file-change') return;
10944
- const { filePaths } = event.data;
10945
- if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
10946
- console.log(
10947
- ['🐨 Reloading', window.frameElement?.getAttribute('title')]
10948
- .filter(Boolean)
10949
- .join(' '),
10950
- );
10951
- window.location.reload();
10952
- }
10953
- };
10954
- ws.onopen = () => {
10955
- if (config && typeof config.onOpen === "function") {
10956
- config.onOpen();
10957
- }
10958
- };
10959
- ws.onclose = (event) => {
10960
- if (event.code === 1006) {
10961
- console.log("Epic Web dev server web socket closed. Reconnecting...");
10962
- setTimeout(
10963
- () =>
10964
- epicLiveReloadConnect({
10965
- onOpen: () => window.location.reload(),
10966
- }),
10967
- 1000
10968
- );
10969
- }
10970
- };
10971
- ws.onerror = (error) => {
10972
- console.log("Epic Web dev server web socket error:");
10973
- console.error(error);
10974
- };
10975
- }
10976
- epicLiveReloadConnect();
10977
- `
10978
- );
10979
- return new Response(js, {
10980
- headers: {
10981
- "Content-Length": Buffer.byteLength(js).toString(),
10982
- "Content-Type": "text/javascript"
10983
- }
10984
- });
10985
- }
10986
10989
  const route13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10987
10990
  __proto__: null,
10988
- loader: loader$h
10991
+ loader: loader$c
10989
10992
  }, Symbol.toStringTag, { value: "Module" }));
10990
- async function loader$g({ request, params }) {
10993
+ async function loader$b({ request, params }) {
10991
10994
  var _a2;
10992
10995
  const timings = makeTimings("app_test_loader");
10993
10996
  const { testName } = params;
@@ -11127,499 +11130,11 @@ import(${JSON.stringify(testScriptPath)}).then(
11127
11130
  }
11128
11131
  const route14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11129
11132
  __proto__: null,
11130
- loader: loader$g
11133
+ loader: loader$b
11131
11134
  }, Symbol.toStringTag, { value: "Module" }));
11132
- async function loader$f({ request, params }) {
11133
- var _a2;
11134
- const timings = makeTimings("app");
11135
- const { id: appId } = params;
11136
- invariantResponse(appId, "App id is required");
11137
- const app = await getAppByName(appId, { request, timings });
11138
- const baseApp = isPlaygroundApp(app) ? await getAppByName(app.appName) : app;
11139
- if (!app) {
11140
- throw new Response(`App "${appId}" not found`, {
11141
- status: 404,
11142
- headers: { "Server-Timing": getServerTimeHeader(timings) }
11143
- });
11144
- }
11145
- if (app.dev.type === "script") {
11146
- return redirect(getBaseUrl({ request, port: app.dev.portNumber }), {
11147
- headers: { "Server-Timing": getServerTimeHeader(timings) }
11148
- });
11149
- }
11150
- if (app.dev.type !== "browser") {
11151
- throw new Response(
11152
- `App "${appId}" is not a browser app, its dev type is: "${app.dev.type}"`,
11153
- { status: 400 }
11154
- );
11155
- }
11156
- const htmlFile = path.join(app.fullPath, "index.html");
11157
- const hasHtml = await fsExtra.pathExists(htmlFile);
11158
- if (hasHtml) {
11159
- const html2 = await fsExtra.readFile(htmlFile);
11160
- return new Response(html2, {
11161
- headers: {
11162
- "Content-Length": Buffer.byteLength(html2).toString(),
11163
- "Content-Type": "text/html",
11164
- "Server-Timing": getServerTimeHeader(timings)
11165
- }
11166
- });
11167
- }
11168
- const indexFiles = (await fsExtra.readdir(app.fullPath)).filter(
11169
- (file) => file.startsWith("index.")
11170
- );
11171
- const indexCss = indexFiles.find((file) => file.endsWith("index.css"));
11172
- const indexJs = indexFiles.find((file) => file.endsWith("index.js"));
11173
- const indexTs = indexFiles.find((file) => file.endsWith("index.ts"));
11174
- const indexTsx = indexFiles.find((file) => file.endsWith("index.tsx"));
11175
- const scripts = [indexJs, indexTs, indexTsx].filter(Boolean);
11176
- if (scripts.length > 1) {
11177
- throw new Response(
11178
- `Only one index.(js|ts|tsx) file is allowed, found ${scripts.join(", ")}`,
11179
- { status: 400 }
11180
- );
11181
- }
11182
- const appTitle = app.title;
11183
- const workshopTitle = await getWorkshopTitle();
11184
- const baseAppTitle = isExerciseStepApp(baseApp) ? [
11185
- `${baseApp.stepNumber.toString().padStart(2, "0")}. ${baseApp.title}`,
11186
- `${baseApp.exerciseNumber.toString().padStart(2, "0")}. ${((_a2 = await getExercise(baseApp.exerciseNumber, { request, timings })) == null ? void 0 : _a2.title) ?? "Unknown"}`,
11187
- workshopTitle
11188
- ] : [(baseApp == null ? void 0 : baseApp.title) ?? "N/A"];
11189
- const title = (isExerciseStepApp(app) ? [
11190
- isProblemApp(app) ? "💪" : isSolutionApp(app) ? "🏁" : null,
11191
- ...baseAppTitle
11192
- ] : isPlaygroundApp(app) ? ["🛝", ...baseAppTitle] : [appTitle]).filter(Boolean).join(" | ");
11193
- const html = (
11194
- /* html */
11195
- `
11196
- <!DOCTYPE html>
11197
- <html>
11198
- <head>
11199
- <base href="${app.dev.pathname}" />
11200
- <meta charset="utf-8">
11201
- <meta name="viewport" content="width=device-width, initial-scale=1">
11202
- <title>${title}</title>
11203
- <link rel="stylesheet" href="/app-default.css">
11204
- ${indexCss ? `<link rel="stylesheet" href="${indexCss}">` : ""}
11205
- </head>
11206
- <body>
11207
- ${scripts.map((script) => `<script type="module" src="${script}"><\/script>`).join("\n")}
11208
- <script type="module" src="epic_ws.js"><\/script>
11209
- </body>
11210
- </html>
11211
- `
11212
- );
11213
- return new Response(html, {
11214
- headers: {
11215
- "Content-Length": Buffer.byteLength(html).toString(),
11216
- "Content-Type": "text/html",
11217
- "Server-Timing": getServerTimeHeader(timings)
11218
- }
11219
- });
11220
- }
11221
- const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11222
- __proto__: null,
11223
- loader: loader$f
11224
- }, Symbol.toStringTag, { value: "Module" }));
11225
- async function loader$e({ request, params }) {
11226
- const timings = makeTimings("app-file");
11227
- const { id: appId, "*": splat } = params;
11228
- const url = new URL(request.url);
11229
- const fileAppName = url.searchParams.get("fileAppName");
11230
- invariantResponse(appId, "App id is required");
11231
- invariantResponse(splat, "Splat is required");
11232
- const app = await getAppByName(appId);
11233
- const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
11234
- if (!fileApp || !app) {
11235
- throw new Response(
11236
- `Apps with ids "${fileAppName}" (resolveDir) and "${appId}" (app) for resource "${splat}" not found`,
11237
- { status: 404 }
11238
- );
11239
- }
11240
- if (app.dev.type === "script") {
11241
- return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
11242
- }
11243
- const filePath = path.join(fileApp.fullPath, splat);
11244
- const fileExists = await fsExtra.pathExists(filePath);
11245
- if (!fileExists) {
11246
- throw new Response("File not found", { status: 404 });
11247
- }
11248
- if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
11249
- const { outputFiles, errors } = await compileTs(filePath, app.fullPath, {
11250
- request,
11251
- timings
11252
- });
11253
- if (errors.length) {
11254
- console.error(`Failed to compile file "${filePath}"`);
11255
- console.error(errors);
11256
- throw new Response(errors.join("\n"), { status: 500 });
11257
- }
11258
- if (!(outputFiles == null ? void 0 : outputFiles[0])) {
11259
- throw new Response("Failed to compile file", { status: 500 });
11260
- }
11261
- const file = outputFiles[0].text;
11262
- return getFileResponse(file, { "Content-Type": "text/javascript" });
11263
- } else {
11264
- const file = await fsExtra.readFile(filePath);
11265
- const mimeType = mimeTypes.lookup(filePath) || "text/plain";
11266
- return getFileResponse(file, { "Content-Type": mimeType });
11267
- }
11268
- function getFileResponse(file, headers2 = {}) {
11269
- const etagValue = etag(file);
11270
- const ifNoneMatch = request.headers.get("if-none-match");
11271
- if (ifNoneMatch === etagValue) {
11272
- return new Response(null, { status: 304 });
11273
- }
11274
- return new Response(file, {
11275
- headers: combineHeaders(
11276
- {
11277
- "Content-Length": Buffer.byteLength(file).toString(),
11278
- "Server-Timing": timings.toString(),
11279
- ETag: etagValue
11280
- },
11281
- headers2
11282
- )
11283
- });
11284
- }
11285
- }
11286
- const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11287
- __proto__: null,
11288
- loader: loader$e
11289
- }, Symbol.toStringTag, { value: "Module" }));
11290
- async function loader$d(args) {
11291
- const api = await getApiModule(args);
11292
- invariantResponse(
11293
- api.mod.loader,
11294
- "Attempted to make a GET request to the api endpoint but the api module does not export a loader function",
11295
- { status: 405 }
11296
- );
11297
- try {
11298
- const result = await api.mod.loader(args);
11299
- return result;
11300
- } catch (error) {
11301
- api.cleanupError(error);
11302
- }
11303
- }
11304
- async function action$3(args) {
11305
- const api = await getApiModule(args);
11306
- invariantResponse(
11307
- api.mod.action,
11308
- "Attempted to make a non-GET request to the api endpoint but the api module does not export an action function",
11309
- { status: 405 }
11310
- );
11311
- try {
11312
- const result = await api.mod.action(args);
11313
- return result;
11314
- } catch (error) {
11315
- api.cleanupError(error);
11316
- }
11317
- }
11318
- const ApiModuleSchema = z$1.object({
11319
- loader: z$1.function().optional(),
11320
- action: z$1.function().optional()
11321
- });
11322
- async function getApiModule({ request, params }) {
11323
- const timings = makeTimings("app-api");
11324
- const { id: appId } = params;
11325
- const url = new URL(request.url);
11326
- const fileAppName = url.searchParams.get("fileAppName");
11327
- invariantResponse(appId, "App id is required");
11328
- const app = await getAppByName(appId);
11329
- const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
11330
- if (!fileApp || !app) {
11331
- throw new Response(
11332
- `Apps with ids "${fileAppName}" (resolveDir) and "${appId}" (app) for api not found`,
11333
- { status: 404 }
11334
- );
11335
- }
11336
- if (app.dev.type === "script") {
11337
- throw redirect(getBaseUrl({ request, port: app.dev.portNumber }));
11338
- }
11339
- const apiFiles = (await fsExtra.readdir(app.fullPath)).filter((file) => /^api\.server\.(ts|tsx|js|jsx)$/.test(file)).map((f) => path$1.join(app.fullPath, f));
11340
- const apiFile = apiFiles[0];
11341
- if (!apiFile) {
11342
- throw new Response(
11343
- `No api.server.(ts|tsx|js|jsx) file found in "${app.fullPath}"`,
11344
- { status: 404 }
11345
- );
11346
- }
11347
- if (apiFiles.length > 1) {
11348
- throw new Response(
11349
- `Only one api.server.(ts|tsx|js|jsx) file is allowed, found ${apiFiles.join(", ")}`,
11350
- { status: 400 }
11351
- );
11352
- }
11353
- const { outputFiles, errors } = await compileTs(apiFile, app.fullPath, {
11354
- esbuildOptions: {
11355
- platform: "node",
11356
- // remove the process.env define
11357
- define: {}
11358
- },
11359
- request,
11360
- timings
11361
- });
11362
- if (errors.length) {
11363
- console.error(`Failed to compile file "${apiFile}"`);
11364
- console.error(errors);
11365
- throw new Response(errors.join("\n"), { status: 500 });
11366
- }
11367
- if (!(outputFiles == null ? void 0 : outputFiles[0])) {
11368
- throw new Response(`Failed to compile file "${apiFile}"`, { status: 500 });
11369
- }
11370
- const apiCode = outputFiles[0].text;
11371
- const dataUrl = `data:text/javascript;base64,${Buffer.from(apiCode).toString("base64")}`;
11372
- const mod = await import(
11373
- /* @vite-ignore */
11374
- dataUrl
11375
- ).catch(cleanupError);
11376
- const apiModule = ApiModuleSchema.safeParse(mod);
11377
- if (!apiModule.success) {
11378
- throw new Response(
11379
- `Invalid api module. It should export a loader and/or action: ${apiModule.error.message}`,
11380
- { status: 500 }
11381
- );
11382
- }
11383
- return {
11384
- mod: apiModule.data,
11385
- cleanupError
11386
- };
11387
- function cleanupError(error) {
11388
- if (apiFile && error instanceof Error && error.stack) {
11389
- error.stack = error.stack.replace(dataUrl, apiFile);
11390
- }
11391
- throw error;
11392
- }
11393
- }
11394
- const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11395
- __proto__: null,
11396
- action: action$3,
11397
- loader: loader$d
11398
- }, Symbol.toStringTag, { value: "Module" }));
11399
- async function loader$c({ request, params }) {
11400
- const { id: appId } = params;
11401
- const url = new URL(request.url);
11402
- const fileAppName = url.searchParams.get("fileAppName");
11403
- invariantResponse(appId, "App id is required");
11404
- const app = await getAppByName(appId);
11405
- const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
11406
- if (!app || !fileApp) {
11407
- throw new Response(
11408
- `Apps with ids "${fileAppName}" (resolveDir) or "${appId}" (app) not found`,
11409
- { status: 404 }
11410
- );
11411
- }
11412
- if (app.dev.type === "script") {
11413
- return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
11414
- }
11415
- const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
11416
- const js = (
11417
- /* javascript */
11418
- `
11419
- function epicLiveReloadConnect(config) {
11420
- const protocol = location.protocol === "https:" ? "wss:" : "ws:";
11421
- const host = location.hostname;
11422
- const port = location.port;
11423
- const socketPath = protocol + "//" + host + ":" + port + "/__ws";
11424
- const ws = new WebSocket(socketPath);
11425
- ws.onmessage = (message) => {
11426
- const event = JSON.parse(message.data);
11427
- if (event.type !== 'epicshop:file-change') return;
11428
- const { filePaths } = event.data;
11429
- if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
11430
- console.log(
11431
- ['🐨 Reloading', window.frameElement?.getAttribute('title')]
11432
- .filter(Boolean)
11433
- .join(' '),
11434
- );
11435
- window.location.reload();
11436
- }
11437
- };
11438
- ws.onopen = () => {
11439
- if (config && typeof config.onOpen === "function") {
11440
- config.onOpen();
11441
- }
11442
- };
11443
- ws.onclose = (event) => {
11444
- if (event.code === 1006) {
11445
- console.log("Epic Web dev server web socket closed. Reconnecting...");
11446
- setTimeout(
11447
- () =>
11448
- epicLiveReloadConnect({
11449
- onOpen: () => window.location.reload(),
11450
- }),
11451
- 1000
11452
- );
11453
- }
11454
- };
11455
- ws.onerror = (error) => {
11456
- console.log("Epic Web dev server web socket error:");
11457
- console.error(error);
11458
- };
11459
- }
11460
- epicLiveReloadConnect();
11461
- `
11462
- );
11463
- return new Response(js, {
11464
- headers: {
11465
- "Content-Length": Buffer.byteLength(js).toString(),
11466
- "Content-Type": "text/javascript"
11467
- }
11468
- });
11469
- }
11470
- const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11471
- __proto__: null,
11472
- loader: loader$c
11473
- }, Symbol.toStringTag, { value: "Module" }));
11474
- async function loader$b({ request, params }) {
11475
- var _a2;
11476
- const timings = makeTimings("app_test_loader");
11477
- const { id: appId, testName } = params;
11478
- invariantResponse(appId, "App id is required");
11479
- invariantResponse(testName, "Test name is required");
11480
- const app = await getAppByName(appId, { request, timings });
11481
- if (!app) {
11482
- throw new Response(`App "${appId}" not found`, {
11483
- status: 404,
11484
- headers: { "Server-Timing": getServerTimeHeader(timings) }
11485
- });
11486
- }
11487
- if (app.test.type !== "browser" || app.dev.type !== "browser") {
11488
- return redirectWithToast(
11489
- "/",
11490
- {
11491
- type: "error",
11492
- title: "Unsupported",
11493
- description: `Cannot load this app's tests in the browser`
11494
- },
11495
- { headers: { "Server-Timing": getServerTimeHeader(timings) } }
11496
- );
11497
- }
11498
- const testFile = app.test.testFiles.find((file) => file === testName);
11499
- if (!testFile) {
11500
- throw new Response(`Test "${testName}" not found`, {
11501
- status: 404,
11502
- headers: { "Server-Timing": getServerTimeHeader(timings) }
11503
- });
11504
- }
11505
- if (!/(js|ts|tsx)$/.test(testFile)) {
11506
- throw new Response(`Test "${testName}" is not a script`, {
11507
- status: 400,
11508
- headers: { "Server-Timing": getServerTimeHeader(timings) }
11509
- });
11510
- }
11511
- let testFileAppName = app.name;
11512
- if (isProblemApp(app)) {
11513
- testFileAppName = isProblemApp(app) ? app.solutionName : null;
11514
- }
11515
- if (isPlaygroundApp(app)) {
11516
- const appBasis = await getAppByName(app.appName);
11517
- testFileAppName = isProblemApp(appBasis) ? appBasis.solutionName : null;
11518
- }
11519
- const testFileQueryString = testFileAppName ? `?fileAppName=${encodeURIComponent(testFileAppName)}` : "";
11520
- const testScriptPath = `${app.dev.pathname}${testFile}${testFileQueryString}`;
11521
- const testScriptSrc = (
11522
- /* javascript */
11523
- `
11524
- function logStatus(message) {
11525
- if (window.parent !== window) {
11526
- window.parent.postMessage(
11527
- { type: 'epicshop:test-status-update', ...message },
11528
- '*',
11529
- )
11530
- } else {
11531
- if (message.status === 'fail') {
11532
- console.error(message)
11533
- } else if (message.status === 'pending') {
11534
- console.info(message)
11535
- } else if (message.status === 'pass') {
11536
- console.log(message)
11537
- }
11538
- }
11539
- }
11540
- const testFile = ${JSON.stringify(testFile)}
11541
- logStatus({status: 'pending', timestamp: Date.now()})
11542
- import(${JSON.stringify(testScriptPath)}).then(
11543
- () => {
11544
- logStatus({ status: 'pass', timestamp: Date.now() })
11545
- },
11546
- error => {
11547
- logStatus({
11548
- status: 'fail',
11549
- error:
11550
- typeof error === 'string'
11551
- ? error
11552
- : typeof error === 'object' && error && 'message' in error
11553
- ? error.message
11554
- : 'unknown error',
11555
- timestamp: Date.now(),
11556
- })
11557
- throw error
11558
- },
11559
- )
11560
- `
11561
- );
11562
- const testScriptTag = `<script type="module">${testScriptSrc}<\/script>`;
11563
- const htmlFile = path.join(app.fullPath, "index.html");
11564
- const hasHtml = await fsExtra.pathExists(htmlFile);
11565
- if (hasHtml) {
11566
- const html2 = await fsExtra.readFile(htmlFile);
11567
- const testableHtml = html2.toString().replace(`</body>`, `${testScriptTag}</body>`);
11568
- return new Response(testableHtml, {
11569
- headers: {
11570
- "Content-Length": Buffer.byteLength(testableHtml).toString(),
11571
- "Content-Type": "text/html",
11572
- "Server-Timing": getServerTimeHeader(timings)
11573
- }
11574
- });
11575
- }
11576
- const indexFiles = (await fsExtra.readdir(app.fullPath)).filter(
11577
- (file) => file.startsWith("index.")
11578
- );
11579
- const indexCss = indexFiles.find((file) => file.endsWith("index.css"));
11580
- const appTitle = app.title;
11581
- const workshopTitle = await getWorkshopTitle();
11582
- const title = (isExerciseStepApp(app) ? [
11583
- isProblemApp(app) ? "🧪💪" : isSolutionApp(app) ? "🧪🏁" : null,
11584
- `${app.stepNumber.toString().padStart(2, "0")}. ${app.title}`,
11585
- `${app.exerciseNumber.toString().padStart(2, "0")}. ${((_a2 = await getExercise(app.exerciseNumber, { request, timings })) == null ? void 0 : _a2.title) ?? "Unknown"}`,
11586
- workshopTitle
11587
- ] : ["🧪", appTitle]).filter(Boolean).join(" | ");
11588
- const html = (
11589
- /* html */
11590
- `
11591
- <!DOCTYPE html>
11592
- <html>
11593
- <head>
11594
- <base href="${app.dev.pathname}" />
11595
- <meta charset="utf-8">
11596
- <meta name="viewport" content="width=device-width, initial-scale=1">
11597
- <title>${title}</title>
11598
- <link rel="stylesheet" href="/app-default.css">
11599
- ${indexCss ? `<link rel="stylesheet" href="${indexCss}">` : ""}
11600
- </head>
11601
- <body>
11602
- ${testScriptTag}
11603
- <script type="module" src="epic_ws.js${testFileQueryString}"><\/script>
11604
- </body>
11605
- </html>
11606
- `
11607
- );
11608
- return new Response(html, {
11609
- headers: {
11610
- "Content-Length": Buffer.byteLength(html).toString(),
11611
- "Content-Type": "text/html",
11612
- "Server-Timing": getServerTimeHeader(timings)
11613
- }
11614
- });
11615
- }
11616
- const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11617
- __proto__: null,
11618
- loader: loader$b
11619
- }, Symbol.toStringTag, { value: "Module" }));
11620
- const meta$1 = ({
11621
- matches
11622
- }) => {
11135
+ const meta$1 = ({
11136
+ matches
11137
+ }) => {
11623
11138
  var _a2;
11624
11139
  const rootData = (_a2 = matches.find((m) => m.id === "root")) == null ? void 0 : _a2.data;
11625
11140
  return [{ title: `🎉 ${rootData == null ? void 0 : rootData.workshopTitle}` }];
@@ -11757,7 +11272,7 @@ function Survey({
11757
11272
  )
11758
11273
  ] });
11759
11274
  }
11760
- const route21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11275
+ const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11761
11276
  __proto__: null,
11762
11277
  default: ExerciseFinished,
11763
11278
  headers: headers$2,
@@ -11889,7 +11404,7 @@ function Index() {
11889
11404
  function ErrorBoundary() {
11890
11405
  return /* @__PURE__ */ jsx(GeneralErrorBoundary, {});
11891
11406
  }
11892
- const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11407
+ const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11893
11408
  __proto__: null,
11894
11409
  ErrorBoundary,
11895
11410
  default: Index,
@@ -11990,7 +11505,7 @@ async function loader$8({ request }) {
11990
11505
  };
11991
11506
  });
11992
11507
  }
11993
- const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11508
+ const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11994
11509
  __proto__: null,
11995
11510
  EventSchema,
11996
11511
  loader: loader$8
@@ -12114,7 +11629,7 @@ function Logo({ className = "" }) {
12114
11629
  }
12115
11630
  );
12116
11631
  }
12117
- const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11632
+ const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12118
11633
  __proto__: null,
12119
11634
  action: action$2,
12120
11635
  default: Login,
@@ -12173,7 +11688,7 @@ function Support() {
12173
11688
  ] })
12174
11689
  ] });
12175
11690
  }
12176
- const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11691
+ const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12177
11692
  __proto__: null,
12178
11693
  default: Support
12179
11694
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12418,7 +11933,7 @@ function Pinger({
12418
11933
  )
12419
11934
  ] });
12420
11935
  }
12421
- const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11936
+ const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12422
11937
  __proto__: null,
12423
11938
  action: action$1,
12424
11939
  default: AdminLayout,
@@ -12429,7 +11944,7 @@ async function loader$5() {
12429
11944
  const apps = await getApps();
12430
11945
  return json({ apps });
12431
11946
  }
12432
- const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11947
+ const route21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12433
11948
  __proto__: null,
12434
11949
  loader: loader$5
12435
11950
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12441,7 +11956,7 @@ async function loader$4({ request }) {
12441
11956
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
12442
11957
  );
12443
11958
  }
12444
- const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11959
+ const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12445
11960
  __proto__: null,
12446
11961
  loader: loader$4
12447
11962
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12530,7 +12045,7 @@ function DiffViewer() {
12530
12045
  }
12531
12046
  );
12532
12047
  }
12533
- const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12048
+ const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12534
12049
  __proto__: null,
12535
12050
  default: DiffViewer,
12536
12051
  loader: loader$3
@@ -12543,7 +12058,7 @@ async function loader$2({ request }) {
12543
12058
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
12544
12059
  );
12545
12060
  }
12546
- const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12061
+ const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12547
12062
  __proto__: null,
12548
12063
  loader: loader$2
12549
12064
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12585,7 +12100,7 @@ function Onboarding() {
12585
12100
  /* @__PURE__ */ jsx(Form, { method: "post", className: "pb-4", children: /* @__PURE__ */ jsx(Button, { name: "intent", value: "complete", varient: "primary", children: "I've watched it. Let's go!" }) })
12586
12101
  ] });
12587
12102
  }
12588
- const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12103
+ const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12589
12104
  __proto__: null,
12590
12105
  action,
12591
12106
  default: Onboarding,
@@ -12610,11 +12125,11 @@ async function loader() {
12610
12125
  }
12611
12126
  return json({ processes, testProcesses: testProcesses2 });
12612
12127
  }
12613
- const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12128
+ const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12614
12129
  __proto__: null,
12615
12130
  loader
12616
12131
  }, Symbol.toStringTag, { value: "Module" }));
12617
- const serverManifest = { "entry": { "module": "/assets/entry.client-DBBrAxtJ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.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-B02acrJe.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/client-hints-KnbHFIgn.js", "/assets/error-boundary-Bg54_knF.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BL4aE6WC.js", "/assets/index-CLnz0tXz.js", "/assets/presence-u-05JV3Z.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/_-ByTWgb53.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/error-boundary-Bg54_knF.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-D7Qo_r0X.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/client-hints-KnbHFIgn.js", "/assets/progress-CBZt2pmu.js", "/assets/index-CLnz0tXz.js", "/assets/user-DiGtbaa7.js", "/assets/presence-u-05JV3Z.js"], "css": [] }, "routes/_app+/_exercises+/_layout": { "id": "routes/_app+/_exercises+/_layout", "parentId": "routes/_app+/_layout", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Bj9PyQQD.js", "imports": ["/assets/index-D1WEsmVZ.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-s_qbmGEJ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-D1wwEMQx.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-49l6Rvwp.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CXGQ7VS9.js", "/assets/client-hints-KnbHFIgn.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/mdx-ytg-y2nh.js", "/assets/user-DiGtbaa7.js", "/assets/index-BfoHqrT5.js", "/assets/diff-CT3-9rtW.js", "/assets/discord-CsluX01E.js", "/assets/index-BL4aE6WC.js", "/assets/button-DnQOyJAN.js", "/assets/use-event-source-DXlRuRq2.js", "/assets/error-boundary-Bg54_knF.js", "/assets/nav-chevrons-D8c9lJW6.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/_exercises+/$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+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DJgT9oaU.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/nav-chevrons-D8c9lJW6.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.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-Bk4o4AzZ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/index-B8k-Gd1G.js", "/assets/button-DnQOyJAN.js", "/assets/misc-CXGQ7VS9.js", "/assets/user-DiGtbaa7.js", "/assets/presence-u-05JV3Z.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+/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+/kcd_ws[.js]": { "id": "routes/_app+/app.$appName+/kcd_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/kcd_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/kcd_ws_.js_-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.$id": { "id": "routes/_app+/app.$id", "parentId": "routes/_app+/_layout", "path": "app/:id", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.$": { "id": "routes/_app+/app.$id.$", "parentId": "routes/_app+/app.$id", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.api.$": { "id": "routes/_app+/app.$id.api.$", "parentId": "routes/_app+/app.$id", "path": "api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.epic_ws[.js]": { "id": "routes/_app+/app.$id.epic_ws[.js]", "parentId": "routes/_app+/app.$id", "path": "epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.test.$testName": { "id": "routes/_app+/app.$id.test.$testName", "parentId": "routes/_app+/app.$id", "path": "test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.test._testName-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-CK7yz4w6.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/user-DiGtbaa7.js", "/assets/discord-CsluX01E.js"], "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-Dw3SJA8A.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js", "/assets/nav-chevrons-D8c9lJW6.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-YgRENgjt.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/progress-CBZt2pmu.js", "/assets/error-boundary-Bg54_knF.js", "/assets/mdx-ytg-y2nh.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-CjvZj820.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/client-hints-KnbHFIgn.js", "/assets/use-event-source-DXlRuRq2.js", "/assets/index-B8k-Gd1G.js", "/assets/button-DnQOyJAN.js", "/assets/loading-D-DClzm1.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-QTdmLyE7.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.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-BaPtC79F.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/tooltip-CVFWPOu0.js", "/assets/progress-CBZt2pmu.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/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-CLRdJhCn.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/client-hints-KnbHFIgn.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/mdx-ytg-y2nh.js", "/assets/diff-CT3-9rtW.js", "/assets/nav-chevrons-D8c9lJW6.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/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-BxcIdiGj.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/button-DnQOyJAN.js", "/assets/epic-video-Df7qGSN7.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/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/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-ca420c07.js", "version": "ca420c07" };
12132
+ const serverManifest = { "entry": { "module": "/assets/entry.client-XC5tKTFs.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.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-1Cc21xa6.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/client-hints-B2pbEa_9.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-B8G3eD8F.js", "/assets/index-Dc59VwXx.js", "/assets/presence-BF7lWuVd.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/_-CsdFvUbA.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/error-boundary-tJSWbP6w.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-C8fK4Z98.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/client-hints-B2pbEa_9.js", "/assets/progress-mfa_5CZx.js", "/assets/index-Dc59VwXx.js", "/assets/user-p2QVtDZI.js", "/assets/presence-BF7lWuVd.js"], "css": [] }, "routes/_app+/_exercises+/_layout": { "id": "routes/_app+/_exercises+/_layout", "parentId": "routes/_app+/_layout", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-D1A2zp9y.js", "imports": ["/assets/index-BDqSZ0-h.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-DWZNkWZM.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-P76hDsE6.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BSoUgboG.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-C1rq7sPa.js", "/assets/client-hints-B2pbEa_9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/mdx-CZ_BPVoS.js", "/assets/user-p2QVtDZI.js", "/assets/index-BymJEf3X.js", "/assets/diff-BQhWtDyS.js", "/assets/discord-BMNnObT9.js", "/assets/index-B8G3eD8F.js", "/assets/button-Da1iG51o.js", "/assets/use-event-source-DPLyo0Bh.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/nav-chevrons-C-dN3WfT.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/_exercises+/$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+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-CpC-flTW.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/nav-chevrons-C-dN3WfT.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.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-BeKnQB9r.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/index-B8k-Gd1G.js", "/assets/button-Da1iG51o.js", "/assets/misc-C1rq7sPa.js", "/assets/user-p2QVtDZI.js", "/assets/presence-BF7lWuVd.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+/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-DdAReDkL.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/user-p2QVtDZI.js", "/assets/discord-BMNnObT9.js"], "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-CMGRmsnb.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js", "/assets/nav-chevrons-C-dN3WfT.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-CQZ5FyEE.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/progress-mfa_5CZx.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/mdx-CZ_BPVoS.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-CcuvIoiW.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/client-hints-B2pbEa_9.js", "/assets/use-event-source-DPLyo0Bh.js", "/assets/index-B8k-Gd1G.js", "/assets/button-Da1iG51o.js", "/assets/loading-DsjO-T0W.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--jou3sWH.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.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-DEZ-aTmx.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/tooltip-BlVFw-is.js", "/assets/progress-mfa_5CZx.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/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-BDeBUdSw.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/client-hints-B2pbEa_9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/mdx-CZ_BPVoS.js", "/assets/diff-BQhWtDyS.js", "/assets/nav-chevrons-C-dN3WfT.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/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-CfXLKsN3.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/button-Da1iG51o.js", "/assets/epic-video-CxRPT-8l.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/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/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-1656ae4d.js", "version": "1656ae4d" };
12618
12133
  const mode = "production";
12619
12134
  const assetsBuildDirectory = "build/client";
12620
12135
  const basename = "/";
@@ -12719,19 +12234,19 @@ const routes = {
12719
12234
  caseSensitive: void 0,
12720
12235
  module: route11
12721
12236
  },
12722
- "routes/_app+/app.$appName+/index": {
12723
- id: "routes/_app+/app.$appName+/index",
12237
+ "routes/_app+/app.$appName+/epic_ws[.js]": {
12238
+ id: "routes/_app+/app.$appName+/epic_ws[.js]",
12724
12239
  parentId: "routes/_app+/_layout",
12725
- path: "app/:appName/",
12726
- index: true,
12240
+ path: "app/:appName/epic_ws.js",
12241
+ index: void 0,
12727
12242
  caseSensitive: void 0,
12728
12243
  module: route12
12729
12244
  },
12730
- "routes/_app+/app.$appName+/kcd_ws[.js]": {
12731
- id: "routes/_app+/app.$appName+/kcd_ws[.js]",
12245
+ "routes/_app+/app.$appName+/index": {
12246
+ id: "routes/_app+/app.$appName+/index",
12732
12247
  parentId: "routes/_app+/_layout",
12733
- path: "app/:appName/kcd_ws.js",
12734
- index: void 0,
12248
+ path: "app/:appName/",
12249
+ index: true,
12735
12250
  caseSensitive: void 0,
12736
12251
  module: route13
12737
12252
  },
@@ -12743,53 +12258,13 @@ const routes = {
12743
12258
  caseSensitive: void 0,
12744
12259
  module: route14
12745
12260
  },
12746
- "routes/_app+/app.$id": {
12747
- id: "routes/_app+/app.$id",
12748
- parentId: "routes/_app+/_layout",
12749
- path: "app/:id",
12750
- index: void 0,
12751
- caseSensitive: void 0,
12752
- module: route15
12753
- },
12754
- "routes/_app+/app.$id.$": {
12755
- id: "routes/_app+/app.$id.$",
12756
- parentId: "routes/_app+/app.$id",
12757
- path: "*",
12758
- index: void 0,
12759
- caseSensitive: void 0,
12760
- module: route16
12761
- },
12762
- "routes/_app+/app.$id.api.$": {
12763
- id: "routes/_app+/app.$id.api.$",
12764
- parentId: "routes/_app+/app.$id",
12765
- path: "api/*",
12766
- index: void 0,
12767
- caseSensitive: void 0,
12768
- module: route17
12769
- },
12770
- "routes/_app+/app.$id.epic_ws[.js]": {
12771
- id: "routes/_app+/app.$id.epic_ws[.js]",
12772
- parentId: "routes/_app+/app.$id",
12773
- path: "epic_ws.js",
12774
- index: void 0,
12775
- caseSensitive: void 0,
12776
- module: route18
12777
- },
12778
- "routes/_app+/app.$id.test.$testName": {
12779
- id: "routes/_app+/app.$id.test.$testName",
12780
- parentId: "routes/_app+/app.$id",
12781
- path: "test/:testName",
12782
- index: void 0,
12783
- caseSensitive: void 0,
12784
- module: route19
12785
- },
12786
12261
  "routes/_app+/discord": {
12787
12262
  id: "routes/_app+/discord",
12788
12263
  parentId: "routes/_app+/_layout",
12789
12264
  path: "discord",
12790
12265
  index: void 0,
12791
12266
  caseSensitive: void 0,
12792
- module: route20
12267
+ module: route15
12793
12268
  },
12794
12269
  "routes/_app+/finished": {
12795
12270
  id: "routes/_app+/finished",
@@ -12797,7 +12272,7 @@ const routes = {
12797
12272
  path: "finished",
12798
12273
  index: void 0,
12799
12274
  caseSensitive: void 0,
12800
- module: route21
12275
+ module: route16
12801
12276
  },
12802
12277
  "routes/_app+/index": {
12803
12278
  id: "routes/_app+/index",
@@ -12805,7 +12280,7 @@ const routes = {
12805
12280
  path: void 0,
12806
12281
  index: true,
12807
12282
  caseSensitive: void 0,
12808
- module: route22
12283
+ module: route17
12809
12284
  },
12810
12285
  "routes/_app+/login": {
12811
12286
  id: "routes/_app+/login",
@@ -12813,7 +12288,7 @@ const routes = {
12813
12288
  path: "login",
12814
12289
  index: void 0,
12815
12290
  caseSensitive: void 0,
12816
- module: route23
12291
+ module: route18
12817
12292
  },
12818
12293
  "routes/_app+/support": {
12819
12294
  id: "routes/_app+/support",
@@ -12821,7 +12296,7 @@ const routes = {
12821
12296
  path: "support",
12822
12297
  index: void 0,
12823
12298
  caseSensitive: void 0,
12824
- module: route24
12299
+ module: route19
12825
12300
  },
12826
12301
  "routes/admin+/_layout": {
12827
12302
  id: "routes/admin+/_layout",
@@ -12829,7 +12304,7 @@ const routes = {
12829
12304
  path: "admin",
12830
12305
  index: void 0,
12831
12306
  caseSensitive: void 0,
12832
- module: route25
12307
+ module: route20
12833
12308
  },
12834
12309
  "routes/admin+/apps": {
12835
12310
  id: "routes/admin+/apps",
@@ -12837,7 +12312,7 @@ const routes = {
12837
12312
  path: "apps",
12838
12313
  index: void 0,
12839
12314
  caseSensitive: void 0,
12840
- module: route26
12315
+ module: route21
12841
12316
  },
12842
12317
  "routes/apps": {
12843
12318
  id: "routes/apps",
@@ -12845,7 +12320,7 @@ const routes = {
12845
12320
  path: "apps",
12846
12321
  index: void 0,
12847
12322
  caseSensitive: void 0,
12848
- module: route27
12323
+ module: route22
12849
12324
  },
12850
12325
  "routes/diff": {
12851
12326
  id: "routes/diff",
@@ -12853,7 +12328,7 @@ const routes = {
12853
12328
  path: "diff",
12854
12329
  index: void 0,
12855
12330
  caseSensitive: void 0,
12856
- module: route28
12331
+ module: route23
12857
12332
  },
12858
12333
  "routes/discord.callback": {
12859
12334
  id: "routes/discord.callback",
@@ -12861,7 +12336,7 @@ const routes = {
12861
12336
  path: "discord/callback",
12862
12337
  index: void 0,
12863
12338
  caseSensitive: void 0,
12864
- module: route29
12339
+ module: route24
12865
12340
  },
12866
12341
  "routes/exercises": {
12867
12342
  id: "routes/exercises",
@@ -12869,7 +12344,7 @@ const routes = {
12869
12344
  path: "exercises",
12870
12345
  index: void 0,
12871
12346
  caseSensitive: void 0,
12872
- module: route30
12347
+ module: route25
12873
12348
  },
12874
12349
  "routes/launch-editor": {
12875
12350
  id: "routes/launch-editor",
@@ -12877,7 +12352,7 @@ const routes = {
12877
12352
  path: "launch-editor",
12878
12353
  index: void 0,
12879
12354
  caseSensitive: void 0,
12880
- module: route31
12355
+ module: route26
12881
12356
  },
12882
12357
  "routes/login-sse": {
12883
12358
  id: "routes/login-sse",
@@ -12885,7 +12360,7 @@ const routes = {
12885
12360
  path: "login-sse",
12886
12361
  index: void 0,
12887
12362
  caseSensitive: void 0,
12888
- module: route32
12363
+ module: route27
12889
12364
  },
12890
12365
  "routes/onboarding": {
12891
12366
  id: "routes/onboarding",
@@ -12893,7 +12368,7 @@ const routes = {
12893
12368
  path: "onboarding",
12894
12369
  index: void 0,
12895
12370
  caseSensitive: void 0,
12896
- module: route33
12371
+ module: route28
12897
12372
  },
12898
12373
  "routes/processes": {
12899
12374
  id: "routes/processes",
@@ -12901,7 +12376,7 @@ const routes = {
12901
12376
  path: "processes",
12902
12377
  index: void 0,
12903
12378
  caseSensitive: void 0,
12904
- module: route34
12379
+ module: route29
12905
12380
  },
12906
12381
  "routes/progress": {
12907
12382
  id: "routes/progress",
@@ -12909,7 +12384,7 @@ const routes = {
12909
12384
  path: "progress",
12910
12385
  index: void 0,
12911
12386
  caseSensitive: void 0,
12912
- module: route35
12387
+ module: route30
12913
12388
  },
12914
12389
  "routes/set-playground": {
12915
12390
  id: "routes/set-playground",
@@ -12917,7 +12392,7 @@ const routes = {
12917
12392
  path: "set-playground",
12918
12393
  index: void 0,
12919
12394
  caseSensitive: void 0,
12920
- module: route36
12395
+ module: route31
12921
12396
  },
12922
12397
  "routes/start": {
12923
12398
  id: "routes/start",
@@ -12925,7 +12400,7 @@ const routes = {
12925
12400
  path: "start",
12926
12401
  index: void 0,
12927
12402
  caseSensitive: void 0,
12928
- module: route37
12403
+ module: route32
12929
12404
  },
12930
12405
  "routes/test": {
12931
12406
  id: "routes/test",
@@ -12933,7 +12408,7 @@ const routes = {
12933
12408
  path: "test",
12934
12409
  index: void 0,
12935
12410
  caseSensitive: void 0,
12936
- module: route38
12411
+ module: route33
12937
12412
  },
12938
12413
  "routes/theme/index": {
12939
12414
  id: "routes/theme/index",
@@ -12941,7 +12416,7 @@ const routes = {
12941
12416
  path: "theme",
12942
12417
  index: void 0,
12943
12418
  caseSensitive: void 0,
12944
- module: route39
12419
+ module: route34
12945
12420
  },
12946
12421
  "routes/update-mdx-cache": {
12947
12422
  id: "routes/update-mdx-cache",
@@ -12949,7 +12424,7 @@ const routes = {
12949
12424
  path: "update-mdx-cache",
12950
12425
  index: void 0,
12951
12426
  caseSensitive: void 0,
12952
- module: route40
12427
+ module: route35
12953
12428
  },
12954
12429
  "routes/video-player/index": {
12955
12430
  id: "routes/video-player/index",
@@ -12957,7 +12432,7 @@ const routes = {
12957
12432
  path: "video-player",
12958
12433
  index: void 0,
12959
12434
  caseSensitive: void 0,
12960
- module: route41
12435
+ module: route36
12961
12436
  }
12962
12437
  };
12963
12438
  export {