@epic-web/workshop-app 4.11.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/build/client/assets/{_-Bd2gNcck.js → _-DYArYM0Z.js} +2 -2
  2. package/build/client/assets/{_-Bd2gNcck.js.map → _-DYArYM0Z.js.map} +1 -1
  3. package/build/client/assets/_exerciseNumber-DN5AsSNn.js +2 -0
  4. package/build/client/assets/{_exerciseNumber-Dkx8NKtT.js.map → _exerciseNumber-DN5AsSNn.js.map} +1 -1
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-DCbWNWpZ.js → _exerciseNumber_._stepNumber-Ct5BCuA1.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-DCbWNWpZ.js.map → _exerciseNumber_._stepNumber-Ct5BCuA1.js.map} +1 -1
  7. package/build/client/assets/_exerciseNumber_.finished-W3hcmvgu.js +2 -0
  8. package/build/client/assets/{_exerciseNumber_.finished-F2R0-zEk.js.map → _exerciseNumber_.finished-W3hcmvgu.js.map} +1 -1
  9. package/build/client/assets/{_layout-rEQoj43V.js → _layout-B9Y-8OU6.js} +2 -2
  10. package/build/client/assets/{_layout-rEQoj43V.js.map → _layout-B9Y-8OU6.js.map} +1 -1
  11. package/build/client/assets/{_layout-DHBLG7Ti.js → _layout-CLLcE4oc.js} +2 -2
  12. package/build/client/assets/{_layout-DHBLG7Ti.js.map → _layout-CLLcE4oc.js.map} +1 -1
  13. package/build/client/assets/{_layout-ChfAsQ5r.js → _layout-qyqfsEt3.js} +2 -2
  14. package/build/client/assets/{_layout-ChfAsQ5r.js.map → _layout-qyqfsEt3.js.map} +1 -1
  15. package/build/client/assets/{account-CnLkZd_O.js → account-DHsaqKNy.js} +2 -2
  16. package/build/client/assets/{account-CnLkZd_O.js.map → account-DHsaqKNy.js.map} +1 -1
  17. package/build/client/assets/{button-CyZl24U2.js → button-BA3iiLRs.js} +2 -2
  18. package/build/client/assets/{button-CyZl24U2.js.map → button-BA3iiLRs.js.map} +1 -1
  19. package/build/client/assets/cache-l0sNRNKZ.js +2 -0
  20. package/build/client/assets/cache-l0sNRNKZ.js.map +1 -0
  21. package/build/client/assets/{client-hints-BE5mB4r0.js → client-hints-DLYDs4RF.js} +2 -2
  22. package/build/client/assets/{client-hints-BE5mB4r0.js.map → client-hints-DLYDs4RF.js.map} +1 -1
  23. package/build/client/assets/{components-BMzmvxYw.js → components-wgHiPsTg.js} +2 -2
  24. package/build/client/assets/{components-BMzmvxYw.js.map → components-wgHiPsTg.js.map} +1 -1
  25. package/build/client/assets/diff-DczVYWk4.js +2 -0
  26. package/build/client/assets/{diff-Bn3MiSoW.js.map → diff-DczVYWk4.js.map} +1 -1
  27. package/build/client/assets/{diff-D_ZEQzD1.js → diff-hpVBklM0.js} +2 -2
  28. package/build/client/assets/{diff-D_ZEQzD1.js.map → diff-hpVBklM0.js.map} +1 -1
  29. package/build/client/assets/discord-CgwNGD2p.js +2 -0
  30. package/build/client/assets/discord-CgwNGD2p.js.map +1 -0
  31. package/build/client/assets/{discord-COPE8EOZ.js → discord-yZor-3t1.js} +2 -2
  32. package/build/client/assets/{discord-COPE8EOZ.js.map → discord-yZor-3t1.js.map} +1 -1
  33. package/build/client/assets/{entry.client-B0vV2fsa.js → entry.client-Cs8lBz8l.js} +2 -2
  34. package/build/client/assets/{entry.client-B0vV2fsa.js.map → entry.client-Cs8lBz8l.js.map} +1 -1
  35. package/build/client/assets/{epic-video-zHEt2DZr.js → epic-video--ydmGfR4.js} +96 -96
  36. package/build/client/assets/{epic-video-zHEt2DZr.js.map → epic-video--ydmGfR4.js.map} +1 -1
  37. package/build/client/assets/{error-boundary-DxfVshQ5.js → error-boundary-BVTbN8PZ.js} +2 -2
  38. package/build/client/assets/{error-boundary-DxfVshQ5.js.map → error-boundary-BVTbN8PZ.js.map} +1 -1
  39. package/build/client/assets/finished-3FuL-PiH.js +2 -0
  40. package/build/client/assets/{finished-rHvmuqsw.js.map → finished-3FuL-PiH.js.map} +1 -1
  41. package/build/client/assets/{index-4E9_Sx3m.js → index-C6ToujzV.js} +2 -2
  42. package/build/client/assets/{index-4E9_Sx3m.js.map → index-C6ToujzV.js.map} +1 -1
  43. package/build/client/assets/index-DCO6tIXL.js +2 -0
  44. package/build/client/assets/{index-CUL9cfRQ.js.map → index-DCO6tIXL.js.map} +1 -1
  45. package/build/client/assets/{index-90bzTYUX.js → index-DMhFsRrG.js} +2 -2
  46. package/build/client/assets/{index-90bzTYUX.js.map → index-DMhFsRrG.js.map} +1 -1
  47. package/build/client/assets/{index-Doi37489.js → index-DjzedX4O.js} +2 -2
  48. package/build/client/assets/{index-Doi37489.js.map → index-DjzedX4O.js.map} +1 -1
  49. package/build/client/assets/{loading-CNWJVymJ.js → loading-B0uKxERz.js} +2 -2
  50. package/build/client/assets/{loading-CNWJVymJ.js.map → loading-B0uKxERz.js.map} +1 -1
  51. package/build/client/assets/{login-DxG854vQ.js → login-CHE9W6po.js} +2 -2
  52. package/build/client/assets/{login-DxG854vQ.js.map → login-CHE9W6po.js.map} +1 -1
  53. package/build/client/assets/manifest-b955f6ee.js +1 -0
  54. package/build/client/assets/{mdx-Cdbs0d3z.js → mdx-DF11h1m-.js} +2 -2
  55. package/build/client/assets/{mdx-Cdbs0d3z.js.map → mdx-DF11h1m-.js.map} +1 -1
  56. package/build/client/assets/{misc-CypjEQkt.js → misc-S5ZD98sI.js} +2 -2
  57. package/build/client/assets/{misc-CypjEQkt.js.map → misc-S5ZD98sI.js.map} +1 -1
  58. package/build/client/assets/{nav-chevrons-BYKwyIgG.js → nav-chevrons-DaXg0NPS.js} +2 -2
  59. package/build/client/assets/{nav-chevrons-BYKwyIgG.js.map → nav-chevrons-DaXg0NPS.js.map} +1 -1
  60. package/build/client/assets/onboarding-CBm-xBhv.js +2 -0
  61. package/build/client/assets/{onboarding-BbvoMBUW.js.map → onboarding-CBm-xBhv.js.map} +1 -1
  62. package/build/client/assets/{presence-DXXVJbaH.js → presence-CW1_eiIo.js} +2 -2
  63. package/build/client/assets/{presence-DXXVJbaH.js.map → presence-CW1_eiIo.js.map} +1 -1
  64. package/build/client/assets/{progress-B_mReZVE.js → progress-BwanvUpB.js} +2 -2
  65. package/build/client/assets/{progress-B_mReZVE.js.map → progress-BwanvUpB.js.map} +1 -1
  66. package/build/client/assets/{progress-bar-DCrt7X4t.js → progress-bar-wMXWRGq0.js} +2 -2
  67. package/build/client/assets/{progress-bar-DCrt7X4t.js.map → progress-bar-wMXWRGq0.js.map} +1 -1
  68. package/build/client/assets/{request-info-CUT0ULYN.js → request-info-DHtGM4FI.js} +2 -2
  69. package/build/client/assets/{request-info-CUT0ULYN.js.map → request-info-DHtGM4FI.js.map} +1 -1
  70. package/build/client/assets/{root-DWqeqKvM.js → root-CW5sLiRQ.js} +2 -2
  71. package/build/client/assets/{root-DWqeqKvM.js.map → root-CW5sLiRQ.js.map} +1 -1
  72. package/build/client/assets/{support-DrY-qRGh.js → support-D1ydJNdm.js} +2 -2
  73. package/build/client/assets/{support-DrY-qRGh.js.map → support-D1ydJNdm.js.map} +1 -1
  74. package/build/client/assets/{tooltip-CfmIzAYi.js → tooltip-BtzSIxlB.js} +2 -2
  75. package/build/client/assets/{tooltip-CfmIzAYi.js.map → tooltip-BtzSIxlB.js.map} +1 -1
  76. package/build/client/assets/{user-C4QTtQw5.js → user-CdUDQ7a8.js} +2 -2
  77. package/build/client/assets/{user-C4QTtQw5.js.map → user-CdUDQ7a8.js.map} +1 -1
  78. package/build/server/index.js +112 -81
  79. package/build/server/index.js.map +1 -1
  80. package/package.json +3 -3
  81. package/build/client/assets/_exerciseNumber-Dkx8NKtT.js +0 -2
  82. package/build/client/assets/_exerciseNumber_.finished-F2R0-zEk.js +0 -2
  83. package/build/client/assets/diff-Bn3MiSoW.js +0 -2
  84. package/build/client/assets/discord-DIog7bBO.js +0 -2
  85. package/build/client/assets/discord-DIog7bBO.js.map +0 -1
  86. package/build/client/assets/finished-rHvmuqsw.js +0 -2
  87. package/build/client/assets/index-CUL9cfRQ.js +0 -2
  88. package/build/client/assets/manifest-ad8216cb.js +0 -1
  89. package/build/client/assets/onboarding-BbvoMBUW.js +0 -2
@@ -191,7 +191,8 @@ const fsCache = {
191
191
  try {
192
192
  const filePath = path.join(cacheDir$1, md5(key));
193
193
  const data = await fsExtra.readJSON(filePath);
194
- return data;
194
+ if (data.entry) return data.entry;
195
+ return null;
195
196
  } catch (error) {
196
197
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
197
198
  return null;
@@ -202,13 +203,24 @@ const fsCache = {
202
203
  async set(key, entry2) {
203
204
  const filePath = path.join(cacheDir$1, md5(key));
204
205
  await fsExtra.ensureDir(path.dirname(filePath));
205
- await fsExtra.writeJSON(filePath, entry2);
206
+ await fsExtra.writeJSON(filePath, { key, entry: entry2 });
206
207
  },
207
208
  async delete(key) {
208
209
  const filePath = path.join(cacheDir$1, md5(key));
209
210
  await fsExtra.remove(filePath);
210
211
  }
211
212
  };
213
+ async function getAllFileCacheEntries() {
214
+ const files = await fsExtra.readdir(cacheDir$1);
215
+ const entries = await Promise.all(
216
+ files.map(async (file) => {
217
+ const filePath = path.join(cacheDir$1, file);
218
+ const data = await fsExtra.readJSON(filePath);
219
+ return data;
220
+ }).filter(Boolean)
221
+ );
222
+ return entries;
223
+ }
212
224
  async function deleteCache() {
213
225
  if (process.env.EPICSHOP_DEPLOYED) return null;
214
226
  try {
@@ -3242,7 +3254,7 @@ function useTheme() {
3242
3254
  }
3243
3255
  return requestInfo.session.theme ?? hints.theme;
3244
3256
  }
3245
- const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3257
+ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
3246
3258
  __proto__: null,
3247
3259
  ThemeSwitch,
3248
3260
  action: action$c,
@@ -3830,7 +3842,7 @@ const meta$5 = ({ data }) => {
3830
3842
  requestInfo: data.requestInfo
3831
3843
  });
3832
3844
  };
3833
- async function loader$s({ request }) {
3845
+ async function loader$t({ request }) {
3834
3846
  const timings = makeTimings("rootLoader");
3835
3847
  const onboarding = await readOnboardingData();
3836
3848
  if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.finishedTourVideo)) {
@@ -4048,10 +4060,10 @@ const route0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
4048
4060
  default: AppWithProviders,
4049
4061
  headers: headers$8,
4050
4062
  links,
4051
- loader: loader$s,
4063
+ loader: loader$t,
4052
4064
  meta: meta$5
4053
4065
  }, Symbol.toStringTag, { value: "Module" }));
4054
- async function loader$r() {
4066
+ async function loader$s() {
4055
4067
  throw new Response("Not found", { status: 404 });
4056
4068
  }
4057
4069
  function NotFound() {
@@ -4078,7 +4090,7 @@ const route1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
4078
4090
  __proto__: null,
4079
4091
  ErrorBoundary: ErrorBoundary$4,
4080
4092
  default: NotFound,
4081
- loader: loader$r
4093
+ loader: loader$s
4082
4094
  }, Symbol.toStringTag, { value: "Module" }));
4083
4095
  function makeMediaQueryStore(mediaQuery, serverSnapshot) {
4084
4096
  function getSnapshot() {
@@ -4461,7 +4473,7 @@ function ProgressToggle({
4461
4473
  )
4462
4474
  ] });
4463
4475
  }
4464
- const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4476
+ const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4465
4477
  __proto__: null,
4466
4478
  ProgressToggle,
4467
4479
  action: action$b,
@@ -4472,7 +4484,7 @@ const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
4472
4484
  useProgressItemClassName,
4473
4485
  useRequireEpicProgress
4474
4486
  }, Symbol.toStringTag, { value: "Module" }));
4475
- async function loader$q({ request }) {
4487
+ async function loader$r({ request }) {
4476
4488
  var _a2;
4477
4489
  const timings = makeTimings("stepLoader");
4478
4490
  const [exercises, workshopTitle, playgroundAppName] = await Promise.all([
@@ -5507,7 +5519,7 @@ const route2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
5507
5519
  __proto__: null,
5508
5520
  default: App,
5509
5521
  headers: headers$7,
5510
- loader: loader$q
5522
+ loader: loader$r
5511
5523
  }, Symbol.toStringTag, { value: "Module" }));
5512
5524
  function ExercisesLayout() {
5513
5525
  return /* @__PURE__ */ jsx("div", { className: "flex h-full flex-grow", children: /* @__PURE__ */ jsx(Outlet, {}) });
@@ -5704,7 +5716,7 @@ function isDeepEqual(obj1, obj2) {
5704
5716
  }
5705
5717
  return true;
5706
5718
  }
5707
- const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5719
+ const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5708
5720
  __proto__: null,
5709
5721
  MuxPlayer,
5710
5722
  action: action$a,
@@ -5946,6 +5958,7 @@ function DeferredEpicVideo({
5946
5958
  url,
5947
5959
  title = extractEpicTitle(url)
5948
5960
  }) {
5961
+ const user = useOptionalUser();
5949
5962
  const epicVideoInfosPromise = React.useContext(EpicVideoInfoContext);
5950
5963
  const linkUI = /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(VideoLink, { url, title }) });
5951
5964
  return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
@@ -5969,7 +5982,7 @@ function DeferredEpicVideo({
5969
5982
  ENV.EPICSHOP_GITHUB_ROOT ? /* @__PURE__ */ jsx(Link, { to: ENV.EPICSHOP_GITHUB_ROOT, className: "underline", children: "Run locally" }) : "Run locally",
5970
5983
  " for transcripts"
5971
5984
  ] }) : /* @__PURE__ */ jsxs("div", { children: [
5972
- /* @__PURE__ */ jsx(Link, { to: "/login", className: "underline", children: "Login" }),
5985
+ /* @__PURE__ */ jsx(Link, { to: "/login", className: "underline", children: user ? "Upgrade" : "Login" }),
5973
5986
  " for transcripts"
5974
5987
  ] });
5975
5988
  if (!epicVideoInfo) {
@@ -6775,7 +6788,7 @@ function EditFileOnGitHub({
6775
6788
  );
6776
6789
  }
6777
6790
  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;
6778
- const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6791
+ const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6779
6792
  __proto__: null,
6780
6793
  EditFileOnGitHub,
6781
6794
  LaunchEditor,
@@ -6976,7 +6989,7 @@ const meta$4 = ({
6976
6989
  requestInfo: rootData.requestInfo
6977
6990
  });
6978
6991
  };
6979
- async function loader$p({ request, params }) {
6992
+ async function loader$q({ request, params }) {
6980
6993
  const timings = makeTimings("exerciseNumberLoader");
6981
6994
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
6982
6995
  const [exercises, workshopTitle] = await Promise.all([
@@ -7120,10 +7133,10 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
7120
7133
  ErrorBoundary: ErrorBoundary$3,
7121
7134
  default: ExerciseNumberRoute,
7122
7135
  headers: headers$6,
7123
- loader: loader$p,
7136
+ loader: loader$q,
7124
7137
  meta: meta$4
7125
7138
  }, Symbol.toStringTag, { value: "Module" }));
7126
- async function loader$o({ request, params }) {
7139
+ async function loader$p({ request, params }) {
7127
7140
  const timings = makeTimings("stepLoader");
7128
7141
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
7129
7142
  const [exercises, workshopTitle] = await Promise.all([
@@ -7180,7 +7193,7 @@ const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
7180
7193
  ErrorBoundary: ErrorBoundary$2,
7181
7194
  default: StepRoute,
7182
7195
  headers: headers$5,
7183
- loader: loader$o
7196
+ loader: loader$p
7184
7197
  }, Symbol.toStringTag, { value: "Module" }));
7185
7198
  const AccordionComponent = ({
7186
7199
  title,
@@ -7542,7 +7555,7 @@ function getDiscordAuthURL() {
7542
7555
  discordAuthUrl.searchParams.append("scope", scope);
7543
7556
  return discordAuthUrl.toString();
7544
7557
  }
7545
- async function loader$n({ request }) {
7558
+ async function loader$o({ request }) {
7546
7559
  const authInfo = await requireAuthInfo({ request });
7547
7560
  const discordCode = new URL(request.url).searchParams.get("code");
7548
7561
  invariantResponse(discordCode, "Missing code");
@@ -7595,10 +7608,10 @@ async function loader$n({ request }) {
7595
7608
  description: `Your Discord account "${member.displayName}" has been connected!`
7596
7609
  });
7597
7610
  }
7598
- const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7611
+ const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7599
7612
  __proto__: null,
7600
7613
  getDiscordAuthURL,
7601
- loader: loader$n
7614
+ loader: loader$o
7602
7615
  }, Symbol.toStringTag, { value: "Module" }));
7603
7616
  const epicshopTempDir = path.join(os.tmpdir(), "epicshop");
7604
7617
  const isDeployed = ENV.EPICSHOP_DEPLOYED;
@@ -8154,7 +8167,7 @@ function SetAppToPlayground({ appName }) {
8154
8167
  }
8155
8168
  );
8156
8169
  }
8157
- const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8170
+ const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8158
8171
  __proto__: null,
8159
8172
  PlaygroundChooser,
8160
8173
  SetAppToPlayground,
@@ -8254,7 +8267,7 @@ async function fetchDiscordPosts({ request }) {
8254
8267
  }
8255
8268
  });
8256
8269
  }
8257
- async function loader$m() {
8270
+ async function loader$n() {
8258
8271
  return json({ discordAuthUrl: getDiscordAuthURL() });
8259
8272
  }
8260
8273
  function useDiscordCTALink({
@@ -8357,7 +8370,7 @@ const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
8357
8370
  __proto__: null,
8358
8371
  DiscordCTA,
8359
8372
  default: DiscordRoute,
8360
- loader: loader$m,
8373
+ loader: loader$n,
8361
8374
  useDiscordCTALink
8362
8375
  }, Symbol.toStringTag, { value: "Module" }));
8363
8376
  function DiscordChat() {
@@ -8747,7 +8760,7 @@ function AppStarter({ name }) {
8747
8760
  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" }) })
8748
8761
  ] });
8749
8762
  }
8750
- const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8763
+ const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8751
8764
  __proto__: null,
8752
8765
  AppStarter,
8753
8766
  AppStopper,
@@ -9323,7 +9336,7 @@ function UpdateMdxCache({
9323
9336
  )
9324
9337
  ] });
9325
9338
  }
9326
- const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9339
+ const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9327
9340
  __proto__: null,
9328
9341
  UpdateMdxCache,
9329
9342
  action: action$6
@@ -9789,7 +9802,7 @@ const testEventSchema = z$1.union([
9789
9802
  })
9790
9803
  ]);
9791
9804
  const testEventQueueSchema = z$1.array(testEventSchema);
9792
- async function loader$l({ request }) {
9805
+ async function loader$m({ request }) {
9793
9806
  ensureUndeployed();
9794
9807
  const url = new URL(request.url);
9795
9808
  const name = url.searchParams.get("name");
@@ -10108,14 +10121,14 @@ function StopTest({
10108
10121
  )
10109
10122
  ] });
10110
10123
  }
10111
- const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10124
+ const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10112
10125
  __proto__: null,
10113
10126
  ClearTest,
10114
10127
  StopTest,
10115
10128
  TestOutput,
10116
10129
  TestRunner,
10117
10130
  action: action$5,
10118
- loader: loader$l
10131
+ loader: loader$m
10119
10132
  }, Symbol.toStringTag, { value: "Module" }));
10120
10133
  function Tests({
10121
10134
  appInfo: playgroundAppInfo,
@@ -10291,7 +10304,7 @@ const meta$3 = ({
10291
10304
  requestInfo: rootData.requestInfo
10292
10305
  });
10293
10306
  };
10294
- async function loader$k({ request, params }) {
10307
+ async function loader$l({ request, params }) {
10295
10308
  var _a2, _b2;
10296
10309
  const timings = makeTimings("exerciseStepTypeLoader");
10297
10310
  const workshopTitle = await getWorkshopTitle();
@@ -10723,10 +10736,10 @@ const route6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
10723
10736
  ErrorBoundary: ErrorBoundary$1,
10724
10737
  default: ExercisePartRoute,
10725
10738
  headers: headers$4,
10726
- loader: loader$k,
10739
+ loader: loader$l,
10727
10740
  meta: meta$3
10728
10741
  }, Symbol.toStringTag, { value: "Module" }));
10729
- async function loader$j({ params }) {
10742
+ async function loader$k({ params }) {
10730
10743
  const problemApp = await getExerciseApp({ ...params, type: "problem" }).then(
10731
10744
  (a) => isProblemApp(a) ? a : null
10732
10745
  );
@@ -10744,7 +10757,7 @@ async function loader$j({ params }) {
10744
10757
  }
10745
10758
  const route7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10746
10759
  __proto__: null,
10747
- loader: loader$j
10760
+ loader: loader$k
10748
10761
  }, Symbol.toStringTag, { value: "Module" }));
10749
10762
  const meta$2 = ({
10750
10763
  data,
@@ -10763,7 +10776,7 @@ const meta$2 = ({
10763
10776
  requestInfo: rootData.requestInfo
10764
10777
  });
10765
10778
  };
10766
- async function loader$i({ request, params }) {
10779
+ async function loader$j({ request, params }) {
10767
10780
  const timings = makeTimings("exerciseFinishedLoader");
10768
10781
  invariantResponse(params.exerciseNumber, "exerciseNumber is required");
10769
10782
  const exercise = await getExercise(params.exerciseNumber, {
@@ -10929,10 +10942,10 @@ const route8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
10929
10942
  __proto__: null,
10930
10943
  default: ExerciseFinished$1,
10931
10944
  headers: headers$3,
10932
- loader: loader$i,
10945
+ loader: loader$j,
10933
10946
  meta: meta$2
10934
10947
  }, Symbol.toStringTag, { value: "Module" }));
10935
- async function loader$h({ request }) {
10948
+ async function loader$i({ request }) {
10936
10949
  ensureUndeployed();
10937
10950
  await requireAuthInfo({ request });
10938
10951
  return json({ discordAuthUrl: getDiscordAuthURL() });
@@ -11044,7 +11057,7 @@ const route9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
11044
11057
  __proto__: null,
11045
11058
  action: action$4,
11046
11059
  default: Account,
11047
- loader: loader$h
11060
+ loader: loader$i
11048
11061
  }, Symbol.toStringTag, { value: "Module" }));
11049
11062
  async function getForceFresh(filePath, cacheEntry) {
11050
11063
  if (!cacheEntry) return true;
@@ -11112,7 +11125,7 @@ async function resolveApps({
11112
11125
  return { app, fileApp: app };
11113
11126
  }
11114
11127
  }
11115
- async function loader$g({ request, params }) {
11128
+ async function loader$h({ request, params }) {
11116
11129
  const timings = makeTimings("app-file");
11117
11130
  const { fileApp, app } = await resolveApps({ request, params, timings });
11118
11131
  if (!fileApp || !app) {
@@ -11168,9 +11181,9 @@ async function loader$g({ request, params }) {
11168
11181
  }
11169
11182
  const route10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11170
11183
  __proto__: null,
11171
- loader: loader$g
11184
+ loader: loader$h
11172
11185
  }, Symbol.toStringTag, { value: "Module" }));
11173
- async function loader$f(args) {
11186
+ async function loader$g(args) {
11174
11187
  const api = await getApiModule(args);
11175
11188
  invariantResponse(
11176
11189
  api.mod.loader,
@@ -11273,9 +11286,9 @@ async function getApiModule({ request, params }) {
11273
11286
  const route11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11274
11287
  __proto__: null,
11275
11288
  action: action$3,
11276
- loader: loader$f
11289
+ loader: loader$g
11277
11290
  }, Symbol.toStringTag, { value: "Module" }));
11278
- async function loader$e({ request, params }) {
11291
+ async function loader$f({ request, params }) {
11279
11292
  const timings = makeTimings("epic_ws script");
11280
11293
  const { fileApp, app } = await resolveApps({ request, params, timings });
11281
11294
  if (!fileApp || !app) {
@@ -11341,9 +11354,9 @@ async function loader$e({ request, params }) {
11341
11354
  }
11342
11355
  const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11343
11356
  __proto__: null,
11344
- loader: loader$e
11357
+ loader: loader$f
11345
11358
  }, Symbol.toStringTag, { value: "Module" }));
11346
- async function loader$d({ request, params }) {
11359
+ async function loader$e({ request, params }) {
11347
11360
  var _a2;
11348
11361
  const timings = makeTimings("app");
11349
11362
  const { fileApp, app } = await resolveApps({ request, params, timings });
@@ -11429,9 +11442,9 @@ async function loader$d({ request, params }) {
11429
11442
  }
11430
11443
  const route13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11431
11444
  __proto__: null,
11432
- loader: loader$d
11445
+ loader: loader$e
11433
11446
  }, Symbol.toStringTag, { value: "Module" }));
11434
- async function loader$c({ request, params }) {
11447
+ async function loader$d({ request, params }) {
11435
11448
  var _a2;
11436
11449
  const timings = makeTimings("app_test_loader");
11437
11450
  const { testName } = params;
@@ -11571,7 +11584,7 @@ import(${JSON.stringify(testScriptPath)}).then(
11571
11584
  }
11572
11585
  const route14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11573
11586
  __proto__: null,
11574
- loader: loader$c
11587
+ loader: loader$d
11575
11588
  }, Symbol.toStringTag, { value: "Module" }));
11576
11589
  const meta$1 = ({
11577
11590
  matches
@@ -11588,7 +11601,7 @@ const meta$1 = ({
11588
11601
  requestInfo: rootData.requestInfo
11589
11602
  });
11590
11603
  };
11591
- async function loader$b({ request }) {
11604
+ async function loader$c({ request }) {
11592
11605
  const timings = makeTimings("finishedLoader");
11593
11606
  const exercises = await getExercises({ request, timings });
11594
11607
  const compiledFinished = await time(() => getWorkshopFinished({ request }), {
@@ -11726,10 +11739,10 @@ const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
11726
11739
  __proto__: null,
11727
11740
  default: ExerciseFinished,
11728
11741
  headers: headers$2,
11729
- loader: loader$b,
11742
+ loader: loader$c,
11730
11743
  meta: meta$1
11731
11744
  }, Symbol.toStringTag, { value: "Module" }));
11732
- async function loader$a({ request }) {
11745
+ async function loader$b({ request }) {
11733
11746
  const timings = makeTimings("indexLoader");
11734
11747
  const [title, exercises, workshopReadme] = await Promise.all([
11735
11748
  time(() => getWorkshopTitle(), {
@@ -11859,7 +11872,7 @@ const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
11859
11872
  ErrorBoundary,
11860
11873
  default: Index,
11861
11874
  headers: headers$1,
11862
- loader: loader$a
11875
+ loader: loader$b
11863
11876
  }, Symbol.toStringTag, { value: "Module" }));
11864
11877
  const EVENTS = {
11865
11878
  USER_CODE_RECEIVED: "USER_CODE_RECEIVED",
@@ -11922,7 +11935,7 @@ const EventSchema = z$1.union([
11922
11935
  AuthResolvedEventSchema,
11923
11936
  AuthRejectedEventSchema
11924
11937
  ]);
11925
- async function loader$9({ request }) {
11938
+ async function loader$a({ request }) {
11926
11939
  ensureUndeployed();
11927
11940
  return eventStream(request.signal, function setup(send) {
11928
11941
  function handleCodeReceived(data) {
@@ -11956,12 +11969,12 @@ async function loader$9({ request }) {
11956
11969
  };
11957
11970
  });
11958
11971
  }
11959
- const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11972
+ const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11960
11973
  __proto__: null,
11961
11974
  EventSchema,
11962
- loader: loader$9
11975
+ loader: loader$a
11963
11976
  }, Symbol.toStringTag, { value: "Module" }));
11964
- async function loader$8() {
11977
+ async function loader$9() {
11965
11978
  ensureUndeployed();
11966
11979
  const isAuthenticated = Boolean(await getAuthInfo());
11967
11980
  if (isAuthenticated) throw redirect("/account");
@@ -12082,7 +12095,7 @@ const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
12082
12095
  __proto__: null,
12083
12096
  action: action$2,
12084
12097
  default: Login,
12085
- loader: loader$8
12098
+ loader: loader$9
12086
12099
  }, Symbol.toStringTag, { value: "Module" }));
12087
12100
  function Support() {
12088
12101
  var _a2;
@@ -12174,7 +12187,7 @@ const meta = ({
12174
12187
  const rootData = (_a2 = matches.find((m) => m.id === "root")) == null ? void 0 : _a2.data;
12175
12188
  return [{ title: `👷 | ${rootData == null ? void 0 : rootData.workshopTitle}` }];
12176
12189
  };
12177
- async function loader$7({ request }) {
12190
+ async function loader$8({ request }) {
12178
12191
  ensureUndeployed();
12179
12192
  const timings = makeTimings("adminLoader");
12180
12193
  const workshopSlug = await getEpicWorkshopSlug() ?? "Unkown";
@@ -12385,14 +12398,24 @@ const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
12385
12398
  __proto__: null,
12386
12399
  action: action$1,
12387
12400
  default: AdminLayout,
12388
- loader: loader$7,
12401
+ loader: loader$8,
12389
12402
  meta
12390
12403
  }, Symbol.toStringTag, { value: "Module" }));
12391
- async function loader$6() {
12404
+ async function loader$7() {
12405
+ ensureUndeployed();
12392
12406
  const apps = await getApps();
12393
12407
  return json({ apps });
12394
12408
  }
12395
12409
  const route21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12410
+ __proto__: null,
12411
+ loader: loader$7
12412
+ }, Symbol.toStringTag, { value: "Module" }));
12413
+ async function loader$6() {
12414
+ ensureUndeployed();
12415
+ const entries = await getAllFileCacheEntries();
12416
+ return json({ entries });
12417
+ }
12418
+ const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12396
12419
  __proto__: null,
12397
12420
  loader: loader$6
12398
12421
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12404,7 +12427,7 @@ async function loader$5({ request }) {
12404
12427
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
12405
12428
  );
12406
12429
  }
12407
- const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12430
+ const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12408
12431
  __proto__: null,
12409
12432
  loader: loader$5
12410
12433
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12493,7 +12516,7 @@ function DiffViewer() {
12493
12516
  }
12494
12517
  );
12495
12518
  }
12496
- const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12519
+ const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12497
12520
  __proto__: null,
12498
12521
  default: DiffViewer,
12499
12522
  loader: loader$4
@@ -12506,7 +12529,7 @@ async function loader$3({ request }) {
12506
12529
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
12507
12530
  );
12508
12531
  }
12509
- const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12532
+ const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12510
12533
  __proto__: null,
12511
12534
  loader: loader$3
12512
12535
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12900,7 +12923,7 @@ function OgLayout({
12900
12923
  }
12901
12924
  );
12902
12925
  }
12903
- const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12926
+ const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12904
12927
  __proto__: null,
12905
12928
  loader: loader$2
12906
12929
  }, Symbol.toStringTag, { value: "Module" }));
@@ -12942,7 +12965,7 @@ function Onboarding() {
12942
12965
  /* @__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!" }) })
12943
12966
  ] });
12944
12967
  }
12945
- const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12968
+ const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12946
12969
  __proto__: null,
12947
12970
  action,
12948
12971
  default: Onboarding,
@@ -12967,11 +12990,11 @@ async function loader() {
12967
12990
  }
12968
12991
  return json({ processes, testProcesses: testProcesses2 });
12969
12992
  }
12970
- const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12993
+ const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
12971
12994
  __proto__: null,
12972
12995
  loader
12973
12996
  }, Symbol.toStringTag, { value: "Module" }));
12974
- const serverManifest = { "entry": { "module": "/assets/entry.client-B0vV2fsa.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.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-DWqeqKvM.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/error-boundary-DxfVshQ5.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-Doi37489.js", "/assets/index-90bzTYUX.js", "/assets/presence-DXXVJbaH.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-Bd2gNcck.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/error-boundary-DxfVshQ5.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-DHBLG7Ti.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/tooltip-CfmIzAYi.js", "/assets/request-info-CUT0ULYN.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-4E9_Sx3m.js", "/assets/user-C4QTtQw5.js", "/assets/presence-DXXVJbaH.js", "/assets/progress-B_mReZVE.js", "/assets/index-90bzTYUX.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-DaZNLfOL.js", "imports": ["/assets/index-Czg1ruVn.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-Dkx8NKtT.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-D6ukHE4T.js", "/assets/mdx-Cdbs0d3z.js", "/assets/progress-B_mReZVE.js", "/assets/seo-pBpFCWsy.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-DCbWNWpZ.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.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-ChfAsQ5r.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/tooltip-CfmIzAYi.js", "/assets/request-info-CUT0ULYN.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-4E9_Sx3m.js", "/assets/mdx-Cdbs0d3z.js", "/assets/user-C4QTtQw5.js", "/assets/index-D6ukHE4T.js", "/assets/diff-D_ZEQzD1.js", "/assets/error-boundary-DxfVshQ5.js", "/assets/nav-chevrons-BYKwyIgG.js", "/assets/progress-B_mReZVE.js", "/assets/seo-pBpFCWsy.js", "/assets/discord-COPE8EOZ.js", "/assets/index-Doi37489.js", "/assets/button-CyZl24U2.js", "/assets/use-event-source-ySol3hbz.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-F2R0-zEk.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-D6ukHE4T.js", "/assets/nav-chevrons-BYKwyIgG.js", "/assets/mdx-Cdbs0d3z.js", "/assets/progress-B_mReZVE.js", "/assets/seo-pBpFCWsy.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-CnLkZd_O.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/request-info-CUT0ULYN.js", "/assets/button-CyZl24U2.js", "/assets/misc-CypjEQkt.js", "/assets/user-C4QTtQw5.js", "/assets/presence-DXXVJbaH.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-DIog7bBO.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/user-C4QTtQw5.js", "/assets/discord-COPE8EOZ.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-rHvmuqsw.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-D6ukHE4T.js", "/assets/nav-chevrons-BYKwyIgG.js", "/assets/mdx-Cdbs0d3z.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-B_mReZVE.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-CUL9cfRQ.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-D6ukHE4T.js", "/assets/error-boundary-DxfVshQ5.js", "/assets/mdx-Cdbs0d3z.js", "/assets/progress-B_mReZVE.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-DxG854vQ.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/request-info-CUT0ULYN.js", "/assets/client-hints-BE5mB4r0.js", "/assets/use-event-source-ySol3hbz.js", "/assets/button-CyZl24U2.js", "/assets/loading-CNWJVymJ.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-DrY-qRGh.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-BMzmvxYw.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-rEQoj43V.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/tooltip-CfmIzAYi.js", "/assets/progress-B_mReZVE.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-Bn3MiSoW.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/tooltip-CfmIzAYi.js", "/assets/request-info-CUT0ULYN.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/epic-video-zHEt2DZr.js", "/assets/progress-bar-DCrt7X4t.js", "/assets/index-4E9_Sx3m.js", "/assets/mdx-Cdbs0d3z.js", "/assets/diff-D_ZEQzD1.js", "/assets/nav-chevrons-BYKwyIgG.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-BbvoMBUW.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BMzmvxYw.js", "/assets/misc-CypjEQkt.js", "/assets/request-info-CUT0ULYN.js", "/assets/tooltip-CfmIzAYi.js", "/assets/client-hints-BE5mB4r0.js", "/assets/index-90bzTYUX.js", "/assets/loading-CNWJVymJ.js", "/assets/button-CyZl24U2.js", "/assets/epic-video-zHEt2DZr.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-ad8216cb.js", "version": "ad8216cb" };
12997
+ const serverManifest = { "entry": { "module": "/assets/entry.client-Cs8lBz8l.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.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-CW5sLiRQ.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/error-boundary-BVTbN8PZ.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-DjzedX4O.js", "/assets/index-DMhFsRrG.js", "/assets/presence-CW1_eiIo.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-DYArYM0Z.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/error-boundary-BVTbN8PZ.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-CLLcE4oc.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/request-info-DHtGM4FI.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-C6ToujzV.js", "/assets/user-CdUDQ7a8.js", "/assets/presence-CW1_eiIo.js", "/assets/progress-BwanvUpB.js", "/assets/index-DMhFsRrG.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-DaZNLfOL.js", "imports": ["/assets/index-Czg1ruVn.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-DN5AsSNn.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-D6ukHE4T.js", "/assets/mdx-DF11h1m-.js", "/assets/progress-BwanvUpB.js", "/assets/seo-pBpFCWsy.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-Ct5BCuA1.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.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-qyqfsEt3.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/request-info-DHtGM4FI.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-C6ToujzV.js", "/assets/mdx-DF11h1m-.js", "/assets/index-D6ukHE4T.js", "/assets/diff-hpVBklM0.js", "/assets/error-boundary-BVTbN8PZ.js", "/assets/nav-chevrons-DaXg0NPS.js", "/assets/progress-BwanvUpB.js", "/assets/seo-pBpFCWsy.js", "/assets/discord-yZor-3t1.js", "/assets/index-DjzedX4O.js", "/assets/button-BA3iiLRs.js", "/assets/use-event-source-ySol3hbz.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-W3hcmvgu.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-D6ukHE4T.js", "/assets/nav-chevrons-DaXg0NPS.js", "/assets/mdx-DF11h1m-.js", "/assets/progress-BwanvUpB.js", "/assets/seo-pBpFCWsy.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-DHsaqKNy.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/request-info-DHtGM4FI.js", "/assets/button-BA3iiLRs.js", "/assets/misc-S5ZD98sI.js", "/assets/user-CdUDQ7a8.js", "/assets/presence-CW1_eiIo.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-DP2rzg_V.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-CgwNGD2p.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/user-CdUDQ7a8.js", "/assets/discord-yZor-3t1.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-3FuL-PiH.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-D6ukHE4T.js", "/assets/nav-chevrons-DaXg0NPS.js", "/assets/mdx-DF11h1m-.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BwanvUpB.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-DCO6tIXL.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-D6ukHE4T.js", "/assets/error-boundary-BVTbN8PZ.js", "/assets/mdx-DF11h1m-.js", "/assets/progress-BwanvUpB.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-CHE9W6po.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/request-info-DHtGM4FI.js", "/assets/client-hints-DLYDs4RF.js", "/assets/use-event-source-ySol3hbz.js", "/assets/button-BA3iiLRs.js", "/assets/loading-B0uKxERz.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-D1ydJNdm.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/components-wgHiPsTg.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-B9Y-8OU6.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/progress-BwanvUpB.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-DczVYWk4.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/request-info-DHtGM4FI.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/epic-video--ydmGfR4.js", "/assets/progress-bar-wMXWRGq0.js", "/assets/index-C6ToujzV.js", "/assets/mdx-DF11h1m-.js", "/assets/diff-hpVBklM0.js", "/assets/nav-chevrons-DaXg0NPS.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-CBm-xBhv.js", "imports": ["/assets/index-Czg1ruVn.js", "/assets/clsx-B-dksMZM.js", "/assets/components-wgHiPsTg.js", "/assets/misc-S5ZD98sI.js", "/assets/request-info-DHtGM4FI.js", "/assets/tooltip-BtzSIxlB.js", "/assets/client-hints-DLYDs4RF.js", "/assets/index-DMhFsRrG.js", "/assets/loading-B0uKxERz.js", "/assets/user-CdUDQ7a8.js", "/assets/button-BA3iiLRs.js", "/assets/epic-video--ydmGfR4.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-l0sNRNKZ.js", "imports": [], "css": [] } }, "url": "/assets/manifest-b955f6ee.js", "version": "b955f6ee" };
12975
12998
  const mode = "production";
12976
12999
  const assetsBuildDirectory = "build/client";
12977
13000
  const basename = "/";
@@ -13156,13 +13179,21 @@ const routes = {
13156
13179
  caseSensitive: void 0,
13157
13180
  module: route21
13158
13181
  },
13182
+ "routes/admin+/cache": {
13183
+ id: "routes/admin+/cache",
13184
+ parentId: "routes/admin+/_layout",
13185
+ path: "cache",
13186
+ index: void 0,
13187
+ caseSensitive: void 0,
13188
+ module: route22
13189
+ },
13159
13190
  "routes/apps": {
13160
13191
  id: "routes/apps",
13161
13192
  parentId: "root",
13162
13193
  path: "apps",
13163
13194
  index: void 0,
13164
13195
  caseSensitive: void 0,
13165
- module: route22
13196
+ module: route23
13166
13197
  },
13167
13198
  "routes/diff": {
13168
13199
  id: "routes/diff",
@@ -13170,7 +13201,7 @@ const routes = {
13170
13201
  path: "diff",
13171
13202
  index: void 0,
13172
13203
  caseSensitive: void 0,
13173
- module: route23
13204
+ module: route24
13174
13205
  },
13175
13206
  "routes/discord.callback": {
13176
13207
  id: "routes/discord.callback",
@@ -13178,7 +13209,7 @@ const routes = {
13178
13209
  path: "discord/callback",
13179
13210
  index: void 0,
13180
13211
  caseSensitive: void 0,
13181
- module: route24
13212
+ module: route25
13182
13213
  },
13183
13214
  "routes/exercises": {
13184
13215
  id: "routes/exercises",
@@ -13186,7 +13217,7 @@ const routes = {
13186
13217
  path: "exercises",
13187
13218
  index: void 0,
13188
13219
  caseSensitive: void 0,
13189
- module: route25
13220
+ module: route26
13190
13221
  },
13191
13222
  "routes/launch-editor": {
13192
13223
  id: "routes/launch-editor",
@@ -13194,7 +13225,7 @@ const routes = {
13194
13225
  path: "launch-editor",
13195
13226
  index: void 0,
13196
13227
  caseSensitive: void 0,
13197
- module: route26
13228
+ module: route27
13198
13229
  },
13199
13230
  "routes/login-sse": {
13200
13231
  id: "routes/login-sse",
@@ -13202,7 +13233,7 @@ const routes = {
13202
13233
  path: "login-sse",
13203
13234
  index: void 0,
13204
13235
  caseSensitive: void 0,
13205
- module: route27
13236
+ module: route28
13206
13237
  },
13207
13238
  "routes/og": {
13208
13239
  id: "routes/og",
@@ -13210,7 +13241,7 @@ const routes = {
13210
13241
  path: "og",
13211
13242
  index: void 0,
13212
13243
  caseSensitive: void 0,
13213
- module: route28
13244
+ module: route29
13214
13245
  },
13215
13246
  "routes/onboarding": {
13216
13247
  id: "routes/onboarding",
@@ -13218,7 +13249,7 @@ const routes = {
13218
13249
  path: "onboarding",
13219
13250
  index: void 0,
13220
13251
  caseSensitive: void 0,
13221
- module: route29
13252
+ module: route30
13222
13253
  },
13223
13254
  "routes/processes": {
13224
13255
  id: "routes/processes",
@@ -13226,7 +13257,7 @@ const routes = {
13226
13257
  path: "processes",
13227
13258
  index: void 0,
13228
13259
  caseSensitive: void 0,
13229
- module: route30
13260
+ module: route31
13230
13261
  },
13231
13262
  "routes/progress": {
13232
13263
  id: "routes/progress",
@@ -13234,7 +13265,7 @@ const routes = {
13234
13265
  path: "progress",
13235
13266
  index: void 0,
13236
13267
  caseSensitive: void 0,
13237
- module: route31
13268
+ module: route32
13238
13269
  },
13239
13270
  "routes/set-playground": {
13240
13271
  id: "routes/set-playground",
@@ -13242,7 +13273,7 @@ const routes = {
13242
13273
  path: "set-playground",
13243
13274
  index: void 0,
13244
13275
  caseSensitive: void 0,
13245
- module: route32
13276
+ module: route33
13246
13277
  },
13247
13278
  "routes/start": {
13248
13279
  id: "routes/start",
@@ -13250,7 +13281,7 @@ const routes = {
13250
13281
  path: "start",
13251
13282
  index: void 0,
13252
13283
  caseSensitive: void 0,
13253
- module: route33
13284
+ module: route34
13254
13285
  },
13255
13286
  "routes/test": {
13256
13287
  id: "routes/test",
@@ -13258,7 +13289,7 @@ const routes = {
13258
13289
  path: "test",
13259
13290
  index: void 0,
13260
13291
  caseSensitive: void 0,
13261
- module: route34
13292
+ module: route35
13262
13293
  },
13263
13294
  "routes/theme/index": {
13264
13295
  id: "routes/theme/index",
@@ -13266,7 +13297,7 @@ const routes = {
13266
13297
  path: "theme",
13267
13298
  index: void 0,
13268
13299
  caseSensitive: void 0,
13269
- module: route35
13300
+ module: route36
13270
13301
  },
13271
13302
  "routes/update-mdx-cache": {
13272
13303
  id: "routes/update-mdx-cache",
@@ -13274,7 +13305,7 @@ const routes = {
13274
13305
  path: "update-mdx-cache",
13275
13306
  index: void 0,
13276
13307
  caseSensitive: void 0,
13277
- module: route36
13308
+ module: route37
13278
13309
  },
13279
13310
  "routes/video-player/index": {
13280
13311
  id: "routes/video-player/index",
@@ -13282,7 +13313,7 @@ const routes = {
13282
13313
  path: "video-player",
13283
13314
  index: void 0,
13284
13315
  caseSensitive: void 0,
13285
- module: route37
13316
+ module: route38
13286
13317
  }
13287
13318
  };
13288
13319
  export {