@epic-web/workshop-app 4.5.0 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/build/client/assets/{_-CGn-2XfF.js → _-COWH0sBh.js} +2 -2
  2. package/build/client/assets/{_-CGn-2XfF.js.map → _-COWH0sBh.js.map} +1 -1
  3. package/build/client/assets/{_exerciseNumber-D6YNCQoj.js → _exerciseNumber-jTT5JRgC.js} +2 -2
  4. package/build/client/assets/_exerciseNumber-jTT5JRgC.js.map +1 -0
  5. package/build/client/assets/{_exerciseNumber_._stepNumber-D00x64Vg.js → _exerciseNumber_._stepNumber-C37pli7_.js} +2 -2
  6. package/build/client/assets/{_exerciseNumber_._stepNumber-D00x64Vg.js.map → _exerciseNumber_._stepNumber-C37pli7_.js.map} +1 -1
  7. package/build/client/assets/{_exerciseNumber_.finished-DR3gQ1pK.js → _exerciseNumber_.finished-zgJKkJ7I.js} +2 -2
  8. package/build/client/assets/_exerciseNumber_.finished-zgJKkJ7I.js.map +1 -0
  9. package/build/client/assets/{_layout-DXegGcTM.js → _layout-CGUp6BkS.js} +2 -2
  10. package/build/client/assets/_layout-CGUp6BkS.js.map +1 -0
  11. package/build/client/assets/{_layout-Caqk73Ed.js → _layout-CNgYirUN.js} +2 -2
  12. package/build/client/assets/{_layout-Caqk73Ed.js.map → _layout-CNgYirUN.js.map} +1 -1
  13. package/build/client/assets/{_layout-MFX35ekR.js → _layout-D0zbQZjf.js} +2 -2
  14. package/build/client/assets/_layout-D0zbQZjf.js.map +1 -0
  15. package/build/client/assets/{account-Cp6A7SfU.js → account-DesvwOeg.js} +2 -2
  16. package/build/client/assets/{account-Cp6A7SfU.js.map → account-DesvwOeg.js.map} +1 -1
  17. package/build/client/assets/{diff-Ddyuc0-s.js → diff-DZFtsH-a.js} +2 -2
  18. package/build/client/assets/{diff-Ddyuc0-s.js.map → diff-DZFtsH-a.js.map} +1 -1
  19. package/build/client/assets/diff-tDYfSlOc.js +42 -0
  20. package/build/client/assets/diff-tDYfSlOc.js.map +1 -0
  21. package/build/client/assets/{discord-DZWTKMPn.js → discord-0kv66Q6F.js} +2 -2
  22. package/build/client/assets/{discord-DZWTKMPn.js.map → discord-0kv66Q6F.js.map} +1 -1
  23. package/build/client/assets/discord-Xp0X4-Fl.js +2 -0
  24. package/build/client/assets/discord-Xp0X4-Fl.js.map +1 -0
  25. package/build/client/assets/epic-video-BwtXsHGU.js +2988 -0
  26. package/build/client/assets/epic-video-BwtXsHGU.js.map +1 -0
  27. package/build/client/assets/{error-boundary-BUV7xD2e.js → error-boundary-Bcric_4t.js} +2 -2
  28. package/build/client/assets/{error-boundary-BUV7xD2e.js.map → error-boundary-Bcric_4t.js.map} +1 -1
  29. package/build/client/assets/{finished-gQ-B3k8j.js → finished-BSWdtBA4.js} +2 -2
  30. package/build/client/assets/finished-BSWdtBA4.js.map +1 -0
  31. package/build/client/assets/{index-CVJowtf6.js → index-BQRtqn3g.js} +2 -2
  32. package/build/client/assets/{index-CVJowtf6.js.map → index-BQRtqn3g.js.map} +1 -1
  33. package/build/client/assets/index-Bg9MMnnf.js +2 -0
  34. package/build/client/assets/index-Bg9MMnnf.js.map +1 -0
  35. package/build/client/assets/{login-BCM4kJTm.js → login-D8zyjBAb.js} +2 -2
  36. package/build/client/assets/{login-BCM4kJTm.js.map → login-D8zyjBAb.js.map} +1 -1
  37. package/build/client/assets/{manifest-0b01450d.js → manifest-03cfc48d.js} +1 -1
  38. package/build/client/assets/{mdx-BVZ4sNxQ.js → mdx-BYvGbvEr.js} +2 -2
  39. package/build/client/assets/{mdx-BVZ4sNxQ.js.map → mdx-BYvGbvEr.js.map} +1 -1
  40. package/build/client/assets/{misc-DBBsMyAP.js → misc-DNgC2Frq.js} +2 -2
  41. package/build/client/assets/{misc-DBBsMyAP.js.map → misc-DNgC2Frq.js.map} +1 -1
  42. package/build/client/assets/{nav-chevrons-DnG58Hov.js → nav-chevrons-DOYtx9XE.js} +2 -2
  43. package/build/client/assets/{nav-chevrons-DnG58Hov.js.map → nav-chevrons-DOYtx9XE.js.map} +1 -1
  44. package/build/client/assets/{onboarding-oSo74A5L.js → onboarding-euWyXpCL.js} +2 -2
  45. package/build/client/assets/{onboarding-oSo74A5L.js.map → onboarding-euWyXpCL.js.map} +1 -1
  46. package/build/client/assets/presence-BJPzwbUy.js.map +1 -1
  47. package/build/client/assets/progress-CF9Xwfxf.js +2 -0
  48. package/build/client/assets/progress-CF9Xwfxf.js.map +1 -0
  49. package/build/client/assets/{progress-bar-TRgQ8YZ8.js → progress-bar-7LK87ZMh.js} +2 -2
  50. package/build/client/assets/{progress-bar-TRgQ8YZ8.js.map → progress-bar-7LK87ZMh.js.map} +1 -1
  51. package/build/client/assets/{root-CxuwYUpK.js → root-BJrmef-V.js} +2 -2
  52. package/build/client/assets/{root-CxuwYUpK.js.map → root-BJrmef-V.js.map} +1 -1
  53. package/build/client/assets/support-DUAHYT3r.js.map +1 -1
  54. package/build/client/assets/tooltip-Kw0lYWBI.js +2 -0
  55. package/build/client/assets/tooltip-Kw0lYWBI.js.map +1 -0
  56. package/build/server/index.js +1016 -1037
  57. package/build/server/index.js.map +1 -1
  58. package/dist/server/index.js +0 -2
  59. package/node_modules/@babel/runtime/helpers/AwaitValue.js +2 -2
  60. package/node_modules/@babel/runtime/helpers/OverloadYield.js +2 -2
  61. package/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js +7 -22
  62. package/node_modules/@babel/runtime/helpers/applyDecs2311.js +9 -9
  63. package/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +4 -4
  64. package/node_modules/@babel/runtime/helpers/arrayWithHoles.js +2 -2
  65. package/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +2 -2
  66. package/node_modules/@babel/runtime/helpers/assertThisInitialized.js +3 -5
  67. package/node_modules/@babel/runtime/helpers/asyncToGenerator.js +16 -21
  68. package/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js +2 -4
  69. package/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js +7 -15
  70. package/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js +2 -5
  71. package/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js +4 -8
  72. package/node_modules/@babel/runtime/helpers/classCallCheck.js +2 -4
  73. package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js +2 -2
  74. package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js +2 -4
  75. package/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js +2 -2
  76. package/node_modules/@babel/runtime/helpers/classNameTDZError.js +2 -2
  77. package/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js +3 -3
  78. package/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js +3 -3
  79. package/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js +2 -3
  80. package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js +3 -5
  81. package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js +2 -2
  82. package/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js +3 -4
  83. package/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js +2 -3
  84. package/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js +2 -3
  85. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js +2 -4
  86. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +2 -4
  87. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +2 -5
  88. package/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js +2 -3
  89. package/node_modules/@babel/runtime/helpers/construct.js +1 -1
  90. package/node_modules/@babel/runtime/helpers/createClass.js +8 -14
  91. package/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js +24 -27
  92. package/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js +11 -12
  93. package/node_modules/@babel/runtime/helpers/createSuper.js +10 -12
  94. package/node_modules/@babel/runtime/helpers/decorate.js +185 -278
  95. package/node_modules/@babel/runtime/helpers/defaults.js +6 -9
  96. package/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js +8 -16
  97. package/node_modules/@babel/runtime/helpers/defineProperty.js +7 -13
  98. package/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js +3 -2
  99. package/node_modules/@babel/runtime/helpers/esm/AwaitValue.js +4 -3
  100. package/node_modules/@babel/runtime/helpers/esm/OverloadYield.js +4 -3
  101. package/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js +9 -23
  102. package/node_modules/@babel/runtime/helpers/esm/applyDecs.js +3 -2
  103. package/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js +3 -2
  104. package/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js +3 -2
  105. package/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js +3 -2
  106. package/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js +3 -2
  107. package/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js +12 -11
  108. package/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +6 -5
  109. package/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +4 -3
  110. package/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +4 -3
  111. package/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js +3 -2
  112. package/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +5 -6
  113. package/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js +3 -2
  114. package/node_modules/@babel/runtime/helpers/esm/asyncIterator.js +3 -2
  115. package/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +18 -22
  116. package/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js +3 -2
  117. package/node_modules/@babel/runtime/helpers/esm/callSuper.js +3 -2
  118. package/node_modules/@babel/runtime/helpers/esm/checkInRHS.js +3 -2
  119. package/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js +4 -5
  120. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js +9 -16
  121. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js +4 -6
  122. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js +6 -9
  123. package/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +4 -5
  124. package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js +4 -3
  125. package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js +4 -5
  126. package/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js +4 -3
  127. package/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js +4 -3
  128. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js +5 -4
  129. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js +5 -4
  130. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js +3 -2
  131. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js +4 -4
  132. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js +5 -6
  133. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js +4 -3
  134. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js +5 -5
  135. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js +3 -2
  136. package/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js +3 -2
  137. package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js +4 -4
  138. package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js +4 -4
  139. package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js +3 -2
  140. package/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js +3 -2
  141. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js +4 -5
  142. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +4 -5
  143. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +4 -6
  144. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js +4 -4
  145. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js +3 -2
  146. package/node_modules/@babel/runtime/helpers/esm/construct.js +4 -3
  147. package/node_modules/@babel/runtime/helpers/esm/createClass.js +10 -15
  148. package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +26 -28
  149. package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js +13 -13
  150. package/node_modules/@babel/runtime/helpers/esm/createSuper.js +12 -13
  151. package/node_modules/@babel/runtime/helpers/esm/decorate.js +187 -279
  152. package/node_modules/@babel/runtime/helpers/esm/defaults.js +8 -10
  153. package/node_modules/@babel/runtime/helpers/esm/defineAccessor.js +3 -2
  154. package/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js +10 -17
  155. package/node_modules/@babel/runtime/helpers/esm/defineProperty.js +9 -14
  156. package/node_modules/@babel/runtime/helpers/esm/dispose.js +3 -2
  157. package/node_modules/@babel/runtime/helpers/esm/extends.js +9 -13
  158. package/node_modules/@babel/runtime/helpers/esm/get.js +10 -16
  159. package/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +6 -6
  160. package/node_modules/@babel/runtime/helpers/esm/identity.js +4 -3
  161. package/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js +3 -2
  162. package/node_modules/@babel/runtime/helpers/esm/inherits.js +11 -14
  163. package/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +4 -5
  164. package/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js +8 -8
  165. package/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js +4 -3
  166. package/node_modules/@babel/runtime/helpers/esm/instanceof.js +4 -7
  167. package/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js +5 -4
  168. package/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js +3 -2
  169. package/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js +6 -5
  170. package/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +3 -2
  171. package/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +4 -3
  172. package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +3 -2
  173. package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +3 -2
  174. package/node_modules/@babel/runtime/helpers/esm/jsx.js +3 -2
  175. package/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js +7 -6
  176. package/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js +4 -5
  177. package/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +3 -2
  178. package/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +3 -2
  179. package/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js +3 -2
  180. package/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js +4 -3
  181. package/node_modules/@babel/runtime/helpers/esm/objectSpread.js +11 -13
  182. package/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +3 -2
  183. package/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +10 -13
  184. package/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +9 -10
  185. package/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +6 -8
  186. package/node_modules/@babel/runtime/helpers/esm/readOnlyError.js +4 -3
  187. package/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +3 -2
  188. package/node_modules/@babel/runtime/helpers/esm/set.js +19 -37
  189. package/node_modules/@babel/runtime/helpers/esm/setFunctionName.js +3 -2
  190. package/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +6 -7
  191. package/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js +5 -5
  192. package/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +4 -3
  193. package/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js +4 -3
  194. package/node_modules/@babel/runtime/helpers/esm/superPropBase.js +5 -7
  195. package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +5 -7
  196. package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js +4 -7
  197. package/node_modules/@babel/runtime/helpers/esm/tdz.js +4 -3
  198. package/node_modules/@babel/runtime/helpers/esm/temporalRef.js +6 -5
  199. package/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js +2 -1
  200. package/node_modules/@babel/runtime/helpers/esm/toArray.js +4 -3
  201. package/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +4 -3
  202. package/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +3 -2
  203. package/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +3 -2
  204. package/node_modules/@babel/runtime/helpers/esm/toSetter.js +3 -2
  205. package/node_modules/@babel/runtime/helpers/esm/typeof.js +3 -2
  206. package/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +8 -8
  207. package/node_modules/@babel/runtime/helpers/esm/using.js +3 -2
  208. package/node_modules/@babel/runtime/helpers/esm/usingCtx.js +3 -2
  209. package/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js +4 -3
  210. package/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js +17 -20
  211. package/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js +3 -2
  212. package/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js +4 -3
  213. package/node_modules/@babel/runtime/helpers/extends.js +6 -11
  214. package/node_modules/@babel/runtime/helpers/get.js +7 -14
  215. package/node_modules/@babel/runtime/helpers/getPrototypeOf.js +4 -5
  216. package/node_modules/@babel/runtime/helpers/identity.js +2 -2
  217. package/node_modules/@babel/runtime/helpers/inherits.js +9 -13
  218. package/node_modules/@babel/runtime/helpers/inheritsLoose.js +2 -4
  219. package/node_modules/@babel/runtime/helpers/initializerDefineProperty.js +6 -7
  220. package/node_modules/@babel/runtime/helpers/initializerWarningHelper.js +2 -2
  221. package/node_modules/@babel/runtime/helpers/instanceof.js +2 -6
  222. package/node_modules/@babel/runtime/helpers/interopRequireDefault.js +3 -3
  223. package/node_modules/@babel/runtime/helpers/isNativeFunction.js +4 -4
  224. package/node_modules/@babel/runtime/helpers/iterableToArray.js +2 -2
  225. package/node_modules/@babel/runtime/helpers/maybeArrayLike.js +5 -5
  226. package/node_modules/@babel/runtime/helpers/newArrowCheck.js +2 -4
  227. package/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js +2 -2
  228. package/node_modules/@babel/runtime/helpers/objectSpread.js +9 -12
  229. package/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +8 -12
  230. package/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +7 -9
  231. package/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js +4 -7
  232. package/node_modules/@babel/runtime/helpers/readOnlyError.js +2 -2
  233. package/node_modules/@babel/runtime/helpers/set.js +17 -36
  234. package/node_modules/@babel/runtime/helpers/setPrototypeOf.js +4 -6
  235. package/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js +3 -4
  236. package/node_modules/@babel/runtime/helpers/slicedToArray.js +2 -2
  237. package/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js +2 -2
  238. package/node_modules/@babel/runtime/helpers/superPropBase.js +3 -6
  239. package/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js +3 -6
  240. package/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js +2 -6
  241. package/node_modules/@babel/runtime/helpers/tdz.js +2 -2
  242. package/node_modules/@babel/runtime/helpers/temporalRef.js +2 -2
  243. package/node_modules/@babel/runtime/helpers/toArray.js +2 -2
  244. package/node_modules/@babel/runtime/helpers/toConsumableArray.js +2 -2
  245. package/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +6 -7
  246. package/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js +2 -2
  247. package/node_modules/@babel/runtime/helpers/wrapNativeSuper.js +15 -19
  248. package/node_modules/@babel/runtime/helpers/writeOnlyError.js +2 -2
  249. package/node_modules/@babel/runtime/package.json +587 -587
  250. package/node_modules/@conform-to/dom/form.js +1 -1
  251. package/node_modules/@conform-to/dom/form.mjs +1 -1
  252. package/node_modules/@conform-to/dom/formdata.d.ts +2 -2
  253. package/node_modules/@conform-to/dom/formdata.js +12 -34
  254. package/node_modules/@conform-to/dom/formdata.mjs +12 -34
  255. package/node_modules/@conform-to/dom/intent.d.ts +82 -0
  256. package/node_modules/@conform-to/dom/intent.js +136 -0
  257. package/node_modules/@conform-to/dom/intent.mjs +126 -0
  258. package/node_modules/@conform-to/dom/package.json +58 -59
  259. package/node_modules/@conform-to/dom/parse.d.ts +30 -0
  260. package/node_modules/@conform-to/dom/parse.js +43 -0
  261. package/node_modules/@conform-to/dom/parse.mjs +37 -0
  262. package/node_modules/@conform-to/dom/submission.d.ts +2 -2
  263. package/node_modules/@conform-to/dom/submission.js +23 -21
  264. package/node_modules/@conform-to/dom/submission.mjs +23 -21
  265. package/node_modules/@conform-to/dom/types.d.ts +20 -0
  266. package/node_modules/@conform-to/react/helpers.js +1 -1
  267. package/node_modules/@conform-to/react/helpers.mjs +1 -1
  268. package/node_modules/@conform-to/react/package.json +68 -69
  269. package/node_modules/@conform-to/zod/package.json +60 -61
  270. package/node_modules/framer-motion/dist/cjs/{dom-entry-fJy-kji5.js → dom-entry-DSxBucW4.js} +115 -107
  271. package/node_modules/framer-motion/dist/cjs/dom-entry.js +1 -1
  272. package/node_modules/framer-motion/dist/cjs/index.js +43 -10
  273. package/node_modules/framer-motion/dist/dom-entry.d.ts +1 -1
  274. package/node_modules/framer-motion/dist/dom.js +1 -1
  275. package/node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +2 -3
  276. package/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs +4 -1
  277. package/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +2 -3
  278. package/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +7 -0
  279. package/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +43 -9
  280. package/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +11 -8
  281. package/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +1 -1
  282. package/node_modules/framer-motion/dist/es/value/index.mjs +1 -1
  283. package/node_modules/framer-motion/dist/framer-motion.dev.js +156 -116
  284. package/node_modules/framer-motion/dist/framer-motion.js +1 -1
  285. package/node_modules/framer-motion/dist/index.d.ts +2 -1
  286. package/node_modules/framer-motion/dist/projection.dev.js +163 -20
  287. package/node_modules/framer-motion/dist/three-entry.d.ts +1 -0
  288. package/node_modules/framer-motion/package.json +8 -8
  289. package/node_modules/remix-utils/node_modules/type-fest/package.json +1 -1
  290. package/node_modules/remix-utils/node_modules/type-fest/source/conditional-keys.d.ts +5 -3
  291. package/package.json +7 -6
  292. package/start.js +4 -2
  293. package/build/client/assets/_exerciseNumber-D6YNCQoj.js.map +0 -1
  294. package/build/client/assets/_exerciseNumber_.finished-DR3gQ1pK.js.map +0 -1
  295. package/build/client/assets/_layout-DXegGcTM.js.map +0 -1
  296. package/build/client/assets/_layout-MFX35ekR.js.map +0 -1
  297. package/build/client/assets/diff-ZJmYghvh.js +0 -42
  298. package/build/client/assets/diff-ZJmYghvh.js.map +0 -1
  299. package/build/client/assets/discord-fsySDDKv.js +0 -2
  300. package/build/client/assets/discord-fsySDDKv.js.map +0 -1
  301. package/build/client/assets/epic-video-BKzHxm70.js +0 -2985
  302. package/build/client/assets/epic-video-BKzHxm70.js.map +0 -1
  303. package/build/client/assets/finished-gQ-B3k8j.js.map +0 -1
  304. package/build/client/assets/index-Drecz7hr.js +0 -2
  305. package/build/client/assets/index-Drecz7hr.js.map +0 -1
  306. package/build/client/assets/progress-HmjERaPh.js +0 -2
  307. package/build/client/assets/progress-HmjERaPh.js.map +0 -1
  308. package/build/client/assets/tooltip-BdTNdCYE.js +0 -2
  309. package/build/client/assets/tooltip-BdTNdCYE.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"login-BCM4kJTm.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse(data)\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { json, redirect } from '@remix-run/node'\nimport { useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { EventSchema } from '../login-sse.tsx'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn json({})\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn json({ status: 'pending' } as const)\n}\n\nexport default function Login() {\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tAuthenticate with EpicWeb.dev\n\t\t\t\t</h1>\n\t\t\t\t<h2 className=\"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\tIf you have purchased Epic Web, you'll be able to watch videos, track\n\t\t\t\t\tprogress, and more!\n\t\t\t\t</h2>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"pt-5 opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading>Waiting for confirmation</Loading>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t? `Retrieve Code`\n\t\t\t\t\t\t\t\t\t: `Retrieving Code...`}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Logo({ className = '' }) {\n\t// svg sprites do not support gradients\n\treturn (\n\t\t<svg\n\t\t\tclassName={className}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z\"\n\t\t\t\tfill=\"url(#epicGradient)\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"epicGradient\"\n\t\t\t\t\tx1=\"16.9703\"\n\t\t\t\t\ty1=\"7.03022\"\n\t\t\t\t\tx2=\"7.05798\"\n\t\t\t\t\ty2=\"16.948\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#4F75FF\" />\n\t\t\t\t\t<stop offset=\"1\" stopColor=\"#30AFFF\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","Login","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","Form","method","Button","state","status","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset"],"mappings":"oWAAO,MAAMA,EAAS,CACrB,mBAAoB,qBACpB,cAAe,gBACf,cAAe,eAChB,ECGMC,EAA0BC,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOM,kBAAkB,EACzCC,KAAML,EAAEM,OAAO,EACfC,IAAKP,EAAEM,OAAO,CACf,CAAC,EACKE,EAA0BR,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOW,aAAa,CACrC,CAAC,EACKC,EAA0BV,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOa,aAAa,EACpCC,MAAOZ,EAAEM,OAAA,EAASO,SAAS,EAAEC,QAAQ,eAAe,CACrD,CAAC,EACYC,EAAcf,EAAEgB,MAAM,CAClCjB,EACAS,EACAE,CAAA,CACA,ECED,SAAwBO,GAAQ,OAC/B,MAAMC,EAAeC,IACf,CAACC,EAAyBC,CAA0B,EAAIC,WAAS,EAAK,EACtE,CAACC,EAAWC,CAAY,EAAIF,WAAwB,IAAI,EACxD,CAACG,EAAcC,CAAe,EAAIJ,WAGrC,IAAI,EACDK,EAAWC,IACXC,EAAcC,IACdC,EAAcC,EAA2B,YAAA,EAC/CC,OAAAA,EAAAA,UAAU,IAAM,CACf,GAAI,CAACF,EAAa,OAEZ,MAAAG,EAASC,KAAKC,MAAML,CAAW,EAC/BM,EAAStB,EAAYuB,UAAUJ,CAAM,EACvC,GAAA,CAACG,EAAOE,QAAS,CACpBC,QAAQ5B,MAAMyB,EAAOzB,MAAM6B,QAAS,CAAA,EACpC,MACD,CACQ,OAAAJ,EAAOK,KAAKxC,KAAM,CACzB,KAAKJ,EAAOM,mBAAoB,CAC/BsB,EAAgBW,EAAOK,IAAI,EAC3B,KACD,CACA,KAAK5C,EAAOW,cAAe,CAC1BoB,EAAYc,WAAW,EACvBhB,EAAS,GAAG,EACZ,KACD,CACA,KAAK7B,EAAOa,cAAe,CACba,EAAAa,EAAOK,KAAK9B,KAAK,EAC9B,KACD,CACD,CACE,EAAA,CAACmB,EAAaJ,EAAUE,CAAW,CAAC,QAGrC,OAAK,CAAAe,UAAU,qFACfC,SAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,6BACdC,SAAA,CAACE,EAAA,IAAAC,EAAA,CAAKJ,UAAU,WAAY,CAAA,EAC3BG,EAAA,IAAA,KAAA,CAAGH,UAAU,0CAA0CC,SAExD,+BAAA,CAAA,EACCE,EAAA,IAAA,KAAA,CAAGH,UAAU,2DAA2DC,SAGzE,2FAAA,CAAA,EACAC,EAAA,KAAC,MAAI,CAAAF,UAAU,yCACbC,SAAA,CACApB,EAAAqB,EAAA,KAAC,MAAI,CAAAF,UAAU,0CACdC,SAAA,CAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,+CACdC,SAAA,CAACE,EAAA,IAAA,IAAA,CAAEH,UAAU,UAAUC,SAA2B,6BAAA,CAAA,EAClDE,EAAA,IAAC,OAAIH,UAAU,uEACdC,eAAC,OAAM,CAAAA,SAAApB,EAAapB,KAAK,CAC1B,CAAA,CAAA,CACD,CAAA,EACA0C,EAAA,IAACE,EAAA,CACAC,QAAQ,UACRC,GAAI1B,EAAalB,IACjB6C,OAAO,SACPC,IAAI,aACJC,QAASA,IAAMjC,EAA2B,EAAI,EAC9CwB,SAAA,WAED,EACCzB,QACC,MAAI,CAAAwB,UAAU,kBACdC,SAACE,EAAA,IAAAQ,EAAA,CAAQV,SAAwB,2BAAA,CAClC,CAAA,EACG,IAAA,EACL,QAEC3B,EAAasC,KAAb,CAAkBC,OAAO,OACzBZ,SAACE,EAAA,IAAAW,EAAA,CAAOR,QAAQ,UAAUhD,KAAK,SAC7B2C,SAAA3B,EAAayC,QAAU,UACxBzC,EAAAA,EAAawB,OAAbxB,YAAAA,EAAmB0C,UAAW,UAE3B,gBAAA,qBACJ,EACD,EAEArC,EACAuB,EAAA,KAAC,MAAI,CAAAF,UAAU,oBAAoBC,SAAA,CAAA,uBACdE,EAAA,IAAC,OAAKF,SAAUtB,CAAA,CAAA,CAAA,CACrC,CAAA,EACG,IAAA,CACL,CAAA,CAAA,EACD,CACD,CAAA,CAEF,CAEA,SAASyB,EAAK,CAAEJ,UAAAA,EAAY,EAAG,EAAG,CAGhC,OAAAE,EAAAA,KAAC,MAAA,CACAF,UAAAA,EACAiB,QAAQ,YACRC,KAAK,OACLC,MAAM,6BACN,cAAY,OAEZlB,SAAA,CAAAE,EAAA,IAAC,OAAA,CACAiB,EAAE,u6BACFF,KAAK,oBAAA,CACN,EACAf,EAAA,IAAC,OAAA,CACAiB,EAAE,qFACFF,KAAK,cAAA,CACN,QACC,OACA,CAAAjB,SAAAC,EAAA,KAAC,iBAAA,CACAmB,GAAG,eACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,SACHC,cAAc,iBAEdzB,SAAA,CAACE,EAAA,IAAA,OAAA,CAAKwB,UAAU,SAAU,CAAA,EACzBxB,EAAA,IAAA,OAAA,CAAKyB,OAAO,IAAID,UAAU,SAAU,CAAA,CAAA,EACtC,CACD,CAAA,CAAA,CAAA,CACD,CAEF"}
1
+ {"version":3,"file":"login-D8zyjBAb.js","sources":["../../../app/utils/auth-events.ts","../../../app/routes/login-sse.tsx","../../../app/routes/_app+/login.tsx"],"sourcesContent":["export const EVENTS = {\n\tUSER_CODE_RECEIVED: 'USER_CODE_RECEIVED',\n\tAUTH_RESOLVED: 'AUTH_RESOLVED',\n\tAUTH_REJECTED: 'AUTH_REJECTED',\n} as const\nexport type EventTypes = keyof typeof EVENTS\n","import { type LoaderFunctionArgs } from '@remix-run/node'\nimport { eventStream } from 'remix-utils/sse/server'\nimport { z } from 'zod'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { authEmitter } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\n\nconst CodeReceivedEventSchema = z.object({\n\ttype: z.literal(EVENTS.USER_CODE_RECEIVED),\n\tcode: z.string(),\n\turl: z.string(),\n})\nconst AuthResolvedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_RESOLVED),\n})\nconst AuthRejectedEventSchema = z.object({\n\ttype: z.literal(EVENTS.AUTH_REJECTED),\n\terror: z.string().optional().default('Unknown error'),\n})\nexport const EventSchema = z.union([\n\tCodeReceivedEventSchema,\n\tAuthResolvedEventSchema,\n\tAuthRejectedEventSchema,\n])\n\nexport async function loader({ request }: LoaderFunctionArgs) {\n\tensureUndeployed()\n\treturn eventStream(request.signal, function setup(send) {\n\t\tfunction handleCodeReceived(data: any) {\n\t\t\tsend({\n\t\t\t\tdata: JSON.stringify(\n\t\t\t\t\tCodeReceivedEventSchema.parse({\n\t\t\t\t\t\ttype: EVENTS.USER_CODE_RECEIVED,\n\t\t\t\t\t\t...data,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t})\n\t\t}\n\t\tfunction handleAuthResolved() {\n\t\t\tsend({ data: JSON.stringify({ type: EVENTS.AUTH_RESOLVED }) })\n\t\t}\n\t\tfunction handleAuthRejected(data: any) {\n\t\t\tconst result = AuthRejectedEventSchema.safeParse(data)\n\t\t\tif (result.success) {\n\t\t\t\tsend({ data: JSON.stringify(result.data) })\n\t\t\t} else {\n\t\t\t\tconsole.error('Error parsing auth rejected event', result.error, data)\n\t\t\t}\n\t\t}\n\t\tauthEmitter.on(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\tauthEmitter.on(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\tauthEmitter.on(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\treturn () => {\n\t\t\tauthEmitter.off(EVENTS.USER_CODE_RECEIVED, handleCodeReceived)\n\t\t\tauthEmitter.off(EVENTS.AUTH_RESOLVED, handleAuthResolved)\n\t\t\tauthEmitter.off(EVENTS.AUTH_REJECTED, handleAuthRejected)\n\t\t}\n\t})\n}\n","import { getAuthInfo } from '@epic-web/workshop-utils/db.server'\nimport { json, redirect } from '@remix-run/node'\nimport { useFetcher, useNavigate, useRevalidator } from '@remix-run/react'\nimport { useEffect, useState } from 'react'\nimport { useEventSource } from 'remix-utils/sse/react'\nimport { Button, ButtonLink } from '#app/components/button.tsx'\nimport { Loading } from '#app/components/loading.tsx'\nimport { EVENTS } from '#app/utils/auth-events.ts'\nimport { registerDevice } from '#app/utils/auth.server.ts'\nimport { ensureUndeployed } from '#app/utils/misc.tsx'\nimport { EventSchema } from '../login-sse.tsx'\n\nexport async function loader() {\n\tensureUndeployed()\n\tconst isAuthenticated = Boolean(await getAuthInfo())\n\tif (isAuthenticated) throw redirect('/account')\n\treturn json({})\n}\n\nexport async function action() {\n\tensureUndeployed()\n\tvoid registerDevice()\n\treturn json({ status: 'pending' } as const)\n}\n\nexport default function Login() {\n\tconst loginFetcher = useFetcher<typeof action>()\n\tconst [clickedVerificationLink, setClickedVerificationLink] = useState(false)\n\tconst [authError, setAuthError] = useState<null | string>(null)\n\tconst [userCodeInfo, setUserCodeInfo] = useState<null | {\n\t\tcode: string\n\t\turl: string\n\t}>(null)\n\tconst navigate = useNavigate()\n\tconst revalidator = useRevalidator()\n\tconst lastMessage = useEventSource(`/login-sse`)\n\tuseEffect(() => {\n\t\tif (!lastMessage) return\n\n\t\tconst parsed = JSON.parse(lastMessage)\n\t\tconst result = EventSchema.safeParse(parsed)\n\t\tif (!result.success) {\n\t\t\tconsole.error(result.error.flatten())\n\t\t\treturn\n\t\t}\n\t\tswitch (result.data.type) {\n\t\t\tcase EVENTS.USER_CODE_RECEIVED: {\n\t\t\t\tsetUserCodeInfo(result.data)\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_RESOLVED: {\n\t\t\t\trevalidator.revalidate()\n\t\t\t\tnavigate('/')\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase EVENTS.AUTH_REJECTED: {\n\t\t\t\tsetAuthError(result.data.error)\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}, [lastMessage, navigate, revalidator])\n\n\treturn (\n\t\t<main className=\"flex h-full w-full flex-grow flex-col items-center justify-center p-10 text-center\">\n\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t<Logo className=\"h-16 w-16\" />\n\t\t\t\t<h1 className=\"pt-5 text-2xl font-semibold md:text-3xl\">\n\t\t\t\t\tAuthenticate with EpicWeb.dev\n\t\t\t\t</h1>\n\t\t\t\t<h2 className=\"max-w-sm pt-3 text-base text-gray-700 dark:text-gray-300\">\n\t\t\t\t\tIf you have purchased Epic Web, you'll be able to watch videos, track\n\t\t\t\t\tprogress, and more!\n\t\t\t\t</h2>\n\t\t\t\t<div className=\"flex w-full flex-col items-center pt-5\">\n\t\t\t\t\t{userCodeInfo ? (\n\t\t\t\t\t\t<div className=\"flex w-full flex-col items-center gap-3\">\n\t\t\t\t\t\t\t<div className=\"my-2 flex w-full flex-col items-center gap-2\">\n\t\t\t\t\t\t\t\t<p className=\"text-lg\">Your verification code is: </p>\n\t\t\t\t\t\t\t\t<div className=\"mb-3 w-full bg-gray-100 px-5 py-3 text-lg font-bold dark:bg-black/40\">\n\t\t\t\t\t\t\t\t\t<code>{userCodeInfo.code}</code>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ButtonLink\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tto={userCodeInfo.url}\n\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\trel=\"noreferrer\"\n\t\t\t\t\t\t\t\tonClick={() => setClickedVerificationLink(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tContinue\n\t\t\t\t\t\t\t</ButtonLink>\n\t\t\t\t\t\t\t{clickedVerificationLink ? (\n\t\t\t\t\t\t\t\t<div className=\"pt-5 opacity-60\">\n\t\t\t\t\t\t\t\t\t<Loading>Waiting for confirmation</Loading>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<loginFetcher.Form method=\"POST\">\n\t\t\t\t\t\t\t<Button varient=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t{loginFetcher.state === 'idle' &&\n\t\t\t\t\t\t\t\tloginFetcher.data?.status !== 'pending'\n\t\t\t\t\t\t\t\t\t? `Retrieve Code`\n\t\t\t\t\t\t\t\t\t: `Retrieving Code...`}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</loginFetcher.Form>\n\t\t\t\t\t)}\n\t\t\t\t\t{authError ? (\n\t\t\t\t\t\t<div className=\"mt-4 text-red-500\">\n\t\t\t\t\t\t\tThere was an error: <pre>{authError}</pre>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</main>\n\t)\n}\n\nfunction Logo({ className = '' }) {\n\t// svg sprites do not support gradients\n\treturn (\n\t\t<svg\n\t\t\tclassName={className}\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12.438 11.5677C12.0131 11.8026 11.5249 12.0534 10.9784 12.3047C8.80704 13.3031 5.70429 14.314 1.986 14.3555L1.55773 14.3603L1.48003 13.9391C1.36509 13.316 1.29793 12.6714 1.29793 12.006C1.29793 6.10441 6.09863 1.30372 12.0002 1.30372C13.6287 1.30372 15.1745 1.66961 16.5585 2.32369L17.9801 1.59897C16.2189 0.582162 14.1769 0 12.0002 0C5.38709 0 0 5.38709 0 12.0002C0 14.6402 0.858474 17.0847 2.31072 19.0692C4.79741 18.6457 6.35749 17.6495 6.35749 17.6495C6.35749 17.6495 5.36137 19.2075 4.93785 21.6946C6.92114 23.1439 9.36321 24.0005 12.0002 24.0005C18.6134 24.0005 24.0005 18.6134 24.0005 12.0002C24.0005 9.82732 23.4199 7.78762 22.4053 6.02738L21.6818 7.44613C22.3364 8.83057 22.7025 10.3769 22.7025 12.006C22.7025 17.9076 17.9018 22.7083 12.0002 22.7083C11.3345 22.7083 10.6959 22.6411 10.0681 22.5264L9.646 22.4493L9.65079 22.0203C9.6923 18.2991 10.7031 15.1964 11.7016 13.0257C11.9527 12.4797 12.2033 11.9921 12.438 11.5677Z\"\n\t\t\t\tfill=\"url(#epicGradient)\"\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td=\"M18.2525 9.31052L15.4992 8.50683L14.6953 5.74778L23.8291 0.171387L18.2525 9.31052Z\"\n\t\t\t\tfill=\"currentColor\"\n\t\t\t/>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tid=\"epicGradient\"\n\t\t\t\t\tx1=\"16.9703\"\n\t\t\t\t\ty1=\"7.03022\"\n\t\t\t\t\tx2=\"7.05798\"\n\t\t\t\t\ty2=\"16.948\"\n\t\t\t\t\tgradientUnits=\"userSpaceOnUse\"\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor=\"#4F75FF\" />\n\t\t\t\t\t<stop offset=\"1\" stopColor=\"#30AFFF\" />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n"],"names":["EVENTS","CodeReceivedEventSchema","z","object","type","literal","USER_CODE_RECEIVED","code","string","url","AuthResolvedEventSchema","AUTH_RESOLVED","AuthRejectedEventSchema","AUTH_REJECTED","error","optional","default","EventSchema","union","Login","loginFetcher","useFetcher","clickedVerificationLink","setClickedVerificationLink","useState","authError","setAuthError","userCodeInfo","setUserCodeInfo","navigate","useNavigate","revalidator","useRevalidator","lastMessage","useEventSource","useEffect","parsed","JSON","parse","result","safeParse","success","console","flatten","data","revalidate","className","children","jsxs","jsx","Logo","ButtonLink","varient","to","target","rel","onClick","Loading","Form","method","Button","state","status","viewBox","fill","xmlns","d","id","x1","y1","x2","y2","gradientUnits","stopColor","offset"],"mappings":"oWAAO,MAAMA,EAAS,CACrB,mBAAoB,qBACpB,cAAe,gBACf,cAAe,eAChB,ECGMC,EAA0BC,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOM,kBAAkB,EACzCC,KAAML,EAAEM,OAAO,EACfC,IAAKP,EAAEM,OAAO,CACf,CAAC,EACKE,EAA0BR,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOW,aAAa,CACrC,CAAC,EACKC,EAA0BV,EAAEC,OAAO,CACxCC,KAAMF,EAAEG,QAAQL,EAAOa,aAAa,EACpCC,MAAOZ,EAAEM,OAAA,EAASO,SAAS,EAAEC,QAAQ,eAAe,CACrD,CAAC,EACYC,EAAcf,EAAEgB,MAAM,CAClCjB,EACAS,EACAE,CAAA,CACA,ECED,SAAwBO,GAAQ,OAC/B,MAAMC,EAAeC,IACf,CAACC,EAAyBC,CAA0B,EAAIC,WAAS,EAAK,EACtE,CAACC,EAAWC,CAAY,EAAIF,WAAwB,IAAI,EACxD,CAACG,EAAcC,CAAe,EAAIJ,WAGrC,IAAI,EACDK,EAAWC,IACXC,EAAcC,IACdC,EAAcC,EAAe,YAAY,EAC/CC,OAAAA,EAAAA,UAAU,IAAM,CACf,GAAI,CAACF,EAAa,OAEZ,MAAAG,EAASC,KAAKC,MAAML,CAAW,EAC/BM,EAAStB,EAAYuB,UAAUJ,CAAM,EACvC,GAAA,CAACG,EAAOE,QAAS,CACpBC,QAAQ5B,MAAMyB,EAAOzB,MAAM6B,QAAS,CAAA,EACpC,MACD,CACQ,OAAAJ,EAAOK,KAAKxC,KAAM,CACzB,KAAKJ,EAAOM,mBAAoB,CAC/BsB,EAAgBW,EAAOK,IAAI,EAC3B,KACD,CACA,KAAK5C,EAAOW,cAAe,CAC1BoB,EAAYc,WAAW,EACvBhB,EAAS,GAAG,EACZ,KACD,CACA,KAAK7B,EAAOa,cAAe,CACba,EAAAa,EAAOK,KAAK9B,KAAK,EAC9B,KACD,CACD,CACE,EAAA,CAACmB,EAAaJ,EAAUE,CAAW,CAAC,QAGrC,OAAK,CAAAe,UAAU,qFACfC,SAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,6BACdC,SAAA,CAACE,EAAA,IAAAC,EAAA,CAAKJ,UAAU,WAAY,CAAA,EAC3BG,EAAA,IAAA,KAAA,CAAGH,UAAU,0CAA0CC,SAExD,+BAAA,CAAA,EACCE,EAAA,IAAA,KAAA,CAAGH,UAAU,2DAA2DC,SAGzE,2FAAA,CAAA,EACAC,EAAA,KAAC,MAAI,CAAAF,UAAU,yCACbC,SAAA,CACApB,EAAAqB,EAAA,KAAC,MAAI,CAAAF,UAAU,0CACdC,SAAA,CAACC,EAAA,KAAA,MAAA,CAAIF,UAAU,+CACdC,SAAA,CAACE,EAAA,IAAA,IAAA,CAAEH,UAAU,UAAUC,SAA2B,6BAAA,CAAA,EAClDE,EAAA,IAAC,OAAIH,UAAU,uEACdC,eAAC,OAAM,CAAAA,SAAApB,EAAapB,KAAK,CAC1B,CAAA,CAAA,CACD,CAAA,EACA0C,EAAA,IAACE,EAAA,CACAC,QAAQ,UACRC,GAAI1B,EAAalB,IACjB6C,OAAO,SACPC,IAAI,aACJC,QAASA,IAAMjC,EAA2B,EAAI,EAC9CwB,SAAA,WAED,EACCzB,QACC,MAAI,CAAAwB,UAAU,kBACdC,SAACE,EAAA,IAAAQ,EAAA,CAAQV,SAAwB,2BAAA,CAClC,CAAA,EACG,IAAA,EACL,QAEC3B,EAAasC,KAAb,CAAkBC,OAAO,OACzBZ,SAACE,EAAA,IAAAW,EAAA,CAAOR,QAAQ,UAAUhD,KAAK,SAC7B2C,SAAA3B,EAAayC,QAAU,UACxBzC,EAAAA,EAAawB,OAAbxB,YAAAA,EAAmB0C,UAAW,UAC3B,gBACA,qBACJ,EACD,EAEArC,EACAuB,EAAA,KAAC,MAAI,CAAAF,UAAU,oBAAoBC,SAAA,CAAA,uBACdE,EAAA,IAAC,OAAKF,SAAUtB,CAAA,CAAA,CAAA,CACrC,CAAA,EACG,IAAA,CACL,CAAA,CAAA,EACD,CACD,CAAA,CAEF,CAEA,SAASyB,EAAK,CAAEJ,UAAAA,EAAY,EAAG,EAAG,CAGhC,OAAAE,EAAAA,KAAC,MAAA,CACAF,UAAAA,EACAiB,QAAQ,YACRC,KAAK,OACLC,MAAM,6BACN,cAAY,OAEZlB,SAAA,CAAAE,EAAA,IAAC,OAAA,CACAiB,EAAE,u6BACFF,KAAK,oBAAA,CACN,EACAf,EAAA,IAAC,OAAA,CACAiB,EAAE,qFACFF,KAAK,cAAA,CACN,QACC,OACA,CAAAjB,SAAAC,EAAA,KAAC,iBAAA,CACAmB,GAAG,eACHC,GAAG,UACHC,GAAG,UACHC,GAAG,UACHC,GAAG,SACHC,cAAc,iBAEdzB,SAAA,CAACE,EAAA,IAAA,OAAA,CAAKwB,UAAU,SAAU,CAAA,EACzBxB,EAAA,IAAA,OAAA,CAAKyB,OAAO,IAAID,UAAU,SAAU,CAAA,CAAA,EACtC,CACD,CAAA,CAAA,CAAA,CACD,CAEF"}
@@ -1 +1 @@
1
- window.__remixManifest={"entry":{"module":"/assets/entry.client-0j1eoieD.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-CxuwYUpK.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DBBsMyAP.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-BdTNdCYE.js","/assets/client-hints-BKxdo5Js.js","/assets/error-boundary-BUV7xD2e.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/index-r90CY6Wk.js","/assets/index-Drecz7hr.js","/assets/presence-BJPzwbUy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-CGn-2XfF.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/error-boundary-BUV7xD2e.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-Caqk73Ed.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-BdTNdCYE.js","/assets/client-hints-BKxdo5Js.js","/assets/progress-HmjERaPh.js","/assets/index-Drecz7hr.js","/assets/user-73ocDYRe.js","/assets/presence-BJPzwbUy.js"],"css":[]},"routes/_app+/_exercises+/_layout":{"id":"routes/_app+/_exercises+/_layout","parentId":"routes/_app+/_layout","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-BR-Qyofe.js","imports":["/assets/index-D6ygCrVn.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-D6YNCQoj.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/index-9nNr0Zqr.js","/assets/mdx-BVZ4sNxQ.js","/assets/progress-HmjERaPh.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-D00x64Vg.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-DXegGcTM.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/mdx-BVZ4sNxQ.js","/assets/user-73ocDYRe.js","/assets/index-9nNr0Zqr.js","/assets/diff-ZJmYghvh.js","/assets/discord-DZWTKMPn.js","/assets/index-r90CY6Wk.js","/assets/button-BfWwrI9B.js","/assets/use-event-source-aW6X9lN1.js","/assets/error-boundary-BUV7xD2e.js","/assets/nav-chevrons-DnG58Hov.js","/assets/progress-HmjERaPh.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.finished":{"id":"routes/_app+/_exercises+/$exerciseNumber_.finished","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-DR3gQ1pK.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/index-9nNr0Zqr.js","/assets/nav-chevrons-DnG58Hov.js","/assets/mdx-BVZ4sNxQ.js","/assets/progress-HmjERaPh.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-Cp6A7SfU.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/button-BfWwrI9B.js","/assets/misc-DBBsMyAP.js","/assets/user-73ocDYRe.js","/assets/presence-BJPzwbUy.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","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/*","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","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,"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","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-fsySDDKv.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/user-73ocDYRe.js","/assets/discord-DZWTKMPn.js"],"css":[]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-gQ-B3k8j.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/index-9nNr0Zqr.js","/assets/mdx-BVZ4sNxQ.js","/assets/progress-HmjERaPh.js","/assets/nav-chevrons-DnG58Hov.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-CVJowtf6.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/index-9nNr0Zqr.js","/assets/progress-HmjERaPh.js","/assets/error-boundary-BUV7xD2e.js","/assets/mdx-BVZ4sNxQ.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-BCM4kJTm.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/use-event-source-aW6X9lN1.js","/assets/button-BfWwrI9B.js","/assets/loading-C9f_vBoM.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-DUAHYT3r.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-MFX35ekR.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/progress-HmjERaPh.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","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","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-Ddyuc0-s.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DBBsMyAP.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/epic-video-BKzHxm70.js","/assets/progress-bar-TRgQ8YZ8.js","/assets/mdx-BVZ4sNxQ.js","/assets/diff-ZJmYghvh.js","/assets/nav-chevrons-DnG58Hov.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/discord.callback":{"id":"routes/discord.callback","parentId":"root","path":"discord/callback","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","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","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","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-oSo74A5L.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/misc-DBBsMyAP.js","/assets/tooltip-BdTNdCYE.js","/assets/loading-C9f_vBoM.js","/assets/index-Drecz7hr.js","/assets/button-BfWwrI9B.js","/assets/epic-video-BKzHxm70.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","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","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","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","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","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/update-mdx-cache":{"id":"routes/update-mdx-cache","parentId":"root","path":"update-mdx-cache","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-mdx-cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-0b01450d.js","version":"0b01450d"};
1
+ window.__remixManifest={"entry":{"module":"/assets/entry.client-0j1eoieD.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/root-BJrmef-V.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/error-boundary-Bcric_4t.js","/assets/progress-bar-7LK87ZMh.js","/assets/index-r90CY6Wk.js","/assets/index-Bg9MMnnf.js","/assets/presence-BJPzwbUy.js"],"css":[]},"routes/$":{"id":"routes/$","parentId":"root","path":"*","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_-COWH0sBh.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/error-boundary-Bcric_4t.js"],"css":[]},"routes/_app+/_layout":{"id":"routes/_app+/_layout","parentId":"root","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-CNgYirUN.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/user-73ocDYRe.js","/assets/presence-BJPzwbUy.js","/assets/progress-CF9Xwfxf.js","/assets/index-Bg9MMnnf.js"],"css":[]},"routes/_app+/_exercises+/_layout":{"id":"routes/_app+/_exercises+/_layout","parentId":"routes/_app+/_layout","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-BR-Qyofe.js","imports":["/assets/index-D6ygCrVn.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber-jTT5JRgC.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/index-9nNr0Zqr.js","/assets/mdx-BYvGbvEr.js","/assets/progress-CF9Xwfxf.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/:stepNumber","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_exerciseNumber_._stepNumber-C37pli7_.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js"],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","path":":type","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/_layout-CGUp6BkS.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/mdx-BYvGbvEr.js","/assets/user-73ocDYRe.js","/assets/index-9nNr0Zqr.js","/assets/diff-tDYfSlOc.js","/assets/error-boundary-Bcric_4t.js","/assets/nav-chevrons-DOYtx9XE.js","/assets/progress-CF9Xwfxf.js","/assets/discord-0kv66Q6F.js","/assets/index-r90CY6Wk.js","/assets/button-BfWwrI9B.js","/assets/use-event-source-aW6X9lN1.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index":{"id":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index","parentId":"routes/_app+/_exercises+/$exerciseNumber_.$stepNumber","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/_exercises+/$exerciseNumber_.finished":{"id":"routes/_app+/_exercises+/$exerciseNumber_.finished","parentId":"routes/_app+/_exercises+/_layout","path":":exerciseNumber/finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_exerciseNumber_.finished-zgJKkJ7I.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/index-9nNr0Zqr.js","/assets/nav-chevrons-DOYtx9XE.js","/assets/mdx-BYvGbvEr.js","/assets/progress-CF9Xwfxf.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/account":{"id":"routes/_app+/account","parentId":"routes/_app+/_layout","path":"account","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/account-DesvwOeg.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/button-BfWwrI9B.js","/assets/misc-DNgC2Frq.js","/assets/user-73ocDYRe.js","/assets/presence-BJPzwbUy.js"],"css":[]},"routes/_app+/app.$appName+/$":{"id":"routes/_app+/app.$appName+/$","parentId":"routes/_app+/_layout","path":"app/:appName/*","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/*","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","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,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-DP2rzg_V.js","imports":[],"css":[]},"routes/_app+/app.$appName+/test.$testName":{"id":"routes/_app+/app.$appName+/test.$testName","parentId":"routes/_app+/_layout","path":"app/:appName/test/:testName","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/test._testName-l0sNRNKZ.js","imports":[],"css":[]},"routes/_app+/discord":{"id":"routes/_app+/discord","parentId":"routes/_app+/_layout","path":"discord","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/discord-Xp0X4-Fl.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/user-73ocDYRe.js","/assets/discord-0kv66Q6F.js"],"css":[]},"routes/_app+/finished":{"id":"routes/_app+/finished","parentId":"routes/_app+/_layout","path":"finished","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/finished-BSWdtBA4.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/index-9nNr0Zqr.js","/assets/nav-chevrons-DOYtx9XE.js","/assets/mdx-BYvGbvEr.js","/assets/progress-CF9Xwfxf.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/index":{"id":"routes/_app+/index","parentId":"routes/_app+/_layout","index":true,"hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":true,"module":"/assets/index-BQRtqn3g.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js","/assets/clsx-B-dksMZM.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/index-9nNr0Zqr.js","/assets/error-boundary-Bcric_4t.js","/assets/mdx-BYvGbvEr.js","/assets/progress-CF9Xwfxf.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/_app+/login":{"id":"routes/_app+/login","parentId":"routes/_app+/_layout","path":"login","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-D8zyjBAb.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/request-info-Dyls4H67.js","/assets/client-hints-BKxdo5Js.js","/assets/use-event-source-aW6X9lN1.js","/assets/button-BfWwrI9B.js","/assets/loading-C9f_vBoM.js"],"css":[]},"routes/_app+/support":{"id":"routes/_app+/support","parentId":"routes/_app+/_layout","path":"support","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/support-DUAHYT3r.js","imports":["/assets/index-D6ygCrVn.js","/assets/components-C5xBZAiL.js"],"css":[]},"routes/admin+/_layout":{"id":"routes/admin+/_layout","parentId":"root","path":"admin","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/_layout-D0zbQZjf.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/tooltip-Kw0lYWBI.js","/assets/progress-CF9Xwfxf.js"],"css":[]},"routes/admin+/apps":{"id":"routes/admin+/apps","parentId":"routes/admin+/_layout","path":"apps","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/apps-l0sNRNKZ.js","imports":[],"css":[]},"routes/apps":{"id":"routes/apps","parentId":"root","path":"apps","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","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/diff-DZFtsH-a.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/epic-video-BwtXsHGU.js","/assets/progress-bar-7LK87ZMh.js","/assets/mdx-BYvGbvEr.js","/assets/diff-tDYfSlOc.js","/assets/nav-chevrons-DOYtx9XE.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/discord.callback":{"id":"routes/discord.callback","parentId":"root","path":"discord/callback","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","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","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","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/login-sse-l0sNRNKZ.js","imports":[],"css":[]},"routes/onboarding":{"id":"routes/onboarding","parentId":"root","path":"onboarding","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/onboarding-euWyXpCL.js","imports":["/assets/index-D6ygCrVn.js","/assets/clsx-B-dksMZM.js","/assets/components-C5xBZAiL.js","/assets/misc-DNgC2Frq.js","/assets/request-info-Dyls4H67.js","/assets/tooltip-Kw0lYWBI.js","/assets/client-hints-BKxdo5Js.js","/assets/index-Bg9MMnnf.js","/assets/loading-C9f_vBoM.js","/assets/button-BfWwrI9B.js","/assets/epic-video-BwtXsHGU.js"],"css":["/assets/epic-video-DUnRvy1A.css"]},"routes/processes":{"id":"routes/processes","parentId":"root","path":"processes","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","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/progress-l0sNRNKZ.js","imports":[],"css":[]},"routes/set-playground":{"id":"routes/set-playground","parentId":"root","path":"set-playground","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/set-playground-l0sNRNKZ.js","imports":[],"css":[]},"routes/start":{"id":"routes/start","parentId":"root","path":"start","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","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","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-l0sNRNKZ.js","imports":[],"css":[]},"routes/update-mdx-cache":{"id":"routes/update-mdx-cache","parentId":"root","path":"update-mdx-cache","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/update-mdx-cache-l0sNRNKZ.js","imports":[],"css":[]},"routes/video-player/index":{"id":"routes/video-player/index","parentId":"root","path":"video-player","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasErrorBoundary":false,"module":"/assets/index-K6Dvbx-E.js","imports":[],"css":[]}},"url":"/assets/manifest-03cfc48d.js","version":"03cfc48d"};
@@ -1,2 +1,2 @@
1
- var re=Object.defineProperty;var oe=(n,e,i)=>e in n?re(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var O=(n,e,i)=>(oe(n,typeof e!="symbol"?e+"":e,i),i),zt=(n,e,i)=>{if(!e.has(n))throw TypeError("Cannot "+i)};var t=(n,e,i)=>(zt(n,e,"read from private field"),i?i.call(n):e.get(n)),g=(n,e,i)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,i)},u=(n,e,i,s)=>(zt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i);var Ot=(n,e,i,s)=>({set _(o){u(n,e,o,i)},get _(){return t(n,e,s)}}),c=(n,e,i)=>(zt(n,e,"access private method"),i);import{j as d,r as ct}from"./index-D6ygCrVn.js";import{c as Tt}from"./clsx-B-dksMZM.js";import{b as ae,L as Xt,a as he,r as le,u as ce}from"./components-C5xBZAiL.js";import{I as ue,c as fe,H as ut,A as de}from"./misc-DBBsMyAP.js";import{V as pe,D as ge}from"./epic-video-BKzHxm70.js";import{s as me}from"./progress-bar-TRgQ8YZ8.js";import{S as be}from"./tooltip-BdTNdCYE.js";import{u as we}from"./request-info-Dyls4H67.js";function _e(){const n=ae("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Yt(n){const e=he();return ct.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function ye({file:n,appFile:e,appName:i,syncTo:s,line:o,column:r,children:a,onUpdate:h}){var W;const l=Yt(h),m=typeof e=="string"?[e]:e,F=n?"file":e?"appFile":"",b=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return d.jsxs(l.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[me,d.jsx("input",{type:"hidden",name:"line",value:o}),d.jsx("input",{type:"hidden",name:"column",value:r}),d.jsx("input",{type:"hidden",name:"type",value:F}),d.jsx("input",{type:"hidden",name:"file",value:n}),d.jsx("input",{type:"hidden",name:"appName",value:i}),m==null?void 0:m.map(_=>d.jsx("input",{type:"hidden",name:"appFile",value:_},_)),s?d.jsxs(d.Fragment,{children:[d.jsx("input",{type:"hidden",name:"syncTo.type",value:b}),d.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),d.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),d.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,d.jsx("button",{type:"submit",className:Tt("launch_button",l.state==="idle"?null:"cursor-progress",((W=l.data)==null?void 0:W.status)==="error"?"cursor-not-allowed":null),children:a})]})}function Se({file:n,appFile:e,appName:i,line:s,children:o}){const r=_e(),a=we();if(Array.isArray(e))return d.jsx("div",{children:"Cannot open more than one file"});if(n){const m=F=>F.replace(/\\/g,"/");return d.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:o})}const h=r.find(m=>m.name===i),l=[...(h==null?void 0:h.relativePath.split(a.separator))??[],e+(s?`#L${s}`:"")].join("/");return d.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${l}`,rel:"noreferrer",target:"_blank",children:o})}function Ve({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const o=Yt(),r=h=>{if(!h.altKey||ENV.EPICSHOP_DEPLOYED)return;h.preventDefault();const l=new FormData,m=i?"file":"appFile";l.append(m,i??n),l.append("type",m),e&&l.append("appName",e),o.submit(l,{method:"POST",action:"/launch-editor"})},a=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return d.jsxs(Xt,{className:"self-center font-mono text-sm",onClick:r,target:"_blank",to:`${a}/${s}/${n}`.replace(/\\/g,"/"),children:[d.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),d.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Kt=ENV.EPICSHOP_DEPLOYED?ENV.EPICSHOP_GITHUB_ROOT?Se:({children:n})=>d.jsx(be,{content:"Cannot open files in deployed app",children:d.jsx("button",{className:"launch_button cursor-not-allowed",children:n})}):ye,ft=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Zt=new Set,Rt=typeof process=="object"&&process?process:{},Jt=(n,e,i,s)=>{typeof Rt.emitWarning=="function"?Rt.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let jt=globalThis.AbortController,$t=globalThis.AbortSignal;var qt;if(typeof jt>"u"){$t=class{constructor(){O(this,"onabort");O(this,"_onabort",[]);O(this,"reason");O(this,"aborted",!1)}addEventListener(s,o){this._onabort.push(o)}},jt=class{constructor(){O(this,"signal",new $t);e()}abort(s){var o,r;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const a of this.signal._onabort)a(s);(r=(o=this.signal).onabort)==null||r.call(o,s)}}};let n=((qt=Rt.env)==null?void 0:qt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,Jt("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const Ee=n=>!Zt.has(n),et=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),Qt=n=>et(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?vt:null:null;class vt extends Array{constructor(e){super(e),this.fill(0)}}var dt;const ot=class ot{constructor(e,i){O(this,"heap");O(this,"length");if(!t(ot,dt))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=Qt(e);if(!i)return[];u(ot,dt,!0);const s=new ot(e,i);return u(ot,dt,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};dt=new WeakMap,g(ot,dt,!1);let Wt=ot;var U,I,V,B,pt,A,$,v,E,p,N,M,z,C,q,T,X,Y,G,K,nt,R,_t,It,at,Q,yt,H,Ct,te,ht,gt,St,Z,it,J,st,Et,Mt,Ne,mt,At,bt,Ft,w,S,xt,Gt,lt,wt;const Ut=class Ut{constructor(e){g(this,_t);g(this,Ct);g(this,Z);g(this,J);g(this,Et);g(this,mt);g(this,bt);g(this,w);g(this,xt);g(this,lt);g(this,U,void 0);g(this,I,void 0);g(this,V,void 0);g(this,B,void 0);g(this,pt,void 0);O(this,"ttl");O(this,"ttlResolution");O(this,"ttlAutopurge");O(this,"updateAgeOnGet");O(this,"updateAgeOnHas");O(this,"allowStale");O(this,"noDisposeOnSet");O(this,"noUpdateTTL");O(this,"maxEntrySize");O(this,"sizeCalculation");O(this,"noDeleteOnFetchRejection");O(this,"noDeleteOnStaleGet");O(this,"allowStaleOnFetchAbort");O(this,"allowStaleOnFetchRejection");O(this,"ignoreFetchAbort");g(this,A,void 0);g(this,$,void 0);g(this,v,void 0);g(this,E,void 0);g(this,p,void 0);g(this,N,void 0);g(this,M,void 0);g(this,z,void 0);g(this,C,void 0);g(this,q,void 0);g(this,T,void 0);g(this,X,void 0);g(this,Y,void 0);g(this,G,void 0);g(this,K,void 0);g(this,nt,void 0);g(this,R,void 0);g(this,at,()=>{});g(this,Q,()=>{});g(this,yt,()=>{});g(this,H,()=>!1);g(this,ht,e=>{});g(this,gt,(e,i,s)=>{});g(this,St,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});O(this,Ne,"LRUCache");const{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:a,updateAgeOnHas:h,allowStale:l,dispose:m,disposeAfter:F,noDisposeOnSet:b,noUpdateTTL:W,maxSize:_=0,maxEntrySize:P=0,sizeCalculation:x,fetchMethod:j,noDeleteOnFetchRejection:f,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:D,ignoreFetchAbort:k}=e;if(i!==0&&!et(i))throw new TypeError("max option must be a nonnegative integer");const rt=i?Qt(i):Array;if(!rt)throw new Error("invalid max value: "+i);if(u(this,U,i),u(this,I,_),this.maxEntrySize=P||t(this,I),this.sizeCalculation=x,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(u(this,pt,j),u(this,nt,!!j),u(this,v,new Map),u(this,E,new Array(i).fill(void 0)),u(this,p,new Array(i).fill(void 0)),u(this,N,new rt(i)),u(this,M,new rt(i)),u(this,z,0),u(this,C,0),u(this,q,Wt.create(i)),u(this,A,0),u(this,$,0),typeof m=="function"&&u(this,V,m),typeof F=="function"?(u(this,B,F),u(this,T,[])):(u(this,B,void 0),u(this,T,void 0)),u(this,K,!!t(this,V)),u(this,R,!!t(this,B)),this.noDisposeOnSet=!!b,this.noUpdateTTL=!!W,this.noDeleteOnFetchRejection=!!f,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!k,this.maxEntrySize!==0){if(t(this,I)!==0&&!et(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!et(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");c(this,Ct,te).call(this)}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!a,this.updateAgeOnHas=!!h,this.ttlResolution=et(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!et(this.ttl))throw new TypeError("ttl must be a positive integer if specified");c(this,_t,It).call(this)}if(t(this,U)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,U)&&!t(this,I)){const tt="LRU_CACHE_UNBOUNDED";Ee(tt)&&(Zt.add(tt),Jt("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",tt,Ut))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,v),keyList:t(e,E),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,C)},free:t(e,q),isBackgroundFetch:i=>{var s;return c(s=e,w,S).call(s,i)},backgroundFetch:(i,s,o,r)=>{var a;return c(a=e,bt,Ft).call(a,i,s,o,r)},moveToTail:i=>{var s;return c(s=e,lt,wt).call(s,i)},indexes:i=>{var s;return c(s=e,Z,it).call(s,i)},rindexes:i=>{var s;return c(s=e,J,st).call(s,i)},isStale:i=>{var s;return t(s=e,H).call(s,i)}}}get max(){return t(this,U)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,$)}get size(){return t(this,A)}get fetchMethod(){return t(this,pt)}get dispose(){return t(this,V)}get disposeAfter(){return t(this,B)}getRemainingTTL(e){return t(this,v).has(e)?1/0:0}*entries(){for(const e of c(this,Z,it).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*rentries(){for(const e of c(this,J,st).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*keys(){for(const e of c(this,Z,it).call(this)){const i=t(this,E)[e];i!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of c(this,J,st).call(this)){const i=t(this,E)[e];i!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of c(this,Z,it).call(this))t(this,p)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of c(this,J,st).call(this))t(this,p)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(const s of c(this,Z,it).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&e(r,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(const s of c(this,Z,it).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}rforEach(e,i=this){for(const s of c(this,J,st).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}purgeStale(){let e=!1;for(const i of c(this,J,st).call(this,{allowStale:!0}))t(this,H).call(this,i)&&(this.delete(t(this,E)[i]),e=!0);return e}info(e){const i=t(this,v).get(e);if(i===void 0)return;const s=t(this,p)[i],o=c(this,w,S).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;const r={value:o};if(t(this,G)&&t(this,Y)){const a=t(this,G)[i],h=t(this,Y)[i];if(a&&h){const l=a-(ft.now()-h);r.ttl=l,r.start=Date.now()}}return t(this,X)&&(r.size=t(this,X)[i]),r}dump(){const e=[];for(const i of c(this,Z,it).call(this,{allowStale:!0})){const s=t(this,E)[i],o=t(this,p)[i],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||s===void 0)continue;const a={value:r};if(t(this,G)&&t(this,Y)){a.ttl=t(this,G)[i];const h=ft.now()-t(this,Y)[i];a.start=Math.floor(Date.now()-h)}t(this,X)&&(a.size=t(this,X)[i]),e.unshift([s,a])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const o=Date.now()-s.start;s.start=ft.now()-o}this.set(i,s.value,s)}}set(e,i,s={}){var W,_,P,x,j;if(i===void 0)return this.delete(e),this;const{ttl:o=this.ttl,start:r,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:l}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const F=t(this,St).call(this,e,i,s.size||0,h);if(this.maxEntrySize&&F>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let b=t(this,A)===0?void 0:t(this,v).get(e);if(b===void 0)b=t(this,A)===0?t(this,C):t(this,q).length!==0?t(this,q).pop():t(this,A)===t(this,U)?c(this,mt,At).call(this,!1):t(this,A),t(this,E)[b]=e,t(this,p)[b]=i,t(this,v).set(e,b),t(this,N)[t(this,C)]=b,t(this,M)[b]=t(this,C),u(this,C,b),Ot(this,A)._++,t(this,gt).call(this,b,F,l),l&&(l.set="add"),m=!1;else{c(this,lt,wt).call(this,b);const f=t(this,p)[b];if(i!==f){if(t(this,nt)&&c(this,w,S).call(this,f)){f.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=f;y!==void 0&&!a&&(t(this,K)&&((W=t(this,V))==null||W.call(this,y,e,"set")),t(this,R)&&((_=t(this,T))==null||_.push([y,e,"set"])))}else a||(t(this,K)&&((P=t(this,V))==null||P.call(this,f,e,"set")),t(this,R)&&((x=t(this,T))==null||x.push([f,e,"set"])));if(t(this,ht).call(this,b),t(this,gt).call(this,b,F,l),t(this,p)[b]=i,l){l.set="replace";const y=f&&c(this,w,S).call(this,f)?f.__staleWhileFetching:f;y!==void 0&&(l.oldValue=y)}}else l&&(l.set="update")}if(o!==0&&!t(this,G)&&c(this,_t,It).call(this),t(this,G)&&(m||t(this,yt).call(this,b,o,r),l&&t(this,Q).call(this,l,b)),!a&&t(this,R)&&t(this,T)){const f=t(this,T);let y;for(;y=f==null?void 0:f.shift();)(j=t(this,B))==null||j.call(this,...y)}return this}pop(){var e;try{for(;t(this,A);){const i=t(this,p)[t(this,z)];if(c(this,mt,At).call(this,!0),c(this,w,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,R)&&t(this,T)){const i=t(this,T);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,B))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,r=t(this,v).get(e);if(r!==void 0){const a=t(this,p)[r];if(c(this,w,S).call(this,a)&&a.__staleWhileFetching===void 0)return!1;if(t(this,H).call(this,r))o&&(o.has="stale",t(this,Q).call(this,o,r));else return s&&t(this,at).call(this,r),o&&(o.has="hit",t(this,Q).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,o=t(this,v).get(e);if(o===void 0||!s&&t(this,H).call(this,o))return;const r=t(this,p)[o];return c(this,w,S).call(this,r)?r.__staleWhileFetching:r}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:l=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:F=this.noUpdateTTL,noDeleteOnFetchRejection:b=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:W=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:P=this.allowStaleOnFetchAbort,context:x,forceRefresh:j=!1,status:f,signal:y}=i;if(!t(this,nt))return f&&(f.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:f});const L={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:a,noDisposeOnSet:h,size:l,sizeCalculation:m,noUpdateTTL:F,noDeleteOnFetchRejection:b,allowStaleOnFetchRejection:W,allowStaleOnFetchAbort:P,ignoreFetchAbort:_,status:f,signal:y};let D=t(this,v).get(e);if(D===void 0){f&&(f.fetch="miss");const k=c(this,bt,Ft).call(this,e,D,L,x);return k.__returned=k}else{const k=t(this,p)[D];if(c(this,w,S).call(this,k)){const Bt=s&&k.__staleWhileFetching!==void 0;return f&&(f.fetch="inflight",Bt&&(f.returnedStale=!0)),Bt?k.__staleWhileFetching:k.__returned=k}const rt=t(this,H).call(this,D);if(!j&&!rt)return f&&(f.fetch="hit"),c(this,lt,wt).call(this,D),o&&t(this,at).call(this,D),f&&t(this,Q).call(this,f,D),k;const tt=c(this,bt,Ft).call(this,e,D,L,x),Vt=tt.__staleWhileFetching!==void 0&&s;return f&&(f.fetch=rt?"stale":"refresh",Vt&&rt&&(f.returnedStale=!0)),Vt?tt.__staleWhileFetching:tt.__returned=tt}}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:a}=i,h=t(this,v).get(e);if(h!==void 0){const l=t(this,p)[h],m=c(this,w,S).call(this,l);return a&&t(this,Q).call(this,a,h),t(this,H).call(this,h)?(a&&(a.get="stale"),m?(a&&s&&l.__staleWhileFetching!==void 0&&(a.returnedStale=!0),s?l.__staleWhileFetching:void 0):(r||this.delete(e),a&&s&&(a.returnedStale=!0),s?l:void 0)):(a&&(a.get="hit"),m?l.__staleWhileFetching:(c(this,lt,wt).call(this,h),o&&t(this,at).call(this,h),l))}else a&&(a.get="miss")}delete(e){var s,o,r,a;let i=!1;if(t(this,A)!==0){const h=t(this,v).get(e);if(h!==void 0)if(i=!0,t(this,A)===1)this.clear();else{t(this,ht).call(this,h);const l=t(this,p)[h];if(c(this,w,S).call(this,l)?l.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,R))&&(t(this,K)&&((s=t(this,V))==null||s.call(this,l,e,"delete")),t(this,R)&&((o=t(this,T))==null||o.push([l,e,"delete"]))),t(this,v).delete(e),t(this,E)[h]=void 0,t(this,p)[h]=void 0,h===t(this,C))u(this,C,t(this,M)[h]);else if(h===t(this,z))u(this,z,t(this,N)[h]);else{const m=t(this,M)[h];t(this,N)[m]=t(this,N)[h];const F=t(this,N)[h];t(this,M)[F]=t(this,M)[h]}Ot(this,A)._--,t(this,q).push(h)}}if(t(this,R)&&((r=t(this,T))!=null&&r.length)){const h=t(this,T);let l;for(;l=h==null?void 0:h.shift();)(a=t(this,B))==null||a.call(this,...l)}return i}clear(){var e,i,s;for(const o of c(this,J,st).call(this,{allowStale:!0})){const r=t(this,p)[o];if(c(this,w,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const a=t(this,E)[o];t(this,K)&&((e=t(this,V))==null||e.call(this,r,a,"delete")),t(this,R)&&((i=t(this,T))==null||i.push([r,a,"delete"]))}}if(t(this,v).clear(),t(this,p).fill(void 0),t(this,E).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),u(this,z,0),u(this,C,0),t(this,q).length=0,u(this,$,0),u(this,A,0),t(this,R)&&t(this,T)){const o=t(this,T);let r;for(;r=o==null?void 0:o.shift();)(s=t(this,B))==null||s.call(this,...r)}}};Ne=Symbol.toStringTag,U=new WeakMap,I=new WeakMap,V=new WeakMap,B=new WeakMap,pt=new WeakMap,A=new WeakMap,$=new WeakMap,v=new WeakMap,E=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,C=new WeakMap,q=new WeakMap,T=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,nt=new WeakMap,R=new WeakMap,_t=new WeakSet,It=function(){const e=new vt(t(this,U)),i=new vt(t(this,U));u(this,G,e),u(this,Y,i),u(this,yt,(r,a,h=ft.now())=>{if(i[r]=a!==0?h:0,e[r]=a,a!==0&&this.ttlAutopurge){const l=setTimeout(()=>{t(this,H).call(this,r)&&this.delete(t(this,E)[r])},a+1);l.unref&&l.unref()}}),u(this,at,r=>{i[r]=e[r]!==0?ft.now():0}),u(this,Q,(r,a)=>{if(e[a]){const h=e[a],l=i[a];if(!h||!l)return;r.ttl=h,r.start=l,r.now=s||o();const m=r.now-l;r.remainingTTL=h-m}});let s=0;const o=()=>{const r=ft.now();if(this.ttlResolution>0){s=r;const a=setTimeout(()=>s=0,this.ttlResolution);a.unref&&a.unref()}return r};this.getRemainingTTL=r=>{const a=t(this,v).get(r);if(a===void 0)return 0;const h=e[a],l=i[a];if(!h||!l)return 1/0;const m=(s||o())-l;return h-m},u(this,H,r=>{const a=i[r],h=e[r];return!!h&&!!a&&(s||o())-a>h})},at=new WeakMap,Q=new WeakMap,yt=new WeakMap,H=new WeakMap,Ct=new WeakSet,te=function(){const e=new vt(t(this,U));u(this,$,0),u(this,X,e),u(this,ht,i=>{u(this,$,t(this,$)-e[i]),e[i]=0}),u(this,St,(i,s,o,r)=>{if(c(this,w,S).call(this,s))return 0;if(!et(o))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(o=r(s,i),!et(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),u(this,gt,(i,s,o)=>{if(e[i]=s,t(this,I)){const r=t(this,I)-e[i];for(;t(this,$)>r;)c(this,mt,At).call(this,!0)}u(this,$,t(this,$)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,$))})},ht=new WeakMap,gt=new WeakMap,St=new WeakMap,Z=new WeakSet,it=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,C);!(!c(this,Et,Mt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},J=new WeakSet,st=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,z);!(!c(this,Et,Mt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,N)[i]},Et=new WeakSet,Mt=function(e){return e!==void 0&&t(this,v).get(t(this,E)[e])===e},mt=new WeakSet,At=function(e){var r,a;const i=t(this,z),s=t(this,E)[i],o=t(this,p)[i];return t(this,nt)&&c(this,w,S).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,R))&&(t(this,K)&&((r=t(this,V))==null||r.call(this,o,s,"evict")),t(this,R)&&((a=t(this,T))==null||a.push([o,s,"evict"]))),t(this,ht).call(this,i),e&&(t(this,E)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,A)===1?(u(this,z,u(this,C,0)),t(this,q).length=0):u(this,z,t(this,N)[i]),t(this,v).delete(s),Ot(this,A)._--,i},bt=new WeakSet,Ft=function(e,i,s,o){const r=i===void 0?void 0:t(this,p)[i];if(c(this,w,S).call(this,r))return r;const a=new jt,{signal:h}=s;h==null||h.addEventListener("abort",()=>a.abort(h.reason),{signal:a.signal});const l={signal:a.signal,options:s,context:o},m=(x,j=!1)=>{const{aborted:f}=a.signal,y=s.ignoreFetchAbort&&x!==void 0;if(s.status&&(f&&!j?(s.status.fetchAborted=!0,s.status.fetchError=a.signal.reason,y&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),f&&!y&&!j)return b(a.signal.reason);const L=_;return t(this,p)[i]===_&&(x===void 0?L.__staleWhileFetching?t(this,p)[i]=L.__staleWhileFetching:this.delete(e):(s.status&&(s.status.fetchUpdated=!0),this.set(e,x,l.options))),x},F=x=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=x),b(x)),b=x=>{const{aborted:j}=a.signal,f=j&&s.allowStaleOnFetchAbort,y=f||s.allowStaleOnFetchRejection,L=y||s.noDeleteOnFetchRejection,D=_;if(t(this,p)[i]===_&&(!L||D.__staleWhileFetching===void 0?this.delete(e):f||(t(this,p)[i]=D.__staleWhileFetching)),y)return s.status&&D.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw x},W=(x,j)=>{var y;const f=(y=t(this,pt))==null?void 0:y.call(this,e,r,l);f&&f instanceof Promise&&f.then(L=>x(L===void 0?void 0:L),j),a.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(x(void 0),s.allowStaleOnFetchAbort&&(x=L=>m(L,!0)))})};s.status&&(s.status.fetchDispatched=!0);const _=new Promise(W).then(m,F),P=Object.assign(_,{__abortController:a,__staleWhileFetching:r,__returned:void 0});return i===void 0?(this.set(e,P,{...l.options,status:void 0}),i=t(this,v).get(e)):t(this,p)[i]=P,P},w=new WeakSet,S=function(e){if(!t(this,nt))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof jt},xt=new WeakSet,Gt=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},lt=new WeakSet,wt=function(e){e!==t(this,C)&&(e===t(this,z)?u(this,z,t(this,N)[e]):c(this,xt,Gt).call(this,t(this,M)[e],t(this,N)[e]),c(this,xt,Gt).call(this,t(this,C),e),u(this,C,e))};let Lt=Ut;var Dt={};Object.defineProperty(Dt,"__esModule",{value:!0});Dt.getMDXComponent=Ae;Dt.getMDXExport=ie;var xe=kt(ct),Oe=kt(d),ve=kt(le);function ee(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(ee=function(s){return s?i:e})(n)}function kt(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=ee(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in n)if(r!=="default"&&{}.hasOwnProperty.call(n,r)){var a=o?Object.getOwnPropertyDescriptor(n,r):null;a&&(a.get||a.set)?Object.defineProperty(s,r,a):s[r]=n[r]}return s.default=n,i&&i.set(n,s),s}function Ae(n,e){return ie(n,e).default}function ie(n,e){const i={React:xe,ReactDOM:ve,_jsx_runtime:Oe,...e};return new Function(...Object.keys(i),n)(...Object.values(i))}var Fe=Dt;const Pt=n=>n.replace(/\\/g,"/");function se(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const Ht="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function je({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":o,"data-type":r}){var W;const a=ce();if(r==="other"||!n||!e||!i)return null;const h=Pt(((W=a[a.type])==null?void 0:W.fullPath)??""),l=!i.startsWith(h),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],F=n.split(","),b=m.filter(_=>F.includes(_));return d.jsx(d.Fragment,{children:b.map(_=>{var f;const P=a[_];if(_==="playground"){const y=a.playground&&a.playground.appName!==((f=a.problem)==null?void 0:f.name);if(!P||y||l)return d.jsxs("button",{className:Tt(Ht,"cursor-not-allowed"),title:y?"Playground is not set to the right app":l?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",_]},_)}if(!P||!P.fullPath)return null;const x=[Pt(P.fullPath),Pt(e)].join(s),j=se(x,s,_);return d.jsx(Kt,{file:x,line:Number(o??1),children:d.jsxs("span",{title:j,className:Ht,children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",_]})},_)})})}function Ce(){const[n,e]=ct.useState(!1);return ct.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),d.jsx("button",{className:fe(Ht,"w-12 uppercase"),onClick:i=>{var r,a,h;e(!0);const o=((h=(a=(r=i.currentTarget.parentElement)==null?void 0:r.parentElement)==null?void 0:a.querySelector("pre"))==null?void 0:h.textContent)||"";navigator.clipboard.writeText(o)},children:n?"copied":"copy"})}function Te({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":o,"data-nocopy":r,"data-sep":a}=e,h=r===void 0;function l(){if(o&&a)return!s||s.includes("..")?{"data-filename":se(o,a)}:{"data-filename":s.replace(/\//g,a)}}return d.jsxs("div",{className:"group relative",children:[d.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?d.jsx(je,{...e}):null,h?d.jsx(Ce,{}):null]}),d.jsx("pre",{...e,className:Tt("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...l(),children:n})]})}const De={h1:n=>d.jsx(ut,{...n,as:"h1"}),h2:n=>d.jsx(ut,{...n,as:"h2"}),h3:n=>d.jsx(ut,{...n,as:"h3"}),h4:n=>d.jsx(ut,{...n,as:"h4"}),h5:n=>d.jsx(ut,{...n,as:"h5"}),h6:n=>d.jsx(ut,{...n,as:"h6"}),a:de,p:n=>d.jsx("div",{...n}),pre:n=>d.jsx("pre",{...n,className:Tt("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Kt,VideoEmbed:pe,EpicVideo:ge};function ze(n){const e=Fe.getMDXComponent(n);function i({components:s,...o}){const r=ct.useMemo(()=>({...De,...s}),[s]);return d.jsx(e,{components:r,...o})}return i}const Nt=new Lt({max:1e3});function Pe(n){return ct.useMemo(()=>{if(Nt.has(n))return Nt.get(n);const e=ze(n);return Nt.set(n,e),e},[n])}function qe({code:n,components:e}){const i=Pe(n),s=ct.useMemo(()=>({Icon:ue,pre:Te,Link:Xt,...e}),[e]);return d.jsx(i,{components:s})}export{Ve as E,Kt as L,qe as M};
2
- //# sourceMappingURL=mdx-BVZ4sNxQ.js.map
1
+ var re=Object.defineProperty;var oe=(n,e,i)=>e in n?re(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var O=(n,e,i)=>(oe(n,typeof e!="symbol"?e+"":e,i),i),zt=(n,e,i)=>{if(!e.has(n))throw TypeError("Cannot "+i)};var t=(n,e,i)=>(zt(n,e,"read from private field"),i?i.call(n):e.get(n)),g=(n,e,i)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,i)},u=(n,e,i,s)=>(zt(n,e,"write to private field"),s?s.call(n,i):e.set(n,i),i);var Ot=(n,e,i,s)=>({set _(o){u(n,e,o,i)},get _(){return t(n,e,s)}}),c=(n,e,i)=>(zt(n,e,"access private method"),i);import{j as d,r as ct}from"./index-D6ygCrVn.js";import{c as Tt}from"./clsx-B-dksMZM.js";import{b as ae,L as Xt,a as he,r as le,u as ce}from"./components-C5xBZAiL.js";import{V as ue,D as fe}from"./epic-video-BwtXsHGU.js";import{I as de,c as pe,H as ut,A as ge}from"./misc-DNgC2Frq.js";import{s as me}from"./progress-bar-7LK87ZMh.js";import{S as be}from"./tooltip-Kw0lYWBI.js";import{u as we}from"./request-info-Dyls4H67.js";function _e(){const n=ae("root");if(!n)throw new Error("useApps requires a data object from the root loader");return n.apps}function Yt(n){const e=he();return ct.useEffect(()=>{e.state==="idle"&&e.data!=null&&(n==null||n("fetcher-done"))},[e,n]),e}function ye({file:n,appFile:e,appName:i,syncTo:s,line:o,column:r,children:a,onUpdate:h}){var W;const l=Yt(h),m=typeof e=="string"?[e]:e,F=n?"file":e?"appFile":"",b=s!=null&&s.file?"file":s!=null&&s.appFile?"appFile":"";return d.jsxs(l.Form,{action:"/launch-editor",method:"POST",className:"flex items-center",children:[me,d.jsx("input",{type:"hidden",name:"line",value:o}),d.jsx("input",{type:"hidden",name:"column",value:r}),d.jsx("input",{type:"hidden",name:"type",value:F}),d.jsx("input",{type:"hidden",name:"file",value:n}),d.jsx("input",{type:"hidden",name:"appName",value:i}),m==null?void 0:m.map(_=>d.jsx("input",{type:"hidden",name:"appFile",value:_},_)),s?d.jsxs(d.Fragment,{children:[d.jsx("input",{type:"hidden",name:"syncTo.type",value:b}),d.jsx("input",{type:"hidden",name:"syncTo.file",value:s.file}),d.jsx("input",{type:"hidden",name:"syncTo.appName",value:s.appName}),d.jsx("input",{type:"hidden",name:"syncTo.appFile",value:s.appFile})]}):null,d.jsx("button",{type:"submit",className:Tt("launch_button",l.state==="idle"?null:"cursor-progress",((W=l.data)==null?void 0:W.status)==="error"?"cursor-not-allowed":null),children:a})]})}function Se({file:n,appFile:e,appName:i,line:s,children:o}){const r=_e(),a=we();if(Array.isArray(e))return d.jsx("div",{children:"Cannot open more than one file"});if(n){const m=F=>F.replace(/\\/g,"/");return d.jsx("a",{className:"launch_button !no-underline",href:m(n).replace(m(ENV.EPICSHOP_CONTEXT_CWD),ENV.EPICSHOP_GITHUB_ROOT)+(s?`#L${s}`:""),rel:"noreferrer",target:"_blank",children:o})}const h=r.find(m=>m.name===i),l=[...(h==null?void 0:h.relativePath.split(a.separator))??[],e+(s?`#L${s}`:"")].join("/");return d.jsx("a",{className:"launch_button !no-underline",href:`${ENV.EPICSHOP_GITHUB_ROOT}/${l}`,rel:"noreferrer",target:"_blank",children:o})}function Ve({appFile:n="README.mdx",appName:e,file:i,relativePath:s}){const o=Yt(),r=h=>{if(!h.altKey||ENV.EPICSHOP_DEPLOYED)return;h.preventDefault();const l=new FormData,m=i?"file":"appFile";l.append(m,i??n),l.append("type",m),e&&l.append("appName",e),o.submit(l,{method:"POST",action:"/launch-editor"})},a=ENV.EPICSHOP_GITHUB_ROOT.replace(/\/tree\/|\/blob\//,"/edit/");return d.jsxs(Xt,{className:"self-center font-mono text-sm",onClick:r,target:"_blank",to:`${a}/${s}/${n}`.replace(/\\/g,"/"),children:[d.jsx("span",{className:"block md:hidden",children:"Edit on GitHub"}),d.jsx("span",{className:"hidden md:block",children:"Edit this page on GitHub"})]})}const Kt=ENV.EPICSHOP_DEPLOYED?ENV.EPICSHOP_GITHUB_ROOT?Se:({children:n})=>d.jsx(be,{content:"Cannot open files in deployed app",children:d.jsx("button",{className:"launch_button cursor-not-allowed",children:n})}):ye,ft=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Zt=new Set,Rt=typeof process=="object"&&process?process:{},Jt=(n,e,i,s)=>{typeof Rt.emitWarning=="function"?Rt.emitWarning(n,e,i,s):console.error(`[${i}] ${e}: ${n}`)};let jt=globalThis.AbortController,$t=globalThis.AbortSignal;var qt;if(typeof jt>"u"){$t=class{constructor(){O(this,"onabort");O(this,"_onabort",[]);O(this,"reason");O(this,"aborted",!1)}addEventListener(s,o){this._onabort.push(o)}},jt=class{constructor(){O(this,"signal",new $t);e()}abort(s){var o,r;if(!this.signal.aborted){this.signal.reason=s,this.signal.aborted=!0;for(const a of this.signal._onabort)a(s);(r=(o=this.signal).onabort)==null||r.call(o,s)}}};let n=((qt=Rt.env)==null?void 0:qt.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const e=()=>{n&&(n=!1,Jt("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}const Ee=n=>!Zt.has(n),et=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),Qt=n=>et(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?vt:null:null;class vt extends Array{constructor(e){super(e),this.fill(0)}}var dt;const ot=class ot{constructor(e,i){O(this,"heap");O(this,"length");if(!t(ot,dt))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0}static create(e){const i=Qt(e);if(!i)return[];u(ot,dt,!0);const s=new ot(e,i);return u(ot,dt,!1),s}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}};dt=new WeakMap,g(ot,dt,!1);let Wt=ot;var U,I,V,B,pt,A,$,v,E,p,N,M,z,C,q,T,X,Y,G,K,nt,R,_t,It,at,Q,yt,H,Ct,te,ht,gt,St,Z,it,J,st,Et,Mt,Ne,mt,At,bt,Ft,w,S,xt,Gt,lt,wt;const Ut=class Ut{constructor(e){g(this,_t);g(this,Ct);g(this,Z);g(this,J);g(this,Et);g(this,mt);g(this,bt);g(this,w);g(this,xt);g(this,lt);g(this,U,void 0);g(this,I,void 0);g(this,V,void 0);g(this,B,void 0);g(this,pt,void 0);O(this,"ttl");O(this,"ttlResolution");O(this,"ttlAutopurge");O(this,"updateAgeOnGet");O(this,"updateAgeOnHas");O(this,"allowStale");O(this,"noDisposeOnSet");O(this,"noUpdateTTL");O(this,"maxEntrySize");O(this,"sizeCalculation");O(this,"noDeleteOnFetchRejection");O(this,"noDeleteOnStaleGet");O(this,"allowStaleOnFetchAbort");O(this,"allowStaleOnFetchRejection");O(this,"ignoreFetchAbort");g(this,A,void 0);g(this,$,void 0);g(this,v,void 0);g(this,E,void 0);g(this,p,void 0);g(this,N,void 0);g(this,M,void 0);g(this,z,void 0);g(this,C,void 0);g(this,q,void 0);g(this,T,void 0);g(this,X,void 0);g(this,Y,void 0);g(this,G,void 0);g(this,K,void 0);g(this,nt,void 0);g(this,R,void 0);g(this,at,()=>{});g(this,Q,()=>{});g(this,yt,()=>{});g(this,H,()=>!1);g(this,ht,e=>{});g(this,gt,(e,i,s)=>{});g(this,St,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});O(this,Ne,"LRUCache");const{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:r,updateAgeOnGet:a,updateAgeOnHas:h,allowStale:l,dispose:m,disposeAfter:F,noDisposeOnSet:b,noUpdateTTL:W,maxSize:_=0,maxEntrySize:P=0,sizeCalculation:x,fetchMethod:j,noDeleteOnFetchRejection:f,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:L,allowStaleOnFetchAbort:D,ignoreFetchAbort:k}=e;if(i!==0&&!et(i))throw new TypeError("max option must be a nonnegative integer");const rt=i?Qt(i):Array;if(!rt)throw new Error("invalid max value: "+i);if(u(this,U,i),u(this,I,_),this.maxEntrySize=P||t(this,I),this.sizeCalculation=x,this.sizeCalculation){if(!t(this,I)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(j!==void 0&&typeof j!="function")throw new TypeError("fetchMethod must be a function if specified");if(u(this,pt,j),u(this,nt,!!j),u(this,v,new Map),u(this,E,new Array(i).fill(void 0)),u(this,p,new Array(i).fill(void 0)),u(this,N,new rt(i)),u(this,M,new rt(i)),u(this,z,0),u(this,C,0),u(this,q,Wt.create(i)),u(this,A,0),u(this,$,0),typeof m=="function"&&u(this,V,m),typeof F=="function"?(u(this,B,F),u(this,T,[])):(u(this,B,void 0),u(this,T,void 0)),u(this,K,!!t(this,V)),u(this,R,!!t(this,B)),this.noDisposeOnSet=!!b,this.noUpdateTTL=!!W,this.noDeleteOnFetchRejection=!!f,this.allowStaleOnFetchRejection=!!L,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!k,this.maxEntrySize!==0){if(t(this,I)!==0&&!et(t(this,I)))throw new TypeError("maxSize must be a positive integer if specified");if(!et(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");c(this,Ct,te).call(this)}if(this.allowStale=!!l,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!a,this.updateAgeOnHas=!!h,this.ttlResolution=et(o)||o===0?o:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!et(this.ttl))throw new TypeError("ttl must be a positive integer if specified");c(this,_t,It).call(this)}if(t(this,U)===0&&this.ttl===0&&t(this,I)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,U)&&!t(this,I)){const tt="LRU_CACHE_UNBOUNDED";Ee(tt)&&(Zt.add(tt),Jt("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",tt,Ut))}}static unsafeExposeInternals(e){return{starts:t(e,Y),ttls:t(e,G),sizes:t(e,X),keyMap:t(e,v),keyList:t(e,E),valList:t(e,p),next:t(e,N),prev:t(e,M),get head(){return t(e,z)},get tail(){return t(e,C)},free:t(e,q),isBackgroundFetch:i=>{var s;return c(s=e,w,S).call(s,i)},backgroundFetch:(i,s,o,r)=>{var a;return c(a=e,bt,Ft).call(a,i,s,o,r)},moveToTail:i=>{var s;return c(s=e,lt,wt).call(s,i)},indexes:i=>{var s;return c(s=e,Z,it).call(s,i)},rindexes:i=>{var s;return c(s=e,J,st).call(s,i)},isStale:i=>{var s;return t(s=e,H).call(s,i)}}}get max(){return t(this,U)}get maxSize(){return t(this,I)}get calculatedSize(){return t(this,$)}get size(){return t(this,A)}get fetchMethod(){return t(this,pt)}get dispose(){return t(this,V)}get disposeAfter(){return t(this,B)}getRemainingTTL(e){return t(this,v).has(e)?1/0:0}*entries(){for(const e of c(this,Z,it).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*rentries(){for(const e of c(this,J,st).call(this))t(this,p)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield[t(this,E)[e],t(this,p)[e]])}*keys(){for(const e of c(this,Z,it).call(this)){const i=t(this,E)[e];i!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield i)}}*rkeys(){for(const e of c(this,J,st).call(this)){const i=t(this,E)[e];i!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield i)}}*values(){for(const e of c(this,Z,it).call(this))t(this,p)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}*rvalues(){for(const e of c(this,J,st).call(this))t(this,p)[e]!==void 0&&!c(this,w,S).call(this,t(this,p)[e])&&(yield t(this,p)[e])}[Symbol.iterator](){return this.entries()}find(e,i={}){for(const s of c(this,Z,it).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;if(r!==void 0&&e(r,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(const s of c(this,Z,it).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}rforEach(e,i=this){for(const s of c(this,J,st).call(this)){const o=t(this,p)[s],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;r!==void 0&&e.call(i,r,t(this,E)[s],this)}}purgeStale(){let e=!1;for(const i of c(this,J,st).call(this,{allowStale:!0}))t(this,H).call(this,i)&&(this.delete(t(this,E)[i]),e=!0);return e}info(e){const i=t(this,v).get(e);if(i===void 0)return;const s=t(this,p)[i],o=c(this,w,S).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;const r={value:o};if(t(this,G)&&t(this,Y)){const a=t(this,G)[i],h=t(this,Y)[i];if(a&&h){const l=a-(ft.now()-h);r.ttl=l,r.start=Date.now()}}return t(this,X)&&(r.size=t(this,X)[i]),r}dump(){const e=[];for(const i of c(this,Z,it).call(this,{allowStale:!0})){const s=t(this,E)[i],o=t(this,p)[i],r=c(this,w,S).call(this,o)?o.__staleWhileFetching:o;if(r===void 0||s===void 0)continue;const a={value:r};if(t(this,G)&&t(this,Y)){a.ttl=t(this,G)[i];const h=ft.now()-t(this,Y)[i];a.start=Math.floor(Date.now()-h)}t(this,X)&&(a.size=t(this,X)[i]),e.unshift([s,a])}return e}load(e){this.clear();for(const[i,s]of e){if(s.start){const o=Date.now()-s.start;s.start=ft.now()-o}this.set(i,s.value,s)}}set(e,i,s={}){var W,_,P,x,j;if(i===void 0)return this.delete(e),this;const{ttl:o=this.ttl,start:r,noDisposeOnSet:a=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:l}=s;let{noUpdateTTL:m=this.noUpdateTTL}=s;const F=t(this,St).call(this,e,i,s.size||0,h);if(this.maxEntrySize&&F>this.maxEntrySize)return l&&(l.set="miss",l.maxEntrySizeExceeded=!0),this.delete(e),this;let b=t(this,A)===0?void 0:t(this,v).get(e);if(b===void 0)b=t(this,A)===0?t(this,C):t(this,q).length!==0?t(this,q).pop():t(this,A)===t(this,U)?c(this,mt,At).call(this,!1):t(this,A),t(this,E)[b]=e,t(this,p)[b]=i,t(this,v).set(e,b),t(this,N)[t(this,C)]=b,t(this,M)[b]=t(this,C),u(this,C,b),Ot(this,A)._++,t(this,gt).call(this,b,F,l),l&&(l.set="add"),m=!1;else{c(this,lt,wt).call(this,b);const f=t(this,p)[b];if(i!==f){if(t(this,nt)&&c(this,w,S).call(this,f)){f.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=f;y!==void 0&&!a&&(t(this,K)&&((W=t(this,V))==null||W.call(this,y,e,"set")),t(this,R)&&((_=t(this,T))==null||_.push([y,e,"set"])))}else a||(t(this,K)&&((P=t(this,V))==null||P.call(this,f,e,"set")),t(this,R)&&((x=t(this,T))==null||x.push([f,e,"set"])));if(t(this,ht).call(this,b),t(this,gt).call(this,b,F,l),t(this,p)[b]=i,l){l.set="replace";const y=f&&c(this,w,S).call(this,f)?f.__staleWhileFetching:f;y!==void 0&&(l.oldValue=y)}}else l&&(l.set="update")}if(o!==0&&!t(this,G)&&c(this,_t,It).call(this),t(this,G)&&(m||t(this,yt).call(this,b,o,r),l&&t(this,Q).call(this,l,b)),!a&&t(this,R)&&t(this,T)){const f=t(this,T);let y;for(;y=f==null?void 0:f.shift();)(j=t(this,B))==null||j.call(this,...y)}return this}pop(){var e;try{for(;t(this,A);){const i=t(this,p)[t(this,z)];if(c(this,mt,At).call(this,!0),c(this,w,S).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,R)&&t(this,T)){const i=t(this,T);let s;for(;s=i==null?void 0:i.shift();)(e=t(this,B))==null||e.call(this,...s)}}}has(e,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,r=t(this,v).get(e);if(r!==void 0){const a=t(this,p)[r];if(c(this,w,S).call(this,a)&&a.__staleWhileFetching===void 0)return!1;if(t(this,H).call(this,r))o&&(o.has="stale",t(this,Q).call(this,o,r));else return s&&t(this,at).call(this,r),o&&(o.has="hit",t(this,Q).call(this,o,r)),!0}else o&&(o.has="miss");return!1}peek(e,i={}){const{allowStale:s=this.allowStale}=i,o=t(this,v).get(e);if(o===void 0||!s&&t(this,H).call(this,o))return;const r=t(this,p)[o];return c(this,w,S).call(this,r)?r.__staleWhileFetching:r}async fetch(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:a=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:l=0,sizeCalculation:m=this.sizeCalculation,noUpdateTTL:F=this.noUpdateTTL,noDeleteOnFetchRejection:b=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:W=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:P=this.allowStaleOnFetchAbort,context:x,forceRefresh:j=!1,status:f,signal:y}=i;if(!t(this,nt))return f&&(f.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,status:f});const L={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:r,ttl:a,noDisposeOnSet:h,size:l,sizeCalculation:m,noUpdateTTL:F,noDeleteOnFetchRejection:b,allowStaleOnFetchRejection:W,allowStaleOnFetchAbort:P,ignoreFetchAbort:_,status:f,signal:y};let D=t(this,v).get(e);if(D===void 0){f&&(f.fetch="miss");const k=c(this,bt,Ft).call(this,e,D,L,x);return k.__returned=k}else{const k=t(this,p)[D];if(c(this,w,S).call(this,k)){const Bt=s&&k.__staleWhileFetching!==void 0;return f&&(f.fetch="inflight",Bt&&(f.returnedStale=!0)),Bt?k.__staleWhileFetching:k.__returned=k}const rt=t(this,H).call(this,D);if(!j&&!rt)return f&&(f.fetch="hit"),c(this,lt,wt).call(this,D),o&&t(this,at).call(this,D),f&&t(this,Q).call(this,f,D),k;const tt=c(this,bt,Ft).call(this,e,D,L,x),Vt=tt.__staleWhileFetching!==void 0&&s;return f&&(f.fetch=rt?"stale":"refresh",Vt&&rt&&(f.returnedStale=!0)),Vt?tt.__staleWhileFetching:tt.__returned=tt}}get(e,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:a}=i,h=t(this,v).get(e);if(h!==void 0){const l=t(this,p)[h],m=c(this,w,S).call(this,l);return a&&t(this,Q).call(this,a,h),t(this,H).call(this,h)?(a&&(a.get="stale"),m?(a&&s&&l.__staleWhileFetching!==void 0&&(a.returnedStale=!0),s?l.__staleWhileFetching:void 0):(r||this.delete(e),a&&s&&(a.returnedStale=!0),s?l:void 0)):(a&&(a.get="hit"),m?l.__staleWhileFetching:(c(this,lt,wt).call(this,h),o&&t(this,at).call(this,h),l))}else a&&(a.get="miss")}delete(e){var s,o,r,a;let i=!1;if(t(this,A)!==0){const h=t(this,v).get(e);if(h!==void 0)if(i=!0,t(this,A)===1)this.clear();else{t(this,ht).call(this,h);const l=t(this,p)[h];if(c(this,w,S).call(this,l)?l.__abortController.abort(new Error("deleted")):(t(this,K)||t(this,R))&&(t(this,K)&&((s=t(this,V))==null||s.call(this,l,e,"delete")),t(this,R)&&((o=t(this,T))==null||o.push([l,e,"delete"]))),t(this,v).delete(e),t(this,E)[h]=void 0,t(this,p)[h]=void 0,h===t(this,C))u(this,C,t(this,M)[h]);else if(h===t(this,z))u(this,z,t(this,N)[h]);else{const m=t(this,M)[h];t(this,N)[m]=t(this,N)[h];const F=t(this,N)[h];t(this,M)[F]=t(this,M)[h]}Ot(this,A)._--,t(this,q).push(h)}}if(t(this,R)&&((r=t(this,T))!=null&&r.length)){const h=t(this,T);let l;for(;l=h==null?void 0:h.shift();)(a=t(this,B))==null||a.call(this,...l)}return i}clear(){var e,i,s;for(const o of c(this,J,st).call(this,{allowStale:!0})){const r=t(this,p)[o];if(c(this,w,S).call(this,r))r.__abortController.abort(new Error("deleted"));else{const a=t(this,E)[o];t(this,K)&&((e=t(this,V))==null||e.call(this,r,a,"delete")),t(this,R)&&((i=t(this,T))==null||i.push([r,a,"delete"]))}}if(t(this,v).clear(),t(this,p).fill(void 0),t(this,E).fill(void 0),t(this,G)&&t(this,Y)&&(t(this,G).fill(0),t(this,Y).fill(0)),t(this,X)&&t(this,X).fill(0),u(this,z,0),u(this,C,0),t(this,q).length=0,u(this,$,0),u(this,A,0),t(this,R)&&t(this,T)){const o=t(this,T);let r;for(;r=o==null?void 0:o.shift();)(s=t(this,B))==null||s.call(this,...r)}}};Ne=Symbol.toStringTag,U=new WeakMap,I=new WeakMap,V=new WeakMap,B=new WeakMap,pt=new WeakMap,A=new WeakMap,$=new WeakMap,v=new WeakMap,E=new WeakMap,p=new WeakMap,N=new WeakMap,M=new WeakMap,z=new WeakMap,C=new WeakMap,q=new WeakMap,T=new WeakMap,X=new WeakMap,Y=new WeakMap,G=new WeakMap,K=new WeakMap,nt=new WeakMap,R=new WeakMap,_t=new WeakSet,It=function(){const e=new vt(t(this,U)),i=new vt(t(this,U));u(this,G,e),u(this,Y,i),u(this,yt,(r,a,h=ft.now())=>{if(i[r]=a!==0?h:0,e[r]=a,a!==0&&this.ttlAutopurge){const l=setTimeout(()=>{t(this,H).call(this,r)&&this.delete(t(this,E)[r])},a+1);l.unref&&l.unref()}}),u(this,at,r=>{i[r]=e[r]!==0?ft.now():0}),u(this,Q,(r,a)=>{if(e[a]){const h=e[a],l=i[a];if(!h||!l)return;r.ttl=h,r.start=l,r.now=s||o();const m=r.now-l;r.remainingTTL=h-m}});let s=0;const o=()=>{const r=ft.now();if(this.ttlResolution>0){s=r;const a=setTimeout(()=>s=0,this.ttlResolution);a.unref&&a.unref()}return r};this.getRemainingTTL=r=>{const a=t(this,v).get(r);if(a===void 0)return 0;const h=e[a],l=i[a];if(!h||!l)return 1/0;const m=(s||o())-l;return h-m},u(this,H,r=>{const a=i[r],h=e[r];return!!h&&!!a&&(s||o())-a>h})},at=new WeakMap,Q=new WeakMap,yt=new WeakMap,H=new WeakMap,Ct=new WeakSet,te=function(){const e=new vt(t(this,U));u(this,$,0),u(this,X,e),u(this,ht,i=>{u(this,$,t(this,$)-e[i]),e[i]=0}),u(this,St,(i,s,o,r)=>{if(c(this,w,S).call(this,s))return 0;if(!et(o))if(r){if(typeof r!="function")throw new TypeError("sizeCalculation must be a function");if(o=r(s,i),!et(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),u(this,gt,(i,s,o)=>{if(e[i]=s,t(this,I)){const r=t(this,I)-e[i];for(;t(this,$)>r;)c(this,mt,At).call(this,!0)}u(this,$,t(this,$)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,$))})},ht=new WeakMap,gt=new WeakMap,St=new WeakMap,Z=new WeakSet,it=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,C);!(!c(this,Et,Mt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,z)));)i=t(this,M)[i]},J=new WeakSet,st=function*({allowStale:e=this.allowStale}={}){if(t(this,A))for(let i=t(this,z);!(!c(this,Et,Mt).call(this,i)||((e||!t(this,H).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,N)[i]},Et=new WeakSet,Mt=function(e){return e!==void 0&&t(this,v).get(t(this,E)[e])===e},mt=new WeakSet,At=function(e){var r,a;const i=t(this,z),s=t(this,E)[i],o=t(this,p)[i];return t(this,nt)&&c(this,w,S).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,K)||t(this,R))&&(t(this,K)&&((r=t(this,V))==null||r.call(this,o,s,"evict")),t(this,R)&&((a=t(this,T))==null||a.push([o,s,"evict"]))),t(this,ht).call(this,i),e&&(t(this,E)[i]=void 0,t(this,p)[i]=void 0,t(this,q).push(i)),t(this,A)===1?(u(this,z,u(this,C,0)),t(this,q).length=0):u(this,z,t(this,N)[i]),t(this,v).delete(s),Ot(this,A)._--,i},bt=new WeakSet,Ft=function(e,i,s,o){const r=i===void 0?void 0:t(this,p)[i];if(c(this,w,S).call(this,r))return r;const a=new jt,{signal:h}=s;h==null||h.addEventListener("abort",()=>a.abort(h.reason),{signal:a.signal});const l={signal:a.signal,options:s,context:o},m=(x,j=!1)=>{const{aborted:f}=a.signal,y=s.ignoreFetchAbort&&x!==void 0;if(s.status&&(f&&!j?(s.status.fetchAborted=!0,s.status.fetchError=a.signal.reason,y&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),f&&!y&&!j)return b(a.signal.reason);const L=_;return t(this,p)[i]===_&&(x===void 0?L.__staleWhileFetching?t(this,p)[i]=L.__staleWhileFetching:this.delete(e):(s.status&&(s.status.fetchUpdated=!0),this.set(e,x,l.options))),x},F=x=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=x),b(x)),b=x=>{const{aborted:j}=a.signal,f=j&&s.allowStaleOnFetchAbort,y=f||s.allowStaleOnFetchRejection,L=y||s.noDeleteOnFetchRejection,D=_;if(t(this,p)[i]===_&&(!L||D.__staleWhileFetching===void 0?this.delete(e):f||(t(this,p)[i]=D.__staleWhileFetching)),y)return s.status&&D.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),D.__staleWhileFetching;if(D.__returned===D)throw x},W=(x,j)=>{var y;const f=(y=t(this,pt))==null?void 0:y.call(this,e,r,l);f&&f instanceof Promise&&f.then(L=>x(L===void 0?void 0:L),j),a.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(x(void 0),s.allowStaleOnFetchAbort&&(x=L=>m(L,!0)))})};s.status&&(s.status.fetchDispatched=!0);const _=new Promise(W).then(m,F),P=Object.assign(_,{__abortController:a,__staleWhileFetching:r,__returned:void 0});return i===void 0?(this.set(e,P,{...l.options,status:void 0}),i=t(this,v).get(e)):t(this,p)[i]=P,P},w=new WeakSet,S=function(e){if(!t(this,nt))return!1;const i=e;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof jt},xt=new WeakSet,Gt=function(e,i){t(this,M)[i]=e,t(this,N)[e]=i},lt=new WeakSet,wt=function(e){e!==t(this,C)&&(e===t(this,z)?u(this,z,t(this,N)[e]):c(this,xt,Gt).call(this,t(this,M)[e],t(this,N)[e]),c(this,xt,Gt).call(this,t(this,C),e),u(this,C,e))};let Lt=Ut;var Dt={};Object.defineProperty(Dt,"__esModule",{value:!0});Dt.getMDXComponent=Ae;Dt.getMDXExport=ie;var xe=kt(ct),Oe=kt(d),ve=kt(le);function ee(n){if(typeof WeakMap!="function")return null;var e=new WeakMap,i=new WeakMap;return(ee=function(s){return s?i:e})(n)}function kt(n,e){if(n&&n.__esModule)return n;if(n===null||typeof n!="object"&&typeof n!="function")return{default:n};var i=ee(e);if(i&&i.has(n))return i.get(n);var s={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in n)if(r!=="default"&&{}.hasOwnProperty.call(n,r)){var a=o?Object.getOwnPropertyDescriptor(n,r):null;a&&(a.get||a.set)?Object.defineProperty(s,r,a):s[r]=n[r]}return s.default=n,i&&i.set(n,s),s}function Ae(n,e){return ie(n,e).default}function ie(n,e){const i={React:xe,ReactDOM:ve,_jsx_runtime:Oe,...e};return new Function(...Object.keys(i),n)(...Object.values(i))}var Fe=Dt;const Pt=n=>n.replace(/\\/g,"/");function se(n,e,i){const[,s]=n.replace(/\\|\//g,e).split(`${i==="playground"?"example":"exercises"}${e}`);return s}const Ht="border-border bg-[var(--shiki-background)] hover:bg-foreground/20 active:bg-foreground/30 box-content block rounded border-2 px-2 py-0.5 font-mono text-xs font-semibold outline-none transition duration-300 ease-in-out";function je({"data-buttons":n,"data-filename":e,"data-fullpath":i,"data-sep":s="/","data-start":o,"data-type":r}){var W;const a=ce();if(r==="other"||!n||!e||!i)return null;const h=Pt(((W=a[a.type])==null?void 0:W.fullPath)??""),l=!i.startsWith(h),m=ENV.EPICSHOP_DEPLOYED?["problem","solution"]:["problem","solution","playground"],F=n.split(","),b=m.filter(_=>F.includes(_));return d.jsx(d.Fragment,{children:b.map(_=>{var f;const P=a[_];if(_==="playground"){const y=a.playground&&a.playground.appName!==((f=a.problem)==null?void 0:f.name);if(!P||y||l)return d.jsxs("button",{className:Tt(Ht,"cursor-not-allowed"),title:y?"Playground is not set to the right app":l?"This file is from different app":"You must 'Set to Playground' before opening a file",children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",_]},_)}if(!P||!P.fullPath)return null;const x=[Pt(P.fullPath),Pt(e)].join(s),j=se(x,s,_);return d.jsx(Kt,{file:x,line:Number(o??1),children:d.jsxs("span",{title:j,className:Ht,children:[d.jsx("span",{className:"uppercase",children:"Open"})," in ",_]})},_)})})}function Ce(){const[n,e]=ct.useState(!1);return ct.useEffect(()=>{if(n){const i=setTimeout(()=>e(!1),1500);return()=>clearTimeout(i)}},[n]),d.jsx("button",{className:pe(Ht,"w-12 uppercase"),onClick:i=>{var r,a,h;e(!0);const o=((h=(a=(r=i.currentTarget.parentElement)==null?void 0:r.parentElement)==null?void 0:a.querySelector("pre"))==null?void 0:h.textContent)||"";navigator.clipboard.writeText(o)},children:n?"copied":"copy"})}function Te({children:n,...e}){const{"data-buttons":i,"data-filename":s,"data-fullpath":o,"data-nocopy":r,"data-sep":a}=e,h=r===void 0;function l(){if(o&&a)return!s||s.includes("..")?{"data-filename":se(o,a)}:{"data-filename":s.replace(/\//g,a)}}return d.jsxs("div",{className:"group relative",children:[d.jsxs("div",{className:"absolute right-0 top-0 z-50 m-2 flex items-baseline justify-end gap-4 opacity-0 transition duration-300 ease-in-out focus-within:opacity-100 group-hover:opacity-100",children:[i?d.jsx(je,{...e}):null,h?d.jsx(Ce,{}):null]}),d.jsx("pre",{...e,className:Tt("scrollbar-thin scrollbar-thumb-scrollbar",e.className??""),...l(),children:n})]})}const De={h1:n=>d.jsx(ut,{...n,as:"h1"}),h2:n=>d.jsx(ut,{...n,as:"h2"}),h3:n=>d.jsx(ut,{...n,as:"h3"}),h4:n=>d.jsx(ut,{...n,as:"h4"}),h5:n=>d.jsx(ut,{...n,as:"h5"}),h6:n=>d.jsx(ut,{...n,as:"h6"}),a:ge,p:n=>d.jsx("div",{...n}),pre:n=>d.jsx("pre",{...n,className:Tt("scrollbar-thin scrollbar-thumb-scrollbar",n.className??"")}),LaunchEditor:Kt,VideoEmbed:ue,EpicVideo:fe};function ze(n){const e=Fe.getMDXComponent(n);function i({components:s,...o}){const r=ct.useMemo(()=>({...De,...s}),[s]);return d.jsx(e,{components:r,...o})}return i}const Nt=new Lt({max:1e3});function Pe(n){return ct.useMemo(()=>{if(Nt.has(n))return Nt.get(n);const e=ze(n);return Nt.set(n,e),e},[n])}function qe({code:n,components:e}){const i=Pe(n),s=ct.useMemo(()=>({Icon:de,pre:Te,Link:Xt,...e}),[e]);return d.jsx(i,{components:s})}export{Ve as E,Kt as L,qe as M};
2
+ //# sourceMappingURL=mdx-BYvGbvEr.js.map