@epic-web/workshop-app 5.23.0 → 5.24.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 (147) hide show
  1. package/bin/epicshop.js +203 -37
  2. package/build/client/assets/{_basePickBy-B3Ji82Lk.js → _basePickBy-lB0X5x6U.js} +2 -2
  3. package/build/client/assets/{_basePickBy-B3Ji82Lk.js.map → _basePickBy-lB0X5x6U.js.map} +1 -1
  4. package/build/client/assets/{_baseUniq-BoGoqSUm.js → _baseUniq-BOjGYEEK.js} +2 -2
  5. package/build/client/assets/{_baseUniq-BoGoqSUm.js.map → _baseUniq-BOjGYEEK.js.map} +1 -1
  6. package/build/client/assets/{_exerciseNumber-DtILU6SM.js → _exerciseNumber-Dqi7TgL9.js} +2 -2
  7. package/build/client/assets/{_exerciseNumber-DtILU6SM.js.map → _exerciseNumber-Dqi7TgL9.js.map} +1 -1
  8. package/build/client/assets/{_exerciseNumber_.finished-CEK9anWX.js → _exerciseNumber_.finished-C5m6M0gM.js} +2 -2
  9. package/build/client/assets/{_exerciseNumber_.finished-CEK9anWX.js.map → _exerciseNumber_.finished-C5m6M0gM.js.map} +1 -1
  10. package/build/client/assets/{_layout-D1r_62oj.js → _layout-B_NrRv0S.js} +2 -2
  11. package/build/client/assets/{_layout-D1r_62oj.js.map → _layout-B_NrRv0S.js.map} +1 -1
  12. package/build/client/assets/{_layout-DzlTTMQ0.js → _layout-QRe2q83m.js} +2 -2
  13. package/build/client/assets/{_layout-DzlTTMQ0.js.map → _layout-QRe2q83m.js.map} +1 -1
  14. package/build/client/assets/{app-CQvK51s0.js → app-BYSDu0vh.js} +2 -2
  15. package/build/client/assets/{app-CQvK51s0.js.map → app-BYSDu0vh.js.map} +1 -1
  16. package/build/client/assets/{arc-rF8TbXNV.js → arc-DmQZ2TPB.js} +2 -2
  17. package/build/client/assets/{arc-rF8TbXNV.js.map → arc-DmQZ2TPB.js.map} +1 -1
  18. package/build/client/assets/{architectureDiagram-IEHRJDOE-D7gCCmY9.js → architectureDiagram-IEHRJDOE-BqPvrjLh.js} +2 -2
  19. package/build/client/assets/{architectureDiagram-IEHRJDOE-D7gCCmY9.js.map → architectureDiagram-IEHRJDOE-BqPvrjLh.js.map} +1 -1
  20. package/build/client/assets/{blockDiagram-JOT3LUYC-yGQOzhkw.js → blockDiagram-JOT3LUYC-D8OFd78i.js} +2 -2
  21. package/build/client/assets/{blockDiagram-JOT3LUYC-yGQOzhkw.js.map → blockDiagram-JOT3LUYC-D8OFd78i.js.map} +1 -1
  22. package/build/client/assets/{c4Diagram-VJAJSXHY-CTFjYF37.js → c4Diagram-VJAJSXHY-DjROjsr_.js} +2 -2
  23. package/build/client/assets/{c4Diagram-VJAJSXHY-CTFjYF37.js.map → c4Diagram-VJAJSXHY-DjROjsr_.js.map} +1 -1
  24. package/build/client/assets/channel-DnqeaSfB.js +2 -0
  25. package/build/client/assets/{channel-5s71-OE9.js.map → channel-DnqeaSfB.js.map} +1 -1
  26. package/build/client/assets/{chunk-4BMEZGHF-BIe0IUDz.js → chunk-4BMEZGHF-CNL-bCj2.js} +2 -2
  27. package/build/client/assets/{chunk-4BMEZGHF-BIe0IUDz.js.map → chunk-4BMEZGHF-CNL-bCj2.js.map} +1 -1
  28. package/build/client/assets/{chunk-A2AXSNBT-B-nCbUBj.js → chunk-A2AXSNBT-PeSyIKDm.js} +2 -2
  29. package/build/client/assets/{chunk-A2AXSNBT-B-nCbUBj.js.map → chunk-A2AXSNBT-PeSyIKDm.js.map} +1 -1
  30. package/build/client/assets/{chunk-AEK57VVT-B-cCHPs2.js → chunk-AEK57VVT-B1JqGB_s.js} +2 -2
  31. package/build/client/assets/{chunk-AEK57VVT-B-cCHPs2.js.map → chunk-AEK57VVT-B1JqGB_s.js.map} +1 -1
  32. package/build/client/assets/{chunk-D6G4REZN-EQ3R8OZx.js → chunk-D6G4REZN-C1e0nCkL.js} +2 -2
  33. package/build/client/assets/{chunk-D6G4REZN-EQ3R8OZx.js.map → chunk-D6G4REZN-C1e0nCkL.js.map} +1 -1
  34. package/build/client/assets/{chunk-RZ5BOZE2-h6svq8Xk.js → chunk-RZ5BOZE2-D5pIwNeA.js} +2 -2
  35. package/build/client/assets/{chunk-RZ5BOZE2-h6svq8Xk.js.map → chunk-RZ5BOZE2-D5pIwNeA.js.map} +1 -1
  36. package/build/client/assets/{chunk-XZIHB7SX-74-HFRcU.js → chunk-XZIHB7SX-FbrNggxP.js} +2 -2
  37. package/build/client/assets/{chunk-XZIHB7SX-74-HFRcU.js.map → chunk-XZIHB7SX-FbrNggxP.js.map} +1 -1
  38. package/build/client/assets/classDiagram-GIVACNV2-cXWx-aYi.js +2 -0
  39. package/build/client/assets/{classDiagram-GIVACNV2-CWogZCzR.js.map → classDiagram-GIVACNV2-cXWx-aYi.js.map} +1 -1
  40. package/build/client/assets/classDiagram-v2-COTLJTTW-cXWx-aYi.js +2 -0
  41. package/build/client/assets/{classDiagram-v2-COTLJTTW-CWogZCzR.js.map → classDiagram-v2-COTLJTTW-cXWx-aYi.js.map} +1 -1
  42. package/build/client/assets/clone-Bj8ANPCv.js +2 -0
  43. package/build/client/assets/{clone-nHZ14b_E.js.map → clone-Bj8ANPCv.js.map} +1 -1
  44. package/build/client/assets/{dagre-OKDRZEBW-Bq-HgVN8.js → dagre-OKDRZEBW-DT9ZQRxf.js} +2 -2
  45. package/build/client/assets/{dagre-OKDRZEBW-Bq-HgVN8.js.map → dagre-OKDRZEBW-DT9ZQRxf.js.map} +1 -1
  46. package/build/client/assets/{diagram-SSKATNLV-Cls675Lh.js → diagram-SSKATNLV-CcKCni9R.js} +2 -2
  47. package/build/client/assets/{diagram-SSKATNLV-Cls675Lh.js.map → diagram-SSKATNLV-CcKCni9R.js.map} +1 -1
  48. package/build/client/assets/{diagram-VNBRO52H-CJDqBhLa.js → diagram-VNBRO52H-DWoRAiqO.js} +2 -2
  49. package/build/client/assets/{diagram-VNBRO52H-CJDqBhLa.js.map → diagram-VNBRO52H-DWoRAiqO.js.map} +1 -1
  50. package/build/client/assets/{diff-8N5KyD7o.js → diff-BKR4usVv.js} +2 -2
  51. package/build/client/assets/{diff-8N5KyD7o.js.map → diff-BKR4usVv.js.map} +1 -1
  52. package/build/client/assets/{diff-Bu4t2NGL.js → diff-D5_VwPLF.js} +2 -2
  53. package/build/client/assets/{diff-Bu4t2NGL.js.map → diff-D5_VwPLF.js.map} +1 -1
  54. package/build/client/assets/{epic-video-DN9DRRHf.js → epic-video-CmlkW6Rw.js} +2 -2
  55. package/build/client/assets/{epic-video-DN9DRRHf.js.map → epic-video-CmlkW6Rw.js.map} +1 -1
  56. package/build/client/assets/{erDiagram-Q7BY3M3F-DdKn4jVQ.js → erDiagram-Q7BY3M3F-DXkEmvKk.js} +2 -2
  57. package/build/client/assets/{erDiagram-Q7BY3M3F-DdKn4jVQ.js.map → erDiagram-Q7BY3M3F-DXkEmvKk.js.map} +1 -1
  58. package/build/client/assets/{finished-B3G1RUDO.js → finished-MrsevkkK.js} +2 -2
  59. package/build/client/assets/{finished-B3G1RUDO.js.map → finished-MrsevkkK.js.map} +1 -1
  60. package/build/client/assets/{flowDiagram-4HSFHLVR-5Mg796nh.js → flowDiagram-4HSFHLVR-DCodZaNW.js} +2 -2
  61. package/build/client/assets/{flowDiagram-4HSFHLVR-5Mg796nh.js.map → flowDiagram-4HSFHLVR-DCodZaNW.js.map} +1 -1
  62. package/build/client/assets/{ganttDiagram-APWFNJXF-YO2fxWzG.js → ganttDiagram-APWFNJXF-TfB6wYvN.js} +2 -2
  63. package/build/client/assets/{ganttDiagram-APWFNJXF-YO2fxWzG.js.map → ganttDiagram-APWFNJXF-TfB6wYvN.js.map} +1 -1
  64. package/build/client/assets/{gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js → gitGraphDiagram-7IBYFJ6S-D2NQnQv2.js} +2 -2
  65. package/build/client/assets/{gitGraphDiagram-7IBYFJ6S-DQCZvhP_.js.map → gitGraphDiagram-7IBYFJ6S-D2NQnQv2.js.map} +1 -1
  66. package/build/client/assets/{graph-BFAO9Sgp.js → graph-eJUngNSH.js} +2 -2
  67. package/build/client/assets/{graph-BFAO9Sgp.js.map → graph-eJUngNSH.js.map} +1 -1
  68. package/build/client/assets/{index-BfCSiT_X.js → index-9euhNa27.js} +2 -2
  69. package/build/client/assets/{index-BfCSiT_X.js.map → index-9euhNa27.js.map} +1 -1
  70. package/build/client/assets/index-DLC5u33j.js +36 -0
  71. package/build/client/assets/index-DLC5u33j.js.map +1 -0
  72. package/build/client/assets/{index-Dkt2MSig.js → index-DPHVg8Eh.js} +2 -2
  73. package/build/client/assets/{index-Dkt2MSig.js.map → index-DPHVg8Eh.js.map} +1 -1
  74. package/build/client/assets/infoDiagram-PH2N3AL5-D-nEozcT.js +3 -0
  75. package/build/client/assets/{infoDiagram-PH2N3AL5-x87RxSs8.js.map → infoDiagram-PH2N3AL5-D-nEozcT.js.map} +1 -1
  76. package/build/client/assets/{journeyDiagram-U35MCT3I-D5yGbOLJ.js → journeyDiagram-U35MCT3I-Dc8g8jIX.js} +2 -2
  77. package/build/client/assets/{journeyDiagram-U35MCT3I-D5yGbOLJ.js.map → journeyDiagram-U35MCT3I-Dc8g8jIX.js.map} +1 -1
  78. package/build/client/assets/{kanban-definition-NDS4AKOZ-BM6KyRww.js → kanban-definition-NDS4AKOZ-BwwcaZU2.js} +2 -2
  79. package/build/client/assets/{kanban-definition-NDS4AKOZ-BM6KyRww.js.map → kanban-definition-NDS4AKOZ-BwwcaZU2.js.map} +1 -1
  80. package/build/client/assets/{layout-qCiM2Jgn.js → layout-BAeq0-Is.js} +2 -2
  81. package/build/client/assets/{layout-qCiM2Jgn.js.map → layout-BAeq0-Is.js.map} +1 -1
  82. package/build/client/assets/{linear-B3zp51yW.js → linear-LWRPSVMz.js} +2 -2
  83. package/build/client/assets/{linear-B3zp51yW.js.map → linear-LWRPSVMz.js.map} +1 -1
  84. package/build/client/assets/{loading-BPTYJOXN.js → loading-b1FV2pQh.js} +2 -2
  85. package/build/client/assets/{loading-BPTYJOXN.js.map → loading-b1FV2pQh.js.map} +1 -1
  86. package/build/client/assets/{login-CfyUfm-m.js → login-Ci7cdiuj.js} +2 -2
  87. package/build/client/assets/{login-CfyUfm-m.js.map → login-Ci7cdiuj.js.map} +1 -1
  88. package/build/client/assets/{manifest-fe4b7228.js → manifest-c68964f2.js} +1 -1
  89. package/build/client/assets/{mdx-Dfsh6Vjk.js → mdx-C7imFHZE.js} +3 -3
  90. package/build/client/assets/{mdx-Dfsh6Vjk.js.map → mdx-C7imFHZE.js.map} +1 -1
  91. package/build/client/assets/{mermaid.core-ZaxoMXOj.js → mermaid.core-q9C-HfFu.js} +5 -5
  92. package/build/client/assets/{mermaid.core-ZaxoMXOj.js.map → mermaid.core-q9C-HfFu.js.map} +1 -1
  93. package/build/client/assets/{mindmap-definition-ALO5MXBD-CF3siXp6.js → mindmap-definition-ALO5MXBD-BhzLy0Zl.js} +2 -2
  94. package/build/client/assets/{mindmap-definition-ALO5MXBD-CF3siXp6.js.map → mindmap-definition-ALO5MXBD-BhzLy0Zl.js.map} +1 -1
  95. package/build/client/assets/{onboarding-5LC4kIVW.js → onboarding-c9ZuxLsm.js} +2 -2
  96. package/build/client/assets/{onboarding-5LC4kIVW.js.map → onboarding-c9ZuxLsm.js.map} +1 -1
  97. package/build/client/assets/{online-IWqRB9zP.js → online-DZKJk3C2.js} +2 -2
  98. package/build/client/assets/{online-IWqRB9zP.js.map → online-DZKJk3C2.js.map} +1 -1
  99. package/build/client/assets/{pieDiagram-IB7DONF6-B-gWQIHI.js → pieDiagram-IB7DONF6-CaTGj8RH.js} +2 -2
  100. package/build/client/assets/{pieDiagram-IB7DONF6-B-gWQIHI.js.map → pieDiagram-IB7DONF6-CaTGj8RH.js.map} +1 -1
  101. package/build/client/assets/{presence-BAL3jDku.js → presence-C9bUSihT.js} +2 -2
  102. package/build/client/assets/{presence-BAL3jDku.js.map → presence-C9bUSihT.js.map} +1 -1
  103. package/build/client/assets/{preview-D4amucCL.js → preview-CqZGJtsE.js} +2 -2
  104. package/build/client/assets/{preview-D4amucCL.js.map → preview-CqZGJtsE.js.map} +1 -1
  105. package/build/client/assets/{product-Cyum2biy.js → product-DJOWNuL-.js} +2 -2
  106. package/build/client/assets/{product-Cyum2biy.js.map → product-DJOWNuL-.js.map} +1 -1
  107. package/build/client/assets/{quadrantDiagram-7GDLP6J5-BQzo7p61.js → quadrantDiagram-7GDLP6J5-B4Od6z6p.js} +2 -2
  108. package/build/client/assets/{quadrantDiagram-7GDLP6J5-BQzo7p61.js.map → quadrantDiagram-7GDLP6J5-B4Od6z6p.js.map} +1 -1
  109. package/build/client/assets/{radar-MK3ICKWK-CM-Iz9PA.js → radar-MK3ICKWK-CENXhI0E.js} +2 -2
  110. package/build/client/assets/{radar-MK3ICKWK-CM-Iz9PA.js.map → radar-MK3ICKWK-CENXhI0E.js.map} +1 -1
  111. package/build/client/assets/{requirementDiagram-KVF5MWMF-DzaHc66R.js → requirementDiagram-KVF5MWMF-_w0WuUxy.js} +2 -2
  112. package/build/client/assets/{requirementDiagram-KVF5MWMF-DzaHc66R.js.map → requirementDiagram-KVF5MWMF-_w0WuUxy.js.map} +1 -1
  113. package/build/client/assets/{revalidation-ws-ho-umDqd.js → revalidation-ws-B0skixgr.js} +2 -2
  114. package/build/client/assets/{revalidation-ws-ho-umDqd.js.map → revalidation-ws-B0skixgr.js.map} +1 -1
  115. package/build/client/assets/root-JfOw9N7j.js +11 -0
  116. package/build/client/assets/root-JfOw9N7j.js.map +1 -0
  117. package/build/client/assets/{sankeyDiagram-QLVOVGJD-DfAVeZCk.js → sankeyDiagram-QLVOVGJD-Bt8556P1.js} +2 -2
  118. package/build/client/assets/{sankeyDiagram-QLVOVGJD-DfAVeZCk.js.map → sankeyDiagram-QLVOVGJD-Bt8556P1.js.map} +1 -1
  119. package/build/client/assets/{sequenceDiagram-X6HHIX6F-CljZRLoS.js → sequenceDiagram-X6HHIX6F-y2-oW3Ob.js} +2 -2
  120. package/build/client/assets/{sequenceDiagram-X6HHIX6F-CljZRLoS.js.map → sequenceDiagram-X6HHIX6F-y2-oW3Ob.js.map} +1 -1
  121. package/build/client/assets/{stateDiagram-DGXRK772-BzVfGv3W.js → stateDiagram-DGXRK772-B3BuD15b.js} +2 -2
  122. package/build/client/assets/{stateDiagram-DGXRK772-BzVfGv3W.js.map → stateDiagram-DGXRK772-B3BuD15b.js.map} +1 -1
  123. package/build/client/assets/{stateDiagram-v2-YXO3MK2T-8oX001yq.js → stateDiagram-v2-YXO3MK2T-BzFxWpqR.js} +2 -2
  124. package/build/client/assets/{stateDiagram-v2-YXO3MK2T-8oX001yq.js.map → stateDiagram-v2-YXO3MK2T-BzFxWpqR.js.map} +1 -1
  125. package/build/client/assets/{test-C14D-N72.js → test-DdUNKtkF.js} +2 -2
  126. package/build/client/assets/{test-C14D-N72.js.map → test-DdUNKtkF.js.map} +1 -1
  127. package/build/client/assets/{tests-6__AtHpI.js → tests-B1ak2CDI.js} +2 -2
  128. package/build/client/assets/{tests-6__AtHpI.js.map → tests-B1ak2CDI.js.map} +1 -1
  129. package/build/client/assets/{timeline-definition-BDJGKUSR-2TO9MtLY.js → timeline-definition-BDJGKUSR-DUa2yfAV.js} +2 -2
  130. package/build/client/assets/{timeline-definition-BDJGKUSR-2TO9MtLY.js.map → timeline-definition-BDJGKUSR-DUa2yfAV.js.map} +1 -1
  131. package/build/client/assets/{xychartDiagram-VJFVF3MP-Dh4nsbBT.js → xychartDiagram-VJFVF3MP-JztjcODi.js} +2 -2
  132. package/build/client/assets/{xychartDiagram-VJFVF3MP-Dh4nsbBT.js.map → xychartDiagram-VJFVF3MP-JztjcODi.js.map} +1 -1
  133. package/build/server/index.js +138 -163
  134. package/build/server/index.js.map +1 -1
  135. package/dist/server/index.js +82 -80
  136. package/package.json +3 -3
  137. package/build/client/assets/channel-5s71-OE9.js +0 -2
  138. package/build/client/assets/classDiagram-GIVACNV2-CWogZCzR.js +0 -2
  139. package/build/client/assets/classDiagram-v2-COTLJTTW-CWogZCzR.js +0 -2
  140. package/build/client/assets/clone-nHZ14b_E.js +0 -2
  141. package/build/client/assets/index-CEP3Xxa0.js +0 -36
  142. package/build/client/assets/index-CEP3Xxa0.js.map +0 -1
  143. package/build/client/assets/infoDiagram-PH2N3AL5-x87RxSs8.js +0 -3
  144. package/build/client/assets/root-tJmOmO9T.js +0 -11
  145. package/build/client/assets/root-tJmOmO9T.js.map +0 -1
  146. package/build/client/assets/update-repo-l0sNRNKZ.js +0 -2
  147. package/build/client/assets/update-repo-l0sNRNKZ.js.map +0 -1
@@ -13,7 +13,7 @@ import { getUserId, getSetClientIdCookieHeader } from "@epic-web/workshop-utils/
13
13
  import { z } from "zod";
14
14
  import { getApps, getExercises, getPlaygroundAppName, extractNumbersAndTypeFromAppNameOrPath, getAppFromFile, getAppByName, isProblemApp, isPlaygroundApp, isExerciseStepApp, getExercise, isSolutionApp, isExampleApp, getRelativePath as getRelativePath$1, getWorkshopRoot, setPlayground, requireExerciseApp, requireExercise, getExerciseApp, getAppDisplayName, getNextExerciseApp, getPrevExerciseApp, getAppPageRoute, getWorkshopFinished, getWorkshopInstructions } from "@epic-web/workshop-utils/apps.server";
15
15
  import { getEnv } from "@epic-web/workshop-utils/env.server";
16
- import { checkForUpdatesCached, updateLocalRepo, getCommitInfo, getLatestWorkshopAppVersion } from "@epic-web/workshop-utils/git.server";
16
+ import { checkForUpdatesCached, getCommitInfo, getLatestWorkshopAppVersion } from "@epic-web/workshop-utils/git.server";
17
17
  import { getUnmutedNotifications } from "@epic-web/workshop-utils/notifications.server";
18
18
  import { makeTimings, getServerTimeHeader, combineServerTimings, time } from "@epic-web/workshop-utils/timing.server";
19
19
  import { checkConnectionCached, dayjs } from "@epic-web/workshop-utils/utils.server";
@@ -29,7 +29,6 @@ import React__default, { useRef, useEffect, useMemo, useState, useSyncExternalSt
29
29
  import { extendTailwindMerge } from "tailwind-merge";
30
30
  import { Toaster, toast } from "sonner";
31
31
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
32
- import child_process, { spawn } from "child_process";
33
32
  import { useForm, getFormProps } from "@conform-to/react";
34
33
  import { parseWithZod } from "@conform-to/zod";
35
34
  import { getHintUtils } from "@epic-web/client-hints";
@@ -54,6 +53,7 @@ import { getDirModifiedTime } from "@epic-web/workshop-utils/modified-time.serve
54
53
  import * as esbuild from "esbuild";
55
54
  import { ElementScrollRestoration } from "@epic-web/restore-scroll";
56
55
  import RealMuxPlayer, { MaxResolution, MinResolution } from "@mux/mux-player-react";
56
+ import child_process from "child_process";
57
57
  import os from "os";
58
58
  import shellQuote from "shell-quote";
59
59
  import { LRUCache } from "lru-cache";
@@ -718,7 +718,106 @@ function SimpleTooltip({
718
718
  /* @__PURE__ */ jsx(TooltipContent, { children: content })
719
719
  ] });
720
720
  }
721
- async function action$e({ request }) {
721
+ function UpdateToast({
722
+ repoUpdates
723
+ }) {
724
+ const { updatesAvailable, diffLink, remoteCommit } = repoUpdates;
725
+ const inProgressToastId = useRef(
726
+ null
727
+ );
728
+ const updateNotificationId = useRef(
729
+ null
730
+ );
731
+ const updateInProgress = useRef(false);
732
+ useEffect(() => {
733
+ if (updatesAvailable && remoteCommit) {
734
+ const id = toast.info("New workshop updates available", {
735
+ duration: Infinity,
736
+ description: /* @__PURE__ */ jsxs("div", { children: [
737
+ `Get the latest updates by clicking the update button. `,
738
+ diffLink ? /* @__PURE__ */ jsx(
739
+ "a",
740
+ {
741
+ href: diffLink,
742
+ target: "_blank",
743
+ rel: "noreferrer",
744
+ className: "text-xs underline",
745
+ children: "View changes"
746
+ }
747
+ ) : null
748
+ ] }),
749
+ onDismiss: () => {
750
+ },
751
+ action: {
752
+ label: "Update",
753
+ onClick: async () => {
754
+ if (updateNotificationId.current) {
755
+ toast.dismiss(updateNotificationId.current);
756
+ updateNotificationId.current = null;
757
+ }
758
+ if (!inProgressToastId.current) {
759
+ inProgressToastId.current = toast.loading("Update in progress...");
760
+ }
761
+ if (updateInProgress.current) return;
762
+ updateInProgress.current = true;
763
+ try {
764
+ const { EPICSHOP_PARENT_PORT, EPICSHOP_PARENT_TOKEN } = window.ENV || {};
765
+ if (!EPICSHOP_PARENT_PORT || !EPICSHOP_PARENT_TOKEN) {
766
+ throw new Error("Update API not available");
767
+ }
768
+ const res = await fetch(
769
+ `http://localhost:${EPICSHOP_PARENT_PORT}/__epicshop-restart`,
770
+ {
771
+ method: "POST",
772
+ headers: {
773
+ "x-epicshop-token": EPICSHOP_PARENT_TOKEN
774
+ }
775
+ }
776
+ );
777
+ if (res.ok) {
778
+ throw new Error("Request to update workshop failed");
779
+ }
780
+ const data = await res.json().catch(() => ({}));
781
+ const schema = z.object({
782
+ status: z.enum(["ok", "error"]),
783
+ message: z.string().optional()
784
+ });
785
+ const parsed = schema.safeParse(data);
786
+ if (!parsed.success) {
787
+ console.error("Invalid response from update API", data);
788
+ throw new Error("Invalid response from update API");
789
+ }
790
+ const { status, message } = parsed.data;
791
+ if (status === "ok") {
792
+ toast.success("Workshop updated", {
793
+ description: "Refreshing the page..."
794
+ });
795
+ window.location.reload();
796
+ } else {
797
+ toast.error("Failed to update workshop", {
798
+ description: message || "Unknown error"
799
+ });
800
+ }
801
+ } catch (err) {
802
+ toast.error("Failed to update workshop", {
803
+ description: err instanceof Error ? err.message : String(err)
804
+ });
805
+ } finally {
806
+ updateInProgress.current = false;
807
+ if (inProgressToastId.current) {
808
+ toast.dismiss(inProgressToastId.current);
809
+ inProgressToastId.current = null;
810
+ }
811
+ }
812
+ }
813
+ }
814
+ });
815
+ updateNotificationId.current = id;
816
+ }
817
+ }, [updatesAvailable, diffLink, remoteCommit]);
818
+ return null;
819
+ }
820
+ async function action$d({ request }) {
722
821
  const formData = await request.formData();
723
822
  const intent = formData.get("intent");
724
823
  const id = formData.get("id");
@@ -773,122 +872,6 @@ function Notifications({
773
872
  const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
774
873
  __proto__: null,
775
874
  Notifications,
776
- action: action$e
777
- }, Symbol.toStringTag, { value: "Module" }));
778
- async function action$d({ request }) {
779
- const formData = await request.formData();
780
- const intent = formData.get("intent");
781
- const id = formData.get("id");
782
- if (intent === "dismiss" && typeof id === "string") {
783
- await muteNotification(`update-repo-${id}`);
784
- return json({ type: "dismissed" });
785
- }
786
- if (intent === "update" && typeof id === "string") {
787
- const updates = await checkForUpdatesCached();
788
- if (!updates.updatesAvailable) {
789
- return json({ type: "error", error: "No updates available" }, {
790
- status: 400
791
- });
792
- }
793
- await updateLocalRepo();
794
- spawn(process.argv[0], process.argv.slice(1), {
795
- detached: true,
796
- stdio: "inherit",
797
- env: {
798
- ...process.env,
799
- EPICSHOP_SLOW_START: "true"
800
- }
801
- });
802
- setTimeout(() => {
803
- console.log("exiting the old server process");
804
- process.exit(0);
805
- }, 200);
806
- return json({ type: "success" });
807
- }
808
- throw json({ type: "error", error: "Invalid intent" }, {
809
- status: 400
810
- });
811
- }
812
- function UpdateToast({
813
- repoUpdates
814
- }) {
815
- const updateFetcher = useFetcher();
816
- const updateFetcherRef = useRef(updateFetcher);
817
- const dismissFetcher = useFetcher();
818
- const dismissFetcherRef = useRef(dismissFetcher);
819
- const { updatesAvailable, diffLink, remoteCommit } = repoUpdates;
820
- useEffect(() => {
821
- if (updatesAvailable && remoteCommit) {
822
- toast.info("New workshop updates available", {
823
- duration: Infinity,
824
- description: /* @__PURE__ */ jsxs("div", { children: [
825
- `Get the latest updates by clicking the update button. `,
826
- diffLink ? /* @__PURE__ */ jsx(
827
- "a",
828
- {
829
- href: diffLink,
830
- target: "_blank",
831
- rel: "noreferrer",
832
- className: "text-xs underline",
833
- children: "View changes"
834
- }
835
- ) : null
836
- ] }),
837
- onDismiss: () => {
838
- const formData = new FormData();
839
- formData.append("intent", "dismiss");
840
- formData.append("id", remoteCommit);
841
- dismissFetcherRef.current.submit(formData, {
842
- method: "post",
843
- action: "/admin/update-repo"
844
- });
845
- },
846
- action: {
847
- label: "Update",
848
- onClick: () => {
849
- const formData = new FormData();
850
- formData.append("intent", "update");
851
- formData.append("id", remoteCommit);
852
- updateFetcherRef.current.submit(formData, {
853
- method: "post",
854
- action: "/admin/update-repo"
855
- });
856
- }
857
- }
858
- });
859
- }
860
- }, [updatesAvailable, diffLink, remoteCommit]);
861
- const fetcherResponse = updateFetcher.data;
862
- useEffect(() => {
863
- if (!fetcherResponse) return;
864
- if (fetcherResponse.type === "error") {
865
- toast.error("Failed to update workshop", {
866
- description: fetcherResponse.error
867
- });
868
- } else if (fetcherResponse.type === "success") {
869
- toast.success("Workshop updated", {
870
- description: "Refreshing the page in 5 seconds...",
871
- action: {
872
- label: "Refresh now",
873
- onClick: () => {
874
- window.location.reload();
875
- }
876
- }
877
- });
878
- setTimeout(() => {
879
- window.location.reload();
880
- }, 5e3);
881
- } else {
882
- toast.error("Failed to update workshop", {
883
- description: "Unknown error"
884
- });
885
- }
886
- }, [fetcherResponse]);
887
- return null;
888
- }
889
- const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
890
- __proto__: null,
891
- UpdateToast,
892
875
  action: action$d
893
876
  }, Symbol.toStringTag, { value: "Module" }));
894
877
  function useRequestInfo() {
@@ -1056,7 +1039,7 @@ function useTheme() {
1056
1039
  }
1057
1040
  return requestInfo.session.theme ?? hints.theme;
1058
1041
  }
1059
- const route47 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1042
+ const route46 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1060
1043
  __proto__: null,
1061
1044
  ThemeSwitch,
1062
1045
  action: action$c,
@@ -2125,7 +2108,7 @@ function ProgressToggle({
2125
2108
  )
2126
2109
  ] });
2127
2110
  }
2128
- const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2111
+ const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2129
2112
  __proto__: null,
2130
2113
  ProgressToggle,
2131
2114
  action: action$b,
@@ -3886,7 +3869,7 @@ async function loader$s({ request, params }) {
3886
3869
  epicLiveReloadConnect({
3887
3870
  onOpen: () => window.location.reload(),
3888
3871
  }),
3889
- 1000
3872
+ 1000
3890
3873
  );
3891
3874
  }
3892
3875
  };
@@ -4503,7 +4486,7 @@ function getMaxResolutionValue(resolution) {
4503
4486
  if (resolution <= 1440) return MaxResolution.upTo1440p;
4504
4487
  return MaxResolution.upTo2160p;
4505
4488
  }
4506
- const route48 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4489
+ const route47 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
4507
4490
  __proto__: null,
4508
4491
  MuxPlayer,
4509
4492
  action: action$8,
@@ -5611,7 +5594,7 @@ function EditFileOnGitHub({
5611
5594
  );
5612
5595
  }
5613
5596
  const LaunchEditor = ENV.EPICSHOP_DEPLOYED ? LaunchGitHub : LaunchEditorImpl;
5614
- const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5597
+ const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
5615
5598
  __proto__: null,
5616
5599
  EditFileOnGitHub,
5617
5600
  LaunchEditor,
@@ -6282,7 +6265,7 @@ function SetAppToPlayground({ appName }) {
6282
6265
  }
6283
6266
  );
6284
6267
  }
6285
- const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6268
+ const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
6286
6269
  __proto__: null,
6287
6270
  PlaygroundChooser,
6288
6271
  SetAppToPlayground,
@@ -7030,7 +7013,7 @@ function AppStarter({ name }) {
7030
7013
  fetcher.state === "idle" ? /* @__PURE__ */ jsx(Button, { type: "submit", name: "intent", value: "start", varient: "mono", children: "Start App" }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Loading, { children: "Starting App" }) })
7031
7014
  ] });
7032
7015
  }
7033
- const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7016
+ const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
7034
7017
  __proto__: null,
7035
7018
  AppStarter,
7036
7019
  AppStopper,
@@ -8773,7 +8756,7 @@ function StopTest({
8773
8756
  )
8774
8757
  ] });
8775
8758
  }
8776
- const route46 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8759
+ const route45 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
8777
8760
  __proto__: null,
8778
8761
  ClearTest,
8779
8762
  StopTest,
@@ -9845,7 +9828,7 @@ async function loader$e({ request }) {
9845
9828
  };
9846
9829
  });
9847
9830
  }
9848
- const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9831
+ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
9849
9832
  __proto__: null,
9850
9833
  EventSchema,
9851
9834
  loader: loader$e
@@ -10602,7 +10585,7 @@ function Version() {
10602
10585
  ] })
10603
10586
  ] });
10604
10587
  }
10605
- const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10588
+ const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10606
10589
  __proto__: null,
10607
10590
  default: Version,
10608
10591
  handle: handle$1,
@@ -10617,7 +10600,7 @@ async function loader$7({ request }) {
10617
10600
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10618
10601
  );
10619
10602
  }
10620
- const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10603
+ const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10621
10604
  __proto__: null,
10622
10605
  loader: loader$7
10623
10606
  }, Symbol.toStringTag, { value: "Module" }));
@@ -10706,7 +10689,7 @@ function DiffViewer() {
10706
10689
  }
10707
10690
  );
10708
10691
  }
10709
- const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10692
+ const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10710
10693
  __proto__: null,
10711
10694
  default: DiffViewer,
10712
10695
  loader: loader$6
@@ -10719,7 +10702,7 @@ async function loader$5({ request }) {
10719
10702
  { headers: { "Server-Timing": getServerTimeHeader(timings) } }
10720
10703
  );
10721
10704
  }
10722
- const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10705
+ const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10723
10706
  __proto__: null,
10724
10707
  loader: loader$5
10725
10708
  }, Symbol.toStringTag, { value: "Module" }));
@@ -11050,7 +11033,7 @@ function OgLayout({
11050
11033
  }
11051
11034
  );
11052
11035
  }
11053
- const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11036
+ const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11054
11037
  __proto__: null,
11055
11038
  loader: loader$4
11056
11039
  }, Symbol.toStringTag, { value: "Module" }));
@@ -11098,7 +11081,7 @@ function Onboarding() {
11098
11081
  /* @__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!" }) })
11099
11082
  ] });
11100
11083
  }
11101
- const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11084
+ const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11102
11085
  __proto__: null,
11103
11086
  action,
11104
11087
  default: Onboarding,
@@ -11124,7 +11107,7 @@ async function loader$2() {
11124
11107
  }
11125
11108
  return Response.json({ processes, testProcesses });
11126
11109
  }
11127
- const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11110
+ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11128
11111
  __proto__: null,
11129
11112
  loader: loader$2
11130
11113
  }, Symbol.toStringTag, { value: "Module" }));
@@ -11133,7 +11116,7 @@ function loader$1({ request }) {
11133
11116
  { type: "sitemap", value: `${getDomainUrl(request)}/sitemap.xml` }
11134
11117
  ]);
11135
11118
  }
11136
- const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11119
+ const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11137
11120
  __proto__: null,
11138
11121
  loader: loader$1
11139
11122
  }, Symbol.toStringTag, { value: "Module" }));
@@ -11146,11 +11129,11 @@ async function loader({ request, context }) {
11146
11129
  }
11147
11130
  });
11148
11131
  }
11149
- const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11132
+ const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
11150
11133
  __proto__: null,
11151
11134
  loader
11152
11135
  }, Symbol.toStringTag, { value: "Module" }));
11153
- const serverManifest = { "entry": { "module": "/assets/entry.client-BLUlgPHE.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.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-tJmOmO9T.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/pe-BShc2dvc.js", "/assets/error-boundary-B07cWiEy.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/index-DvQyydjU.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-CEP3Xxa0.js", "/assets/presence-BAL3jDku.js", "/assets/seo-pBpFCWsy.js", "/assets/online-IWqRB9zP.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/_-BaHOmd8F.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/error-boundary-B07cWiEy.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.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-D1r_62oj.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/pe-BShc2dvc.js", "/assets/product-Cyum2biy.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-Do-KWT0a.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/online-IWqRB9zP.js", "/assets/presence-BAL3jDku.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-CEP3Xxa0.js", "/assets/components-5arJTWsS.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-CbFDiVNd.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/components-5arJTWsS.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": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-ut4t-aMQ.js", "imports": ["/assets/discord-BU7RzE6-.js", "/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.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-D7_F6t3x.js", "imports": ["/assets/index-Dsusf_Av.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-DtILU6SM.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-DN9DRRHf.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/progress-BJ4ADF-s.js", "/assets/misc-2sBiisF5.js", "/assets/seo-pBpFCWsy.js", "/assets/components-5arJTWsS.js", "/assets/index-CEP3Xxa0.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-DoOFEk-P.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.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-DzlTTMQ0.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/error-boundary-B07cWiEy.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/progress-BJ4ADF-s.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/misc-2sBiisF5.js", "/assets/seo-pBpFCWsy.js", "/assets/epic-video-DN9DRRHf.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-CEP3Xxa0.js", "/assets/components-5arJTWsS.js", "/assets/index-Do-KWT0a.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/index-BmMpCvYx.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js"], "css": ["/assets/epic-video-D2Xftn6t.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-CQvK51s0.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/preview-D4amucCL.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/button-Dt4EcDfR.js", "/assets/loading-BPTYJOXN.js", "/assets/index-CEP3Xxa0.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/progress-bar-DgnkQxQw.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-Dkt2MSig.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-BmMpCvYx.js", "/assets/misc-2sBiisF5.js", "/assets/diff-Bu4t2NGL.js", "/assets/error-boundary-B07cWiEy.js", "/assets/loading-BPTYJOXN.js", "/assets/discord-BU7RzE6-.js", "/assets/online-IWqRB9zP.js", "/assets/components-5arJTWsS.js", "/assets/index-DvQyydjU.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/tests-6__AtHpI.js", "/assets/preview-D4amucCL.js", "/assets/index-Do-KWT0a.js", "/assets/accordion-CpiLc1m2.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/epic-video-DN9DRRHf.js", "/assets/index-CEP3Xxa0.js", "/assets/pe-BShc2dvc.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/button-Dt4EcDfR.js"], "css": ["/assets/epic-video-D2Xftn6t.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-C14D-N72.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/tests-6__AtHpI.js", "/assets/components-5arJTWsS.js", "/assets/epic-video-DN9DRRHf.js", "/assets/index-CEP3Xxa0.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/accordion-CpiLc1m2.js", "/assets/index-BmMpCvYx.js", "/assets/index-Do-KWT0a.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-CEK9anWX.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-DN9DRRHf.js", "/assets/misc-2sBiisF5.js", "/assets/loading-BPTYJOXN.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-CEP3Xxa0.js", "/assets/online-IWqRB9zP.js", "/assets/seo-pBpFCWsy.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/tooltip-Bzd6O8vq.js"], "css": ["/assets/epic-video-D2Xftn6t.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-B3G1RUDO.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-DN9DRRHf.js", "/assets/misc-2sBiisF5.js", "/assets/loading-BPTYJOXN.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-ho-umDqd.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/online-IWqRB9zP.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-CEP3Xxa0.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/tooltip-Bzd6O8vq.js"], "css": ["/assets/epic-video-D2Xftn6t.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-BfCSiT_X.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-DN9DRRHf.js", "/assets/error-boundary-B07cWiEy.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/misc-2sBiisF5.js", "/assets/progress-BJ4ADF-s.js", "/assets/components-5arJTWsS.js", "/assets/index-CEP3Xxa0.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-CfyUfm-m.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/button-Dt4EcDfR.js", "/assets/loading-BPTYJOXN.js", "/assets/product-Cyum2biy.js", "/assets/workshop-config-DchzGYJM.js", "/assets/index-CEP3Xxa0.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js"], "css": [] }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/preferences-BkWQyRCq.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/components-5arJTWsS.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-Bg0iSyle.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-B_BIIcpM.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.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/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-Fw2eA3AF.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/progress-BJ4ADF-s.js", "/assets/components-5arJTWsS.js", "/assets/pe-BShc2dvc.js"], "css": [] }, "routes/admin+/notifications": { "id": "routes/admin+/notifications", "parentId": "routes/admin+/_layout", "path": "notifications", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/notifications-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/update-repo": { "id": "routes/admin+/update-repo", "parentId": "routes/admin+/_layout", "path": "update-repo", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-repo-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-DriSvNMy.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/workshop-config-DchzGYJM.js", "/assets/components-5arJTWsS.js"], "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-8N5KyD7o.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/diff-Bu4t2NGL.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/components-5arJTWsS.js", "/assets/accordion-CpiLc1m2.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-BmMpCvYx.js", "/assets/index-Do-KWT0a.js", "/assets/mdx-Dfsh6Vjk.js", "/assets/epic-video-DN9DRRHf.js", "/assets/index-CEP3Xxa0.js", "/assets/pe-BShc2dvc.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/revalidation-ws-ho-umDqd.js"], "css": ["/assets/epic-video-D2Xftn6t.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-5LC4kIVW.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/epic-video-DN9DRRHf.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/index-CEP3Xxa0.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-IWqRB9zP.js", "/assets/loading-BPTYJOXN.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js"], "css": ["/assets/epic-video-D2Xftn6t.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-fe4b7228.js", "version": "fe4b7228" };
11136
+ const serverManifest = { "entry": { "module": "/assets/entry.client-BLUlgPHE.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.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-JfOw9N7j.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/pe-BShc2dvc.js", "/assets/error-boundary-B07cWiEy.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/index-DvQyydjU.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-DLC5u33j.js", "/assets/presence-C9bUSihT.js", "/assets/seo-pBpFCWsy.js", "/assets/online-DZKJk3C2.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/_-BaHOmd8F.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/error-boundary-B07cWiEy.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.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-B_NrRv0S.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/pe-BShc2dvc.js", "/assets/product-DJOWNuL-.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-Do-KWT0a.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/online-DZKJk3C2.js", "/assets/presence-C9bUSihT.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-DLC5u33j.js", "/assets/components-5arJTWsS.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-CbFDiVNd.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/components-5arJTWsS.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": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-ut4t-aMQ.js", "imports": ["/assets/discord-BU7RzE6-.js", "/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.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-D7_F6t3x.js", "imports": ["/assets/index-Dsusf_Av.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-Dqi7TgL9.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/mdx-C7imFHZE.js", "/assets/progress-BJ4ADF-s.js", "/assets/misc-2sBiisF5.js", "/assets/seo-pBpFCWsy.js", "/assets/components-5arJTWsS.js", "/assets/index-DLC5u33j.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-DoOFEk-P.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/components-5arJTWsS.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-QRe2q83m.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/error-boundary-B07cWiEy.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/mdx-C7imFHZE.js", "/assets/progress-BJ4ADF-s.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/misc-2sBiisF5.js", "/assets/seo-pBpFCWsy.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-DLC5u33j.js", "/assets/components-5arJTWsS.js", "/assets/index-Do-KWT0a.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/index-BmMpCvYx.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js"], "css": ["/assets/epic-video-D2Xftn6t.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-BYSDu0vh.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/preview-CqZGJtsE.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/button-Dt4EcDfR.js", "/assets/loading-b1FV2pQh.js", "/assets/index-DLC5u33j.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/progress-bar-DgnkQxQw.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-DPHVg8Eh.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-BmMpCvYx.js", "/assets/misc-2sBiisF5.js", "/assets/diff-D5_VwPLF.js", "/assets/error-boundary-B07cWiEy.js", "/assets/loading-b1FV2pQh.js", "/assets/discord-BU7RzE6-.js", "/assets/online-DZKJk3C2.js", "/assets/components-5arJTWsS.js", "/assets/index-DvQyydjU.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/tests-B1ak2CDI.js", "/assets/preview-CqZGJtsE.js", "/assets/index-Do-KWT0a.js", "/assets/accordion-CpiLc1m2.js", "/assets/mdx-C7imFHZE.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/index-DLC5u33j.js", "/assets/pe-BShc2dvc.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/button-Dt4EcDfR.js"], "css": ["/assets/epic-video-D2Xftn6t.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-DdUNKtkF.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/tests-B1ak2CDI.js", "/assets/components-5arJTWsS.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/index-DLC5u33j.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/accordion-CpiLc1m2.js", "/assets/index-BmMpCvYx.js", "/assets/index-Do-KWT0a.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/set-playground-DW2Ys-rV.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-C5m6M0gM.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/misc-2sBiisF5.js", "/assets/loading-b1FV2pQh.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/mdx-C7imFHZE.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-DLC5u33j.js", "/assets/online-DZKJk3C2.js", "/assets/seo-pBpFCWsy.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/tooltip-Bzd6O8vq.js"], "css": ["/assets/epic-video-D2Xftn6t.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-MrsevkkK.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/misc-2sBiisF5.js", "/assets/loading-b1FV2pQh.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/revalidation-ws-B0skixgr.js", "/assets/mdx-C7imFHZE.js", "/assets/online-DZKJk3C2.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BJ4ADF-s.js", "/assets/index-DLC5u33j.js", "/assets/components-5arJTWsS.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/pe-BShc2dvc.js", "/assets/tooltip-Bzd6O8vq.js"], "css": ["/assets/epic-video-D2Xftn6t.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-9euhNa27.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/index-B8yUFowV.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/error-boundary-B07cWiEy.js", "/assets/mdx-C7imFHZE.js", "/assets/misc-2sBiisF5.js", "/assets/progress-BJ4ADF-s.js", "/assets/components-5arJTWsS.js", "/assets/index-DLC5u33j.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js"], "css": ["/assets/epic-video-D2Xftn6t.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-Ci7cdiuj.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/use-event-source-Dar8h_B8.js", "/assets/button-Dt4EcDfR.js", "/assets/loading-b1FV2pQh.js", "/assets/product-DJOWNuL-.js", "/assets/workshop-config-DchzGYJM.js", "/assets/index-DLC5u33j.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js"], "css": [] }, "routes/_app+/preferences": { "id": "routes/_app+/preferences", "parentId": "routes/_app+/_layout", "path": "preferences", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/preferences-BkWQyRCq.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/components-5arJTWsS.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-Bg0iSyle.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-B_BIIcpM.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/components-5arJTWsS.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/admin+/index": { "id": "routes/admin+/index", "parentId": "routes/admin+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-Fw2eA3AF.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/progress-BJ4ADF-s.js", "/assets/components-5arJTWsS.js", "/assets/pe-BShc2dvc.js"], "css": [] }, "routes/admin+/notifications": { "id": "routes/admin+/notifications", "parentId": "routes/admin+/_layout", "path": "notifications", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/notifications-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/admin+/version": { "id": "routes/admin+/version", "parentId": "routes/admin+/_layout", "path": "version", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/version-DriSvNMy.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/workshop-config-DchzGYJM.js", "/assets/components-5arJTWsS.js"], "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-BKR4usVv.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/misc-2sBiisF5.js", "/assets/diff-D5_VwPLF.js", "/assets/nav-chevrons-CV-dpXNR.js", "/assets/components-5arJTWsS.js", "/assets/accordion-CpiLc1m2.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/index-BmMpCvYx.js", "/assets/index-Do-KWT0a.js", "/assets/mdx-C7imFHZE.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/index-DLC5u33j.js", "/assets/pe-BShc2dvc.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js", "/assets/progress-bar-DgnkQxQw.js", "/assets/revalidation-ws-B0skixgr.js"], "css": ["/assets/epic-video-D2Xftn6t.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-c9ZuxLsm.js", "imports": ["/assets/index-Dsusf_Av.js", "/assets/button-Dt4EcDfR.js", "/assets/epic-video-CmlkW6Rw.js", "/assets/components-5arJTWsS.js", "/assets/misc-2sBiisF5.js", "/assets/index-DLC5u33j.js", "/assets/tooltip-Bzd6O8vq.js", "/assets/pe-BShc2dvc.js", "/assets/online-DZKJk3C2.js", "/assets/loading-b1FV2pQh.js", "/assets/user-DNSnhqGn.js", "/assets/workshop-config-DchzGYJM.js"], "css": ["/assets/epic-video-D2Xftn6t.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-c68964f2.js", "version": "c68964f2" };
11154
11137
  const mode = "production";
11155
11138
  const assetsBuildDirectory = "build/client";
11156
11139
  const basename = "/";
@@ -11407,21 +11390,13 @@ const routes = {
11407
11390
  caseSensitive: void 0,
11408
11391
  module: route30
11409
11392
  },
11410
- "routes/admin+/update-repo": {
11411
- id: "routes/admin+/update-repo",
11412
- parentId: "routes/admin+/_layout",
11413
- path: "update-repo",
11414
- index: void 0,
11415
- caseSensitive: void 0,
11416
- module: route31
11417
- },
11418
11393
  "routes/admin+/version": {
11419
11394
  id: "routes/admin+/version",
11420
11395
  parentId: "routes/admin+/_layout",
11421
11396
  path: "version",
11422
11397
  index: void 0,
11423
11398
  caseSensitive: void 0,
11424
- module: route32
11399
+ module: route31
11425
11400
  },
11426
11401
  "routes/apps": {
11427
11402
  id: "routes/apps",
@@ -11429,7 +11404,7 @@ const routes = {
11429
11404
  path: "apps",
11430
11405
  index: void 0,
11431
11406
  caseSensitive: void 0,
11432
- module: route33
11407
+ module: route32
11433
11408
  },
11434
11409
  "routes/diff": {
11435
11410
  id: "routes/diff",
@@ -11437,7 +11412,7 @@ const routes = {
11437
11412
  path: "diff",
11438
11413
  index: void 0,
11439
11414
  caseSensitive: void 0,
11440
- module: route34
11415
+ module: route33
11441
11416
  },
11442
11417
  "routes/exercises": {
11443
11418
  id: "routes/exercises",
@@ -11445,7 +11420,7 @@ const routes = {
11445
11420
  path: "exercises",
11446
11421
  index: void 0,
11447
11422
  caseSensitive: void 0,
11448
- module: route35
11423
+ module: route34
11449
11424
  },
11450
11425
  "routes/launch-editor": {
11451
11426
  id: "routes/launch-editor",
@@ -11453,7 +11428,7 @@ const routes = {
11453
11428
  path: "launch-editor",
11454
11429
  index: void 0,
11455
11430
  caseSensitive: void 0,
11456
- module: route36
11431
+ module: route35
11457
11432
  },
11458
11433
  "routes/login-sse": {
11459
11434
  id: "routes/login-sse",
@@ -11461,7 +11436,7 @@ const routes = {
11461
11436
  path: "login-sse",
11462
11437
  index: void 0,
11463
11438
  caseSensitive: void 0,
11464
- module: route37
11439
+ module: route36
11465
11440
  },
11466
11441
  "routes/og": {
11467
11442
  id: "routes/og",
@@ -11469,7 +11444,7 @@ const routes = {
11469
11444
  path: "og",
11470
11445
  index: void 0,
11471
11446
  caseSensitive: void 0,
11472
- module: route38
11447
+ module: route37
11473
11448
  },
11474
11449
  "routes/onboarding": {
11475
11450
  id: "routes/onboarding",
@@ -11477,7 +11452,7 @@ const routes = {
11477
11452
  path: "onboarding",
11478
11453
  index: void 0,
11479
11454
  caseSensitive: void 0,
11480
- module: route39
11455
+ module: route38
11481
11456
  },
11482
11457
  "routes/processes": {
11483
11458
  id: "routes/processes",
@@ -11485,7 +11460,7 @@ const routes = {
11485
11460
  path: "processes",
11486
11461
  index: void 0,
11487
11462
  caseSensitive: void 0,
11488
- module: route40
11463
+ module: route39
11489
11464
  },
11490
11465
  "routes/progress": {
11491
11466
  id: "routes/progress",
@@ -11493,7 +11468,7 @@ const routes = {
11493
11468
  path: "progress",
11494
11469
  index: void 0,
11495
11470
  caseSensitive: void 0,
11496
- module: route41
11471
+ module: route40
11497
11472
  },
11498
11473
  "routes/robots[.]txt": {
11499
11474
  id: "routes/robots[.]txt",
@@ -11501,7 +11476,7 @@ const routes = {
11501
11476
  path: "robots.txt",
11502
11477
  index: void 0,
11503
11478
  caseSensitive: void 0,
11504
- module: route42
11479
+ module: route41
11505
11480
  },
11506
11481
  "routes/set-playground": {
11507
11482
  id: "routes/set-playground",
@@ -11509,7 +11484,7 @@ const routes = {
11509
11484
  path: "set-playground",
11510
11485
  index: void 0,
11511
11486
  caseSensitive: void 0,
11512
- module: route43
11487
+ module: route42
11513
11488
  },
11514
11489
  "routes/sitemap[.]xml": {
11515
11490
  id: "routes/sitemap[.]xml",
@@ -11517,7 +11492,7 @@ const routes = {
11517
11492
  path: "sitemap.xml",
11518
11493
  index: void 0,
11519
11494
  caseSensitive: void 0,
11520
- module: route44
11495
+ module: route43
11521
11496
  },
11522
11497
  "routes/start": {
11523
11498
  id: "routes/start",
@@ -11525,7 +11500,7 @@ const routes = {
11525
11500
  path: "start",
11526
11501
  index: void 0,
11527
11502
  caseSensitive: void 0,
11528
- module: route45
11503
+ module: route44
11529
11504
  },
11530
11505
  "routes/test": {
11531
11506
  id: "routes/test",
@@ -11533,7 +11508,7 @@ const routes = {
11533
11508
  path: "test",
11534
11509
  index: void 0,
11535
11510
  caseSensitive: void 0,
11536
- module: route46
11511
+ module: route45
11537
11512
  },
11538
11513
  "routes/theme/index": {
11539
11514
  id: "routes/theme/index",
@@ -11541,7 +11516,7 @@ const routes = {
11541
11516
  path: "theme",
11542
11517
  index: void 0,
11543
11518
  caseSensitive: void 0,
11544
- module: route47
11519
+ module: route46
11545
11520
  },
11546
11521
  "routes/video-player/index": {
11547
11522
  id: "routes/video-player/index",
@@ -11549,7 +11524,7 @@ const routes = {
11549
11524
  path: "video-player",
11550
11525
  index: void 0,
11551
11526
  caseSensitive: void 0,
11552
- module: route48
11527
+ module: route47
11553
11528
  }
11554
11529
  };
11555
11530
  export {