@epic-web/workshop-app 5.1.1 → 5.2.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 (165) hide show
  1. package/build/client/assets/{_-ZHCWB__B.js → _-CWSCXcBv.js} +2 -2
  2. package/build/client/assets/{_-ZHCWB__B.js.map → _-CWSCXcBv.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber-BFTlBdr4.js → _exerciseNumber-D6KsriIk.js} +2 -2
  4. package/build/client/assets/_exerciseNumber-D6KsriIk.js.map +1 -0
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-_687iGFh.js → _exerciseNumber_._stepNumber-BA2Xhzqs.js} +2 -2
  6. package/build/client/assets/_exerciseNumber_._stepNumber-BA2Xhzqs.js.map +1 -0
  7. package/build/client/assets/{_exerciseNumber_.finished-BEfn-nJi.js → _exerciseNumber_.finished-DEzaS_Ji.js} +2 -2
  8. package/build/client/assets/_exerciseNumber_.finished-DEzaS_Ji.js.map +1 -0
  9. package/build/client/assets/{_layout-Cfbi6StB.js → _layout-88n0To1b.js} +2 -2
  10. package/build/client/assets/{_layout-Cfbi6StB.js.map → _layout-88n0To1b.js.map} +1 -1
  11. package/build/client/assets/{_layout-BriOqd2R.js → _layout-C5yGKUmm.js} +2 -2
  12. package/build/client/assets/_layout-C5yGKUmm.js.map +1 -0
  13. package/build/client/assets/{_layout-frPHZWgR.js → _layout-T2hZtl0D.js} +2 -2
  14. package/build/client/assets/_layout-T2hZtl0D.js.map +1 -0
  15. package/build/client/assets/{_layout-BLJr2x2F.js → _layout-gyrNluke.js} +2 -2
  16. package/build/client/assets/_layout-gyrNluke.js.map +1 -0
  17. package/build/client/assets/{accordion-DuE9VejZ.js → accordion-DC885Li1.js} +2 -2
  18. package/build/client/assets/{accordion-DuE9VejZ.js.map → accordion-DC885Li1.js.map} +1 -1
  19. package/build/client/assets/{account-DDuV9rZX.js → account-CPFwPYf1.js} +2 -2
  20. package/build/client/assets/account-CPFwPYf1.js.map +1 -0
  21. package/build/client/assets/app-CM8yuYni.js +2 -0
  22. package/build/client/assets/app-CM8yuYni.js.map +1 -0
  23. package/build/client/assets/{button-CMkJ8p0a.js → button-DQ001ob0.js} +2 -2
  24. package/build/client/assets/{button-CMkJ8p0a.js.map → button-DQ001ob0.js.map} +1 -1
  25. package/build/client/assets/components-9EGYHTc_.js +158 -0
  26. package/build/client/assets/components-9EGYHTc_.js.map +1 -0
  27. package/build/client/assets/{diff-B6thd_Sf.js → diff-assn_bSK.js} +2 -2
  28. package/build/client/assets/{diff-B6thd_Sf.js.map → diff-assn_bSK.js.map} +1 -1
  29. package/build/client/assets/diff-jlCv3hv0.js +2 -0
  30. package/build/client/assets/diff-jlCv3hv0.js.map +1 -0
  31. package/build/client/assets/{discord-C9bVfiZ6.js → discord-CHsbqaqM.js} +2 -2
  32. package/build/client/assets/discord-CHsbqaqM.js.map +1 -0
  33. package/build/client/assets/discord-DoeazikD.js +2 -0
  34. package/build/client/assets/discord-DoeazikD.js.map +1 -0
  35. package/build/client/assets/entry.client-BTYTUpFV.js +44 -0
  36. package/build/client/assets/entry.client-BTYTUpFV.js.map +1 -0
  37. package/build/client/assets/epic-video-GDpD7_Qt.js +3053 -0
  38. package/build/client/assets/epic-video-GDpD7_Qt.js.map +1 -0
  39. package/build/client/assets/{error-boundary-BcGxKpte.js → error-boundary-1-dmC941.js} +2 -2
  40. package/build/client/assets/{error-boundary-BcGxKpte.js.map → error-boundary-1-dmC941.js.map} +1 -1
  41. package/build/client/assets/{finished-C2dgX1d-.js → finished-DVV0zwmP.js} +2 -2
  42. package/build/client/assets/finished-DVV0zwmP.js.map +1 -0
  43. package/build/client/assets/{index-DBrRQJxF.js → index-BCxBKsqT.js} +2 -2
  44. package/build/client/assets/{index-DBrRQJxF.js.map → index-BCxBKsqT.js.map} +1 -1
  45. package/build/client/assets/index-BFGhCX_U.js +38 -0
  46. package/build/client/assets/index-BFGhCX_U.js.map +1 -0
  47. package/build/client/assets/index-BuA_RWlU.js +2 -0
  48. package/build/client/assets/index-BuA_RWlU.js.map +1 -0
  49. package/build/client/assets/index-BuoaxPEj.js +42 -0
  50. package/build/client/assets/index-BuoaxPEj.js.map +1 -0
  51. package/build/client/assets/index-CmmC-_8P.js +2 -0
  52. package/build/client/assets/index-CmmC-_8P.js.map +1 -0
  53. package/build/client/assets/{index-YtpQLUzj.js → index-DRH72MzK.js} +2 -2
  54. package/build/client/assets/{index-YtpQLUzj.js.map → index-DRH72MzK.js.map} +1 -1
  55. package/build/client/assets/{index-CuV1bRbu.js → index-KgMLc41c.js} +2 -2
  56. package/build/client/assets/index-KgMLc41c.js.map +1 -0
  57. package/build/client/assets/index-_J-F_Dnc.js +36 -0
  58. package/build/client/assets/index-_J-F_Dnc.js.map +1 -0
  59. package/build/client/assets/{loading-Br41_Pbf.js → loading-Dk0n07O3.js} +2 -2
  60. package/build/client/assets/{loading-Br41_Pbf.js.map → loading-Dk0n07O3.js.map} +1 -1
  61. package/build/client/assets/{login-kjV7hrVt.js → login-pZYDEC_l.js} +2 -2
  62. package/build/client/assets/login-pZYDEC_l.js.map +1 -0
  63. package/build/client/assets/{manifest-b22910a7.js → manifest-c9f53a94.js} +1 -1
  64. package/build/client/assets/mdx-hW1uYjc1.js +2 -0
  65. package/build/client/assets/mdx-hW1uYjc1.js.map +1 -0
  66. package/build/client/assets/misc-BJtHv_Jh.js +2 -0
  67. package/build/client/assets/misc-BJtHv_Jh.js.map +1 -0
  68. package/build/client/assets/{nav-chevrons-DYiI8EMU.js → nav-chevrons-CgbSMLeb.js} +2 -2
  69. package/build/client/assets/{nav-chevrons-DYiI8EMU.js.map → nav-chevrons-CgbSMLeb.js.map} +1 -1
  70. package/build/client/assets/{onboarding-B4Z_yevk.js → onboarding-DCuSqnkZ.js} +2 -2
  71. package/build/client/assets/onboarding-DCuSqnkZ.js.map +1 -0
  72. package/build/client/assets/{pe-CvPIToj6.js → pe-ChIwTk8v.js} +2 -2
  73. package/build/client/assets/pe-ChIwTk8v.js.map +1 -0
  74. package/build/client/assets/presence-CdyMdOKk.js +28 -0
  75. package/build/client/assets/presence-CdyMdOKk.js.map +1 -0
  76. package/build/client/assets/{preview-DZcdG4kw.js → preview-CW_12I0i.js} +2 -2
  77. package/build/client/assets/preview-CW_12I0i.js.map +1 -0
  78. package/build/client/assets/{product-mjsTrqXs.js → product-C1ynnrN_.js} +2 -2
  79. package/build/client/assets/{product-mjsTrqXs.js.map → product-C1ynnrN_.js.map} +1 -1
  80. package/build/client/assets/progress-DAB3nDa2.js +2 -0
  81. package/build/client/assets/progress-DAB3nDa2.js.map +1 -0
  82. package/build/client/assets/{progress-bar-F8_2mvYp.js → progress-bar-Cj5R4Zk7.js} +2 -2
  83. package/build/client/assets/{progress-bar-F8_2mvYp.js.map → progress-bar-Cj5R4Zk7.js.map} +1 -1
  84. package/build/client/assets/{request-info-DGnmXtfj.js → request-info-DCIQLE6H.js} +2 -2
  85. package/build/client/assets/{request-info-DGnmXtfj.js.map → request-info-DCIQLE6H.js.map} +1 -1
  86. package/build/client/assets/{revalidation-ws-DcvYvzyj.js → revalidation-ws-DU-PzW-_.js} +2 -2
  87. package/build/client/assets/{revalidation-ws-DcvYvzyj.js.map → revalidation-ws-DU-PzW-_.js.map} +1 -1
  88. package/build/client/assets/{root-Cl86OUog.js → root-DojjHZlY.js} +4 -4
  89. package/build/client/assets/root-DojjHZlY.js.map +1 -0
  90. package/build/client/assets/set-playground-S_rIwJAa.js +2 -0
  91. package/build/client/assets/set-playground-S_rIwJAa.js.map +1 -0
  92. package/build/client/assets/{support-B0E_F4Zh.js → support-BNS-kEhc.js} +2 -2
  93. package/build/client/assets/{support-B0E_F4Zh.js.map → support-BNS-kEhc.js.map} +1 -1
  94. package/build/client/assets/tailwind-B5AAMtGC.css +1 -0
  95. package/build/client/assets/test-CtH75Laz.js +2 -0
  96. package/build/client/assets/test-CtH75Laz.js.map +1 -0
  97. package/build/client/assets/{tests-BeAEgPAw.js → tests-CTs57UUU.js} +2 -2
  98. package/build/client/assets/tests-CTs57UUU.js.map +1 -0
  99. package/build/client/assets/tooltip-BgynKV2c.js +2 -0
  100. package/build/client/assets/tooltip-BgynKV2c.js.map +1 -0
  101. package/build/client/assets/use-event-source-x59d4R2Z.js +2 -0
  102. package/build/client/assets/use-event-source-x59d4R2Z.js.map +1 -0
  103. package/build/client/assets/{user-Boua6jiU.js → user-BBryXlM_.js} +2 -2
  104. package/build/client/assets/{user-Boua6jiU.js.map → user-BBryXlM_.js.map} +1 -1
  105. package/build/client/assets/{workshop-config-Ce9sSc3I.js → workshop-config-DJY2cXU_.js} +2 -2
  106. package/build/client/assets/{workshop-config-Ce9sSc3I.js.map → workshop-config-DJY2cXU_.js.map} +1 -1
  107. package/build/server/index.js +253 -238
  108. package/build/server/index.js.map +1 -1
  109. package/dist/server/index.js +7 -14
  110. package/package.json +68 -73
  111. package/build/client/assets/_exerciseNumber-BFTlBdr4.js.map +0 -1
  112. package/build/client/assets/_exerciseNumber_._stepNumber-_687iGFh.js.map +0 -1
  113. package/build/client/assets/_exerciseNumber_.finished-BEfn-nJi.js.map +0 -1
  114. package/build/client/assets/_layout-BLJr2x2F.js.map +0 -1
  115. package/build/client/assets/_layout-BriOqd2R.js.map +0 -1
  116. package/build/client/assets/_layout-frPHZWgR.js.map +0 -1
  117. package/build/client/assets/account-DDuV9rZX.js.map +0 -1
  118. package/build/client/assets/app-wbMCZEiv.js +0 -2
  119. package/build/client/assets/app-wbMCZEiv.js.map +0 -1
  120. package/build/client/assets/components-DZ8XIeZ3.js +0 -166
  121. package/build/client/assets/components-DZ8XIeZ3.js.map +0 -1
  122. package/build/client/assets/diff-BEk79KPK.js +0 -2
  123. package/build/client/assets/diff-BEk79KPK.js.map +0 -1
  124. package/build/client/assets/discord-C9bVfiZ6.js.map +0 -1
  125. package/build/client/assets/discord-DYeU0QX6.js +0 -2
  126. package/build/client/assets/discord-DYeU0QX6.js.map +0 -1
  127. package/build/client/assets/entry.client-CW5CUf_W.js +0 -43
  128. package/build/client/assets/entry.client-CW5CUf_W.js.map +0 -1
  129. package/build/client/assets/epic-video-bs7WmhbC.js +0 -2988
  130. package/build/client/assets/epic-video-bs7WmhbC.js.map +0 -1
  131. package/build/client/assets/finished-C2dgX1d-.js.map +0 -1
  132. package/build/client/assets/index-BczhSZ3e.js +0 -2
  133. package/build/client/assets/index-BczhSZ3e.js.map +0 -1
  134. package/build/client/assets/index-BjNhezSK.js +0 -42
  135. package/build/client/assets/index-BjNhezSK.js.map +0 -1
  136. package/build/client/assets/index-BvihEwfB.js +0 -36
  137. package/build/client/assets/index-BvihEwfB.js.map +0 -1
  138. package/build/client/assets/index-C2yr7Uiu.js +0 -2
  139. package/build/client/assets/index-C2yr7Uiu.js.map +0 -1
  140. package/build/client/assets/index-CuV1bRbu.js.map +0 -1
  141. package/build/client/assets/index-DF_XBInP.js +0 -37
  142. package/build/client/assets/index-DF_XBInP.js.map +0 -1
  143. package/build/client/assets/login-kjV7hrVt.js.map +0 -1
  144. package/build/client/assets/mdx-CRxPouxB.js +0 -2
  145. package/build/client/assets/mdx-CRxPouxB.js.map +0 -1
  146. package/build/client/assets/misc-BE75ioh8.js +0 -2
  147. package/build/client/assets/misc-BE75ioh8.js.map +0 -1
  148. package/build/client/assets/onboarding-B4Z_yevk.js.map +0 -1
  149. package/build/client/assets/pe-CvPIToj6.js.map +0 -1
  150. package/build/client/assets/presence-Dd98AJ_5.js +0 -28
  151. package/build/client/assets/presence-Dd98AJ_5.js.map +0 -1
  152. package/build/client/assets/preview-DZcdG4kw.js.map +0 -1
  153. package/build/client/assets/progress-Co-59mG2.js +0 -2
  154. package/build/client/assets/progress-Co-59mG2.js.map +0 -1
  155. package/build/client/assets/root-Cl86OUog.js.map +0 -1
  156. package/build/client/assets/set-playground-pMKmtPtz.js +0 -2
  157. package/build/client/assets/set-playground-pMKmtPtz.js.map +0 -1
  158. package/build/client/assets/tailwind-B9pSujyx.css +0 -1
  159. package/build/client/assets/test-B6zIK2V6.js +0 -2
  160. package/build/client/assets/test-B6zIK2V6.js.map +0 -1
  161. package/build/client/assets/tests-BeAEgPAw.js.map +0 -1
  162. package/build/client/assets/tooltip-6-WS-Xux.js +0 -2
  163. package/build/client/assets/tooltip-6-WS-Xux.js.map +0 -1
  164. package/build/client/assets/use-event-source-CCGBLG92.js +0 -2
  165. package/build/client/assets/use-event-source-CCGBLG92.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { PassThrough } from "stream";
3
- import { createReadableStreamFromReadable, json as json$1, createCookieSessionStorage, redirect as redirect$1, defer } from "@remix-run/node";
4
- import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useLocation, json, redirect, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, NavLink, Form, Await, useSearchParams, useSubmit, useNavigate } from "@remix-run/react";
3
+ import { createReadableStreamFromReadable, unstable_data as unstable_data$1, createCookieSessionStorage, redirect as redirect$1 } from "@remix-run/node";
4
+ import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useLocation, unstable_data, redirect, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, NavLink, Form, Await, useSearchParams, useSubmit, useNavigate } from "@remix-run/react";
5
5
  import { isbot } from "isbot";
6
6
  import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
7
7
  import path from "node:path";
@@ -79,7 +79,8 @@ import inspector from "node:inspector";
79
79
  import { Resvg } from "@resvg/resvg-js";
80
80
  import satori from "satori";
81
81
  import { generateRobotsTxt, generateSitemap } from "@nasa-gcn/remix-seo";
82
- const ABORT_DELAY = 15e3;
82
+ const streamTimeout = 15e3;
83
+ const ABORT_DELAY = streamTimeout + 1e3;
83
84
  function handleRequest(request, responseStatusCode, responseHeaders, remixContext) {
84
85
  const callbackName = isbot(request.headers.get("user-agent")) ? "onAllReady" : "onShellReady";
85
86
  return new Promise((resolve, reject) => {
@@ -112,7 +113,8 @@ function handleRequest(request, responseStatusCode, responseHeaders, remixContex
112
113
  }
113
114
  const entryServer = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
114
115
  __proto__: null,
115
- default: handleRequest
116
+ default: handleRequest,
117
+ streamTimeout
116
118
  }, Symbol.toStringTag, { value: "Module" }));
117
119
  const partykitRoom = "epic-web-presence";
118
120
  const partykitBaseUrl = `https://epic-web-presence.kentcdodds.partykit.dev/parties/main/${partykitRoom}`;
@@ -777,12 +779,12 @@ function ensureProgressiveEnhancement(formData, responseInit) {
777
779
  throw redirect(safeRedirect(redirectTo), responseInit == null ? void 0 : responseInit());
778
780
  }
779
781
  }
780
- function jsonWithPE(formData, ...args) {
782
+ function dataWithPE(formData, ...args) {
781
783
  ensureProgressiveEnhancement(formData, () => ({
782
784
  statusText: JSON.stringify(args[0]),
783
785
  ...typeof args[1] === "number" ? { status: args[1] } : args[1]
784
786
  }));
785
- return json(...args);
787
+ return unstable_data(...args);
786
788
  }
787
789
  const cookieName$1 = "EpicShop_theme";
788
790
  function getTheme(request) {
@@ -807,7 +809,7 @@ async function action$b({ request }) {
807
809
  schema: ThemeFormSchema
808
810
  });
809
811
  if (submission.status !== "success") {
810
- return json$1(submission.reply(), {
812
+ return unstable_data$1(submission.reply(), {
811
813
  // You can also use the status to determine the HTTP status code
812
814
  status: submission.status === "error" ? 400 : 200
813
815
  });
@@ -816,7 +818,7 @@ async function action$b({ request }) {
816
818
  const responseInit = {
817
819
  headers: { "set-cookie": setTheme(theme) }
818
820
  };
819
- return jsonWithPE(formData, submission.reply(), responseInit);
821
+ return dataWithPE(formData, submission.reply(), responseInit);
820
822
  }
821
823
  function ThemeSwitch() {
822
824
  const requestInfo = useRequestInfo();
@@ -878,7 +880,7 @@ const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
878
880
  useTheme
879
881
  }, Symbol.toStringTag, { value: "Module" }));
880
882
  const appStylesheetUrl = "/assets/app-b7uXHF5m.css";
881
- const tailwindStylesheetUrl = "/assets/tailwind-B9pSujyx.css";
883
+ const tailwindStylesheetUrl = "/assets/tailwind-B5AAMtGC.css";
882
884
  const cookieName = "EpicShop_confetti";
883
885
  function getConfetti(request) {
884
886
  const cookieHeader = request.headers.get("cookie");
@@ -1512,13 +1514,13 @@ const links = () => {
1512
1514
  { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }
1513
1515
  ];
1514
1516
  };
1515
- const meta$5 = ({ data }) => {
1516
- if (!data) return [];
1517
+ const meta$5 = ({ data: data2 }) => {
1518
+ if (!data2) return [];
1517
1519
  return getSeoMetaTags({
1518
- instructor: data.instructor,
1519
- title: data.workshopTitle,
1520
- description: data.workshopSubtitle,
1521
- requestInfo: data.requestInfo
1520
+ instructor: data2.instructor,
1521
+ title: data2.workshopTitle,
1522
+ description: data2.workshopSubtitle,
1523
+ requestInfo: data2.requestInfo
1522
1524
  });
1523
1525
  };
1524
1526
  async function loader$y({ request }) {
@@ -1555,7 +1557,7 @@ async function loader$y({ request }) {
1555
1557
  request,
1556
1558
  timings
1557
1559
  });
1558
- return json$1(
1560
+ return unstable_data$1(
1559
1561
  {
1560
1562
  ...asyncStuff,
1561
1563
  workshopConfig,
@@ -1628,7 +1630,7 @@ function Document({
1628
1630
  ] });
1629
1631
  }
1630
1632
  function App$1() {
1631
- const data = useLoaderData();
1633
+ const data2 = useLoaderData();
1632
1634
  const navigation = useNavigation();
1633
1635
  const showSpinner = useSpinDelay(navigation.state !== "idle", {
1634
1636
  delay: 400,
@@ -1645,11 +1647,11 @@ function App$1() {
1645
1647
  { "cursor-progress": showSpinner },
1646
1648
  altDown ? "alt-down" : null
1647
1649
  ),
1648
- env: data.ENV,
1650
+ env: data2.ENV,
1649
1651
  children: [
1650
1652
  /* @__PURE__ */ jsx(Outlet, {}),
1651
- /* @__PURE__ */ jsx(Confetti, { id: data.confettiId }),
1652
- /* @__PURE__ */ jsx(EpicToaster, { toast: data.toast }),
1653
+ /* @__PURE__ */ jsx(Confetti, { id: data2.confettiId }),
1654
+ /* @__PURE__ */ jsx(EpicToaster, { toast: data2.toast }),
1653
1655
  /* @__PURE__ */ jsx(EpicProgress, {})
1654
1656
  ]
1655
1657
  }
@@ -2114,7 +2116,7 @@ async function action$a({ request }) {
2114
2116
  return otherAreFinished ? `You completed exercise ${exerciseNumber}!` : null;
2115
2117
  }
2116
2118
  const announcement = getCompletionAnnouncement();
2117
- return jsonWithPE(formData, result, {
2119
+ return dataWithPE(formData, result, {
2118
2120
  headers: combineHeaders(
2119
2121
  announcement ? createConfettiHeaders() : null,
2120
2122
  announcement ? await createToastHeaders({
@@ -2268,7 +2270,7 @@ async function loader$w({ request }) {
2268
2270
  (_a = extractNumbersAndTypeFromAppNameOrPath(playgroundAppName ?? "")) == null ? void 0 : _a.exerciseNumber
2269
2271
  )
2270
2272
  };
2271
- const result = json$1(
2273
+ const result = unstable_data$1(
2272
2274
  {
2273
2275
  workshopTitle,
2274
2276
  exercises: exercises.map((e) => ({
@@ -2653,7 +2655,7 @@ function MobileNavigation({
2653
2655
  isMenuOpened,
2654
2656
  onMenuOpenChange: setMenuOpened
2655
2657
  }) {
2656
- const data = useLoaderData();
2658
+ const data2 = useLoaderData();
2657
2659
  const user = useOptionalUser();
2658
2660
  const nextExerciseRoute = useNextExerciseRoute();
2659
2661
  const params = useParams();
@@ -2682,7 +2684,7 @@ function MobileNavigation({
2682
2684
  /* @__PURE__ */ jsx(
2683
2685
  NavToggle,
2684
2686
  {
2685
- title: data.workshopTitle,
2687
+ title: data2.workshopTitle,
2686
2688
  isMenuOpened,
2687
2689
  setMenuOpened
2688
2690
  }
@@ -2715,9 +2717,9 @@ function MobileNavigation({
2715
2717
  children: "Home"
2716
2718
  }
2717
2719
  ) }),
2718
- data.exercises.map(({ exerciseNumber, title, steps }) => {
2720
+ data2.exercises.map(({ exerciseNumber, title, steps }) => {
2719
2721
  const isActive = Number(params.exerciseNumber) === exerciseNumber;
2720
- const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
2722
+ const showPlayground = !isActive && data2.playground.exerciseNumber === exerciseNumber;
2721
2723
  const exerciseNum = exerciseNumber.toString().padStart(2, "0");
2722
2724
  return /* @__PURE__ */ jsxs(
2723
2725
  NavigationExerciseListItem,
@@ -2773,7 +2775,7 @@ function MobileNavigation({
2773
2775
  steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
2774
2776
  const isActive2 = Number(params.stepNumber) === stepNumber;
2775
2777
  const step = stepNumber.toString().padStart(2, "0");
2776
- const isPlayground = name === data.playground.appName;
2778
+ const isPlayground = name === data2.playground.appName;
2777
2779
  return /* @__PURE__ */ jsx(
2778
2780
  NavigationExerciseStepListItem,
2779
2781
  {
@@ -2944,12 +2946,12 @@ function Navigation({
2944
2946
  isMenuOpened,
2945
2947
  onMenuOpenChange: setMenuOpened
2946
2948
  }) {
2947
- const data = useLoaderData();
2949
+ const data2 = useLoaderData();
2948
2950
  const user = useOptionalUser();
2949
2951
  const nextExerciseRoute = useNextExerciseRoute();
2950
2952
  const params = useParams();
2951
2953
  const { users } = usePresence();
2952
- const exercise = data.exercises.find(
2954
+ const exercise = data2.exercises.find(
2953
2955
  (e) => e.exerciseNumber === Number(params.exerciseNumber)
2954
2956
  );
2955
2957
  const app = params.type === "solution" ? exercise == null ? void 0 : exercise.solutions.find(
@@ -2986,7 +2988,7 @@ function Navigation({
2986
2988
  /* @__PURE__ */ jsx(
2987
2989
  NavToggle,
2988
2990
  {
2989
- title: data.workshopTitle,
2991
+ title: data2.workshopTitle,
2990
2992
  menuControls,
2991
2993
  isMenuOpened,
2992
2994
  setMenuOpened
@@ -3021,9 +3023,9 @@ function Navigation({
3021
3023
  children: "Home"
3022
3024
  }
3023
3025
  ) }),
3024
- data.exercises.map(({ exerciseNumber, title, steps }) => {
3026
+ data2.exercises.map(({ exerciseNumber, title, steps }) => {
3025
3027
  const isActive = Number(params.exerciseNumber) === exerciseNumber;
3026
- const showPlayground = !isActive && data.playground.exerciseNumber === exerciseNumber;
3028
+ const showPlayground = !isActive && data2.playground.exerciseNumber === exerciseNumber;
3027
3029
  const exerciseNum = exerciseNumber.toString().padStart(2, "0");
3028
3030
  return /* @__PURE__ */ jsxs(
3029
3031
  NavigationExerciseListItem,
@@ -3079,7 +3081,7 @@ function Navigation({
3079
3081
  steps.filter(Boolean).map(({ name, stepNumber, title: title2 }) => {
3080
3082
  const isActive2 = Number(params.stepNumber) === stepNumber;
3081
3083
  const step = stepNumber.toString().padStart(2, "0");
3082
- const isPlayground = name === data.playground.appName;
3084
+ const isPlayground = name === data2.playground.appName;
3083
3085
  return /* @__PURE__ */ jsx(
3084
3086
  NavigationExerciseStepListItem,
3085
3087
  {
@@ -3487,7 +3489,7 @@ const handle$7 = {
3487
3489
  async function loader$u({ request }) {
3488
3490
  ensureUndeployed();
3489
3491
  await requireAuthInfo({ request });
3490
- return json$1({ discordAuthUrl: getDiscordAuthURL() });
3492
+ return { discordAuthUrl: getDiscordAuthURL() };
3491
3493
  }
3492
3494
  async function action$9({ request }) {
3493
3495
  ensureUndeployed();
@@ -4181,7 +4183,7 @@ const handle$6 = {
4181
4183
  getSitemapEntries: () => null
4182
4184
  };
4183
4185
  async function loader$o() {
4184
- return json$1({ discordAuthUrl: getDiscordAuthURL() });
4186
+ return { discordAuthUrl: getDiscordAuthURL() };
4185
4187
  }
4186
4188
  function useDiscordCTALink({
4187
4189
  discordAuthUrl
@@ -4315,13 +4317,13 @@ const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
4315
4317
  const PlaybackTimeSchema = z.object({
4316
4318
  time: z.number(),
4317
4319
  expiresAt: z.string()
4318
- }).transform((data) => {
4319
- return { time: Number(data.time), expiresAt: new Date(data.expiresAt) };
4320
+ }).transform((data2) => {
4321
+ return { time: Number(data2.time), expiresAt: new Date(data2.expiresAt) };
4320
4322
  });
4321
4323
  function usePlayerPreferences() {
4322
4324
  var _a;
4323
- const data = useRouteLoaderData("root");
4324
- return ((_a = data == null ? void 0 : data.preferences) == null ? void 0 : _a.player) ?? null;
4325
+ const data2 = useRouteLoaderData("root");
4326
+ return ((_a = data2 == null ? void 0 : data2.preferences) == null ? void 0 : _a.player) ?? null;
4325
4327
  }
4326
4328
  const ignoredInputs = [
4327
4329
  "INPUT",
@@ -4345,12 +4347,12 @@ function shouldIgnoreHotkey(el) {
4345
4347
  async function action$7({ request }) {
4346
4348
  const result = PlayerPreferencesSchema.safeParse(await request.json());
4347
4349
  if (!result.success) {
4348
- return json$1({ status: "error", error: result.error.flatten() }, {
4350
+ return unstable_data$1({ status: "error", error: result.error.flatten() }, {
4349
4351
  status: 400
4350
4352
  });
4351
4353
  }
4352
4354
  await setPlayerPreferences(result.data);
4353
- return json$1({ status: "success" });
4355
+ return { status: "success" };
4354
4356
  }
4355
4357
  function useLatest(value) {
4356
4358
  const ref = React.useRef(value);
@@ -5443,13 +5445,13 @@ async function action$6({ request }) {
5443
5445
  results.push(await launchEditor(file.filepath, file.line, file.column));
5444
5446
  }
5445
5447
  if (results.every((r) => r.status === "success")) {
5446
- return jsonWithPE(formData, { status: "success" });
5448
+ return dataWithPE(formData, { status: "success" });
5447
5449
  } else {
5448
5450
  const messages = results.map(
5449
5451
  (r, index, array) => r.status === "error" ? array.length > 1 ? `${index}. ${r.message}` : r.message : null
5450
5452
  ).filter(Boolean).join("\n");
5451
5453
  console.error("Launch editor error:", messages);
5452
- return jsonWithPE(
5454
+ return dataWithPE(
5453
5455
  formData,
5454
5456
  { status: "error", message: messages },
5455
5457
  {
@@ -5791,17 +5793,17 @@ function Mdx({
5791
5793
  return /* @__PURE__ */ jsx(Component, { components });
5792
5794
  }
5793
5795
  const meta$4 = ({
5794
- data,
5796
+ data: data2,
5795
5797
  matches
5796
5798
  }) => {
5797
5799
  var _a;
5798
- const number = data == null ? void 0 : data.exercise.exerciseNumber.toString().padStart(2, "0");
5800
+ const number = data2 == null ? void 0 : data2.exercise.exerciseNumber.toString().padStart(2, "0");
5799
5801
  const rootData = (_a = matches.find((m) => m.id === "root")) == null ? void 0 : _a.data;
5800
- if (!data || !rootData) return [{ title: "🦉 | Error" }];
5802
+ if (!data2 || !rootData) return [{ title: "🦉 | Error" }];
5801
5803
  return getSeoMetaTags({
5802
- title: `📝 | ${number}. ${data.exercise.title} | ${rootData == null ? void 0 : rootData.workshopTitle}`,
5803
- description: `Introduction for ${number}. ${data.exercise.title}`,
5804
- ogTitle: data.exercise.title,
5804
+ title: `📝 | ${number}. ${data2.exercise.title} | ${rootData == null ? void 0 : rootData.workshopTitle}`,
5805
+ description: `Introduction for ${number}. ${data2.exercise.title}`,
5806
+ ogTitle: data2.exercise.title,
5805
5807
  ogDescription: `Introduction for exercise ${Number(number)}`,
5806
5808
  instructor: rootData.instructor,
5807
5809
  requestInfo: rootData.requestInfo
@@ -5830,7 +5832,7 @@ async function loader$n({ request, params }) {
5830
5832
  );
5831
5833
  const firstStep = exercise.steps.find(Boolean);
5832
5834
  const articleId = `workshop-${slugify(workshopTitle)}-${exercise.exerciseNumber}-instructions`;
5833
- return defer(
5835
+ return unstable_data$1(
5834
5836
  {
5835
5837
  articleId,
5836
5838
  exercise,
@@ -5865,11 +5867,11 @@ const headers$9 = ({ loaderHeaders, parentHeaders }) => {
5865
5867
  const mdxComponents$4 = { h1: () => null };
5866
5868
  function ExerciseNumberRoute() {
5867
5869
  var _a;
5868
- const data = useLoaderData();
5870
+ const data2 = useLoaderData();
5869
5871
  useRevalidationWS({
5870
- watchPaths: [data.exerciseReadme.file]
5872
+ watchPaths: [data2.exerciseReadme.file]
5871
5873
  });
5872
- const firstStepNumber = String(((_a = data.firstStep) == null ? void 0 : _a.stepNumber) ?? "01").padStart(
5874
+ const firstStepNumber = String(((_a = data2.firstStep) == null ? void 0 : _a.stepNumber) ?? "01").padStart(
5873
5875
  2,
5874
5876
  "0"
5875
5877
  );
@@ -5877,18 +5879,18 @@ function ExerciseNumberRoute() {
5877
5879
  /* @__PURE__ */ jsxs(
5878
5880
  "article",
5879
5881
  {
5880
- id: data.articleId,
5882
+ id: data2.articleId,
5881
5883
  className: "shadow-on-scrollbox flex w-full flex-1 flex-col gap-12 overflow-y-scroll px-3 py-4 pt-6 scrollbar-thin scrollbar-thumb-scrollbar md:px-10 md:py-12 md:pt-16",
5882
5884
  children: [
5883
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h1", { className: "text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none", children: data.exercise.title }) }),
5884
- /* @__PURE__ */ jsx("div", { children: data.exercise.instructionsCode ? /* @__PURE__ */ jsx(
5885
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h1", { className: "text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none", children: data2.exercise.title }) }),
5886
+ /* @__PURE__ */ jsx("div", { children: data2.exercise.instructionsCode ? /* @__PURE__ */ jsx(
5885
5887
  EpicVideoInfoProvider,
5886
5888
  {
5887
- epicVideoInfosPromise: data.epicVideoInfosPromise,
5889
+ epicVideoInfosPromise: data2.epicVideoInfosPromise,
5888
5890
  children: /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert sm:prose-lg", children: /* @__PURE__ */ jsx(
5889
5891
  Mdx,
5890
5892
  {
5891
- code: data.exercise.instructionsCode,
5893
+ code: data2.exercise.instructionsCode,
5892
5894
  components: mdxComponents$4
5893
5895
  }
5894
5896
  ) })
@@ -5896,20 +5898,20 @@ function ExerciseNumberRoute() {
5896
5898
  ) : "No instructions yet..." })
5897
5899
  ]
5898
5900
  },
5899
- data.articleId
5901
+ data2.articleId
5900
5902
  ),
5901
5903
  /* @__PURE__ */ jsx(
5902
5904
  ElementScrollRestoration,
5903
5905
  {
5904
- elementQuery: `#${data.articleId}`
5906
+ elementQuery: `#${data2.articleId}`
5905
5907
  },
5906
- `scroll-${data.articleId}`
5908
+ `scroll-${data2.articleId}`
5907
5909
  ),
5908
5910
  /* @__PURE__ */ jsx(
5909
5911
  ProgressToggle,
5910
5912
  {
5911
5913
  type: "instructions",
5912
- exerciseNumber: data.exerciseNumber,
5914
+ exerciseNumber: data2.exerciseNumber,
5913
5915
  className: "h-14 border-t px-6"
5914
5916
  }
5915
5917
  ),
@@ -5918,14 +5920,14 @@ function ExerciseNumberRoute() {
5918
5920
  /* @__PURE__ */ jsx(
5919
5921
  EditFileOnGitHub,
5920
5922
  {
5921
- file: data.exerciseReadme.file,
5922
- relativePath: data.exerciseReadme.relativePath
5923
+ file: data2.exerciseReadme.file,
5924
+ relativePath: data2.exerciseReadme.relativePath
5923
5925
  }
5924
5926
  ),
5925
5927
  /* @__PURE__ */ jsx(
5926
5928
  Link,
5927
5929
  {
5928
- to: `${firstStepNumber}/${data.firstType}`,
5930
+ to: `${firstStepNumber}/${data2.firstType}`,
5929
5931
  prefetch: "intent",
5930
5932
  className: "flex h-full items-center justify-center bg-foreground px-7 text-background",
5931
5933
  children: "Start Learning"
@@ -5964,7 +5966,7 @@ async function loader$m({ request, params }) {
5964
5966
  if (!exercise) {
5965
5967
  throw new Response("Not found", { status: 404 });
5966
5968
  }
5967
- const result = json$1(
5969
+ const result = unstable_data$1(
5968
5970
  {
5969
5971
  exerciseNumber: exercise.exerciseNumber,
5970
5972
  exerciseTitle: exercise.title,
@@ -6229,8 +6231,8 @@ async function prepareForDiff(app1, app2) {
6229
6231
  const { name: name2, ...rest2 } = pkg2;
6230
6232
  return JSON.stringify(rest1) === JSON.stringify(rest2);
6231
6233
  };
6232
- const app1PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app1.fullPath, "package.json")) : {};
6233
- const app2PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app2.fullPath, "package.json")) : {};
6234
+ const app1PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app1.fullPath, "package.json")).catch(() => ({})) : {};
6235
+ const app2PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app2.fullPath, "package.json")).catch(() => ({})) : {};
6234
6236
  const pkgJsonIgnore = comparePkgJson(app1PkgJson, app2PkgJson) ? ["package.json"] : [];
6235
6237
  const workshopIgnore = [
6236
6238
  ...await getDiffIgnore(path$1.join(workshopRoot, ".gitignore")),
@@ -6468,7 +6470,7 @@ async function action$5({ request }) {
6468
6470
  };
6469
6471
  const result = SetPlaygroundSchema.safeParse(rawData);
6470
6472
  if (!result.success) {
6471
- return jsonWithPE(
6473
+ return dataWithPE(
6472
6474
  formData,
6473
6475
  { status: "error", error: result.error.message },
6474
6476
  { status: 400 }
@@ -6477,7 +6479,7 @@ async function action$5({ request }) {
6477
6479
  const form = result.data;
6478
6480
  const app = await getAppByName(form.appName);
6479
6481
  if (!app) {
6480
- return jsonWithPE(
6482
+ return dataWithPE(
6481
6483
  formData,
6482
6484
  { status: "error", error: `App ${form.appName} not found` },
6483
6485
  { status: 404 }
@@ -6489,7 +6491,7 @@ async function action$5({ request }) {
6489
6491
  } catch (error) {
6490
6492
  const message = getErrorMessage(error);
6491
6493
  console.error("Error setting playground", message);
6492
- return json$1({ status: "error", error: message }, {
6494
+ return unstable_data$1({ status: "error", error: message }, {
6493
6495
  status: 500,
6494
6496
  headers: await createToastHeaders({
6495
6497
  type: "error",
@@ -6503,7 +6505,7 @@ async function action$5({ request }) {
6503
6505
  if (playground && converseApp) {
6504
6506
  void getDiffCode(playground, converseApp, { forceFresh: true });
6505
6507
  }
6506
- return jsonWithPE(formData, { status: "success" });
6508
+ return dataWithPE(formData, { status: "success" });
6507
6509
  }
6508
6510
  function SetPlayground({
6509
6511
  appName,
@@ -6588,14 +6590,14 @@ function PlaygroundChooser({
6588
6590
  align: "start",
6589
6591
  className: "z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",
6590
6592
  children: [
6591
- /* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronUp" }) }),
6593
+ /* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex h-5 cursor-default items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronUp" }) }),
6592
6594
  /* @__PURE__ */ jsx(Select.Viewport, { className: "p-3", children: /* @__PURE__ */ jsxs(Select.Group, { children: [
6593
6595
  /* @__PURE__ */ jsx(Select.Label, { className: "px-5 pb-3 font-mono uppercase", children: "App" }),
6594
6596
  allApps.filter((app) => app.name !== "playground").map((app) => {
6595
6597
  return /* @__PURE__ */ jsx(SelectItem$1, { value: app.name, children: app.displayName }, app.name);
6596
6598
  })
6597
6599
  ] }) }),
6598
- /* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
6600
+ /* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
6599
6601
  ]
6600
6602
  }
6601
6603
  ) })
@@ -6943,34 +6945,34 @@ function TouchedFiles({
6943
6945
  ) })
6944
6946
  ] }) });
6945
6947
  }
6946
- function pageTitle(data, workshopTitle) {
6948
+ function pageTitle(data2, workshopTitle) {
6947
6949
  var _a;
6948
- const exerciseNumber = (data == null ? void 0 : data.exerciseStepApp.exerciseNumber.toString().padStart(2, "0")) ?? "00";
6949
- const stepNumber = (data == null ? void 0 : data.exerciseStepApp.stepNumber.toString().padStart(2, "0")) ?? "00";
6950
+ const exerciseNumber = (data2 == null ? void 0 : data2.exerciseStepApp.exerciseNumber.toString().padStart(2, "0")) ?? "00";
6951
+ const stepNumber = (data2 == null ? void 0 : data2.exerciseStepApp.stepNumber.toString().padStart(2, "0")) ?? "00";
6950
6952
  const emoji = {
6951
6953
  problem: "💪",
6952
6954
  solution: "🏁"
6953
- }[(data == null ? void 0 : data.type) ?? "problem"];
6954
- const title = ((_a = data == null ? void 0 : data[data.type]) == null ? void 0 : _a.title) ?? "N/A";
6955
+ }[(data2 == null ? void 0 : data2.type) ?? "problem"];
6956
+ const title = ((_a = data2 == null ? void 0 : data2[data2.type]) == null ? void 0 : _a.title) ?? "N/A";
6955
6957
  return {
6956
6958
  emoji,
6957
6959
  stepNumber,
6958
6960
  title,
6959
6961
  exerciseNumber,
6960
- exerciseTitle: (data == null ? void 0 : data.exerciseTitle) ?? "Unknown exercise",
6962
+ exerciseTitle: (data2 == null ? void 0 : data2.exerciseTitle) ?? "Unknown exercise",
6961
6963
  workshopTitle,
6962
- type: (data == null ? void 0 : data.type) ?? "problem"
6964
+ type: (data2 == null ? void 0 : data2.type) ?? "problem"
6963
6965
  };
6964
6966
  }
6965
6967
  const meta$3 = ({
6966
- data,
6968
+ data: data2,
6967
6969
  matches,
6968
6970
  params
6969
6971
  }) => {
6970
6972
  var _a;
6971
6973
  const rootData = (_a = matches.find((m) => m.id === "root")) == null ? void 0 : _a.data;
6972
- if (!data || !rootData) return [{ title: "🦉 | Error" }];
6973
- const { emoji, stepNumber, title, exerciseNumber, exerciseTitle } = pageTitle(data);
6974
+ if (!data2 || !rootData) return [{ title: "🦉 | Error" }];
6975
+ const { emoji, stepNumber, title, exerciseNumber, exerciseTitle } = pageTitle(data2);
6974
6976
  return getSeoMetaTags({
6975
6977
  title: `${emoji} | ${stepNumber}. ${title} | ${exerciseNumber}. ${exerciseTitle} | ${rootData.workshopTitle}`,
6976
6978
  description: `${params.type} step for exercise ${exerciseNumber}. ${exerciseTitle}`,
@@ -7048,7 +7050,7 @@ async function loader$l({ request, params }) {
7048
7050
  const subroute = url.pathname.split(
7049
7051
  `/exercise/${params.exerciseNumber}/${params.stepNumber}/${params.type}/`
7050
7052
  )[1];
7051
- return defer(
7053
+ return unstable_data$1(
7052
7054
  {
7053
7055
  articleId,
7054
7056
  type: params.type,
@@ -7117,11 +7119,11 @@ const headers$7 = ({ loaderHeaders, parentHeaders }) => {
7117
7119
  };
7118
7120
  function ExercisePartRoute$1() {
7119
7121
  var _a;
7120
- const data = useLoaderData();
7122
+ const data2 = useLoaderData();
7121
7123
  const inBrowserBrowserRef = useRef(null);
7122
- const titleBits = pageTitle(data);
7124
+ const titleBits = pageTitle(data2);
7123
7125
  useRevalidationWS({
7124
- watchPaths: [`${data.exerciseStepApp.relativePath}/README.mdx`]
7126
+ watchPaths: [`${data2.exerciseStepApp.relativePath}/README.mdx`]
7125
7127
  });
7126
7128
  return /* @__PURE__ */ jsx("div", { className: "flex max-w-full flex-grow flex-col", children: /* @__PURE__ */ jsxs("main", { className: "flex flex-grow flex-col sm:grid sm:h-full sm:min-h-[800px] sm:grid-cols-1 sm:grid-rows-2 md:min-h-[unset] lg:grid-cols-2 lg:grid-rows-1", children: [
7127
7129
  /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col sm:col-span-1 sm:row-span-1 sm:h-full lg:border-r", children: [
@@ -7151,29 +7153,29 @@ function ExercisePartRoute$1() {
7151
7153
  ")"
7152
7154
  ] })
7153
7155
  ] }),
7154
- data.problem && ((_a = data.playground) == null ? void 0 : _a.appName) !== data.problem.name ? /* @__PURE__ */ jsx("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx(SetAppToPlayground, { appName: data.problem.name }) }) : null
7156
+ data2.problem && ((_a = data2.playground) == null ? void 0 : _a.appName) !== data2.problem.name ? /* @__PURE__ */ jsx("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx(SetAppToPlayground, { appName: data2.problem.name }) }) : null
7155
7157
  ] }) }),
7156
7158
  /* @__PURE__ */ jsxs(
7157
7159
  "article",
7158
7160
  {
7159
- id: data.articleId,
7161
+ id: data2.articleId,
7160
7162
  className: "shadow-on-scrollbox flex h-full w-full max-w-none flex-1 scroll-pt-6 flex-col justify-between space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",
7161
7163
  children: [
7162
- data.exerciseStepApp.instructionsCode ? /* @__PURE__ */ jsx(StepMdx, { inBrowserBrowserRef }) : /* @__PURE__ */ jsx("div", { className: "flex h-full items-center justify-center text-lg", children: /* @__PURE__ */ jsx("p", { children: "No instructions yet..." }) }),
7164
+ data2.exerciseStepApp.instructionsCode ? /* @__PURE__ */ jsx(StepMdx, { inBrowserBrowserRef }) : /* @__PURE__ */ jsx("div", { className: "flex h-full items-center justify-center text-lg", children: /* @__PURE__ */ jsx("p", { children: "No instructions yet..." }) }),
7163
7165
  /* @__PURE__ */ jsxs("div", { className: "mt-auto flex justify-between", children: [
7164
- data.prevStepLink ? /* @__PURE__ */ jsx(
7166
+ data2.prevStepLink ? /* @__PURE__ */ jsx(
7165
7167
  Link,
7166
7168
  {
7167
- to: data.prevStepLink.to,
7169
+ to: data2.prevStepLink.to,
7168
7170
  "aria-label": "Previous Step",
7169
7171
  prefetch: "intent",
7170
7172
  children: "← Previous"
7171
7173
  }
7172
7174
  ) : /* @__PURE__ */ jsx("span", {}),
7173
- data.nextStepLink ? /* @__PURE__ */ jsx(
7175
+ data2.nextStepLink ? /* @__PURE__ */ jsx(
7174
7176
  Link,
7175
7177
  {
7176
- to: data.nextStepLink.to,
7178
+ to: data2.nextStepLink.to,
7177
7179
  "aria-label": "Next Step",
7178
7180
  prefetch: "intent",
7179
7181
  children: "Next →"
@@ -7182,42 +7184,42 @@ function ExercisePartRoute$1() {
7182
7184
  ] })
7183
7185
  ]
7184
7186
  },
7185
- data.articleId
7187
+ data2.articleId
7186
7188
  ),
7187
7189
  /* @__PURE__ */ jsx(
7188
7190
  ElementScrollRestoration,
7189
7191
  {
7190
- elementQuery: `#${data.articleId}`
7192
+ elementQuery: `#${data2.articleId}`
7191
7193
  },
7192
- `scroll-${data.articleId}`
7194
+ `scroll-${data2.articleId}`
7193
7195
  ),
7194
- data.type === "solution" ? /* @__PURE__ */ jsx(
7196
+ data2.type === "solution" ? /* @__PURE__ */ jsx(
7195
7197
  ProgressToggle,
7196
7198
  {
7197
7199
  type: "step",
7198
- exerciseNumber: data.exerciseStepApp.exerciseNumber,
7199
- stepNumber: data.exerciseStepApp.stepNumber,
7200
+ exerciseNumber: data2.exerciseStepApp.exerciseNumber,
7201
+ stepNumber: data2.exerciseStepApp.stepNumber,
7200
7202
  className: "h-14 border-t px-6"
7201
7203
  }
7202
7204
  ) : null,
7203
7205
  /* @__PURE__ */ jsxs("div", { className: "flex h-16 justify-between border-b-4 border-t lg:border-b-0", children: [
7204
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: "h-full", children: /* @__PURE__ */ jsx(TouchedFiles, { diffFilesPromise: data.diffFiles }) }) }),
7206
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: "h-full", children: /* @__PURE__ */ jsx(TouchedFiles, { diffFilesPromise: data2.diffFiles }) }) }),
7205
7207
  /* @__PURE__ */ jsx(
7206
7208
  EditFileOnGitHub,
7207
7209
  {
7208
- appName: data.exerciseStepApp.name,
7209
- relativePath: data.exerciseStepApp.relativePath
7210
+ appName: data2.exerciseStepApp.name,
7211
+ relativePath: data2.exerciseStepApp.relativePath
7210
7212
  }
7211
7213
  ),
7212
7214
  /* @__PURE__ */ jsx(
7213
7215
  NavChevrons,
7214
7216
  {
7215
- prev: data.prevStepLink ? {
7216
- to: data.prevStepLink.to,
7217
+ prev: data2.prevStepLink ? {
7218
+ to: data2.prevStepLink.to,
7217
7219
  "aria-label": "Previous Step"
7218
7220
  } : null,
7219
- next: data.nextStepLink ? {
7220
- to: data.nextStepLink.to,
7221
+ next: data2.nextStepLink ? {
7222
+ to: data2.nextStepLink.to,
7221
7223
  "aria-label": "Next Step"
7222
7224
  } : null
7223
7225
  }
@@ -7269,10 +7271,10 @@ async function action$4({ request }) {
7269
7271
  const appRunningResult = await waitOnApp(app);
7270
7272
  if ((appRunningResult == null ? void 0 : appRunningResult.status) === "success") {
7271
7273
  await new Promise((resolve) => setTimeout(resolve, 200));
7272
- return jsonWithPE(formData, { status: "app-started" });
7274
+ return dataWithPE(formData, { status: "app-started" });
7273
7275
  } else if (app.dev.type === "script") {
7274
7276
  const errorMessage = appRunningResult ? appRunningResult.error : "Unknown error";
7275
- return json$1(
7277
+ return unstable_data$1(
7276
7278
  {
7277
7279
  status: "app-not-started",
7278
7280
  error: errorMessage,
@@ -7290,7 +7292,7 @@ async function action$4({ request }) {
7290
7292
  );
7291
7293
  }
7292
7294
  } else if (result.portNumber) {
7293
- return jsonWithPE(formData, {
7295
+ return dataWithPE(formData, {
7294
7296
  status: "app-not-started",
7295
7297
  error: result.status,
7296
7298
  port: result.portNumber
@@ -7305,7 +7307,7 @@ async function action$4({ request }) {
7305
7307
  async function stopApp() {
7306
7308
  invariant(app, "app must be defined");
7307
7309
  await closeProcess(app.name);
7308
- return jsonWithPE(formData, { status: "app-stopped" });
7310
+ return dataWithPE(formData, { status: "app-stopped" });
7309
7311
  }
7310
7312
  switch (intent) {
7311
7313
  case "start": {
@@ -7324,7 +7326,7 @@ async function action$4({ request }) {
7324
7326
  const port2 = formData.get("port");
7325
7327
  invariantResponse(typeof port2 === "string", "port is required");
7326
7328
  await stopPort(port2);
7327
- return jsonWithPE(formData, { status: "port-stopped" });
7329
+ return dataWithPE(formData, { status: "port-stopped" });
7328
7330
  }
7329
7331
  throw new Error(`Unknown intent: ${intent}`);
7330
7332
  }
@@ -7849,23 +7851,29 @@ async function loader$k({ request, params }) {
7849
7851
  const timings = makeTimings("exercise-step-test");
7850
7852
  const exerciseStepApp = await requireExerciseApp(params, { request, timings });
7851
7853
  const { isRunning, portIsAvailable } = await getAppRunningState(exerciseStepApp);
7852
- return json$1({
7853
- appInfo: {
7854
- isRunning,
7855
- name: exerciseStepApp.name,
7856
- title: exerciseStepApp.title,
7857
- portIsAvailable,
7858
- type: exerciseStepApp.type,
7859
- fullPath: exerciseStepApp.fullPath,
7860
- dev: exerciseStepApp.dev,
7861
- test: exerciseStepApp.test,
7862
- stackBlitzUrl: exerciseStepApp.stackBlitzUrl
7854
+ return unstable_data$1(
7855
+ {
7856
+ appInfo: {
7857
+ isRunning,
7858
+ name: exerciseStepApp.name,
7859
+ title: exerciseStepApp.title,
7860
+ portIsAvailable,
7861
+ type: exerciseStepApp.type,
7862
+ fullPath: exerciseStepApp.fullPath,
7863
+ dev: exerciseStepApp.dev,
7864
+ test: exerciseStepApp.test,
7865
+ stackBlitzUrl: exerciseStepApp.stackBlitzUrl
7866
+ }
7867
+ },
7868
+ {
7869
+ headers: {
7870
+ "Server-Timing": timings.toString()
7871
+ }
7863
7872
  }
7864
- });
7873
+ );
7865
7874
  }
7866
7875
  const headers$6 = ({ loaderHeaders, parentHeaders }) => {
7867
7876
  const headers2 = {
7868
- "Cache-Control": loaderHeaders.get("Cache-Control") ?? "",
7869
7877
  "Server-Timing": combineServerTimings(loaderHeaders, parentHeaders)
7870
7878
  };
7871
7879
  return headers2;
@@ -8761,15 +8769,15 @@ async function loader$j({ request }) {
8761
8769
  const url = new URL(request.url);
8762
8770
  const name = url.searchParams.get("name");
8763
8771
  if (!name) {
8764
- return json$1({ error: "Missing name" }, { status: 400 });
8772
+ return unstable_data$1({ error: "Missing name" }, { status: 400 });
8765
8773
  }
8766
8774
  const app = await getAppByName(name);
8767
8775
  if (!app) {
8768
- return json$1({ error: "App not found" }, { status: 404 });
8776
+ return unstable_data$1({ error: "App not found" }, { status: 404 });
8769
8777
  }
8770
8778
  const processEntry = getTestProcessEntry(app);
8771
8779
  if (!processEntry) {
8772
- return json$1({ error: "App is not running tests" }, { status: 404 });
8780
+ return unstable_data$1({ error: "App is not running tests" }, { status: 404 });
8773
8781
  }
8774
8782
  return eventStream(request.signal, function setup(send) {
8775
8783
  var _a, _b;
@@ -8799,17 +8807,17 @@ async function loader$j({ request }) {
8799
8807
  return () => {
8800
8808
  };
8801
8809
  }
8802
- function handleStdOutData(data) {
8810
+ function handleStdOutData(data2) {
8803
8811
  sendEvent({
8804
8812
  type: "stdout",
8805
- data: data.toString("utf-8"),
8813
+ data: data2.toString("utf-8"),
8806
8814
  timestamp: Date.now()
8807
8815
  });
8808
8816
  }
8809
- function handleStdErrData(data) {
8817
+ function handleStdErrData(data2) {
8810
8818
  sendEvent({
8811
8819
  type: "stderr",
8812
- data: data.toString("utf-8"),
8820
+ data: data2.toString("utf-8"),
8813
8821
  timestamp: Date.now()
8814
8822
  });
8815
8823
  }
@@ -8840,7 +8848,7 @@ async function action$3({ request }) {
8840
8848
  request
8841
8849
  });
8842
8850
  if (!userHasAccess) {
8843
- return jsonWithPE(
8851
+ return dataWithPE(
8844
8852
  formData,
8845
8853
  {
8846
8854
  success: false,
@@ -8860,7 +8868,7 @@ async function action$3({ request }) {
8860
8868
  name: formData.get("name")
8861
8869
  });
8862
8870
  if (!result.success) {
8863
- return jsonWithPE(
8871
+ return dataWithPE(
8864
8872
  formData,
8865
8873
  { success: false, error: result.error.flatten() },
8866
8874
  { status: 400 }
@@ -8868,7 +8876,7 @@ async function action$3({ request }) {
8868
8876
  }
8869
8877
  const app = await getAppByName(result.data.name);
8870
8878
  if (!app) {
8871
- return jsonWithPE(
8879
+ return dataWithPE(
8872
8880
  formData,
8873
8881
  { success: false, error: "App not found" },
8874
8882
  { status: 404 }
@@ -8877,18 +8885,18 @@ async function action$3({ request }) {
8877
8885
  switch (result.data.intent) {
8878
8886
  case "run": {
8879
8887
  void runAppTests(app);
8880
- return jsonWithPE(formData, { success: true });
8888
+ return dataWithPE(formData, { success: true });
8881
8889
  }
8882
8890
  case "stop": {
8883
8891
  const processEntry = getTestProcessEntry(app);
8884
8892
  if (processEntry) {
8885
8893
  (_a = processEntry.process) == null ? void 0 : _a.kill();
8886
8894
  }
8887
- return jsonWithPE(formData, { success: true });
8895
+ return dataWithPE(formData, { success: true });
8888
8896
  }
8889
8897
  case "clear": {
8890
8898
  clearTestProcessEntry(app);
8891
- return jsonWithPE(formData, { success: true });
8899
+ return dataWithPE(formData, { success: true });
8892
8900
  }
8893
8901
  }
8894
8902
  }
@@ -9268,7 +9276,7 @@ async function loader$i({ request, params }) {
9268
9276
  diffCode
9269
9277
  };
9270
9278
  }
9271
- return defer(
9279
+ return unstable_data$1(
9272
9280
  {
9273
9281
  type: params.type,
9274
9282
  exerciseStepApp,
@@ -9343,7 +9351,7 @@ function withParam(searchParams, key, value) {
9343
9351
  }
9344
9352
  function ExercisePartRoute() {
9345
9353
  var _a, _b, _c, _d, _e, _f;
9346
- const data = useLoaderData();
9354
+ const data2 = useLoaderData();
9347
9355
  const [searchParams] = useSearchParams();
9348
9356
  const preview = searchParams.get("preview");
9349
9357
  const inBrowserBrowserRef = useRef(null);
@@ -9352,12 +9360,12 @@ function ExercisePartRoute() {
9352
9360
  function shouldHideTab(tab) {
9353
9361
  var _a2, _b2, _c2;
9354
9362
  if (tab === "tests") {
9355
- return ENV.EPICSHOP_DEPLOYED || !data.playground || data.playground.test.type === "none";
9363
+ return ENV.EPICSHOP_DEPLOYED || !data2.playground || data2.playground.test.type === "none";
9356
9364
  }
9357
9365
  if (tab === "problem" || tab === "solution") {
9358
- if (((_a2 = data[tab]) == null ? void 0 : _a2.dev.type) === "none") return true;
9366
+ if (((_a2 = data2[tab]) == null ? void 0 : _a2.dev.type) === "none") return true;
9359
9367
  if (ENV.EPICSHOP_DEPLOYED) {
9360
- return ((_b2 = data[tab]) == null ? void 0 : _b2.dev.type) !== "browser" && !((_c2 = data[tab]) == null ? void 0 : _c2.stackBlitzUrl);
9368
+ return ((_b2 = data2[tab]) == null ? void 0 : _b2.dev.type) !== "browser" && !((_c2 = data2[tab]) == null ? void 0 : _c2.stackBlitzUrl);
9361
9369
  }
9362
9370
  }
9363
9371
  if (tab === "playground" && ENV.EPICSHOP_DEPLOYED) return true;
@@ -9365,8 +9373,8 @@ function ExercisePartRoute() {
9365
9373
  }
9366
9374
  const activeTab = isValidPreview(preview) ? preview : tabs.find((t) => !shouldHideTab(t));
9367
9375
  const altDiffUrl = `/diff?${new URLSearchParams({
9368
- app1: ((_a = data.problem) == null ? void 0 : _a.name) ?? "",
9369
- app2: ((_b = data.solution) == null ? void 0 : _b.name) ?? ""
9376
+ app1: ((_a = data2.problem) == null ? void 0 : _a.name) ?? "",
9377
+ app2: ((_b = data2.solution) == null ? void 0 : _b.name) ?? ""
9370
9378
  })}`;
9371
9379
  function handleDiffTabClick(event) {
9372
9380
  if (event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey) {
@@ -9411,11 +9419,11 @@ function ExercisePartRoute() {
9411
9419
  children: /* @__PURE__ */ jsx(
9412
9420
  Playground,
9413
9421
  {
9414
- appInfo: data.playground,
9415
- problemAppName: (_c = data.problem) == null ? void 0 : _c.name,
9422
+ appInfo: data2.playground,
9423
+ problemAppName: (_c = data2.problem) == null ? void 0 : _c.name,
9416
9424
  inBrowserBrowserRef,
9417
- allApps: data.allApps,
9418
- isUpToDate: ((_d = data.playground) == null ? void 0 : _d.isUpToDate) ?? false
9425
+ allApps: data2.allApps,
9426
+ isUpToDate: ((_d = data2.playground) == null ? void 0 : _d.isUpToDate) ?? false
9419
9427
  }
9420
9428
  )
9421
9429
  }
@@ -9428,7 +9436,7 @@ function ExercisePartRoute() {
9428
9436
  children: /* @__PURE__ */ jsx(
9429
9437
  Preview,
9430
9438
  {
9431
- appInfo: data.problem,
9439
+ appInfo: data2.problem,
9432
9440
  inBrowserBrowserRef
9433
9441
  }
9434
9442
  )
@@ -9442,7 +9450,7 @@ function ExercisePartRoute() {
9442
9450
  children: /* @__PURE__ */ jsx(
9443
9451
  Preview,
9444
9452
  {
9445
- appInfo: data.solution,
9453
+ appInfo: data2.solution,
9446
9454
  inBrowserBrowserRef
9447
9455
  }
9448
9456
  )
@@ -9456,10 +9464,10 @@ function ExercisePartRoute() {
9456
9464
  children: /* @__PURE__ */ jsx(
9457
9465
  Tests,
9458
9466
  {
9459
- appInfo: data.playground,
9460
- problemAppName: (_e = data.problem) == null ? void 0 : _e.name,
9461
- allApps: data.allApps,
9462
- isUpToDate: ((_f = data.playground) == null ? void 0 : _f.isUpToDate) ?? false
9467
+ appInfo: data2.playground,
9468
+ problemAppName: (_e = data2.problem) == null ? void 0 : _e.name,
9469
+ allApps: data2.allApps,
9470
+ isUpToDate: ((_f = data2.playground) == null ? void 0 : _f.isUpToDate) ?? false
9463
9471
  }
9464
9472
  )
9465
9473
  }
@@ -9469,7 +9477,7 @@ function ExercisePartRoute() {
9469
9477
  {
9470
9478
  value: "diff",
9471
9479
  className: "flex h-full w-full flex-grow items-start justify-center self-start radix-state-inactive:hidden",
9472
- children: /* @__PURE__ */ jsx(Diff, { diff: data.diff, allApps: data.allApps })
9480
+ children: /* @__PURE__ */ jsx(Diff, { diff: data2.diff, allApps: data2.allApps })
9473
9481
  }
9474
9482
  ),
9475
9483
  /* @__PURE__ */ jsx(
@@ -9505,12 +9513,19 @@ const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
9505
9513
  async function loader$h({ request, params }) {
9506
9514
  const timings = makeTimings("exercise-step-test");
9507
9515
  const exerciseStepApp = await requireExerciseApp(params, { request, timings });
9508
- return json$1({
9509
- appInfo: {
9510
- name: exerciseStepApp == null ? void 0 : exerciseStepApp.name,
9511
- test: exerciseStepApp == null ? void 0 : exerciseStepApp.test
9516
+ return unstable_data$1(
9517
+ {
9518
+ appInfo: {
9519
+ name: exerciseStepApp == null ? void 0 : exerciseStepApp.name,
9520
+ test: exerciseStepApp == null ? void 0 : exerciseStepApp.test
9521
+ }
9522
+ },
9523
+ {
9524
+ headers: {
9525
+ "Server-Timing": timings.toString()
9526
+ }
9512
9527
  }
9513
- });
9528
+ );
9514
9529
  }
9515
9530
  const headers$4 = ({ loaderHeaders, parentHeaders }) => {
9516
9531
  const headers2 = {
@@ -9554,17 +9569,17 @@ const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
9554
9569
  loader: loader$g
9555
9570
  }, Symbol.toStringTag, { value: "Module" }));
9556
9571
  const meta$2 = ({
9557
- data,
9572
+ data: data2,
9558
9573
  matches
9559
9574
  }) => {
9560
9575
  var _a;
9561
- const number = data == null ? void 0 : data.exercise.exerciseNumber.toString().padStart(2, "0");
9576
+ const number = data2 == null ? void 0 : data2.exercise.exerciseNumber.toString().padStart(2, "0");
9562
9577
  const rootData = (_a = matches.find((m) => m.id === "root")) == null ? void 0 : _a.data;
9563
- if (!data || !rootData) return [{ title: "🦉 | Error" }];
9578
+ if (!data2 || !rootData) return [{ title: "🦉 | Error" }];
9564
9579
  return getSeoMetaTags({
9565
- title: `🦉 | ${number}. ${data.exercise.title} | ${rootData == null ? void 0 : rootData.workshopTitle}`,
9566
- description: `Elaboration for ${number}. ${data.exercise.title}`,
9567
- ogTitle: `Finished: ${data.exercise.title}`,
9580
+ title: `🦉 | ${number}. ${data2.exercise.title} | ${rootData == null ? void 0 : rootData.workshopTitle}`,
9581
+ description: `Elaboration for ${number}. ${data2.exercise.title}`,
9582
+ ogTitle: `Finished: ${data2.exercise.title}`,
9568
9583
  ogDescription: `Elaboration for exercise ${Number(number)}`,
9569
9584
  instructor: rootData.instructor,
9570
9585
  requestInfo: rootData.requestInfo
@@ -9597,7 +9612,7 @@ async function loader$f({ request, params }) {
9597
9612
  const exerciseApps = apps.filter(isExerciseStepApp).filter((app) => app.exerciseNumber === exercise.exerciseNumber);
9598
9613
  const prevApp = exerciseApps[exerciseApps.length - 1];
9599
9614
  const articleId = `workshop-${slugify(workshopConfig.title)}-${exercise.exerciseNumber}-finished`;
9600
- return defer(
9615
+ return unstable_data$1(
9601
9616
  {
9602
9617
  articleId,
9603
9618
  workshopTitle: workshopConfig.title,
@@ -9639,15 +9654,15 @@ const headers$3 = ({ loaderHeaders, parentHeaders }) => {
9639
9654
  };
9640
9655
  const mdxComponents$2 = { h1: () => null };
9641
9656
  function ExerciseFinished$1() {
9642
- const data = useLoaderData();
9643
- const exerciseNumber = data.exercise.exerciseNumber.toString().padStart(2, "0");
9657
+ const data2 = useLoaderData();
9658
+ const exerciseNumber = data2.exercise.exerciseNumber.toString().padStart(2, "0");
9644
9659
  useRevalidationWS({
9645
9660
  watchPaths: [`./exercises/${exerciseNumber}/FINISHED.mdx`]
9646
9661
  });
9647
9662
  return /* @__PURE__ */ jsx("div", { className: "flex max-w-full flex-grow flex-col", children: /* @__PURE__ */ jsxs("main", { className: "flex flex-grow flex-col sm:grid sm:h-full sm:min-h-[800px] sm:grid-cols-1 sm:grid-rows-2 md:min-h-[unset] lg:grid-cols-2 lg:grid-rows-1", children: [
9648
9663
  /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col sm:col-span-1 sm:row-span-1 sm:h-full lg:border-r", children: [
9649
9664
  /* @__PURE__ */ jsx("h1", { className: "h-14 border-b pl-10 pr-5 text-sm font-medium leading-tight", children: /* @__PURE__ */ jsx("div", { className: "flex h-14 flex-wrap items-center justify-between gap-x-2 py-2", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start gap-x-2", children: [
9650
- /* @__PURE__ */ jsx(Link, { to: `/${exerciseNumber}`, className: "hover:underline", children: `${exerciseNumber}. ${data.exercise.title}` }),
9665
+ /* @__PURE__ */ jsx(Link, { to: `/${exerciseNumber}`, className: "hover:underline", children: `${exerciseNumber}. ${data2.exercise.title}` }),
9651
9666
  /* @__PURE__ */ jsx("span", { children: "/" }),
9652
9667
  /* @__PURE__ */ jsx("span", { children: "Elaboration" })
9653
9668
  ] }) }) }),
@@ -9655,15 +9670,15 @@ function ExerciseFinished$1() {
9655
9670
  "article",
9656
9671
  {
9657
9672
  className: "shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",
9658
- id: data.articleId,
9659
- children: data.exercise.finishedCode ? /* @__PURE__ */ jsx(
9673
+ id: data2.articleId,
9674
+ children: data2.exercise.finishedCode ? /* @__PURE__ */ jsx(
9660
9675
  EpicVideoInfoProvider,
9661
9676
  {
9662
- epicVideoInfosPromise: data.epicVideoInfosPromise,
9677
+ epicVideoInfosPromise: data2.epicVideoInfosPromise,
9663
9678
  children: /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert sm:prose-lg", children: /* @__PURE__ */ jsx(
9664
9679
  Mdx,
9665
9680
  {
9666
- code: data.exercise.finishedCode,
9681
+ code: data2.exercise.finishedCode,
9667
9682
  components: mdxComponents$2
9668
9683
  }
9669
9684
  ) })
@@ -9674,12 +9689,12 @@ function ExerciseFinished$1() {
9674
9689
  )
9675
9690
  }
9676
9691
  ),
9677
- /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data.articleId}` }),
9692
+ /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data2.articleId}` }),
9678
9693
  /* @__PURE__ */ jsx(
9679
9694
  ProgressToggle,
9680
9695
  {
9681
9696
  type: "finished",
9682
- exerciseNumber: data.exercise.exerciseNumber,
9697
+ exerciseNumber: data2.exercise.exerciseNumber,
9683
9698
  className: "h-14 border-t px-6"
9684
9699
  }
9685
9700
  ),
@@ -9688,18 +9703,18 @@ function ExerciseFinished$1() {
9688
9703
  /* @__PURE__ */ jsx(
9689
9704
  EditFileOnGitHub,
9690
9705
  {
9691
- file: data.exerciseFinished.file,
9692
- relativePath: data.exerciseFinished.relativePath
9706
+ file: data2.exerciseFinished.file,
9707
+ relativePath: data2.exerciseFinished.relativePath
9693
9708
  }
9694
9709
  ),
9695
- /* @__PURE__ */ jsx(NavChevrons, { prev: data.prevStepLink, next: data.nextStepLink })
9710
+ /* @__PURE__ */ jsx(NavChevrons, { prev: data2.prevStepLink, next: data2.nextStepLink })
9696
9711
  ] })
9697
9712
  ] }),
9698
9713
  /* @__PURE__ */ jsx(
9699
9714
  Survey$1,
9700
9715
  {
9701
- exerciseFormEmbedUrl: data.exerciseFormEmbedUrl,
9702
- exerciseTitle: data.exercise.title
9716
+ exerciseFormEmbedUrl: data2.exerciseFormEmbedUrl,
9717
+ exerciseTitle: data2.exercise.title
9703
9718
  }
9704
9719
  )
9705
9720
  ] }) });
@@ -9771,7 +9786,7 @@ async function loader$e({ request }) {
9771
9786
  "{workshopTitle}",
9772
9787
  encodeURIComponent(workshopTitle)
9773
9788
  );
9774
- return defer(
9789
+ return unstable_data$1(
9775
9790
  {
9776
9791
  articleId: `workshop-${slugify(workshopTitle)}-finished`,
9777
9792
  workshopTitle,
@@ -9805,12 +9820,12 @@ const headers$2 = ({ loaderHeaders, parentHeaders }) => {
9805
9820
  };
9806
9821
  const mdxComponents$1 = { h1: () => null };
9807
9822
  function ExerciseFinished() {
9808
- const data = useLoaderData();
9823
+ const data2 = useLoaderData();
9809
9824
  useRevalidationWS({ watchPaths: ["./exercises/FINISHED.mdx"] });
9810
9825
  return /* @__PURE__ */ jsx("div", { className: "flex h-full flex-grow flex-col", children: /* @__PURE__ */ jsxs("main", { className: "grid h-full flex-grow grid-cols-1 grid-rows-2 lg:grid-cols-2 lg:grid-rows-1", children: [
9811
9826
  /* @__PURE__ */ jsxs("div", { className: "relative col-span-1 row-span-1 flex h-full flex-col lg:border-r", children: [
9812
9827
  /* @__PURE__ */ jsx("h1", { className: "h-14 border-b pl-10 pr-5 text-sm font-medium uppercase leading-none", children: /* @__PURE__ */ jsx("div", { className: "flex h-14 flex-wrap items-center justify-between gap-x-2 py-2", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-start gap-x-2", children: [
9813
- /* @__PURE__ */ jsx(Link, { to: "/", className: "hover:underline", children: data.workshopTitle }),
9828
+ /* @__PURE__ */ jsx(Link, { to: "/", className: "hover:underline", children: data2.workshopTitle }),
9814
9829
  /* @__PURE__ */ jsx("span", { children: "/" }),
9815
9830
  /* @__PURE__ */ jsx("span", { children: "Elaboration" })
9816
9831
  ] }) }) }),
@@ -9818,12 +9833,12 @@ function ExerciseFinished() {
9818
9833
  "article",
9819
9834
  {
9820
9835
  className: "shadow-on-scrollbox h-full w-full max-w-none flex-1 scroll-pt-6 space-y-6 overflow-y-auto p-2 scrollbar-thin scrollbar-thumb-scrollbar sm:p-10 sm:pt-8",
9821
- id: data.articleId,
9822
- children: data.finishedCode ? /* @__PURE__ */ jsx(
9836
+ id: data2.articleId,
9837
+ children: data2.finishedCode ? /* @__PURE__ */ jsx(
9823
9838
  EpicVideoInfoProvider,
9824
9839
  {
9825
- epicVideoInfosPromise: data.epicVideoInfosPromise,
9826
- children: /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert sm:prose-lg", children: /* @__PURE__ */ jsx(Mdx, { code: data.finishedCode, components: mdxComponents$1 }) })
9840
+ epicVideoInfosPromise: data2.epicVideoInfosPromise,
9841
+ children: /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert sm:prose-lg", children: /* @__PURE__ */ jsx(Mdx, { code: data2.finishedCode, components: mdxComponents$1 }) })
9827
9842
  }
9828
9843
  ) : (
9829
9844
  // TODO: render a random dad joke...
@@ -9831,7 +9846,7 @@ function ExerciseFinished() {
9831
9846
  )
9832
9847
  }
9833
9848
  ),
9834
- /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data.articleId}` }),
9849
+ /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data2.articleId}` }),
9835
9850
  /* @__PURE__ */ jsx(
9836
9851
  ProgressToggle,
9837
9852
  {
@@ -9841,21 +9856,21 @@ function ExerciseFinished() {
9841
9856
  ),
9842
9857
  /* @__PURE__ */ jsxs("div", { className: "flex h-16 justify-between border-b-4 border-t lg:border-b-0", children: [
9843
9858
  /* @__PURE__ */ jsx("div", {}),
9844
- data.workshopFinished.status === "success" ? /* @__PURE__ */ jsx(
9859
+ data2.workshopFinished.status === "success" ? /* @__PURE__ */ jsx(
9845
9860
  EditFileOnGitHub,
9846
9861
  {
9847
- file: data.workshopFinished.file,
9848
- relativePath: data.workshopFinished.relativePath
9862
+ file: data2.workshopFinished.file,
9863
+ relativePath: data2.workshopFinished.relativePath
9849
9864
  }
9850
9865
  ) : null,
9851
- /* @__PURE__ */ jsx(NavChevrons, { prev: data.prevStepLink, next: { to: "/" } })
9866
+ /* @__PURE__ */ jsx(NavChevrons, { prev: data2.prevStepLink, next: { to: "/" } })
9852
9867
  ] })
9853
9868
  ] }),
9854
9869
  /* @__PURE__ */ jsx(
9855
9870
  Survey,
9856
9871
  {
9857
- workshopTitle: data.workshopTitle,
9858
- workshopFormEmbedUrl: data.workshopFormEmbedUrl
9872
+ workshopTitle: data2.workshopTitle,
9873
+ workshopFormEmbedUrl: data2.workshopFormEmbedUrl
9859
9874
  }
9860
9875
  )
9861
9876
  ] }) });
@@ -9909,7 +9924,7 @@ async function loader$d({ request }) {
9909
9924
  desc: "compileMdx in index"
9910
9925
  })
9911
9926
  ]);
9912
- return defer(
9927
+ return unstable_data$1(
9913
9928
  {
9914
9929
  articleId: `workshop-${slugify(title)}-instructions`,
9915
9930
  title: workshopReadme.compiled.status === "success" ? workshopReadme.compiled.title : title,
@@ -9959,43 +9974,43 @@ function ExerciseListItem({
9959
9974
  }
9960
9975
  const mdxComponents = { h1: () => null };
9961
9976
  function Index() {
9962
- const data = useLoaderData();
9977
+ const data2 = useLoaderData();
9963
9978
  const exerciseLinks = /* @__PURE__ */ jsxs("ul", { className: "flex flex-col divide-y divide-border dark:divide-border/50", children: [
9964
9979
  /* @__PURE__ */ jsx("strong", { className: "px-10 pb-3 font-mono text-xs uppercase", children: "Exercises" }),
9965
- data.exercises.map((exercise) => /* @__PURE__ */ jsx(ExerciseListItem, { exercise }, exercise.exerciseNumber))
9980
+ data2.exercises.map((exercise) => /* @__PURE__ */ jsx(ExerciseListItem, { exercise }, exercise.exerciseNumber))
9966
9981
  ] });
9967
9982
  return /* @__PURE__ */ jsxs("main", { className: "relative flex h-full w-full max-w-5xl flex-col justify-between border-r md:w-3/4 xl:w-2/3", children: [
9968
9983
  /* @__PURE__ */ jsxs(
9969
9984
  "article",
9970
9985
  {
9971
- id: data.articleId,
9986
+ id: data2.articleId,
9972
9987
  className: "shadow-on-scrollbox flex w-full flex-1 flex-col gap-12 overflow-y-scroll px-3 py-4 pt-6 scrollbar-thin scrollbar-thumb-scrollbar md:px-10 md:py-12 md:pt-16",
9973
9988
  children: [
9974
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h1", { className: "px-10 text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none", children: data.title }) }),
9989
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("h1", { className: "px-10 text-[clamp(3rem,6vw,7.5rem)] font-extrabold leading-none", children: data2.title }) }),
9975
9990
  /* @__PURE__ */ jsxs("div", { className: "w-full max-w-none scroll-pt-6 border-t px-3 pt-3 md:px-10 md:pt-8", children: [
9976
9991
  /* @__PURE__ */ jsx("h2", { className: "pb-5 font-mono text-xs font-semibold uppercase", children: "Intro" }),
9977
- data.workshopReadme.compiled.status === "success" && data.workshopReadme.compiled.code ? /* @__PURE__ */ jsx(
9992
+ data2.workshopReadme.compiled.status === "success" && data2.workshopReadme.compiled.code ? /* @__PURE__ */ jsx(
9978
9993
  EpicVideoInfoProvider,
9979
9994
  {
9980
- epicVideoInfosPromise: data.epicVideoInfosPromise,
9995
+ epicVideoInfosPromise: data2.epicVideoInfosPromise,
9981
9996
  children: /* @__PURE__ */ jsx("div", { className: "prose dark:prose-invert sm:prose-lg", children: /* @__PURE__ */ jsx(
9982
9997
  Mdx,
9983
9998
  {
9984
- code: data.workshopReadme.compiled.code,
9999
+ code: data2.workshopReadme.compiled.code,
9985
10000
  components: mdxComponents
9986
10001
  }
9987
10002
  ) })
9988
10003
  }
9989
- ) : data.workshopReadme.compiled.status === "error" ? /* @__PURE__ */ jsxs("div", { className: "text-red-500", children: [
10004
+ ) : data2.workshopReadme.compiled.status === "error" ? /* @__PURE__ */ jsxs("div", { className: "text-red-500", children: [
9990
10005
  "There was an error:",
9991
- /* @__PURE__ */ jsx("pre", { children: data.workshopReadme.compiled.error })
10006
+ /* @__PURE__ */ jsx("pre", { children: data2.workshopReadme.compiled.error })
9992
10007
  ] }) : "No instructions yet..."
9993
10008
  ] }),
9994
- /* @__PURE__ */ jsx("div", { className: "pb-5 pt-10", children: data.workshopReadme.compiled.status === "success" && data.workshopReadme.compiled.code && data.workshopReadme.compiled.code.length > 500 ? exerciseLinks : null })
10009
+ /* @__PURE__ */ jsx("div", { className: "pb-5 pt-10", children: data2.workshopReadme.compiled.status === "success" && data2.workshopReadme.compiled.code && data2.workshopReadme.compiled.code.length > 500 ? exerciseLinks : null })
9995
10010
  ]
9996
10011
  }
9997
10012
  ),
9998
- /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data.articleId}` }),
10013
+ /* @__PURE__ */ jsx(ElementScrollRestoration, { elementQuery: `#${data2.articleId}` }),
9999
10014
  /* @__PURE__ */ jsx(
10000
10015
  ProgressToggle,
10001
10016
  {
@@ -10006,8 +10021,8 @@ function Index() {
10006
10021
  /* @__PURE__ */ jsx("div", { className: "flex h-16 justify-center border-t", children: /* @__PURE__ */ jsx(
10007
10022
  EditFileOnGitHub,
10008
10023
  {
10009
- file: data.workshopReadme.file,
10010
- relativePath: data.workshopReadme.relativePath
10024
+ file: data2.workshopReadme.file,
10025
+ relativePath: data2.workshopReadme.relativePath
10011
10026
  }
10012
10027
  ) })
10013
10028
  ] });
@@ -10131,12 +10146,12 @@ async function loader$b() {
10131
10146
  ensureUndeployed();
10132
10147
  const isAuthenticated = Boolean(await getAuthInfo());
10133
10148
  if (isAuthenticated) throw redirect$1("/account");
10134
- return json$1({});
10149
+ return {};
10135
10150
  }
10136
10151
  async function action$2() {
10137
10152
  ensureUndeployed();
10138
10153
  void registerDevice();
10139
- return json$1({ status: "pending" });
10154
+ return { status: "pending" };
10140
10155
  }
10141
10156
  function Login() {
10142
10157
  var _a;
@@ -10365,7 +10380,7 @@ async function loader$a({ request }) {
10365
10380
  ] of getProcesses().testProcesses.entries()) {
10366
10381
  testProcesses[name] = { pid: process2 == null ? void 0 : process2.pid, exitCode };
10367
10382
  }
10368
- return json$1(
10383
+ return unstable_data$1(
10369
10384
  {
10370
10385
  apps,
10371
10386
  processes,
@@ -10386,19 +10401,19 @@ async function action$1({ request }) {
10386
10401
  switch (intent) {
10387
10402
  case "clear-data": {
10388
10403
  await clearData();
10389
- return json$1({ success: true });
10404
+ return { success: true };
10390
10405
  }
10391
10406
  case "clear-caches": {
10392
10407
  await clearCaches();
10393
- return json$1({ success: true });
10408
+ return { success: true };
10394
10409
  }
10395
10410
  case "inspect": {
10396
10411
  await startInspector();
10397
- return json$1({ success: true });
10412
+ return { success: true };
10398
10413
  }
10399
10414
  case "stop-inspect": {
10400
10415
  await stopInspector();
10401
- return json$1({ success: true });
10416
+ return { success: true };
10402
10417
  }
10403
10418
  default: {
10404
10419
  throw new Error(`Unknown intent: ${intent}`);
@@ -10426,7 +10441,7 @@ function linkProgress(progress) {
10426
10441
  }
10427
10442
  function AdminLayout() {
10428
10443
  var _a, _b;
10429
- const data = useLoaderData();
10444
+ const data2 = useLoaderData();
10430
10445
  const navigation = useNavigation();
10431
10446
  const epicProgress = useEpicProgress();
10432
10447
  const isStartingInspector = ((_a = navigation.formData) == null ? void 0 : _a.get("intent")) === "inspect";
@@ -10478,19 +10493,19 @@ function AdminLayout() {
10478
10493
  /* @__PURE__ */ jsxs("ul", { className: "max-h-48 overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: [
10479
10494
  /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "clear-caches", children: "Clear local caches" }) }) }),
10480
10495
  /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "clear-data", children: "Clear all local data (including auth data)" }) }) }),
10481
- /* @__PURE__ */ jsx("li", { children: data.inspectorRunning ? /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "stop-inspect", children: isStartingInspector ? "Stopping inspector..." : "Stop inspector" }) }) : /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "inspect", children: isStoppingInspector ? "Starting inspector..." : "Start inspector" }) }) })
10496
+ /* @__PURE__ */ jsx("li", { children: data2.inspectorRunning ? /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "stop-inspect", children: isStartingInspector ? "Stopping inspector..." : "Stop inspector" }) }) : /* @__PURE__ */ jsx(Form, { method: "POST", children: /* @__PURE__ */ jsx("button", { name: "intent", value: "inspect", children: isStoppingInspector ? "Starting inspector..." : "Start inspector" }) }) })
10482
10497
  ] })
10483
10498
  ] }),
10484
10499
  /* @__PURE__ */ jsxs("div", { children: [
10485
10500
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold", children: "Apps" }),
10486
- /* @__PURE__ */ jsx("ul", { className: "max-h-48 list-none overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: data.apps.map((app) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 py-1", children: [
10487
- data.processes[app.name] ? /* @__PURE__ */ jsx(Pinger, { status: "running" }) : /* @__PURE__ */ jsx(Pinger, { status: "stopped" }),
10501
+ /* @__PURE__ */ jsx("ul", { className: "max-h-48 list-none overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: data2.apps.map((app) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 py-1", children: [
10502
+ data2.processes[app.name] ? /* @__PURE__ */ jsx(Pinger, { status: "running" }) : /* @__PURE__ */ jsx(Pinger, { status: "stopped" }),
10488
10503
  app.name
10489
10504
  ] }, app.name)) })
10490
10505
  ] }),
10491
10506
  /* @__PURE__ */ jsxs("div", { children: [
10492
10507
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold", children: "Processes" }),
10493
- /* @__PURE__ */ jsx("ul", { className: "overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: Object.entries(data.processes).map(([key, process2]) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("span", { children: [
10508
+ /* @__PURE__ */ jsx("ul", { className: "overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: Object.entries(data2.processes).map(([key, process2]) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("span", { children: [
10494
10509
  key,
10495
10510
  " - Port: ",
10496
10511
  process2.port,
@@ -10503,7 +10518,7 @@ function AdminLayout() {
10503
10518
  ] }),
10504
10519
  /* @__PURE__ */ jsxs("div", { children: [
10505
10520
  /* @__PURE__ */ jsx("h2", { className: "text-lg font-bold", children: "Test Processes" }),
10506
- /* @__PURE__ */ jsx("ul", { className: "overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: Object.entries(data.testProcesses).map(([key, process2]) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("span", { children: [
10521
+ /* @__PURE__ */ jsx("ul", { className: "overflow-y-scroll border-2 p-8 scrollbar-thin scrollbar-thumb-scrollbar", children: Object.entries(data2.testProcesses).map(([key, process2]) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("span", { children: [
10507
10522
  key,
10508
10523
  " - PID ",
10509
10524
  process2.pid,
@@ -10560,7 +10575,7 @@ const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
10560
10575
  async function loader$9() {
10561
10576
  ensureUndeployed();
10562
10577
  const apps = await getApps();
10563
- return json$1({ apps });
10578
+ return Response.json({ apps });
10564
10579
  }
10565
10580
  const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10566
10581
  __proto__: null,
@@ -10569,7 +10584,7 @@ const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
10569
10584
  async function loader$8() {
10570
10585
  ensureUndeployed();
10571
10586
  const entries = await getAllFileCacheEntries();
10572
- return json$1({ entries });
10587
+ return Response.json({ entries });
10573
10588
  }
10574
10589
  const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10575
10590
  __proto__: null,
@@ -10578,7 +10593,7 @@ const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
10578
10593
  async function loader$7({ request }) {
10579
10594
  const timings = makeTimings("appsLoader");
10580
10595
  const apps = await getApps({ request, timings });
10581
- return json$1(
10596
+ return unstable_data$1(
10582
10597
  { apps },
10583
10598
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10584
10599
  );
@@ -10642,12 +10657,12 @@ async function loader$6({ request }) {
10642
10657
  const nextSearchParams = new URLSearchParams(reqUrl.searchParams);
10643
10658
  nextSearchParams.set("app1", nextApp1 ?? "");
10644
10659
  nextSearchParams.set("app2", nextApp2 ?? "");
10645
- return defer({
10660
+ return {
10646
10661
  allApps,
10647
10662
  diff,
10648
10663
  prevLink: prevApp1 && prevApp2 ? { to: `/diff?${prevSearchParams}`, "aria-label": "Previous App" } : { to: "/diff" },
10649
10664
  nextLink: nextApp1 && nextApp2 ? { to: `/diff?${nextSearchParams}`, "aria-label": "Next App" } : { to: "/diff" }
10650
- });
10665
+ };
10651
10666
  }
10652
10667
  function DiffViewer() {
10653
10668
  const data = useLoaderData();
@@ -10680,7 +10695,7 @@ const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
10680
10695
  async function loader$5({ request }) {
10681
10696
  const timings = makeTimings("appsLoader");
10682
10697
  const exercises = await getExercises({ request, timings });
10683
- return json$1(
10698
+ return unstable_data$1(
10684
10699
  { exercises },
10685
10700
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10686
10701
  );
@@ -11027,7 +11042,7 @@ async function loader$3({ request }) {
11027
11042
  const timings = makeTimings("onboarding");
11028
11043
  const { onboardingVideo } = getWorkshopConfig();
11029
11044
  const videoInfos = getEpicVideoInfos([onboardingVideo], { request, timings });
11030
- return defer(
11045
+ return unstable_data$1(
11031
11046
  { onboardingVideo, videoInfos },
11032
11047
  { headers: { "Server-Timing": timings.toString() } }
11033
11048
  );
@@ -11039,9 +11054,9 @@ const headers = ({ loaderHeaders }) => {
11039
11054
  return headers2;
11040
11055
  };
11041
11056
  async function action({ request }) {
11042
- const data = await request.formData();
11057
+ const data2 = await request.formData();
11043
11058
  const authInfo = await getAuthInfo();
11044
- const intent = data.get("intent");
11059
+ const intent = data2.get("intent");
11045
11060
  invariantResponse(intent === "complete", "Invalid intent");
11046
11061
  const { onboardingVideo } = getWorkshopConfig();
11047
11062
  await markOnboardingVideoWatched(onboardingVideo);
@@ -11049,7 +11064,7 @@ async function action({ request }) {
11049
11064
  else throw redirect$1("/login");
11050
11065
  }
11051
11066
  function Onboarding() {
11052
- const data = useLoaderData();
11067
+ const data2 = useLoaderData();
11053
11068
  return /* @__PURE__ */ jsxs("main", { className: "flex h-full w-full flex-col items-center justify-between gap-4", children: [
11054
11069
  /* @__PURE__ */ jsxs("div", { className: "container flex h-full w-full max-w-5xl flex-1 flex-col items-center gap-4 overflow-y-scroll py-12 scrollbar-thin scrollbar-thumb-scrollbar", children: [
11055
11070
  /* @__PURE__ */ jsx("h1", { className: "text-5xl", children: "Onboarding" }),
@@ -11059,7 +11074,7 @@ function Onboarding() {
11059
11074
  /* @__PURE__ */ jsx("strong", { children: "you must watch the tour video" }),
11060
11075
  "! You're going to be spending a lot of time in here, so it's important you understand how to work effectively in this workshop"
11061
11076
  ] }),
11062
- /* @__PURE__ */ jsx("div", { className: "w-[780px] max-w-full", children: /* @__PURE__ */ jsx(EpicVideoInfoProvider, { epicVideoInfosPromise: data.videoInfos, children: /* @__PURE__ */ jsx(DeferredEpicVideo, { url: data.onboardingVideo }) }) })
11077
+ /* @__PURE__ */ jsx("div", { className: "w-[780px] max-w-full", children: /* @__PURE__ */ jsx(EpicVideoInfoProvider, { epicVideoInfosPromise: data2.videoInfos, children: /* @__PURE__ */ jsx(DeferredEpicVideo, { url: data2.onboardingVideo }) }) })
11063
11078
  ] }),
11064
11079
  /* @__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!" }) })
11065
11080
  ] });
@@ -11088,7 +11103,7 @@ async function loader$2() {
11088
11103
  ] of getProcesses().testProcesses.entries()) {
11089
11104
  testProcesses[name] = { pid: process2 == null ? void 0 : process2.pid, exitCode, output };
11090
11105
  }
11091
- return json$1({ processes, testProcesses });
11106
+ return Response.json({ processes, testProcesses });
11092
11107
  }
11093
11108
  const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11094
11109
  __proto__: null,
@@ -11116,11 +11131,11 @@ const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
11116
11131
  __proto__: null,
11117
11132
  loader
11118
11133
  }, Symbol.toStringTag, { value: "Module" }));
11119
- const serverManifest = { "entry": { "module": "/assets/entry.client-CW5CUf_W.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.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-Cl86OUog.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/error-boundary-BcGxKpte.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-YtpQLUzj.js", "/assets/index-BvihEwfB.js", "/assets/presence-Dd98AJ_5.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/_-ZHCWB__B.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/error-boundary-BcGxKpte.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-frPHZWgR.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/product-mjsTrqXs.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/index-BjNhezSK.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DDuV9rZX.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/button-CMkJ8p0a.js", "/assets/tooltip-6-WS-Xux.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DYeU0QX6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/user-Boua6jiU.js", "/assets/discord-C9bVfiZ6.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Cfbi6StB.js", "imports": ["/assets/index-DF_XBInP.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-BFTlBdr4.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-_687iGFh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BriOqd2R.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/set-playground-pMKmtPtz.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-wbMCZEiv.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/preview-DZcdG4kw.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-C2yr7Uiu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/button-CMkJ8p0a.js", "/assets/diff-B6thd_Sf.js", "/assets/error-boundary-BcGxKpte.js", "/assets/discord-C9bVfiZ6.js", "/assets/index-YtpQLUzj.js", "/assets/tests-BeAEgPAw.js", "/assets/preview-DZcdG4kw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-B6zIK2V6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/epic-video-bs7WmhbC.js", "/assets/accordion-DuE9VejZ.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/tests-BeAEgPAw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BEfn-nJi.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-C2dgX1d-.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-Co-59mG2.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-CuV1bRbu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.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-kjV7hrVt.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/use-event-source-CCGBLG92.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/product-mjsTrqXs.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-B0E_F4Zh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.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-BLJr2x2F.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/pe-CvPIToj6.js", "/assets/tooltip-6-WS-Xux.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-BEk79KPK.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/diff-B6thd_Sf.js", "/assets/nav-chevrons-DYiI8EMU.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-B4Z_yevk.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/button-CMkJ8p0a.js", "/assets/epic-video-bs7WmhbC.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/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-b22910a7.js", "version": "b22910a7" };
11134
+ const serverManifest = { "entry": { "module": "/assets/entry.client-BTYTUpFV.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.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-DojjHZlY.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/error-boundary-1-dmC941.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/index-DRH72MzK.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-_J-F_Dnc.js", "/assets/presence-CdyMdOKk.js", "/assets/seo-pBpFCWsy.js", "/assets/request-info-DCIQLE6H.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/_-CWSCXcBv.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/error-boundary-1-dmC941.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.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-T2hZtl0D.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/pe-ChIwTk8v.js", "/assets/product-C1ynnrN_.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuoaxPEj.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/presence-CdyMdOKk.js", "/assets/progress-DAB3nDa2.js", "/assets/index-_J-F_Dnc.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-CPFwPYf1.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/user-BBryXlM_.js", "/assets/presence-CdyMdOKk.js", "/assets/components-9EGYHTc_.js", "/assets/request-info-DCIQLE6H.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DoeazikD.js", "imports": ["/assets/discord-CHsbqaqM.js", "/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js", "/assets/user-BBryXlM_.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-88n0To1b.js", "imports": ["/assets/index-BFGhCX_U.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-D6KsriIk.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-BA2Xhzqs.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/components-9EGYHTc_.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-C5yGKUmm.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/error-boundary-1-dmC941.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/set-playground-S_rIwJAa.js", "/assets/seo-pBpFCWsy.js", "/assets/misc-BJtHv_Jh.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/tooltip-BgynKV2c.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/index-BuoaxPEj.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/pe-ChIwTk8v.js", "/assets/index-BuA_RWlU.js", "/assets/index-_J-F_Dnc.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-CM8yuYni.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/preview-CW_12I0i.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/request-info-DCIQLE6H.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CmmC-_8P.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-assn_bSK.js", "/assets/error-boundary-1-dmC941.js", "/assets/loading-Dk0n07O3.js", "/assets/discord-CHsbqaqM.js", "/assets/components-9EGYHTc_.js", "/assets/index-DRH72MzK.js", "/assets/set-playground-S_rIwJAa.js", "/assets/tests-CTs57UUU.js", "/assets/preview-CW_12I0i.js", "/assets/index-BuoaxPEj.js", "/assets/accordion-DC885Li1.js", "/assets/mdx-hW1uYjc1.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-CtH75Laz.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/tests-CTs57UUU.js", "/assets/components-9EGYHTc_.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/accordion-DC885Li1.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/set-playground-S_rIwJAa.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DEzaS_Ji.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/progress-DAB3nDa2.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-DVV0zwmP.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/loading-Dk0n07O3.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/revalidation-ws-DU-PzW-_.js", "/assets/mdx-hW1uYjc1.js", "/assets/misc-BJtHv_Jh.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.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-KgMLc41c.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/index-BCxBKsqT.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/error-boundary-1-dmC941.js", "/assets/mdx-hW1uYjc1.js", "/assets/misc-BJtHv_Jh.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.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-pZYDEC_l.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/use-event-source-x59d4R2Z.js", "/assets/button-DQ001ob0.js", "/assets/loading-Dk0n07O3.js", "/assets/product-C1ynnrN_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/request-info-DCIQLE6H.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.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-BNS-kEhc.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/components-9EGYHTc_.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-gyrNluke.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/tooltip-BgynKV2c.js", "/assets/progress-DAB3nDa2.js", "/assets/components-9EGYHTc_.js", "/assets/pe-ChIwTk8v.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-jlCv3hv0.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/misc-BJtHv_Jh.js", "/assets/diff-assn_bSK.js", "/assets/nav-chevrons-CgbSMLeb.js", "/assets/components-9EGYHTc_.js", "/assets/accordion-DC885Li1.js", "/assets/tooltip-BgynKV2c.js", "/assets/index-BuA_RWlU.js", "/assets/index-BuoaxPEj.js", "/assets/mdx-hW1uYjc1.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js", "/assets/progress-bar-Cj5R4Zk7.js", "/assets/revalidation-ws-DU-PzW-_.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-DCuSqnkZ.js", "imports": ["/assets/index-BFGhCX_U.js", "/assets/button-DQ001ob0.js", "/assets/epic-video-GDpD7_Qt.js", "/assets/components-9EGYHTc_.js", "/assets/misc-BJtHv_Jh.js", "/assets/index-_J-F_Dnc.js", "/assets/request-info-DCIQLE6H.js", "/assets/tooltip-BgynKV2c.js", "/assets/pe-ChIwTk8v.js", "/assets/loading-Dk0n07O3.js", "/assets/user-BBryXlM_.js", "/assets/workshop-config-DJY2cXU_.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/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-c9f53a94.js", "version": "c9f53a94" };
11120
11135
  const mode = "production";
11121
11136
  const assetsBuildDirectory = "build/client";
11122
11137
  const basename = "/";
11123
- const future = { "v3_fetcherPersist": false, "v3_relativeSplatPath": false, "v3_throwAbortReason": false, "unstable_singleFetch": false, "unstable_fogOfWar": false };
11138
+ const future = { "v3_fetcherPersist": true, "v3_relativeSplatPath": true, "v3_throwAbortReason": true, "unstable_singleFetch": true, "unstable_lazyRouteDiscovery": true, "unstable_optimizeDeps": true };
11124
11139
  const isSpaMode = false;
11125
11140
  const publicPath = "/";
11126
11141
  const entry = { module: entryServer };