@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.
- package/build/client/assets/{_-CGn-2XfF.js → _-COWH0sBh.js} +2 -2
- package/build/client/assets/{_-CGn-2XfF.js.map → _-COWH0sBh.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber-D6YNCQoj.js → _exerciseNumber-jTT5JRgC.js} +2 -2
- package/build/client/assets/_exerciseNumber-jTT5JRgC.js.map +1 -0
- package/build/client/assets/{_exerciseNumber_._stepNumber-D00x64Vg.js → _exerciseNumber_._stepNumber-C37pli7_.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber-D00x64Vg.js.map → _exerciseNumber_._stepNumber-C37pli7_.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-DR3gQ1pK.js → _exerciseNumber_.finished-zgJKkJ7I.js} +2 -2
- package/build/client/assets/_exerciseNumber_.finished-zgJKkJ7I.js.map +1 -0
- package/build/client/assets/{_layout-DXegGcTM.js → _layout-CGUp6BkS.js} +2 -2
- package/build/client/assets/_layout-CGUp6BkS.js.map +1 -0
- package/build/client/assets/{_layout-Caqk73Ed.js → _layout-CNgYirUN.js} +2 -2
- package/build/client/assets/{_layout-Caqk73Ed.js.map → _layout-CNgYirUN.js.map} +1 -1
- package/build/client/assets/{_layout-MFX35ekR.js → _layout-D0zbQZjf.js} +2 -2
- package/build/client/assets/_layout-D0zbQZjf.js.map +1 -0
- package/build/client/assets/{account-Cp6A7SfU.js → account-DesvwOeg.js} +2 -2
- package/build/client/assets/{account-Cp6A7SfU.js.map → account-DesvwOeg.js.map} +1 -1
- package/build/client/assets/{diff-Ddyuc0-s.js → diff-DZFtsH-a.js} +2 -2
- package/build/client/assets/{diff-Ddyuc0-s.js.map → diff-DZFtsH-a.js.map} +1 -1
- package/build/client/assets/diff-tDYfSlOc.js +42 -0
- package/build/client/assets/diff-tDYfSlOc.js.map +1 -0
- package/build/client/assets/{discord-DZWTKMPn.js → discord-0kv66Q6F.js} +2 -2
- package/build/client/assets/{discord-DZWTKMPn.js.map → discord-0kv66Q6F.js.map} +1 -1
- package/build/client/assets/discord-Xp0X4-Fl.js +2 -0
- package/build/client/assets/discord-Xp0X4-Fl.js.map +1 -0
- package/build/client/assets/epic-video-BwtXsHGU.js +2988 -0
- package/build/client/assets/epic-video-BwtXsHGU.js.map +1 -0
- package/build/client/assets/{error-boundary-BUV7xD2e.js → error-boundary-Bcric_4t.js} +2 -2
- package/build/client/assets/{error-boundary-BUV7xD2e.js.map → error-boundary-Bcric_4t.js.map} +1 -1
- package/build/client/assets/{finished-gQ-B3k8j.js → finished-BSWdtBA4.js} +2 -2
- package/build/client/assets/finished-BSWdtBA4.js.map +1 -0
- package/build/client/assets/{index-CVJowtf6.js → index-BQRtqn3g.js} +2 -2
- package/build/client/assets/{index-CVJowtf6.js.map → index-BQRtqn3g.js.map} +1 -1
- package/build/client/assets/index-Bg9MMnnf.js +2 -0
- package/build/client/assets/index-Bg9MMnnf.js.map +1 -0
- package/build/client/assets/{login-BCM4kJTm.js → login-D8zyjBAb.js} +2 -2
- package/build/client/assets/{login-BCM4kJTm.js.map → login-D8zyjBAb.js.map} +1 -1
- package/build/client/assets/{manifest-0b01450d.js → manifest-03cfc48d.js} +1 -1
- package/build/client/assets/{mdx-BVZ4sNxQ.js → mdx-BYvGbvEr.js} +2 -2
- package/build/client/assets/{mdx-BVZ4sNxQ.js.map → mdx-BYvGbvEr.js.map} +1 -1
- package/build/client/assets/{misc-DBBsMyAP.js → misc-DNgC2Frq.js} +2 -2
- package/build/client/assets/{misc-DBBsMyAP.js.map → misc-DNgC2Frq.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-DnG58Hov.js → nav-chevrons-DOYtx9XE.js} +2 -2
- package/build/client/assets/{nav-chevrons-DnG58Hov.js.map → nav-chevrons-DOYtx9XE.js.map} +1 -1
- package/build/client/assets/{onboarding-oSo74A5L.js → onboarding-euWyXpCL.js} +2 -2
- package/build/client/assets/{onboarding-oSo74A5L.js.map → onboarding-euWyXpCL.js.map} +1 -1
- package/build/client/assets/presence-BJPzwbUy.js.map +1 -1
- package/build/client/assets/progress-CF9Xwfxf.js +2 -0
- package/build/client/assets/progress-CF9Xwfxf.js.map +1 -0
- package/build/client/assets/{progress-bar-TRgQ8YZ8.js → progress-bar-7LK87ZMh.js} +2 -2
- package/build/client/assets/{progress-bar-TRgQ8YZ8.js.map → progress-bar-7LK87ZMh.js.map} +1 -1
- package/build/client/assets/{root-CxuwYUpK.js → root-BJrmef-V.js} +2 -2
- package/build/client/assets/{root-CxuwYUpK.js.map → root-BJrmef-V.js.map} +1 -1
- package/build/client/assets/support-DUAHYT3r.js.map +1 -1
- package/build/client/assets/tooltip-Kw0lYWBI.js +2 -0
- package/build/client/assets/tooltip-Kw0lYWBI.js.map +1 -0
- package/build/server/index.js +1016 -1037
- package/build/server/index.js.map +1 -1
- package/dist/server/index.js +0 -2
- package/node_modules/@babel/runtime/helpers/AwaitValue.js +2 -2
- package/node_modules/@babel/runtime/helpers/OverloadYield.js +2 -2
- package/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js +7 -22
- package/node_modules/@babel/runtime/helpers/applyDecs2311.js +9 -9
- package/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +4 -4
- package/node_modules/@babel/runtime/helpers/arrayWithHoles.js +2 -2
- package/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +2 -2
- package/node_modules/@babel/runtime/helpers/assertThisInitialized.js +3 -5
- package/node_modules/@babel/runtime/helpers/asyncToGenerator.js +16 -21
- package/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js +2 -4
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js +7 -15
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js +2 -5
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js +4 -8
- package/node_modules/@babel/runtime/helpers/classCallCheck.js +2 -4
- package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js +2 -2
- package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js +2 -4
- package/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js +2 -2
- package/node_modules/@babel/runtime/helpers/classNameTDZError.js +2 -2
- package/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js +3 -3
- package/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js +3 -3
- package/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js +2 -3
- package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js +3 -5
- package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js +2 -2
- package/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js +3 -4
- package/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js +2 -3
- package/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js +2 -3
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js +2 -4
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +2 -4
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +2 -5
- package/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js +2 -3
- package/node_modules/@babel/runtime/helpers/construct.js +1 -1
- package/node_modules/@babel/runtime/helpers/createClass.js +8 -14
- package/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js +24 -27
- package/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js +11 -12
- package/node_modules/@babel/runtime/helpers/createSuper.js +10 -12
- package/node_modules/@babel/runtime/helpers/decorate.js +185 -278
- package/node_modules/@babel/runtime/helpers/defaults.js +6 -9
- package/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js +8 -16
- package/node_modules/@babel/runtime/helpers/defineProperty.js +7 -13
- package/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/AwaitValue.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/OverloadYield.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js +9 -23
- package/node_modules/@babel/runtime/helpers/esm/applyDecs.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js +12 -11
- package/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +6 -5
- package/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +5 -6
- package/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/asyncIterator.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +18 -22
- package/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/callSuper.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/checkInRHS.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js +9 -16
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js +4 -6
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js +6 -9
- package/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js +5 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js +5 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js +4 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js +5 -6
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js +5 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js +4 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js +4 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +4 -6
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js +4 -4
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/construct.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/createClass.js +10 -15
- package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +26 -28
- package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js +13 -13
- package/node_modules/@babel/runtime/helpers/esm/createSuper.js +12 -13
- package/node_modules/@babel/runtime/helpers/esm/decorate.js +187 -279
- package/node_modules/@babel/runtime/helpers/esm/defaults.js +8 -10
- package/node_modules/@babel/runtime/helpers/esm/defineAccessor.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js +10 -17
- package/node_modules/@babel/runtime/helpers/esm/defineProperty.js +9 -14
- package/node_modules/@babel/runtime/helpers/esm/dispose.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/extends.js +9 -13
- package/node_modules/@babel/runtime/helpers/esm/get.js +10 -16
- package/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +6 -6
- package/node_modules/@babel/runtime/helpers/esm/identity.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/inherits.js +11 -14
- package/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js +8 -8
- package/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/instanceof.js +4 -7
- package/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js +5 -4
- package/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js +6 -5
- package/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/jsx.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js +7 -6
- package/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js +4 -5
- package/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/objectSpread.js +11 -13
- package/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +10 -13
- package/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +9 -10
- package/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +6 -8
- package/node_modules/@babel/runtime/helpers/esm/readOnlyError.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/set.js +19 -37
- package/node_modules/@babel/runtime/helpers/esm/setFunctionName.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +6 -7
- package/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js +5 -5
- package/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/superPropBase.js +5 -7
- package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +5 -7
- package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js +4 -7
- package/node_modules/@babel/runtime/helpers/esm/tdz.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/temporalRef.js +6 -5
- package/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js +2 -1
- package/node_modules/@babel/runtime/helpers/esm/toArray.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/toSetter.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/typeof.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +8 -8
- package/node_modules/@babel/runtime/helpers/esm/using.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/usingCtx.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js +4 -3
- package/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js +17 -20
- package/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js +3 -2
- package/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js +4 -3
- package/node_modules/@babel/runtime/helpers/extends.js +6 -11
- package/node_modules/@babel/runtime/helpers/get.js +7 -14
- package/node_modules/@babel/runtime/helpers/getPrototypeOf.js +4 -5
- package/node_modules/@babel/runtime/helpers/identity.js +2 -2
- package/node_modules/@babel/runtime/helpers/inherits.js +9 -13
- package/node_modules/@babel/runtime/helpers/inheritsLoose.js +2 -4
- package/node_modules/@babel/runtime/helpers/initializerDefineProperty.js +6 -7
- package/node_modules/@babel/runtime/helpers/initializerWarningHelper.js +2 -2
- package/node_modules/@babel/runtime/helpers/instanceof.js +2 -6
- package/node_modules/@babel/runtime/helpers/interopRequireDefault.js +3 -3
- package/node_modules/@babel/runtime/helpers/isNativeFunction.js +4 -4
- package/node_modules/@babel/runtime/helpers/iterableToArray.js +2 -2
- package/node_modules/@babel/runtime/helpers/maybeArrayLike.js +5 -5
- package/node_modules/@babel/runtime/helpers/newArrowCheck.js +2 -4
- package/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js +2 -2
- package/node_modules/@babel/runtime/helpers/objectSpread.js +9 -12
- package/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +8 -12
- package/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +7 -9
- package/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js +4 -7
- package/node_modules/@babel/runtime/helpers/readOnlyError.js +2 -2
- package/node_modules/@babel/runtime/helpers/set.js +17 -36
- package/node_modules/@babel/runtime/helpers/setPrototypeOf.js +4 -6
- package/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js +3 -4
- package/node_modules/@babel/runtime/helpers/slicedToArray.js +2 -2
- package/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js +2 -2
- package/node_modules/@babel/runtime/helpers/superPropBase.js +3 -6
- package/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js +3 -6
- package/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js +2 -6
- package/node_modules/@babel/runtime/helpers/tdz.js +2 -2
- package/node_modules/@babel/runtime/helpers/temporalRef.js +2 -2
- package/node_modules/@babel/runtime/helpers/toArray.js +2 -2
- package/node_modules/@babel/runtime/helpers/toConsumableArray.js +2 -2
- package/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +6 -7
- package/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js +2 -2
- package/node_modules/@babel/runtime/helpers/wrapNativeSuper.js +15 -19
- package/node_modules/@babel/runtime/helpers/writeOnlyError.js +2 -2
- package/node_modules/@babel/runtime/package.json +587 -587
- package/node_modules/@conform-to/dom/form.js +1 -1
- package/node_modules/@conform-to/dom/form.mjs +1 -1
- package/node_modules/@conform-to/dom/formdata.d.ts +2 -2
- package/node_modules/@conform-to/dom/formdata.js +12 -34
- package/node_modules/@conform-to/dom/formdata.mjs +12 -34
- package/node_modules/@conform-to/dom/intent.d.ts +82 -0
- package/node_modules/@conform-to/dom/intent.js +136 -0
- package/node_modules/@conform-to/dom/intent.mjs +126 -0
- package/node_modules/@conform-to/dom/package.json +58 -59
- package/node_modules/@conform-to/dom/parse.d.ts +30 -0
- package/node_modules/@conform-to/dom/parse.js +43 -0
- package/node_modules/@conform-to/dom/parse.mjs +37 -0
- package/node_modules/@conform-to/dom/submission.d.ts +2 -2
- package/node_modules/@conform-to/dom/submission.js +23 -21
- package/node_modules/@conform-to/dom/submission.mjs +23 -21
- package/node_modules/@conform-to/dom/types.d.ts +20 -0
- package/node_modules/@conform-to/react/helpers.js +1 -1
- package/node_modules/@conform-to/react/helpers.mjs +1 -1
- package/node_modules/@conform-to/react/package.json +68 -69
- package/node_modules/@conform-to/zod/package.json +60 -61
- package/node_modules/framer-motion/dist/cjs/{dom-entry-fJy-kji5.js → dom-entry-DSxBucW4.js} +115 -107
- package/node_modules/framer-motion/dist/cjs/dom-entry.js +1 -1
- package/node_modules/framer-motion/dist/cjs/index.js +43 -10
- package/node_modules/framer-motion/dist/dom-entry.d.ts +1 -1
- package/node_modules/framer-motion/dist/dom.js +1 -1
- package/node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +2 -3
- package/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs +4 -1
- package/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +2 -3
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +7 -0
- package/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +43 -9
- package/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +11 -8
- package/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +1 -1
- package/node_modules/framer-motion/dist/es/value/index.mjs +1 -1
- package/node_modules/framer-motion/dist/framer-motion.dev.js +156 -116
- package/node_modules/framer-motion/dist/framer-motion.js +1 -1
- package/node_modules/framer-motion/dist/index.d.ts +2 -1
- package/node_modules/framer-motion/dist/projection.dev.js +163 -20
- package/node_modules/framer-motion/dist/three-entry.d.ts +1 -0
- package/node_modules/framer-motion/package.json +8 -8
- package/node_modules/remix-utils/node_modules/type-fest/package.json +1 -1
- package/node_modules/remix-utils/node_modules/type-fest/source/conditional-keys.d.ts +5 -3
- package/package.json +7 -6
- package/start.js +4 -2
- package/build/client/assets/_exerciseNumber-D6YNCQoj.js.map +0 -1
- package/build/client/assets/_exerciseNumber_.finished-DR3gQ1pK.js.map +0 -1
- package/build/client/assets/_layout-DXegGcTM.js.map +0 -1
- package/build/client/assets/_layout-MFX35ekR.js.map +0 -1
- package/build/client/assets/diff-ZJmYghvh.js +0 -42
- package/build/client/assets/diff-ZJmYghvh.js.map +0 -1
- package/build/client/assets/discord-fsySDDKv.js +0 -2
- package/build/client/assets/discord-fsySDDKv.js.map +0 -1
- package/build/client/assets/epic-video-BKzHxm70.js +0 -2985
- package/build/client/assets/epic-video-BKzHxm70.js.map +0 -1
- package/build/client/assets/finished-gQ-B3k8j.js.map +0 -1
- package/build/client/assets/index-Drecz7hr.js +0 -2
- package/build/client/assets/index-Drecz7hr.js.map +0 -1
- package/build/client/assets/progress-HmjERaPh.js +0 -2
- package/build/client/assets/progress-HmjERaPh.js.map +0 -1
- package/build/client/assets/tooltip-BdTNdCYE.js +0 -2
- package/build/client/assets/tooltip-BdTNdCYE.js.map +0 -1
package/build/server/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var _a, _b;
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { PassThrough } from "stream";
|
|
4
|
-
import "
|
|
5
|
-
import
|
|
6
|
-
import path from "path";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path$1 from "node:path";
|
|
7
6
|
import { remember } from "@epic-web/remember";
|
|
7
|
+
import "@total-typescript/ts-reset";
|
|
8
8
|
import { execaCommand, execa } from "execa";
|
|
9
9
|
import fsExtra from "fs-extra";
|
|
10
10
|
import { glob } from "glob";
|
|
@@ -12,12 +12,14 @@ import { isGitIgnored, globby } from "globby";
|
|
|
12
12
|
import * as z from "zod";
|
|
13
13
|
import { z as z$1 } from "zod";
|
|
14
14
|
import os from "os";
|
|
15
|
+
import path from "path";
|
|
15
16
|
import * as C from "@epic-web/cachified";
|
|
16
17
|
import { verboseReporter, cachified as cachified$1 } from "@epic-web/cachified";
|
|
17
18
|
import { LRUCache } from "lru-cache";
|
|
18
19
|
import md5 from "md5-hex";
|
|
19
20
|
import chokidar from "chokidar";
|
|
20
21
|
import closeWithGrace from "close-with-grace";
|
|
22
|
+
import fs$1 from "fs";
|
|
21
23
|
import { remarkCodeBlocksShiki } from "@kentcdodds/md-temp";
|
|
22
24
|
import { bundleMDX } from "mdx-bundler";
|
|
23
25
|
import PQueue from "p-queue";
|
|
@@ -25,8 +27,6 @@ import remarkAutolinkHeadings from "remark-autolink-headings";
|
|
|
25
27
|
import emoji from "remark-emoji";
|
|
26
28
|
import gfm from "remark-gfm";
|
|
27
29
|
import { visit } from "unist-util-visit";
|
|
28
|
-
import fs from "node:fs";
|
|
29
|
-
import path$1 from "node:path";
|
|
30
30
|
import { createProcessor } from "@mdx-js/mdx";
|
|
31
31
|
import { removePosition } from "unist-util-remove-position";
|
|
32
32
|
import child_process, { spawn } from "child_process";
|
|
@@ -35,12 +35,12 @@ import chalk from "chalk";
|
|
|
35
35
|
import fkill from "fkill";
|
|
36
36
|
import { promises } from "node:dns";
|
|
37
37
|
import { createReadableStreamFromReadable, redirect, json, createCookieSessionStorage, defer } from "@remix-run/node";
|
|
38
|
-
import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, useLocation, NavLink, Await, useSearchParams, Form,
|
|
38
|
+
import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, useLocation, NavLink, Await, useSubmit, useSearchParams, Form, useNavigate } from "@remix-run/react";
|
|
39
39
|
import { isbot } from "isbot";
|
|
40
40
|
import { renderToPipeableStream } from "react-dom/server";
|
|
41
41
|
import { cssBundleHref } from "@remix-run/css-bundle";
|
|
42
42
|
import * as React from "react";
|
|
43
|
-
import React__default, { useRef, useEffect, useMemo, useState, createContext, useContext, forwardRef, useImperativeHandle, useReducer
|
|
43
|
+
import React__default, { useRef, useEffect, useMemo, useState, createContext, useContext, Suspense, forwardRef, useImperativeHandle, useReducer } from "react";
|
|
44
44
|
import { useSpinDelay } from "spin-delay";
|
|
45
45
|
import { Index as Index$1 } from "confetti-react";
|
|
46
46
|
import { ClientOnly } from "remix-utils/client-only";
|
|
@@ -52,11 +52,11 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
|
52
52
|
import { useForm, getFormProps } from "@conform-to/react";
|
|
53
53
|
import { parseWithZod } from "@conform-to/zod";
|
|
54
54
|
import { safeRedirect } from "remix-utils/safe-redirect";
|
|
55
|
-
import * as cookie from "cookie";
|
|
56
55
|
import { getHintUtils } from "@epic-web/client-hints";
|
|
57
56
|
import { clientHint, subscribeToSchemeChange } from "@epic-web/client-hints/color-scheme";
|
|
58
57
|
import { clientHint as clientHint$2, subscribeToMotionChange } from "@epic-web/client-hints/reduced-motion";
|
|
59
58
|
import { clientHint as clientHint$1 } from "@epic-web/client-hints/time-zone";
|
|
59
|
+
import * as cookie from "cookie";
|
|
60
60
|
import { createId } from "@paralleldrive/cuid2";
|
|
61
61
|
import { usePartySocket } from "partysocket/react";
|
|
62
62
|
import { motion, useAnimationControls } from "framer-motion";
|
|
@@ -66,15 +66,15 @@ import RealMuxPlayer from "@mux/mux-player-react";
|
|
|
66
66
|
import shellQuote from "shell-quote";
|
|
67
67
|
import * as mdxBundler from "mdx-bundler/client/index.js";
|
|
68
68
|
import * as Tabs from "@radix-ui/react-tabs";
|
|
69
|
-
import
|
|
70
|
-
import "dayjs/plugin/relativeTime.js";
|
|
71
|
-
import "dayjs/plugin/timezone.js";
|
|
72
|
-
import "dayjs/plugin/utc.js";
|
|
69
|
+
import * as Accordion from "@radix-ui/react-accordion";
|
|
73
70
|
import * as Select from "@radix-ui/react-select";
|
|
74
71
|
import ignore from "ignore";
|
|
75
72
|
import parseGitDiff from "parse-git-diff";
|
|
76
73
|
import { bundledLanguagesInfo } from "shiki/langs";
|
|
77
|
-
import
|
|
74
|
+
import dayjs from "dayjs";
|
|
75
|
+
import "dayjs/plugin/relativeTime.js";
|
|
76
|
+
import "dayjs/plugin/timezone.js";
|
|
77
|
+
import "dayjs/plugin/utc.js";
|
|
78
78
|
import AnsiToHTML from "ansi-to-html";
|
|
79
79
|
import escapeHtml from "lodash.escape";
|
|
80
80
|
import { useEventSource } from "remix-utils/sse/react";
|
|
@@ -353,7 +353,7 @@ async function getFileContent(filePath) {
|
|
|
353
353
|
const fileContent = content.split("\n");
|
|
354
354
|
fileContentCache.set(filePath, fileContent);
|
|
355
355
|
return fileContent;
|
|
356
|
-
} catch
|
|
356
|
+
} catch {
|
|
357
357
|
console.warn(
|
|
358
358
|
`@epic-web/workshop-app - invalid CodeFile.
|
|
359
359
|
Could not read file: ${filePath}
|
|
@@ -869,7 +869,7 @@ async function getEmbeddedFilesCache() {
|
|
|
869
869
|
await fs$1.promises.readFile(embeddedFilesLocation, "utf-8")
|
|
870
870
|
);
|
|
871
871
|
}
|
|
872
|
-
} catch
|
|
872
|
+
} catch {
|
|
873
873
|
console.error(`Unable to read 'embeddedFiles.json' from: `, cacheDir);
|
|
874
874
|
}
|
|
875
875
|
return void 0;
|
|
@@ -1193,7 +1193,7 @@ async function getPkgProp(fullPath, prop, defaultValue) {
|
|
|
1193
1193
|
}
|
|
1194
1194
|
(_b = process.env).NODE_ENV ?? (_b.NODE_ENV = "development");
|
|
1195
1195
|
const workshopRoot = getWorkshopRoot();
|
|
1196
|
-
const playgroundAppNameInfoPath = path.join(
|
|
1196
|
+
const playgroundAppNameInfoPath = path$1.join(
|
|
1197
1197
|
getWorkshopRoot(),
|
|
1198
1198
|
"node_modules",
|
|
1199
1199
|
".cache",
|
|
@@ -1308,7 +1308,7 @@ function isExerciseStepApp(app) {
|
|
|
1308
1308
|
return isProblemApp(app) || isSolutionApp(app);
|
|
1309
1309
|
}
|
|
1310
1310
|
function exists(file) {
|
|
1311
|
-
return fs
|
|
1311
|
+
return fs.promises.access(file, fs.constants.F_OK).then(
|
|
1312
1312
|
() => true,
|
|
1313
1313
|
() => false
|
|
1314
1314
|
);
|
|
@@ -1348,7 +1348,7 @@ function setModifiedTimesForDir(dir) {
|
|
|
1348
1348
|
modifiedTimes.set(dir, Date.now());
|
|
1349
1349
|
}
|
|
1350
1350
|
function getForceFreshForDir(dir, cacheEntry) {
|
|
1351
|
-
if (!path.isAbsolute(dir)) {
|
|
1351
|
+
if (!path$1.isAbsolute(dir)) {
|
|
1352
1352
|
throw new Error(`Trying to get force fresh for non-absolute path: ${dir}`);
|
|
1353
1353
|
}
|
|
1354
1354
|
if (!cacheEntry)
|
|
@@ -1360,7 +1360,7 @@ function getForceFreshForDir(dir, cacheEntry) {
|
|
|
1360
1360
|
}
|
|
1361
1361
|
async function readDir(dir) {
|
|
1362
1362
|
if (await exists(dir)) {
|
|
1363
|
-
return fs
|
|
1363
|
+
return fs.promises.readdir(dir);
|
|
1364
1364
|
}
|
|
1365
1365
|
return [];
|
|
1366
1366
|
}
|
|
@@ -1409,18 +1409,18 @@ async function getExercises({
|
|
|
1409
1409
|
request
|
|
1410
1410
|
} = {}) {
|
|
1411
1411
|
const apps = await getApps({ request, timings });
|
|
1412
|
-
const exerciseDirs = await readDir(path.join(workshopRoot, "exercises"));
|
|
1412
|
+
const exerciseDirs = await readDir(path$1.join(workshopRoot, "exercises"));
|
|
1413
1413
|
const exercises = [];
|
|
1414
1414
|
for (const dirName of exerciseDirs) {
|
|
1415
1415
|
const exerciseNumber = extractExerciseNumber(dirName);
|
|
1416
1416
|
if (!exerciseNumber)
|
|
1417
1417
|
continue;
|
|
1418
1418
|
const compiledReadme = await compileMdxIfExists(
|
|
1419
|
-
path.join(workshopRoot, "exercises", dirName, "README.mdx"),
|
|
1419
|
+
path$1.join(workshopRoot, "exercises", dirName, "README.mdx"),
|
|
1420
1420
|
{ request }
|
|
1421
1421
|
);
|
|
1422
1422
|
const compiledFinished = await compileMdxIfExists(
|
|
1423
|
-
path.join(workshopRoot, "exercises", dirName, "FINISHED.mdx"),
|
|
1423
|
+
path$1.join(workshopRoot, "exercises", dirName, "FINISHED.mdx"),
|
|
1424
1424
|
{ request }
|
|
1425
1425
|
);
|
|
1426
1426
|
const steps = [];
|
|
@@ -1528,12 +1528,12 @@ const AppIdInfoSchema = z$1.object({
|
|
|
1528
1528
|
function extractNumbersAndTypeFromAppNameOrPath(fullPathOrAppName) {
|
|
1529
1529
|
var _a2;
|
|
1530
1530
|
const info = {};
|
|
1531
|
-
if (fullPathOrAppName.includes(path.sep)) {
|
|
1531
|
+
if (fullPathOrAppName.includes(path$1.sep)) {
|
|
1532
1532
|
const relativePath = fullPathOrAppName.replace(
|
|
1533
|
-
path.join(workshopRoot, "exercises", path.sep),
|
|
1533
|
+
path$1.join(workshopRoot, "exercises", path$1.sep),
|
|
1534
1534
|
""
|
|
1535
1535
|
);
|
|
1536
|
-
const [exerciseNumberPart, stepNumberPart] = relativePath.split(path.sep);
|
|
1536
|
+
const [exerciseNumberPart, stepNumberPart] = relativePath.split(path$1.sep);
|
|
1537
1537
|
if (!exerciseNumberPart || !stepNumberPart)
|
|
1538
1538
|
return null;
|
|
1539
1539
|
const exerciseNumber = exerciseNumberPart.split(".")[0];
|
|
@@ -1554,19 +1554,19 @@ function extractNumbersAndTypeFromAppNameOrPath(fullPathOrAppName) {
|
|
|
1554
1554
|
return null;
|
|
1555
1555
|
}
|
|
1556
1556
|
async function getProblemDirs() {
|
|
1557
|
-
const exercisesDir = path.join(workshopRoot, "exercises");
|
|
1557
|
+
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1558
1558
|
const problemDirs = (await glob("**/*.problem*", {
|
|
1559
1559
|
cwd: exercisesDir,
|
|
1560
1560
|
ignore: "node_modules/**"
|
|
1561
|
-
})).map((p) => path.join(exercisesDir, p));
|
|
1561
|
+
})).map((p) => path$1.join(exercisesDir, p));
|
|
1562
1562
|
return problemDirs;
|
|
1563
1563
|
}
|
|
1564
1564
|
async function getSolutionDirs() {
|
|
1565
|
-
const exercisesDir = path.join(workshopRoot, "exercises");
|
|
1565
|
+
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1566
1566
|
const solutionDirs = (await glob("**/*.solution*", {
|
|
1567
1567
|
cwd: exercisesDir,
|
|
1568
1568
|
ignore: "node_modules/**"
|
|
1569
|
-
})).map((p) => path.join(exercisesDir, p));
|
|
1569
|
+
})).map((p) => path$1.join(exercisesDir, p));
|
|
1570
1570
|
return solutionDirs;
|
|
1571
1571
|
}
|
|
1572
1572
|
function getPathname(fullPath) {
|
|
@@ -1578,30 +1578,30 @@ function getAppName(fullPath) {
|
|
|
1578
1578
|
return "playground";
|
|
1579
1579
|
if (/examples\/.+\/?$/.test(fullPath)) {
|
|
1580
1580
|
const restOfPath = fullPath.replace(
|
|
1581
|
-
`${getWorkshopRoot()}${path.sep}examples${path.sep}`,
|
|
1581
|
+
`${getWorkshopRoot()}${path$1.sep}examples${path$1.sep}`,
|
|
1582
1582
|
""
|
|
1583
1583
|
);
|
|
1584
|
-
return `example.${restOfPath.split(path.sep).join("__sep__")}`;
|
|
1584
|
+
return `example.${restOfPath.split(path$1.sep).join("__sep__")}`;
|
|
1585
1585
|
}
|
|
1586
1586
|
const appIdInfo = extractNumbersAndTypeFromAppNameOrPath(fullPath);
|
|
1587
1587
|
if (appIdInfo) {
|
|
1588
1588
|
const { exerciseNumber, stepNumber, type } = appIdInfo;
|
|
1589
1589
|
return `${exerciseNumber}.${stepNumber}.${type}`;
|
|
1590
1590
|
} else {
|
|
1591
|
-
const relativePath = fullPath.replace(`${workshopRoot}${path.sep}`, "");
|
|
1592
|
-
return relativePath.split(path.sep).join("__sep__");
|
|
1591
|
+
const relativePath = fullPath.replace(`${workshopRoot}${path$1.sep}`, "");
|
|
1592
|
+
return relativePath.split(path$1.sep).join("__sep__");
|
|
1593
1593
|
}
|
|
1594
1594
|
}
|
|
1595
1595
|
async function getFullPathFromAppName(appName) {
|
|
1596
1596
|
if (appName === "playground")
|
|
1597
|
-
return path.join(workshopRoot, "playground");
|
|
1597
|
+
return path$1.join(workshopRoot, "playground");
|
|
1598
1598
|
if (appName.startsWith(".example")) {
|
|
1599
|
-
const relativePath = appName.replace(".example", "").split("__sep__").join(path.sep);
|
|
1600
|
-
return path.join(workshopRoot, "examples", relativePath);
|
|
1599
|
+
const relativePath = appName.replace(".example", "").split("__sep__").join(path$1.sep);
|
|
1600
|
+
return path$1.join(workshopRoot, "examples", relativePath);
|
|
1601
1601
|
}
|
|
1602
1602
|
if (appName.includes("__sep__")) {
|
|
1603
|
-
const relativePath = appName.replaceAll("__sep__", path.sep);
|
|
1604
|
-
return path.join(workshopRoot, relativePath);
|
|
1603
|
+
const relativePath = appName.replaceAll("__sep__", path$1.sep);
|
|
1604
|
+
return path$1.join(workshopRoot, relativePath);
|
|
1605
1605
|
}
|
|
1606
1606
|
const [exerciseNumber, stepNumber, type] = appName.split(".");
|
|
1607
1607
|
const appDirs = type === "problem" ? await getProblemDirs() : type === "solution" ? await getSolutionDirs() : [];
|
|
@@ -1616,20 +1616,20 @@ async function getFullPathFromAppName(appName) {
|
|
|
1616
1616
|
async function findSolutionDir({
|
|
1617
1617
|
fullPath
|
|
1618
1618
|
}) {
|
|
1619
|
-
const dirName = path.basename(fullPath);
|
|
1619
|
+
const dirName = path$1.basename(fullPath);
|
|
1620
1620
|
if (dirName.includes(".problem")) {
|
|
1621
1621
|
const info = getAppDirInfo(dirName);
|
|
1622
1622
|
if (!info)
|
|
1623
1623
|
return null;
|
|
1624
1624
|
const { stepNumber } = info;
|
|
1625
1625
|
const paddedStepNumber = stepNumber.toString().padStart(2, "0");
|
|
1626
|
-
const parentDir = path.dirname(fullPath);
|
|
1627
|
-
const siblingDirs = await fs
|
|
1626
|
+
const parentDir = path$1.dirname(fullPath);
|
|
1627
|
+
const siblingDirs = await fs.promises.readdir(parentDir);
|
|
1628
1628
|
const solutionDir = siblingDirs.find(
|
|
1629
1629
|
(dir) => dir.startsWith(`${paddedStepNumber}.solution`)
|
|
1630
1630
|
);
|
|
1631
1631
|
if (solutionDir) {
|
|
1632
|
-
return path.join(parentDir, solutionDir);
|
|
1632
|
+
return path$1.join(parentDir, solutionDir);
|
|
1633
1633
|
}
|
|
1634
1634
|
} else if (fullPath.endsWith("playground")) {
|
|
1635
1635
|
const appName = await getPlaygroundAppName();
|
|
@@ -1644,20 +1644,20 @@ async function findSolutionDir({
|
|
|
1644
1644
|
async function findProblemDir({
|
|
1645
1645
|
fullPath
|
|
1646
1646
|
}) {
|
|
1647
|
-
const dirName = path.basename(fullPath);
|
|
1647
|
+
const dirName = path$1.basename(fullPath);
|
|
1648
1648
|
if (dirName.includes(".solution")) {
|
|
1649
1649
|
const info = getAppDirInfo(dirName);
|
|
1650
1650
|
if (!info)
|
|
1651
1651
|
return null;
|
|
1652
1652
|
const { stepNumber } = info;
|
|
1653
1653
|
const paddedStepNumber = stepNumber.toString().padStart(2, "0");
|
|
1654
|
-
const parentDir = path.dirname(fullPath);
|
|
1655
|
-
const siblingDirs = await fs
|
|
1654
|
+
const parentDir = path$1.dirname(fullPath);
|
|
1655
|
+
const siblingDirs = await fs.promises.readdir(parentDir);
|
|
1656
1656
|
const problemDir = siblingDirs.find(
|
|
1657
1657
|
(dir) => dir.endsWith("problem") && dir.includes(paddedStepNumber)
|
|
1658
1658
|
);
|
|
1659
1659
|
if (problemDir) {
|
|
1660
|
-
return path.join(parentDir, problemDir);
|
|
1660
|
+
return path$1.join(parentDir, problemDir);
|
|
1661
1661
|
}
|
|
1662
1662
|
} else if (fullPath.endsWith("playground")) {
|
|
1663
1663
|
const appName = await getPlaygroundAppName();
|
|
@@ -1670,13 +1670,13 @@ async function findProblemDir({
|
|
|
1670
1670
|
async function getTestInfo({
|
|
1671
1671
|
fullPath
|
|
1672
1672
|
}) {
|
|
1673
|
-
const hasPkgJson = await exists(path.join(fullPath, "package.json"));
|
|
1673
|
+
const hasPkgJson = await exists(path$1.join(fullPath, "package.json"));
|
|
1674
1674
|
const testScript = hasPkgJson ? await getPkgProp(fullPath, "epicshop.scripts.test", "") : null;
|
|
1675
1675
|
if (testScript) {
|
|
1676
1676
|
return { type: "script", script: testScript };
|
|
1677
1677
|
}
|
|
1678
1678
|
const testAppFullPath = await findSolutionDir({ fullPath }) ?? fullPath;
|
|
1679
|
-
const dirList = await fs
|
|
1679
|
+
const dirList = await fs.promises.readdir(testAppFullPath);
|
|
1680
1680
|
const testFiles = dirList.filter((item) => item.includes(".test."));
|
|
1681
1681
|
if (testFiles.length) {
|
|
1682
1682
|
return {
|
|
@@ -1691,7 +1691,7 @@ async function getDevInfo({
|
|
|
1691
1691
|
fullPath,
|
|
1692
1692
|
portNumber
|
|
1693
1693
|
}) {
|
|
1694
|
-
const hasPkgJson = await exists(path.join(fullPath, "package.json"));
|
|
1694
|
+
const hasPkgJson = await exists(path$1.join(fullPath, "package.json"));
|
|
1695
1695
|
const hasDevScript = hasPkgJson ? Boolean(await getPkgProp(fullPath, "scripts.dev", "")) : false;
|
|
1696
1696
|
if (hasDevScript) {
|
|
1697
1697
|
const initialRoute = (hasPkgJson ? await getPkgProp(fullPath, "epicshop.initialRoute", "") : "") || await getPkgProp(workshopRoot, "epicshop.initialRoute", "/");
|
|
@@ -1710,7 +1710,7 @@ async function getPlaygroundApp({
|
|
|
1710
1710
|
timings,
|
|
1711
1711
|
request
|
|
1712
1712
|
} = {}) {
|
|
1713
|
-
const playgroundDir = path.join(workshopRoot, "playground");
|
|
1713
|
+
const playgroundDir = path$1.join(workshopRoot, "playground");
|
|
1714
1714
|
const baseAppName = await getPlaygroundAppName();
|
|
1715
1715
|
const key = `playground-${baseAppName}`;
|
|
1716
1716
|
const baseAppFullPath = baseAppName ? await getFullPathFromAppName(baseAppName) : null;
|
|
@@ -1722,7 +1722,7 @@ async function getPlaygroundApp({
|
|
|
1722
1722
|
cache: playgroundAppCache,
|
|
1723
1723
|
ttl: 1e3 * 60 * 60 * 24,
|
|
1724
1724
|
timings,
|
|
1725
|
-
timingKey: playgroundDir.replace(`${playgroundDir}${path.sep}`, ""),
|
|
1725
|
+
timingKey: playgroundDir.replace(`${playgroundDir}${path$1.sep}`, ""),
|
|
1726
1726
|
request,
|
|
1727
1727
|
forceFresh: forceFreshPlaygroundDir || forceFreshBaseApp,
|
|
1728
1728
|
getFreshValue: async () => {
|
|
@@ -1730,11 +1730,11 @@ async function getPlaygroundApp({
|
|
|
1730
1730
|
return null;
|
|
1731
1731
|
if (!baseAppName)
|
|
1732
1732
|
return null;
|
|
1733
|
-
const dirName = path.basename(playgroundDir);
|
|
1733
|
+
const dirName = path$1.basename(playgroundDir);
|
|
1734
1734
|
const name = getAppName(playgroundDir);
|
|
1735
1735
|
const portNumber = 4e3;
|
|
1736
1736
|
const [compiledReadme, test, dev] = await Promise.all([
|
|
1737
|
-
compileMdxIfExists(path.join(playgroundDir, "README.mdx"), { request }),
|
|
1737
|
+
compileMdxIfExists(path$1.join(playgroundDir, "README.mdx"), { request }),
|
|
1738
1738
|
getTestInfo({ fullPath: playgroundDir }),
|
|
1739
1739
|
getDevInfo({ fullPath: playgroundDir, portNumber })
|
|
1740
1740
|
]);
|
|
@@ -1749,7 +1749,7 @@ async function getPlaygroundApp({
|
|
|
1749
1749
|
isUpToDate: appModifiedTime <= playgroundAppModifiedTime,
|
|
1750
1750
|
fullPath: playgroundDir,
|
|
1751
1751
|
relativePath: playgroundDir.replace(
|
|
1752
|
-
`${getWorkshopRoot()}${path.sep}`,
|
|
1752
|
+
`${getWorkshopRoot()}${path$1.sep}`,
|
|
1753
1753
|
""
|
|
1754
1754
|
),
|
|
1755
1755
|
title: (compiledReadme == null ? void 0 : compiledReadme.title) ?? name,
|
|
@@ -1766,9 +1766,9 @@ async function getPlaygroundApp({
|
|
|
1766
1766
|
});
|
|
1767
1767
|
}
|
|
1768
1768
|
async function getExampleAppFromPath(fullPath, index, request) {
|
|
1769
|
-
const dirName = path.basename(fullPath);
|
|
1769
|
+
const dirName = path$1.basename(fullPath);
|
|
1770
1770
|
const compiledReadme = await compileMdxIfExists(
|
|
1771
|
-
path.join(fullPath, "README.mdx"),
|
|
1771
|
+
path$1.join(fullPath, "README.mdx"),
|
|
1772
1772
|
{ request }
|
|
1773
1773
|
);
|
|
1774
1774
|
const name = getAppName(fullPath);
|
|
@@ -1777,7 +1777,7 @@ async function getExampleAppFromPath(fullPath, index, request) {
|
|
|
1777
1777
|
name,
|
|
1778
1778
|
type: "example",
|
|
1779
1779
|
fullPath,
|
|
1780
|
-
relativePath: fullPath.replace(`${getWorkshopRoot()}${path.sep}`, ""),
|
|
1780
|
+
relativePath: fullPath.replace(`${getWorkshopRoot()}${path$1.sep}`, ""),
|
|
1781
1781
|
title: (compiledReadme == null ? void 0 : compiledReadme.title) ?? name,
|
|
1782
1782
|
epicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
1783
1783
|
dirName,
|
|
@@ -1790,8 +1790,8 @@ async function getExampleApps({
|
|
|
1790
1790
|
timings,
|
|
1791
1791
|
request
|
|
1792
1792
|
} = {}) {
|
|
1793
|
-
const examplesDir = path.join(workshopRoot, "examples");
|
|
1794
|
-
const exampleDirs = (await glob("*", { cwd: examplesDir, ignore: "node_modules/**" })).map((p) => path.join(examplesDir, p));
|
|
1793
|
+
const examplesDir = path$1.join(workshopRoot, "examples");
|
|
1794
|
+
const exampleDirs = (await glob("*", { cwd: examplesDir, ignore: "node_modules/**" })).map((p) => path$1.join(examplesDir, p));
|
|
1795
1795
|
const exampleApps = [];
|
|
1796
1796
|
for (const exampleDir of exampleDirs) {
|
|
1797
1797
|
const index = exampleDirs.indexOf(exampleDir);
|
|
@@ -1801,7 +1801,7 @@ async function getExampleApps({
|
|
|
1801
1801
|
cache: exampleAppCache,
|
|
1802
1802
|
ttl: 1e3 * 60 * 60 * 24,
|
|
1803
1803
|
timings,
|
|
1804
|
-
timingKey: exampleDir.replace(`${examplesDir}${path.sep}`, ""),
|
|
1804
|
+
timingKey: exampleDir.replace(`${examplesDir}${path$1.sep}`, ""),
|
|
1805
1805
|
request,
|
|
1806
1806
|
forceFresh: getForceFreshForDir(exampleDir, exampleAppCache.get(key)),
|
|
1807
1807
|
getFreshValue: () => getExampleAppFromPath(exampleDir, index, request).catch((error) => {
|
|
@@ -1815,8 +1815,8 @@ async function getExampleApps({
|
|
|
1815
1815
|
return exampleApps;
|
|
1816
1816
|
}
|
|
1817
1817
|
async function getSolutionAppFromPath(fullPath, request) {
|
|
1818
|
-
const dirName = path.basename(fullPath);
|
|
1819
|
-
const parentDirName = path.basename(path.dirname(fullPath));
|
|
1818
|
+
const dirName = path$1.basename(fullPath);
|
|
1819
|
+
const parentDirName = path$1.basename(path$1.dirname(fullPath));
|
|
1820
1820
|
const exerciseNumber = extractExerciseNumber(parentDirName);
|
|
1821
1821
|
if (!exerciseNumber)
|
|
1822
1822
|
return null;
|
|
@@ -1827,7 +1827,7 @@ async function getSolutionAppFromPath(fullPath, request) {
|
|
|
1827
1827
|
const { stepNumber } = info;
|
|
1828
1828
|
const portNumber = 7e3 + (exerciseNumber - 1) * 10 + stepNumber;
|
|
1829
1829
|
const compiledReadme = await compileMdxIfExists(
|
|
1830
|
-
path.join(fullPath, "README.mdx"),
|
|
1830
|
+
path$1.join(fullPath, "README.mdx"),
|
|
1831
1831
|
{ request }
|
|
1832
1832
|
);
|
|
1833
1833
|
const problemDir = await findProblemDir({
|
|
@@ -1848,7 +1848,7 @@ async function getSolutionAppFromPath(fullPath, request) {
|
|
|
1848
1848
|
stepNumber,
|
|
1849
1849
|
dirName,
|
|
1850
1850
|
fullPath,
|
|
1851
|
-
relativePath: fullPath.replace(`${getWorkshopRoot()}${path.sep}`, ""),
|
|
1851
|
+
relativePath: fullPath.replace(`${getWorkshopRoot()}${path$1.sep}`, ""),
|
|
1852
1852
|
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
1853
1853
|
test,
|
|
1854
1854
|
dev
|
|
@@ -1858,7 +1858,7 @@ async function getSolutionApps({
|
|
|
1858
1858
|
timings,
|
|
1859
1859
|
request
|
|
1860
1860
|
} = {}) {
|
|
1861
|
-
const exercisesDir = path.join(workshopRoot, "exercises");
|
|
1861
|
+
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1862
1862
|
const solutionDirs = await getSolutionDirs();
|
|
1863
1863
|
const solutionApps = [];
|
|
1864
1864
|
for (const solutionDir of solutionDirs) {
|
|
@@ -1866,7 +1866,7 @@ async function getSolutionApps({
|
|
|
1866
1866
|
key: solutionDir,
|
|
1867
1867
|
cache: solutionAppCache,
|
|
1868
1868
|
timings,
|
|
1869
|
-
timingKey: solutionDir.replace(`${exercisesDir}${path.sep}`, ""),
|
|
1869
|
+
timingKey: solutionDir.replace(`${exercisesDir}${path$1.sep}`, ""),
|
|
1870
1870
|
request,
|
|
1871
1871
|
ttl: 1e3 * 60 * 60 * 24,
|
|
1872
1872
|
forceFresh: getForceFreshForDir(
|
|
@@ -1884,8 +1884,8 @@ async function getSolutionApps({
|
|
|
1884
1884
|
return solutionApps;
|
|
1885
1885
|
}
|
|
1886
1886
|
async function getProblemAppFromPath(fullPath, request) {
|
|
1887
|
-
const dirName = path.basename(fullPath);
|
|
1888
|
-
const parentDirName = path.basename(path.dirname(fullPath));
|
|
1887
|
+
const dirName = path$1.basename(fullPath);
|
|
1888
|
+
const parentDirName = path$1.basename(path$1.dirname(fullPath));
|
|
1889
1889
|
const exerciseNumber = extractExerciseNumber(parentDirName);
|
|
1890
1890
|
if (!exerciseNumber)
|
|
1891
1891
|
return null;
|
|
@@ -1896,7 +1896,7 @@ async function getProblemAppFromPath(fullPath, request) {
|
|
|
1896
1896
|
const { stepNumber } = info;
|
|
1897
1897
|
const portNumber = 6e3 + (exerciseNumber - 1) * 10 + stepNumber;
|
|
1898
1898
|
const compiledReadme = await compileMdxIfExists(
|
|
1899
|
-
path.join(fullPath, "README.mdx"),
|
|
1899
|
+
path$1.join(fullPath, "README.mdx"),
|
|
1900
1900
|
{ request }
|
|
1901
1901
|
);
|
|
1902
1902
|
const solutionDir = await findSolutionDir({
|
|
@@ -1917,7 +1917,7 @@ async function getProblemAppFromPath(fullPath, request) {
|
|
|
1917
1917
|
stepNumber,
|
|
1918
1918
|
dirName,
|
|
1919
1919
|
fullPath,
|
|
1920
|
-
relativePath: fullPath.replace(`${getWorkshopRoot()}${path.sep}`, ""),
|
|
1920
|
+
relativePath: fullPath.replace(`${getWorkshopRoot()}${path$1.sep}`, ""),
|
|
1921
1921
|
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
1922
1922
|
test,
|
|
1923
1923
|
dev
|
|
@@ -1927,7 +1927,7 @@ async function getProblemApps({
|
|
|
1927
1927
|
timings,
|
|
1928
1928
|
request
|
|
1929
1929
|
} = {}) {
|
|
1930
|
-
const exercisesDir = path.join(workshopRoot, "exercises");
|
|
1930
|
+
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1931
1931
|
const problemDirs = await getProblemDirs();
|
|
1932
1932
|
const problemApps = [];
|
|
1933
1933
|
for (const problemDir of problemDirs) {
|
|
@@ -1935,7 +1935,7 @@ async function getProblemApps({
|
|
|
1935
1935
|
key: problemDir,
|
|
1936
1936
|
cache: problemAppCache,
|
|
1937
1937
|
timings,
|
|
1938
|
-
timingKey: problemDir.replace(`${exercisesDir}${path.sep}`, ""),
|
|
1938
|
+
timingKey: problemDir.replace(`${exercisesDir}${path$1.sep}`, ""),
|
|
1939
1939
|
request,
|
|
1940
1940
|
ttl: 1e3 * 60 * 60 * 24,
|
|
1941
1941
|
forceFresh: getForceFreshForDir(
|
|
@@ -2030,8 +2030,8 @@ async function setPlayground(srcDir, { reset } = {}) {
|
|
|
2030
2030
|
var _a2, _b2;
|
|
2031
2031
|
const isIgnored = await isGitIgnored({ cwd: srcDir });
|
|
2032
2032
|
const workshopRoot2 = getWorkshopRoot();
|
|
2033
|
-
const destDir = path.join(workshopRoot2, "playground");
|
|
2034
|
-
const playgroundFiles = path.join(destDir, "**");
|
|
2033
|
+
const destDir = path$1.join(workshopRoot2, "playground");
|
|
2034
|
+
const playgroundFiles = path$1.join(destDir, "**");
|
|
2035
2035
|
(_a2 = getOptionalWatcher()) == null ? void 0 : _a2.unwatch(playgroundFiles);
|
|
2036
2036
|
const playgroundApp = await getAppByName("playground");
|
|
2037
2037
|
const playgroundWasRunning = playgroundApp ? isAppRunning(playgroundApp) : false;
|
|
@@ -2041,14 +2041,13 @@ async function setPlayground(srcDir, { reset } = {}) {
|
|
|
2041
2041
|
}
|
|
2042
2042
|
const setPlaygroundTimestamp = Date.now();
|
|
2043
2043
|
const preSetPlaygroundPath = await firstToExist(
|
|
2044
|
-
path.join(srcDir, "epicshop", "pre-set-playground.js"),
|
|
2045
|
-
path.join(workshopRoot2, "epicshop", "pre-set-playground.js")
|
|
2044
|
+
path$1.join(srcDir, "epicshop", "pre-set-playground.js"),
|
|
2045
|
+
path$1.join(workshopRoot2, "epicshop", "pre-set-playground.js")
|
|
2046
2046
|
);
|
|
2047
2047
|
if (preSetPlaygroundPath) {
|
|
2048
2048
|
await execa("node", [preSetPlaygroundPath], {
|
|
2049
2049
|
cwd: workshopRoot2,
|
|
2050
2050
|
stdio: "inherit",
|
|
2051
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2052
2051
|
env: {
|
|
2053
2052
|
EPICSHOP_PLAYGROUND_TIMESTAMP: setPlaygroundTimestamp.toString(),
|
|
2054
2053
|
EPICSHOP_PLAYGROUND_DEST_DIR: destDir,
|
|
@@ -2057,11 +2056,11 @@ async function setPlayground(srcDir, { reset } = {}) {
|
|
|
2057
2056
|
}
|
|
2058
2057
|
});
|
|
2059
2058
|
}
|
|
2060
|
-
const basename2 = path.basename(srcDir);
|
|
2061
|
-
await fsExtra.remove(path.join(destDir, "node_modules"));
|
|
2059
|
+
const basename2 = path$1.basename(srcDir);
|
|
2060
|
+
await fsExtra.remove(path$1.join(destDir, "node_modules"));
|
|
2062
2061
|
await fsExtra.copy(srcDir, destDir, {
|
|
2063
2062
|
filter: async (srcFile, destFile) => {
|
|
2064
|
-
if (srcFile.includes(`${basename2}${path.sep}build`) || srcFile.includes(`${basename2}${path.sep}public${path.sep}build`)) {
|
|
2063
|
+
if (srcFile.includes(`${basename2}${path$1.sep}build`) || srcFile.includes(`${basename2}${path$1.sep}public${path$1.sep}build`)) {
|
|
2065
2064
|
return false;
|
|
2066
2065
|
}
|
|
2067
2066
|
if (srcFile === srcDir)
|
|
@@ -2103,22 +2102,21 @@ async function setPlayground(srcDir, { reset } = {}) {
|
|
|
2103
2102
|
(fileName) => !srcFiles.includes(fileName)
|
|
2104
2103
|
);
|
|
2105
2104
|
for (const fileToDelete of filesToDelete) {
|
|
2106
|
-
await fsExtra.remove(path.join(destDir, fileToDelete));
|
|
2105
|
+
await fsExtra.remove(path$1.join(destDir, fileToDelete));
|
|
2107
2106
|
}
|
|
2108
2107
|
const appName = getAppName(srcDir);
|
|
2109
|
-
await fsExtra.ensureDir(path.dirname(playgroundAppNameInfoPath));
|
|
2108
|
+
await fsExtra.ensureDir(path$1.dirname(playgroundAppNameInfoPath));
|
|
2110
2109
|
await fsExtra.writeJSON(playgroundAppNameInfoPath, { appName });
|
|
2111
2110
|
const playgroundIsStillRunning = playgroundApp ? isAppRunning(playgroundApp) : false;
|
|
2112
2111
|
const restartPlayground = playgroundWasRunning && !playgroundIsStillRunning;
|
|
2113
2112
|
const postSetPlaygroundPath = await firstToExist(
|
|
2114
|
-
path.join(srcDir, "epicshop", "post-set-playground.js"),
|
|
2115
|
-
path.join(workshopRoot2, "epicshop", "post-set-playground.js")
|
|
2113
|
+
path$1.join(srcDir, "epicshop", "post-set-playground.js"),
|
|
2114
|
+
path$1.join(workshopRoot2, "epicshop", "post-set-playground.js")
|
|
2116
2115
|
);
|
|
2117
2116
|
if (postSetPlaygroundPath) {
|
|
2118
2117
|
await execa("node", [postSetPlaygroundPath], {
|
|
2119
2118
|
cwd: workshopRoot2,
|
|
2120
2119
|
stdio: "inherit",
|
|
2121
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2122
2120
|
env: {
|
|
2123
2121
|
EPICSHOP_PLAYGROUND_TIMESTAMP: setPlaygroundTimestamp.toString(),
|
|
2124
2122
|
EPICSHOP_PLAYGROUND_SRC_DIR: srcDir,
|
|
@@ -2141,7 +2139,7 @@ async function getPlaygroundAppName() {
|
|
|
2141
2139
|
return null;
|
|
2142
2140
|
}
|
|
2143
2141
|
try {
|
|
2144
|
-
const jsonString = await fs
|
|
2142
|
+
const jsonString = await fs.promises.readFile(
|
|
2145
2143
|
playgroundAppNameInfoPath,
|
|
2146
2144
|
"utf8"
|
|
2147
2145
|
);
|
|
@@ -2155,17 +2153,17 @@ async function getPlaygroundAppName() {
|
|
|
2155
2153
|
}
|
|
2156
2154
|
async function getDirModifiedTime(dir) {
|
|
2157
2155
|
const isIgnored = await isGitIgnored({ cwd: dir });
|
|
2158
|
-
const files = await fs
|
|
2156
|
+
const files = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
2159
2157
|
const modifiedTimes2 = await Promise.all(
|
|
2160
2158
|
files.map(async (file) => {
|
|
2161
2159
|
if (isIgnored(file.name))
|
|
2162
2160
|
return 0;
|
|
2163
|
-
const filePath = path.join(dir, file.name);
|
|
2161
|
+
const filePath = path$1.join(dir, file.name);
|
|
2164
2162
|
if (file.isDirectory()) {
|
|
2165
2163
|
return getDirModifiedTime(filePath);
|
|
2166
2164
|
} else {
|
|
2167
2165
|
try {
|
|
2168
|
-
const { mtimeMs } = await fs
|
|
2166
|
+
const { mtimeMs } = await fs.promises.stat(filePath);
|
|
2169
2167
|
return mtimeMs;
|
|
2170
2168
|
} catch {
|
|
2171
2169
|
return 0;
|
|
@@ -2218,7 +2216,7 @@ function getWorkshopRoot() {
|
|
|
2218
2216
|
async function getWorkshopInstructions({
|
|
2219
2217
|
request
|
|
2220
2218
|
} = {}) {
|
|
2221
|
-
const readmeFilepath = path.join(workshopRoot, "exercises", "README.mdx");
|
|
2219
|
+
const readmeFilepath = path$1.join(workshopRoot, "exercises", "README.mdx");
|
|
2222
2220
|
const compiled = await compileMdx(readmeFilepath, { request }).then(
|
|
2223
2221
|
(r) => ({ ...r, status: "success" }),
|
|
2224
2222
|
(e) => {
|
|
@@ -2235,7 +2233,7 @@ async function getWorkshopInstructions({
|
|
|
2235
2233
|
async function getWorkshopFinished({
|
|
2236
2234
|
request
|
|
2237
2235
|
} = {}) {
|
|
2238
|
-
const finishedFilepath = path.join(workshopRoot, "exercises", "FINISHED.mdx");
|
|
2236
|
+
const finishedFilepath = path$1.join(workshopRoot, "exercises", "FINISHED.mdx");
|
|
2239
2237
|
const compiled = await compileMdx(finishedFilepath, { request }).then(
|
|
2240
2238
|
(r) => ({ ...r, status: "success" }),
|
|
2241
2239
|
(e) => {
|
|
@@ -2253,10 +2251,10 @@ async function getWorkshopFinished({
|
|
|
2253
2251
|
relativePath: "exercises/finished.mdx"
|
|
2254
2252
|
};
|
|
2255
2253
|
}
|
|
2256
|
-
const exercisesPath = path.join(workshopRoot, "exercises/");
|
|
2257
|
-
const playgroundPath = path.join(workshopRoot, "playground/");
|
|
2254
|
+
const exercisesPath = path$1.join(workshopRoot, "exercises/");
|
|
2255
|
+
const playgroundPath = path$1.join(workshopRoot, "playground/");
|
|
2258
2256
|
function getRelativePath$1(filePath) {
|
|
2259
|
-
return path.normalize(filePath).replace(playgroundPath, `playground${path.sep}`).replace(exercisesPath, "");
|
|
2257
|
+
return path$1.normalize(filePath).replace(playgroundPath, `playground${path$1.sep}`).replace(exercisesPath, "");
|
|
2260
2258
|
}
|
|
2261
2259
|
z$1.object({
|
|
2262
2260
|
NODE_ENV: z$1.enum(["production", "development", "test"]).default("development"),
|
|
@@ -2588,6 +2586,83 @@ function Confetti({ id }) {
|
|
|
2588
2586
|
id
|
|
2589
2587
|
) });
|
|
2590
2588
|
}
|
|
2589
|
+
function AnimatedBars({
|
|
2590
|
+
title,
|
|
2591
|
+
size = 16,
|
|
2592
|
+
...props
|
|
2593
|
+
}) {
|
|
2594
|
+
return /* @__PURE__ */ jsxs(
|
|
2595
|
+
"svg",
|
|
2596
|
+
{
|
|
2597
|
+
width: size,
|
|
2598
|
+
height: size,
|
|
2599
|
+
viewBox: "0 0 16 16",
|
|
2600
|
+
"aria-hidden": !title,
|
|
2601
|
+
...props,
|
|
2602
|
+
children: [
|
|
2603
|
+
title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
|
|
2604
|
+
/* @__PURE__ */ jsxs("g", { fill: "currentColor", children: [
|
|
2605
|
+
/* @__PURE__ */ jsxs("g", { className: "nc-loop-dots-16-icon-f", children: [
|
|
2606
|
+
/* @__PURE__ */ jsx("circle", { cx: "3", cy: "8", fill: "currentColor", r: "2" }),
|
|
2607
|
+
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "2" }),
|
|
2608
|
+
/* @__PURE__ */ jsx("circle", { cx: "13", cy: "8", fill: "currentColor", r: "2" })
|
|
2609
|
+
] }),
|
|
2610
|
+
/* @__PURE__ */ jsx("style", { children: `.nc-loop-dots-16-icon-f{--animation-duration:1s}.nc-loop-dots-16-icon-f *{opacity:.4;transform:scale(.7)}.nc-loop-dots-16-icon-f :nth-child(1),.nc-loop-dots-16-icon-f :nth-child(3){animation:nc-loop-dots-anim-2b var(--animation-duration) infinite linear}.nc-loop-dots-16-icon-f :nth-child(1){transform-origin:3px 8px}.nc-loop-dots-16-icon-f :nth-child(2){animation:nc-loop-dots-anim-1b calc(var(--animation-duration)/2) infinite linear;animation-delay:calc(var(--animation-duration)/4);transform-origin:8px 8px}.nc-loop-dots-16-icon-f :nth-child(3){animation-delay:calc(var(--animation-duration)/2);transform-origin:13px 8px}@keyframes nc-loop-dots-anim-1b{0%,100%{opacity:.4;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@keyframes nc-loop-dots-anim-2b{0%,100%,66%{opacity:.4;transform:scale(.7)}33%{opacity:1;transform:scale(1)}}` })
|
|
2611
|
+
] })
|
|
2612
|
+
]
|
|
2613
|
+
}
|
|
2614
|
+
);
|
|
2615
|
+
}
|
|
2616
|
+
const sizeClassName = {
|
|
2617
|
+
font: "w-[1em] h-[1em]",
|
|
2618
|
+
xs: "w-3 h-3",
|
|
2619
|
+
sm: "w-4 h-4",
|
|
2620
|
+
md: "w-5 h-5",
|
|
2621
|
+
lg: "w-6 h-6",
|
|
2622
|
+
xl: "w-7 h-7",
|
|
2623
|
+
"2xl": "w-8 h-8"
|
|
2624
|
+
};
|
|
2625
|
+
const childrenSizeClassName = {
|
|
2626
|
+
font: "gap-1.5",
|
|
2627
|
+
xs: "gap-1.5",
|
|
2628
|
+
sm: "gap-1.5",
|
|
2629
|
+
md: "gap-2",
|
|
2630
|
+
lg: "gap-2",
|
|
2631
|
+
xl: "gap-3",
|
|
2632
|
+
"2xl": "gap-4"
|
|
2633
|
+
};
|
|
2634
|
+
function Icon({
|
|
2635
|
+
name,
|
|
2636
|
+
size = "font",
|
|
2637
|
+
title,
|
|
2638
|
+
className,
|
|
2639
|
+
children,
|
|
2640
|
+
...props
|
|
2641
|
+
}) {
|
|
2642
|
+
if (children) {
|
|
2643
|
+
return /* @__PURE__ */ jsxs(
|
|
2644
|
+
"span",
|
|
2645
|
+
{
|
|
2646
|
+
className: `inline-flex items-center ${childrenSizeClassName[size]}`,
|
|
2647
|
+
children: [
|
|
2648
|
+
/* @__PURE__ */ jsx(Icon, { name, size, className, ...props }),
|
|
2649
|
+
children
|
|
2650
|
+
]
|
|
2651
|
+
}
|
|
2652
|
+
);
|
|
2653
|
+
}
|
|
2654
|
+
return /* @__PURE__ */ jsxs(
|
|
2655
|
+
"svg",
|
|
2656
|
+
{
|
|
2657
|
+
...props,
|
|
2658
|
+
className: cn(sizeClassName[size], "inline self-center", className),
|
|
2659
|
+
children: [
|
|
2660
|
+
title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
|
|
2661
|
+
/* @__PURE__ */ jsx("use", { href: `/icons.svg#${name}`, fill: "transparent" })
|
|
2662
|
+
]
|
|
2663
|
+
}
|
|
2664
|
+
);
|
|
2665
|
+
}
|
|
2591
2666
|
const removeProseMargin = {
|
|
2592
2667
|
"> ul > li > *:first-child": {
|
|
2593
2668
|
marginTop: "unset"
|
|
@@ -2730,89 +2805,11 @@ const extendedTheme = {
|
|
|
2730
2805
|
"accordion-up": "accordion-up 0.2s ease-out"
|
|
2731
2806
|
}
|
|
2732
2807
|
};
|
|
2733
|
-
function AnimatedBars({
|
|
2734
|
-
title,
|
|
2735
|
-
size = 16,
|
|
2736
|
-
...props
|
|
2737
|
-
}) {
|
|
2738
|
-
return /* @__PURE__ */ jsxs(
|
|
2739
|
-
"svg",
|
|
2740
|
-
{
|
|
2741
|
-
width: size,
|
|
2742
|
-
height: size,
|
|
2743
|
-
viewBox: "0 0 16 16",
|
|
2744
|
-
"aria-hidden": !title,
|
|
2745
|
-
...props,
|
|
2746
|
-
children: [
|
|
2747
|
-
title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
|
|
2748
|
-
/* @__PURE__ */ jsxs("g", { fill: "currentColor", children: [
|
|
2749
|
-
/* @__PURE__ */ jsxs("g", { className: "nc-loop-dots-16-icon-f", children: [
|
|
2750
|
-
/* @__PURE__ */ jsx("circle", { cx: "3", cy: "8", fill: "currentColor", r: "2" }),
|
|
2751
|
-
/* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "2" }),
|
|
2752
|
-
/* @__PURE__ */ jsx("circle", { cx: "13", cy: "8", fill: "currentColor", r: "2" })
|
|
2753
|
-
] }),
|
|
2754
|
-
/* @__PURE__ */ jsx("style", { children: `.nc-loop-dots-16-icon-f{--animation-duration:1s}.nc-loop-dots-16-icon-f *{opacity:.4;transform:scale(.7)}.nc-loop-dots-16-icon-f :nth-child(1),.nc-loop-dots-16-icon-f :nth-child(3){animation:nc-loop-dots-anim-2b var(--animation-duration) infinite linear}.nc-loop-dots-16-icon-f :nth-child(1){transform-origin:3px 8px}.nc-loop-dots-16-icon-f :nth-child(2){animation:nc-loop-dots-anim-1b calc(var(--animation-duration)/2) infinite linear;animation-delay:calc(var(--animation-duration)/4);transform-origin:8px 8px}.nc-loop-dots-16-icon-f :nth-child(3){animation-delay:calc(var(--animation-duration)/2);transform-origin:13px 8px}@keyframes nc-loop-dots-anim-1b{0%,100%{opacity:.4;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@keyframes nc-loop-dots-anim-2b{0%,100%,66%{opacity:.4;transform:scale(.7)}33%{opacity:1;transform:scale(1)}}` })
|
|
2755
|
-
] })
|
|
2756
|
-
]
|
|
2757
|
-
}
|
|
2758
|
-
);
|
|
2759
|
-
}
|
|
2760
|
-
const sizeClassName = {
|
|
2761
|
-
font: "w-[1em] h-[1em]",
|
|
2762
|
-
xs: "w-3 h-3",
|
|
2763
|
-
sm: "w-4 h-4",
|
|
2764
|
-
md: "w-5 h-5",
|
|
2765
|
-
lg: "w-6 h-6",
|
|
2766
|
-
xl: "w-7 h-7",
|
|
2767
|
-
"2xl": "w-8 h-8"
|
|
2768
|
-
};
|
|
2769
|
-
const childrenSizeClassName = {
|
|
2770
|
-
font: "gap-1.5",
|
|
2771
|
-
xs: "gap-1.5",
|
|
2772
|
-
sm: "gap-1.5",
|
|
2773
|
-
md: "gap-2",
|
|
2774
|
-
lg: "gap-2",
|
|
2775
|
-
xl: "gap-3",
|
|
2776
|
-
"2xl": "gap-4"
|
|
2777
|
-
};
|
|
2778
|
-
function Icon({
|
|
2779
|
-
name,
|
|
2780
|
-
size = "font",
|
|
2781
|
-
title,
|
|
2782
|
-
className,
|
|
2783
|
-
children,
|
|
2784
|
-
...props
|
|
2785
|
-
}) {
|
|
2786
|
-
if (children) {
|
|
2787
|
-
return /* @__PURE__ */ jsxs(
|
|
2788
|
-
"span",
|
|
2789
|
-
{
|
|
2790
|
-
className: `inline-flex items-center ${childrenSizeClassName[size]}`,
|
|
2791
|
-
children: [
|
|
2792
|
-
/* @__PURE__ */ jsx(Icon, { name, size, className, ...props }),
|
|
2793
|
-
children
|
|
2794
|
-
]
|
|
2795
|
-
}
|
|
2796
|
-
);
|
|
2797
|
-
}
|
|
2798
|
-
return /* @__PURE__ */ jsxs(
|
|
2799
|
-
"svg",
|
|
2800
|
-
{
|
|
2801
|
-
...props,
|
|
2802
|
-
className: cn(sizeClassName[size], "inline self-center", className),
|
|
2803
|
-
children: [
|
|
2804
|
-
title ? /* @__PURE__ */ jsx("title", { children: title }) : null,
|
|
2805
|
-
/* @__PURE__ */ jsx("use", { href: `/icons.svg#${name}`, fill: "transparent" })
|
|
2806
|
-
]
|
|
2807
|
-
}
|
|
2808
|
-
);
|
|
2809
|
-
}
|
|
2810
2808
|
const AnchorOrLink = React.forwardRef(function AnchorOrLink2(props, ref) {
|
|
2811
2809
|
var _a2;
|
|
2812
2810
|
const {
|
|
2813
2811
|
to,
|
|
2814
2812
|
href,
|
|
2815
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2816
2813
|
download,
|
|
2817
2814
|
reload = false,
|
|
2818
2815
|
prefetch,
|
|
@@ -2833,10 +2830,7 @@ const AnchorOrLink = React.forwardRef(function AnchorOrLink2(props, ref) {
|
|
|
2833
2830
|
shouldUserRegularAnchor = Boolean((_a2 = to.pathname) == null ? void 0 : _a2.includes(":"));
|
|
2834
2831
|
}
|
|
2835
2832
|
if (shouldUserRegularAnchor) {
|
|
2836
|
-
return (
|
|
2837
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2838
|
-
/* @__PURE__ */ jsx("a", { ...rest, download, href: href ?? toUrl, ref, children })
|
|
2839
|
-
);
|
|
2833
|
+
return /* @__PURE__ */ jsx("a", { ...rest, download, href: href ?? toUrl, ref, children });
|
|
2840
2834
|
} else {
|
|
2841
2835
|
return /* @__PURE__ */ jsx(Link, { prefetch, to: to ?? href ?? "", ...rest, ref, children });
|
|
2842
2836
|
}
|
|
@@ -3091,20 +3085,6 @@ function SimpleTooltip({
|
|
|
3091
3085
|
/* @__PURE__ */ jsx(TooltipContent, { children: content })
|
|
3092
3086
|
] });
|
|
3093
3087
|
}
|
|
3094
|
-
const cookieName$1 = "EpicShop_theme";
|
|
3095
|
-
function getTheme(request) {
|
|
3096
|
-
const cookieHeader = request.headers.get("cookie");
|
|
3097
|
-
const parsed = cookieHeader ? cookie.parse(cookieHeader)[cookieName$1] : null;
|
|
3098
|
-
if (parsed === "light" || parsed === "dark")
|
|
3099
|
-
return parsed;
|
|
3100
|
-
return null;
|
|
3101
|
-
}
|
|
3102
|
-
function setTheme(theme) {
|
|
3103
|
-
return cookie.serialize(cookieName$1, theme, {
|
|
3104
|
-
path: "/",
|
|
3105
|
-
maxAge: theme === "system" ? 0 : 60 * 60 * 365 * 100
|
|
3106
|
-
});
|
|
3107
|
-
}
|
|
3108
3088
|
function useRequestInfo() {
|
|
3109
3089
|
const data = useRouteLoaderData("root");
|
|
3110
3090
|
return data.requestInfo;
|
|
@@ -3159,6 +3139,20 @@ function ErrorList({
|
|
|
3159
3139
|
return null;
|
|
3160
3140
|
return /* @__PURE__ */ jsx("ul", { id, className: "space-y-1", children: errorsToRender.map((e) => /* @__PURE__ */ jsx("li", { className: "text-danger text-[10px]", children: e }, e)) });
|
|
3161
3141
|
}
|
|
3142
|
+
const cookieName$1 = "EpicShop_theme";
|
|
3143
|
+
function getTheme(request) {
|
|
3144
|
+
const cookieHeader = request.headers.get("cookie");
|
|
3145
|
+
const parsed = cookieHeader ? cookie.parse(cookieHeader)[cookieName$1] : null;
|
|
3146
|
+
if (parsed === "light" || parsed === "dark")
|
|
3147
|
+
return parsed;
|
|
3148
|
+
return null;
|
|
3149
|
+
}
|
|
3150
|
+
function setTheme(theme) {
|
|
3151
|
+
return cookie.serialize(cookieName$1, theme, {
|
|
3152
|
+
path: "/",
|
|
3153
|
+
maxAge: theme === "system" ? 0 : 60 * 60 * 365 * 100
|
|
3154
|
+
});
|
|
3155
|
+
}
|
|
3162
3156
|
const ROUTE_PATH = "/theme";
|
|
3163
3157
|
const ThemeFormSchema = z$1.object({
|
|
3164
3158
|
redirectTo: z$1.string().optional(),
|
|
@@ -4040,6 +4034,23 @@ const route1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
4040
4034
|
default: NotFound,
|
|
4041
4035
|
loader: loader$q
|
|
4042
4036
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4037
|
+
function useOptionalUser() {
|
|
4038
|
+
const data = useRouteLoaderData("root");
|
|
4039
|
+
return data == null ? void 0 : data.user;
|
|
4040
|
+
}
|
|
4041
|
+
function useUser() {
|
|
4042
|
+
const user = useOptionalUser();
|
|
4043
|
+
if (!user) {
|
|
4044
|
+
throw new Error(
|
|
4045
|
+
"useUser requires a user. If the user is optional, use useOptionalUser instead."
|
|
4046
|
+
);
|
|
4047
|
+
}
|
|
4048
|
+
return user;
|
|
4049
|
+
}
|
|
4050
|
+
function useOptionalDiscordMember() {
|
|
4051
|
+
const data = useRouteLoaderData("root");
|
|
4052
|
+
return data == null ? void 0 : data.discordMember;
|
|
4053
|
+
}
|
|
4043
4054
|
function useEpicProgress() {
|
|
4044
4055
|
const data = useRouteLoaderData("root");
|
|
4045
4056
|
const progressFetcher = useFetchers().find(
|
|
@@ -4342,23 +4353,6 @@ const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
4342
4353
|
useProgressItemClassName,
|
|
4343
4354
|
useRequireEpicProgress
|
|
4344
4355
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4345
|
-
function useOptionalUser() {
|
|
4346
|
-
const data = useRouteLoaderData("root");
|
|
4347
|
-
return data == null ? void 0 : data.user;
|
|
4348
|
-
}
|
|
4349
|
-
function useUser() {
|
|
4350
|
-
const user = useOptionalUser();
|
|
4351
|
-
if (!user) {
|
|
4352
|
-
throw new Error(
|
|
4353
|
-
"useUser requires a user. If the user is optional, use useOptionalUser instead."
|
|
4354
|
-
);
|
|
4355
|
-
}
|
|
4356
|
-
return user;
|
|
4357
|
-
}
|
|
4358
|
-
function useOptionalDiscordMember() {
|
|
4359
|
-
const data = useRouteLoaderData("root");
|
|
4360
|
-
return data == null ? void 0 : data.discordMember;
|
|
4361
|
-
}
|
|
4362
4356
|
async function loader$p({ request }) {
|
|
4363
4357
|
var _a2;
|
|
4364
4358
|
const timings = makeTimings("stepLoader");
|
|
@@ -5066,56 +5060,6 @@ const route3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
5066
5060
|
__proto__: null,
|
|
5067
5061
|
default: ExercisesLayout
|
|
5068
5062
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5069
|
-
function Loading({
|
|
5070
|
-
children = "Loading"
|
|
5071
|
-
}) {
|
|
5072
|
-
const { reducedMotion } = useHints();
|
|
5073
|
-
if (reducedMotion === "reduce") {
|
|
5074
|
-
return /* @__PURE__ */ jsx("div", { className: "animate-pulse", children });
|
|
5075
|
-
}
|
|
5076
|
-
return /* @__PURE__ */ jsxs(
|
|
5077
|
-
"div",
|
|
5078
|
-
{
|
|
5079
|
-
className: "flex items-center gap-2 font-mono text-sm font-medium uppercase",
|
|
5080
|
-
role: "status",
|
|
5081
|
-
children: [
|
|
5082
|
-
/* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Characters, {}) }),
|
|
5083
|
-
children,
|
|
5084
|
-
/* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Characters, {}) })
|
|
5085
|
-
]
|
|
5086
|
-
}
|
|
5087
|
-
);
|
|
5088
|
-
}
|
|
5089
|
-
const characters = "█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>";
|
|
5090
|
-
const randomCharacter = () => characters[Math.floor(Math.random() * characters.length)];
|
|
5091
|
-
function Characters() {
|
|
5092
|
-
const [char1, setChar1] = useState(characters[0]);
|
|
5093
|
-
const [char2, setChar2] = useState(characters[1]);
|
|
5094
|
-
useInterval(() => {
|
|
5095
|
-
setChar1(randomCharacter());
|
|
5096
|
-
setChar2(randomCharacter());
|
|
5097
|
-
}, 80);
|
|
5098
|
-
return /* @__PURE__ */ jsxs("span", { children: [
|
|
5099
|
-
char1,
|
|
5100
|
-
char2
|
|
5101
|
-
] });
|
|
5102
|
-
}
|
|
5103
|
-
function useInterval(callback, delay = 1e3) {
|
|
5104
|
-
const savedCallback = useRef(null);
|
|
5105
|
-
useEffect(() => {
|
|
5106
|
-
savedCallback.current = callback;
|
|
5107
|
-
}, [callback]);
|
|
5108
|
-
useEffect(() => {
|
|
5109
|
-
function tick() {
|
|
5110
|
-
var _a2;
|
|
5111
|
-
(_a2 = savedCallback.current) == null ? void 0 : _a2.call(savedCallback);
|
|
5112
|
-
}
|
|
5113
|
-
if (delay !== null) {
|
|
5114
|
-
const id = setInterval(tick, delay);
|
|
5115
|
-
return () => clearInterval(id);
|
|
5116
|
-
}
|
|
5117
|
-
}, [delay]);
|
|
5118
|
-
}
|
|
5119
5063
|
const PlaybackTimeSchema = z$1.object({
|
|
5120
5064
|
time: z$1.number(),
|
|
5121
5065
|
expiresAt: z$1.string()
|
|
@@ -5327,6 +5271,56 @@ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
5327
5271
|
action: action$a,
|
|
5328
5272
|
usePlayerPreferences
|
|
5329
5273
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5274
|
+
function Loading({
|
|
5275
|
+
children = "Loading"
|
|
5276
|
+
}) {
|
|
5277
|
+
const { reducedMotion } = useHints();
|
|
5278
|
+
if (reducedMotion === "reduce") {
|
|
5279
|
+
return /* @__PURE__ */ jsx("div", { className: "animate-pulse", children });
|
|
5280
|
+
}
|
|
5281
|
+
return /* @__PURE__ */ jsxs(
|
|
5282
|
+
"div",
|
|
5283
|
+
{
|
|
5284
|
+
className: "flex items-center gap-2 font-mono text-sm font-medium uppercase",
|
|
5285
|
+
role: "status",
|
|
5286
|
+
children: [
|
|
5287
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Characters, {}) }),
|
|
5288
|
+
children,
|
|
5289
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": "true", children: /* @__PURE__ */ jsx(Characters, {}) })
|
|
5290
|
+
]
|
|
5291
|
+
}
|
|
5292
|
+
);
|
|
5293
|
+
}
|
|
5294
|
+
const characters = "█<▓█ ▒░/▒░ █░>▒▓/ █▒▒ ▓▒▓/█<░▒ ▓/░>";
|
|
5295
|
+
const randomCharacter = () => characters[Math.floor(Math.random() * characters.length)];
|
|
5296
|
+
function Characters() {
|
|
5297
|
+
const [char1, setChar1] = useState(characters[0]);
|
|
5298
|
+
const [char2, setChar2] = useState(characters[1]);
|
|
5299
|
+
useInterval(() => {
|
|
5300
|
+
setChar1(randomCharacter());
|
|
5301
|
+
setChar2(randomCharacter());
|
|
5302
|
+
}, 80);
|
|
5303
|
+
return /* @__PURE__ */ jsxs("span", { children: [
|
|
5304
|
+
char1,
|
|
5305
|
+
char2
|
|
5306
|
+
] });
|
|
5307
|
+
}
|
|
5308
|
+
function useInterval(callback, delay = 1e3) {
|
|
5309
|
+
const savedCallback = useRef(null);
|
|
5310
|
+
useEffect(() => {
|
|
5311
|
+
savedCallback.current = callback;
|
|
5312
|
+
}, [callback]);
|
|
5313
|
+
useEffect(() => {
|
|
5314
|
+
function tick() {
|
|
5315
|
+
var _a2;
|
|
5316
|
+
(_a2 = savedCallback.current) == null ? void 0 : _a2.call(savedCallback);
|
|
5317
|
+
}
|
|
5318
|
+
if (delay !== null) {
|
|
5319
|
+
const id = setInterval(tick, delay);
|
|
5320
|
+
return () => clearInterval(id);
|
|
5321
|
+
}
|
|
5322
|
+
}, [delay]);
|
|
5323
|
+
}
|
|
5330
5324
|
const EpicVideoInfoContext = React.createContext(null);
|
|
5331
5325
|
function EpicVideoInfoProvider({
|
|
5332
5326
|
children,
|
|
@@ -5953,7 +5947,7 @@ function guessEditor() {
|
|
|
5953
5947
|
}
|
|
5954
5948
|
}
|
|
5955
5949
|
}
|
|
5956
|
-
} catch
|
|
5950
|
+
} catch {
|
|
5957
5951
|
}
|
|
5958
5952
|
if (process.env.VISUAL) {
|
|
5959
5953
|
return [process.env.VISUAL];
|
|
@@ -6463,7 +6457,6 @@ function PreWithButtons({ children, ...props }) {
|
|
|
6463
6457
|
...props,
|
|
6464
6458
|
className: clsx(
|
|
6465
6459
|
"scrollbar-thin scrollbar-thumb-scrollbar",
|
|
6466
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
|
|
6467
6460
|
props.className ?? ""
|
|
6468
6461
|
),
|
|
6469
6462
|
...updateFilename(),
|
|
@@ -6489,7 +6482,6 @@ const mdxComponents$5 = {
|
|
|
6489
6482
|
...props,
|
|
6490
6483
|
className: clsx(
|
|
6491
6484
|
"scrollbar-thin scrollbar-thumb-scrollbar",
|
|
6492
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
|
|
6493
6485
|
props.className ?? ""
|
|
6494
6486
|
)
|
|
6495
6487
|
}
|
|
@@ -6756,98 +6748,344 @@ const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
6756
6748
|
headers: headers$5,
|
|
6757
6749
|
loader: loader$n
|
|
6758
6750
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6759
|
-
const
|
|
6760
|
-
|
|
6761
|
-
|
|
6762
|
-
|
|
6763
|
-
|
|
6764
|
-
|
|
6765
|
-
|
|
6766
|
-
|
|
6767
|
-
|
|
6768
|
-
|
|
6769
|
-
|
|
6770
|
-
|
|
6771
|
-
|
|
6772
|
-
|
|
6773
|
-
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
|
|
6783
|
-
|
|
6784
|
-
|
|
6785
|
-
|
|
6786
|
-
|
|
6787
|
-
|
|
6788
|
-
|
|
6789
|
-
|
|
6790
|
-
|
|
6791
|
-
|
|
6792
|
-
|
|
6751
|
+
const AccordionComponent = ({
|
|
6752
|
+
title,
|
|
6753
|
+
children,
|
|
6754
|
+
variant,
|
|
6755
|
+
icon,
|
|
6756
|
+
forceMount = false
|
|
6757
|
+
}) => {
|
|
6758
|
+
const getVariantIcon = () => {
|
|
6759
|
+
switch (variant) {
|
|
6760
|
+
case "changed":
|
|
6761
|
+
return /* @__PURE__ */ jsx(
|
|
6762
|
+
Icon,
|
|
6763
|
+
{
|
|
6764
|
+
name: "Modified",
|
|
6765
|
+
"aria-label": "Modified",
|
|
6766
|
+
className: "text-[#fb923c]"
|
|
6767
|
+
}
|
|
6768
|
+
);
|
|
6769
|
+
case "renamed":
|
|
6770
|
+
return /* @__PURE__ */ jsx(
|
|
6771
|
+
Icon,
|
|
6772
|
+
{
|
|
6773
|
+
name: "Renamed",
|
|
6774
|
+
"aria-label": "Renamed",
|
|
6775
|
+
className: "text-[#fb923c]"
|
|
6776
|
+
}
|
|
6777
|
+
);
|
|
6778
|
+
case "added":
|
|
6779
|
+
return /* @__PURE__ */ jsx(Icon, { name: "Added", "aria-label": "Added", className: "text-[#10b981]" });
|
|
6780
|
+
case "deleted":
|
|
6781
|
+
return /* @__PURE__ */ jsx(
|
|
6782
|
+
Icon,
|
|
6783
|
+
{
|
|
6784
|
+
name: "Deleted",
|
|
6785
|
+
"aria-label": "Deleted",
|
|
6786
|
+
className: "text-[#ef4444]"
|
|
6787
|
+
}
|
|
6788
|
+
);
|
|
6789
|
+
default:
|
|
6790
|
+
return /* @__PURE__ */ jsx(
|
|
6791
|
+
Icon,
|
|
6792
|
+
{
|
|
6793
|
+
name: "Modified",
|
|
6794
|
+
"aria-label": "Modified",
|
|
6795
|
+
className: "text-[#fb923c]"
|
|
6796
|
+
}
|
|
6797
|
+
);
|
|
6798
|
+
}
|
|
6799
|
+
};
|
|
6800
|
+
const getVariantLabel = () => {
|
|
6801
|
+
switch (variant) {
|
|
6802
|
+
case "changed":
|
|
6803
|
+
return "modified";
|
|
6804
|
+
default:
|
|
6805
|
+
return variant;
|
|
6806
|
+
}
|
|
6807
|
+
};
|
|
6808
|
+
const fixedTitle = title.replace(/\\\\/g, "\\");
|
|
6809
|
+
return /* @__PURE__ */ jsxs(Accordion.Item, { value: title, children: [
|
|
6810
|
+
/* @__PURE__ */ jsxs(AccordionTrigger, { variant: getVariantLabel(), children: [
|
|
6811
|
+
icon ? icon : getVariantIcon(),
|
|
6812
|
+
" ",
|
|
6813
|
+
fixedTitle
|
|
6814
|
+
] }),
|
|
6815
|
+
/* @__PURE__ */ jsx(
|
|
6816
|
+
AccordionContent,
|
|
6817
|
+
{
|
|
6818
|
+
forceMount,
|
|
6819
|
+
className: clsx(
|
|
6820
|
+
"prose max-w-none whitespace-pre-wrap dark:prose-invert prose-pre:m-0 prose-pre:mb-1 prose-pre:rounded-none",
|
|
6821
|
+
{
|
|
6822
|
+
"radix-state-closed:hidden": forceMount
|
|
6823
|
+
}
|
|
6824
|
+
),
|
|
6825
|
+
children
|
|
6826
|
+
}
|
|
6827
|
+
)
|
|
6828
|
+
] });
|
|
6829
|
+
};
|
|
6830
|
+
const AccordionTrigger = React.forwardRef(
|
|
6831
|
+
({ children, className, variant, ...props }, forwardedRef) => /* @__PURE__ */ jsx(Accordion.Header, { className: "flex", asChild: true, children: /* @__PURE__ */ jsxs(
|
|
6832
|
+
Accordion.Trigger,
|
|
6833
|
+
{
|
|
6834
|
+
className: clsx(
|
|
6835
|
+
"group flex w-full items-center justify-between border-b p-4 pr-3 font-mono text-sm font-medium leading-none hover:bg-foreground/20",
|
|
6836
|
+
className
|
|
6837
|
+
),
|
|
6838
|
+
...props,
|
|
6839
|
+
ref: forwardedRef,
|
|
6840
|
+
children: [
|
|
6841
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1.5", children }),
|
|
6842
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
6843
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-xs font-normal uppercase text-muted-foreground", children: variant }),
|
|
6844
|
+
/* @__PURE__ */ jsx(
|
|
6845
|
+
Icon,
|
|
6846
|
+
{
|
|
6847
|
+
name: "TriangleDownSmall",
|
|
6848
|
+
className: "transition group-radix-state-open:rotate-180",
|
|
6849
|
+
"aria-hidden": true
|
|
6850
|
+
}
|
|
6851
|
+
)
|
|
6852
|
+
] })
|
|
6853
|
+
]
|
|
6854
|
+
}
|
|
6855
|
+
) })
|
|
6856
|
+
);
|
|
6857
|
+
const AccordionContent = React.forwardRef(
|
|
6858
|
+
({ children, className, ...props }, forwardedRef) => /* @__PURE__ */ jsx(
|
|
6859
|
+
Accordion.Content,
|
|
6860
|
+
{
|
|
6861
|
+
className: clsx("", className),
|
|
6862
|
+
...props,
|
|
6863
|
+
ref: forwardedRef,
|
|
6864
|
+
children: /* @__PURE__ */ jsx("div", { children })
|
|
6865
|
+
}
|
|
6793
6866
|
)
|
|
6794
|
-
});
|
|
6795
|
-
const ThreadDataSchema = z$1.array(ThreadItemSchema);
|
|
6796
|
-
const EpicForumResponseSchema = z$1.object({
|
|
6797
|
-
status: z$1.literal("error"),
|
|
6798
|
-
error: z$1.string()
|
|
6799
|
-
}).or(
|
|
6800
|
-
z$1.object({
|
|
6801
|
-
status: z$1.literal("success"),
|
|
6802
|
-
threadData: ThreadDataSchema
|
|
6803
|
-
})
|
|
6804
6867
|
);
|
|
6805
|
-
|
|
6806
|
-
|
|
6807
|
-
|
|
6808
|
-
|
|
6809
|
-
|
|
6810
|
-
|
|
6811
|
-
|
|
6812
|
-
|
|
6813
|
-
|
|
6814
|
-
|
|
6815
|
-
|
|
6816
|
-
|
|
6817
|
-
|
|
6818
|
-
|
|
6819
|
-
|
|
6820
|
-
|
|
6868
|
+
const pre = (props) => /* @__PURE__ */ jsx("pre", { ...props });
|
|
6869
|
+
const mdxComponents$3 = {
|
|
6870
|
+
Accordion: AccordionComponent,
|
|
6871
|
+
// override the pre-with-buttons
|
|
6872
|
+
pre
|
|
6873
|
+
};
|
|
6874
|
+
function Diff({
|
|
6875
|
+
diff,
|
|
6876
|
+
allApps
|
|
6877
|
+
}) {
|
|
6878
|
+
const submit = useSubmit();
|
|
6879
|
+
const [params] = useSearchParams();
|
|
6880
|
+
const paramsWithForcedRefresh = new URLSearchParams(params);
|
|
6881
|
+
paramsWithForcedRefresh.set("forceFresh", "diff");
|
|
6882
|
+
const navigation = useNavigation();
|
|
6883
|
+
const spinnerNavigating = useSpinDelay(navigation.state !== "idle", {
|
|
6884
|
+
delay: 0,
|
|
6885
|
+
minDuration: 1e3
|
|
6886
|
+
});
|
|
6887
|
+
const hiddenInputs = [];
|
|
6888
|
+
for (const [key, value] of params.entries()) {
|
|
6889
|
+
if (key === "app1" || key === "app2")
|
|
6890
|
+
continue;
|
|
6891
|
+
hiddenInputs.push(
|
|
6892
|
+
/* @__PURE__ */ jsx("input", { type: "hidden", name: key, value }, key)
|
|
6893
|
+
);
|
|
6894
|
+
}
|
|
6895
|
+
return /* @__PURE__ */ jsx(
|
|
6896
|
+
Suspense,
|
|
6897
|
+
{
|
|
6898
|
+
fallback: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx(SimpleTooltip, { content: "Loading diff", children: /* @__PURE__ */ jsx(Icon, { name: "Refresh", className: "animate-spin" }) }) }),
|
|
6899
|
+
children: /* @__PURE__ */ jsx(
|
|
6900
|
+
Await,
|
|
6821
6901
|
{
|
|
6822
|
-
|
|
6823
|
-
|
|
6824
|
-
|
|
6825
|
-
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6829
|
-
|
|
6830
|
-
|
|
6902
|
+
resolve: diff,
|
|
6903
|
+
errorElement: /* @__PURE__ */ jsx("p", { className: "p-6 text-foreground-danger", children: "There was an error calculating the diff. Sorry." }),
|
|
6904
|
+
children: (diff2) => /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col", children: [
|
|
6905
|
+
/* @__PURE__ */ jsxs("div", { className: "flex h-14 min-h-14 w-full overflow-x-hidden border-b", children: [
|
|
6906
|
+
/* @__PURE__ */ jsx("div", { className: "border-r", children: /* @__PURE__ */ jsx(SimpleTooltip, { content: "Reload diff", children: /* @__PURE__ */ jsx(
|
|
6907
|
+
Link,
|
|
6908
|
+
{
|
|
6909
|
+
to: `.?${paramsWithForcedRefresh}`,
|
|
6910
|
+
className: "flex h-full w-14 items-center justify-center",
|
|
6911
|
+
children: /* @__PURE__ */ jsx(
|
|
6912
|
+
Icon,
|
|
6913
|
+
{
|
|
6914
|
+
name: "Refresh",
|
|
6915
|
+
className: cn({ "animate-spin": spinnerNavigating })
|
|
6916
|
+
}
|
|
6917
|
+
)
|
|
6918
|
+
}
|
|
6919
|
+
) }) }),
|
|
6920
|
+
/* @__PURE__ */ jsxs(
|
|
6921
|
+
Form,
|
|
6922
|
+
{
|
|
6923
|
+
onChange: (e) => submit(e.currentTarget),
|
|
6924
|
+
className: "flex h-full flex-1 items-center overflow-x-auto scrollbar-thin scrollbar-thumb-scrollbar",
|
|
6925
|
+
children: [
|
|
6926
|
+
hiddenInputs,
|
|
6927
|
+
/* @__PURE__ */ jsx(
|
|
6928
|
+
SelectFileToDiff,
|
|
6929
|
+
{
|
|
6930
|
+
name: "app1",
|
|
6931
|
+
label: "App 1",
|
|
6932
|
+
className: "border-r",
|
|
6933
|
+
allApps,
|
|
6934
|
+
defaultValue: diff2.app1
|
|
6935
|
+
}
|
|
6936
|
+
),
|
|
6937
|
+
/* @__PURE__ */ jsx(
|
|
6938
|
+
SelectFileToDiff,
|
|
6939
|
+
{
|
|
6940
|
+
name: "app2",
|
|
6941
|
+
label: "App 2",
|
|
6942
|
+
allApps,
|
|
6943
|
+
defaultValue: diff2.app2
|
|
6944
|
+
}
|
|
6945
|
+
)
|
|
6946
|
+
]
|
|
6947
|
+
},
|
|
6948
|
+
`${diff2.app1}${diff2.app2}`
|
|
6949
|
+
)
|
|
6950
|
+
] }),
|
|
6951
|
+
/* @__PURE__ */ jsx("div", { className: "flex-grow overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar", children: diff2.diffCode ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Accordion.Root, { className: "w-full", type: "multiple", children: /* @__PURE__ */ jsx(Mdx, { code: diff2.diffCode, components: mdxComponents$3 }) }) }) : diff2.app1 && diff2.app2 ? /* @__PURE__ */ jsx("p", { className: "m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background", children: "There was a problem generating the diff" }) : /* @__PURE__ */ jsx("p", { className: "m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background", children: "Select two apps to compare" }) })
|
|
6952
|
+
] })
|
|
6831
6953
|
}
|
|
6832
|
-
|
|
6954
|
+
)
|
|
6955
|
+
}
|
|
6956
|
+
);
|
|
6957
|
+
}
|
|
6958
|
+
function SelectFileToDiff({
|
|
6959
|
+
name,
|
|
6960
|
+
label,
|
|
6961
|
+
className,
|
|
6962
|
+
allApps,
|
|
6963
|
+
defaultValue
|
|
6964
|
+
}) {
|
|
6965
|
+
return /* @__PURE__ */ jsxs(Select.Root, { name, defaultValue, children: [
|
|
6966
|
+
/* @__PURE__ */ jsxs(
|
|
6967
|
+
Select.Trigger,
|
|
6968
|
+
{
|
|
6969
|
+
className: clsx(
|
|
6970
|
+
"flex h-full w-full max-w-[50%] items-center justify-between px-3 text-left radix-placeholder:text-gray-500 focus-visible:outline-none",
|
|
6971
|
+
className
|
|
6972
|
+
),
|
|
6973
|
+
"aria-label": `Select ${label} for git Diff`,
|
|
6974
|
+
children: [
|
|
6975
|
+
/* @__PURE__ */ jsxs("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap", children: [
|
|
6976
|
+
label,
|
|
6977
|
+
": ",
|
|
6978
|
+
" ",
|
|
6979
|
+
/* @__PURE__ */ jsx(
|
|
6980
|
+
SelectValue,
|
|
6981
|
+
{
|
|
6982
|
+
placeholder: `Select ${label}`,
|
|
6983
|
+
className: "inline-block w-40 text-ellipsis"
|
|
6984
|
+
}
|
|
6985
|
+
)
|
|
6986
|
+
] }),
|
|
6987
|
+
/* @__PURE__ */ jsx(Select.Icon, { className: "", children: /* @__PURE__ */ jsx(Icon, { name: "TriangleDownSmall" }) })
|
|
6988
|
+
]
|
|
6833
6989
|
}
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
|
|
6837
|
-
|
|
6838
|
-
|
|
6839
|
-
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6846
|
-
|
|
6847
|
-
|
|
6990
|
+
),
|
|
6991
|
+
/* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsxs(
|
|
6992
|
+
Select.Content,
|
|
6993
|
+
{
|
|
6994
|
+
position: "popper",
|
|
6995
|
+
align: "start",
|
|
6996
|
+
className: "z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",
|
|
6997
|
+
children: [
|
|
6998
|
+
/* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronUp" }) }),
|
|
6999
|
+
/* @__PURE__ */ jsx(Select.Viewport, { className: "p-3", children: /* @__PURE__ */ jsxs(Select.Group, { children: [
|
|
7000
|
+
/* @__PURE__ */ jsx(Select.Label, { className: "px-5 pb-3 font-mono uppercase", children: label }),
|
|
7001
|
+
allApps.map((app) => {
|
|
7002
|
+
return /* @__PURE__ */ jsx(SelectItem$1, { value: app.name, children: app.displayName }, app.name);
|
|
7003
|
+
})
|
|
7004
|
+
] }) }),
|
|
7005
|
+
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
|
|
7006
|
+
]
|
|
6848
7007
|
}
|
|
6849
|
-
}
|
|
6850
|
-
});
|
|
7008
|
+
) })
|
|
7009
|
+
] });
|
|
7010
|
+
}
|
|
7011
|
+
const SelectItem$1 = React__default.forwardRef(
|
|
7012
|
+
({ children, className, ...props }, forwardedRef) => {
|
|
7013
|
+
return /* @__PURE__ */ jsxs(
|
|
7014
|
+
Select.Item,
|
|
7015
|
+
{
|
|
7016
|
+
className: clsx(
|
|
7017
|
+
"relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100",
|
|
7018
|
+
className
|
|
7019
|
+
),
|
|
7020
|
+
...props,
|
|
7021
|
+
ref: forwardedRef,
|
|
7022
|
+
children: [
|
|
7023
|
+
/* @__PURE__ */ jsx(Select.ItemText, { children }),
|
|
7024
|
+
/* @__PURE__ */ jsx(Select.ItemIndicator, { className: "absolute left-0 inline-flex w-[25px] items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "CheckSmall" }) })
|
|
7025
|
+
]
|
|
7026
|
+
}
|
|
7027
|
+
);
|
|
7028
|
+
}
|
|
7029
|
+
);
|
|
7030
|
+
const SelectValue = React__default.forwardRef(
|
|
7031
|
+
({ children, className, ...props }, forwardedRef) => {
|
|
7032
|
+
return /* @__PURE__ */ jsx(Select.Value, { ...props, ref: forwardedRef, children: props.value });
|
|
7033
|
+
}
|
|
7034
|
+
);
|
|
7035
|
+
function NavChevrons({
|
|
7036
|
+
prev,
|
|
7037
|
+
next
|
|
7038
|
+
}) {
|
|
7039
|
+
return /* @__PURE__ */ jsxs("div", { className: "relative flex h-full overflow-hidden", children: [
|
|
7040
|
+
prev ? /* @__PURE__ */ jsx(
|
|
7041
|
+
Link,
|
|
7042
|
+
{
|
|
7043
|
+
prefetch: "intent",
|
|
7044
|
+
...prev,
|
|
7045
|
+
className: "group flex h-full items-center justify-center border-l px-7",
|
|
7046
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7047
|
+
/* @__PURE__ */ jsx(
|
|
7048
|
+
Icon,
|
|
7049
|
+
{
|
|
7050
|
+
name: "ChevronLeft",
|
|
7051
|
+
className: "absolute opacity-100 transition duration-300 ease-in-out group-hover:translate-y-10 group-hover:opacity-0"
|
|
7052
|
+
}
|
|
7053
|
+
),
|
|
7054
|
+
/* @__PURE__ */ jsx(
|
|
7055
|
+
Icon,
|
|
7056
|
+
{
|
|
7057
|
+
name: "ChevronLeft",
|
|
7058
|
+
className: "absolute -translate-y-10 opacity-0 transition duration-300 ease-in-out group-hover:translate-y-0 group-hover:opacity-100"
|
|
7059
|
+
}
|
|
7060
|
+
)
|
|
7061
|
+
] })
|
|
7062
|
+
}
|
|
7063
|
+
) : null,
|
|
7064
|
+
next ? /* @__PURE__ */ jsx(
|
|
7065
|
+
Link,
|
|
7066
|
+
{
|
|
7067
|
+
prefetch: "intent",
|
|
7068
|
+
...next,
|
|
7069
|
+
className: "group flex h-full items-center justify-center border-l px-7",
|
|
7070
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
7071
|
+
/* @__PURE__ */ jsx(
|
|
7072
|
+
Icon,
|
|
7073
|
+
{
|
|
7074
|
+
name: "ChevronRight",
|
|
7075
|
+
className: "absolute opacity-100 transition duration-300 ease-in-out group-hover:translate-y-10 group-hover:opacity-0"
|
|
7076
|
+
}
|
|
7077
|
+
),
|
|
7078
|
+
/* @__PURE__ */ jsx(
|
|
7079
|
+
Icon,
|
|
7080
|
+
{
|
|
7081
|
+
name: "ChevronRight",
|
|
7082
|
+
className: "absolute -translate-y-10 opacity-0 transition duration-300 ease-in-out group-hover:translate-y-0 group-hover:opacity-100"
|
|
7083
|
+
}
|
|
7084
|
+
)
|
|
7085
|
+
] })
|
|
7086
|
+
}
|
|
7087
|
+
) : null
|
|
7088
|
+
] });
|
|
6851
7089
|
}
|
|
6852
7090
|
const port = process.env.PORT || "5639";
|
|
6853
7091
|
const scope = "guilds.join identify messages.read";
|
|
@@ -6929,253 +7167,6 @@ const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
6929
7167
|
getDiscordAuthURL,
|
|
6930
7168
|
loader: loader$m
|
|
6931
7169
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6932
|
-
async function loader$l() {
|
|
6933
|
-
return json({ discordAuthUrl: getDiscordAuthURL() });
|
|
6934
|
-
}
|
|
6935
|
-
function useDiscordCTALink({
|
|
6936
|
-
discordAuthUrl
|
|
6937
|
-
}) {
|
|
6938
|
-
const user = useOptionalUser();
|
|
6939
|
-
const discordMember = useOptionalDiscordMember();
|
|
6940
|
-
if (!user) {
|
|
6941
|
-
return "/login";
|
|
6942
|
-
}
|
|
6943
|
-
if (!discordMember) {
|
|
6944
|
-
return discordAuthUrl;
|
|
6945
|
-
}
|
|
6946
|
-
return "https://discord.com/channels/715220730605731931/1161045224907341972";
|
|
6947
|
-
}
|
|
6948
|
-
function DiscordCTA({ discordAuthUrl }) {
|
|
6949
|
-
const user = useOptionalUser();
|
|
6950
|
-
const discordMember = useOptionalDiscordMember();
|
|
6951
|
-
if (!user) {
|
|
6952
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xl", children: [
|
|
6953
|
-
/* @__PURE__ */ jsxs(Link, { to: "/login", className: "inline-flex items-center gap-2 underline", children: [
|
|
6954
|
-
/* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }),
|
|
6955
|
-
"Login"
|
|
6956
|
-
] }),
|
|
6957
|
-
" ",
|
|
6958
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
6959
|
-
"to get access to the exclusive",
|
|
6960
|
-
" ",
|
|
6961
|
-
/* @__PURE__ */ jsx(Link, { to: "/discord", className: "underline", children: "discord channel" }),
|
|
6962
|
-
"."
|
|
6963
|
-
] })
|
|
6964
|
-
] });
|
|
6965
|
-
}
|
|
6966
|
-
if (!discordMember) {
|
|
6967
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xl", children: [
|
|
6968
|
-
/* @__PURE__ */ jsxs(Link, { to: discordAuthUrl, className: "flex items-center gap-2 underline", children: [
|
|
6969
|
-
/* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }),
|
|
6970
|
-
"Connect Discord"
|
|
6971
|
-
] }),
|
|
6972
|
-
" ",
|
|
6973
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
6974
|
-
"to get access to the exclusive",
|
|
6975
|
-
" ",
|
|
6976
|
-
/* @__PURE__ */ jsx(Link, { to: "/discord", className: "underline", children: "discord channel" }),
|
|
6977
|
-
"."
|
|
6978
|
-
] })
|
|
6979
|
-
] });
|
|
6980
|
-
}
|
|
6981
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 text-xl underline", children: [
|
|
6982
|
-
/* @__PURE__ */ jsx(Link, { to: "discord://discord.com/channels/715220730605731931/1161045224907341972", children: /* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }) }),
|
|
6983
|
-
/* @__PURE__ */ jsx(
|
|
6984
|
-
Link,
|
|
6985
|
-
{
|
|
6986
|
-
to: "https://discord.com/channels/715220730605731931/1161045224907341972",
|
|
6987
|
-
target: "_blank",
|
|
6988
|
-
rel: "noreferrer noopener",
|
|
6989
|
-
children: "Open Discord"
|
|
6990
|
-
}
|
|
6991
|
-
)
|
|
6992
|
-
] });
|
|
6993
|
-
}
|
|
6994
|
-
function DiscordRoute() {
|
|
6995
|
-
const data = useLoaderData();
|
|
6996
|
-
return /* @__PURE__ */ jsxs("div", { className: "container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12", children: [
|
|
6997
|
-
/* @__PURE__ */ jsx(DiscordCTA, { discordAuthUrl: data.discordAuthUrl }),
|
|
6998
|
-
/* @__PURE__ */ jsxs("p", { children: [
|
|
6999
|
-
"The",
|
|
7000
|
-
" ",
|
|
7001
|
-
/* @__PURE__ */ jsx(
|
|
7002
|
-
Link,
|
|
7003
|
-
{
|
|
7004
|
-
target: "_blank",
|
|
7005
|
-
rel: "noreferrer noopener",
|
|
7006
|
-
className: "underline",
|
|
7007
|
-
to: "https://kentcdodds.com/discord",
|
|
7008
|
-
children: "Epic Web Community on Discord"
|
|
7009
|
-
}
|
|
7010
|
-
),
|
|
7011
|
-
" ",
|
|
7012
|
-
"is a great place to hang out with other developers who are working through this workshop. You can ask questions, get help, and solidify what you're learning by helping others."
|
|
7013
|
-
] }),
|
|
7014
|
-
/* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsxs("small", { className: "text-sm", children: [
|
|
7015
|
-
"If you've not joined the Epic Web Community on Discord yet, you'll be required to go through a short onboarding process first. A friendly bot will explain the process when you",
|
|
7016
|
-
" ",
|
|
7017
|
-
/* @__PURE__ */ jsx(
|
|
7018
|
-
Link,
|
|
7019
|
-
{
|
|
7020
|
-
to: "https://kcd.im/discord",
|
|
7021
|
-
target: "_blank",
|
|
7022
|
-
rel: "noreferrer noopener",
|
|
7023
|
-
className: "underline",
|
|
7024
|
-
children: "join"
|
|
7025
|
-
}
|
|
7026
|
-
),
|
|
7027
|
-
"."
|
|
7028
|
-
] }) })
|
|
7029
|
-
] });
|
|
7030
|
-
}
|
|
7031
|
-
const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7032
|
-
__proto__: null,
|
|
7033
|
-
DiscordCTA,
|
|
7034
|
-
default: DiscordRoute,
|
|
7035
|
-
loader: loader$l,
|
|
7036
|
-
useDiscordCTALink
|
|
7037
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
7038
|
-
function DiscordChat() {
|
|
7039
|
-
const data = useLoaderData();
|
|
7040
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col gap-4 pt-4", children: [
|
|
7041
|
-
/* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsx(DiscordCTA, { discordAuthUrl: data.discordAuthUrl }) }),
|
|
7042
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar", children: /* @__PURE__ */ jsx(DiscordPosts, {}) })
|
|
7043
|
-
] });
|
|
7044
|
-
}
|
|
7045
|
-
function DiscordPosts() {
|
|
7046
|
-
const data = useLoaderData();
|
|
7047
|
-
const ctaLink = useDiscordCTALink({ discordAuthUrl: data.discordAuthUrl });
|
|
7048
|
-
const altDown = useAltDown();
|
|
7049
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-between", children: [
|
|
7050
|
-
/* @__PURE__ */ jsx(
|
|
7051
|
-
React.Suspense,
|
|
7052
|
-
{
|
|
7053
|
-
fallback: /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col items-center justify-center", children: /* @__PURE__ */ jsx(Loading, { children: "Loading Discord Posts" }) }),
|
|
7054
|
-
children: /* @__PURE__ */ jsx(
|
|
7055
|
-
Await,
|
|
7056
|
-
{
|
|
7057
|
-
resolve: data.discordPostsPromise,
|
|
7058
|
-
errorElement: /* @__PURE__ */ jsx("div", { className: "text-red-500", children: "There was a problem loading the discord posts" }),
|
|
7059
|
-
children: (posts) => /* @__PURE__ */ jsx("ul", { className: "flex w-full flex-col gap-4 p-3 xl:p-12", children: posts.map((post) => /* @__PURE__ */ jsx(
|
|
7060
|
-
"li",
|
|
7061
|
-
{
|
|
7062
|
-
className: "rounded-xl border bg-background transition-all duration-200 focus-within:-translate-y-1 focus-within:shadow-lg hover:-translate-y-1 hover:shadow-lg",
|
|
7063
|
-
children: /* @__PURE__ */ jsx(DiscordPost, { thread: post })
|
|
7064
|
-
},
|
|
7065
|
-
post.id
|
|
7066
|
-
)) })
|
|
7067
|
-
}
|
|
7068
|
-
)
|
|
7069
|
-
}
|
|
7070
|
-
),
|
|
7071
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
7072
|
-
Link,
|
|
7073
|
-
{
|
|
7074
|
-
to: altDown && !ctaLink.includes("oauth") ? ctaLink.replace(/^https/, "discord") : ctaLink,
|
|
7075
|
-
target: ctaLink.includes("oauth") ? void 0 : "_blank",
|
|
7076
|
-
rel: "noreferrer noopener",
|
|
7077
|
-
onClick: altDown ? (e) => {
|
|
7078
|
-
e.preventDefault();
|
|
7079
|
-
window.open(
|
|
7080
|
-
e.currentTarget.href,
|
|
7081
|
-
"_blank",
|
|
7082
|
-
"noreferrer noopener"
|
|
7083
|
-
);
|
|
7084
|
-
} : void 0,
|
|
7085
|
-
className: "flex items-center gap-2 p-2 text-xl hover:underline",
|
|
7086
|
-
children: [
|
|
7087
|
-
"Create Post ",
|
|
7088
|
-
/* @__PURE__ */ jsx(Icon, { name: "ExternalLink" })
|
|
7089
|
-
]
|
|
7090
|
-
}
|
|
7091
|
-
) })
|
|
7092
|
-
] });
|
|
7093
|
-
}
|
|
7094
|
-
function DiscordPost({ thread }) {
|
|
7095
|
-
const reactionsWithCounts = thread.reactions.filter((r) => r.count);
|
|
7096
|
-
const hints = useHints();
|
|
7097
|
-
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 p-4", children: [
|
|
7098
|
-
/* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
|
|
7099
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
7100
|
-
thread.tags.length ? /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: thread.tags.map((t) => /* @__PURE__ */ jsxs(
|
|
7101
|
-
"div",
|
|
7102
|
-
{
|
|
7103
|
-
className: "flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm",
|
|
7104
|
-
children: [
|
|
7105
|
-
/* @__PURE__ */ jsx("span", { className: "h-3 w-3 leading-3", children: /* @__PURE__ */ jsx(Emoji, { name: t.emojiName, url: t.emojiUrl }) }),
|
|
7106
|
-
/* @__PURE__ */ jsx("span", { children: t.name })
|
|
7107
|
-
]
|
|
7108
|
-
},
|
|
7109
|
-
t.name
|
|
7110
|
-
)) }) : null,
|
|
7111
|
-
/* @__PURE__ */ jsx("strong", { className: "text-xl font-bold", children: thread.name }),
|
|
7112
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-1", children: [
|
|
7113
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
7114
|
-
thread.authorAvatarUrl ? /* @__PURE__ */ jsx(
|
|
7115
|
-
"img",
|
|
7116
|
-
{
|
|
7117
|
-
src: thread.authorAvatarUrl,
|
|
7118
|
-
alt: "",
|
|
7119
|
-
className: "h-6 w-6 rounded-full"
|
|
7120
|
-
}
|
|
7121
|
-
) : null,
|
|
7122
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
7123
|
-
/* @__PURE__ */ jsx(
|
|
7124
|
-
"span",
|
|
7125
|
-
{
|
|
7126
|
-
className: "font-bold",
|
|
7127
|
-
style: thread.authorHexAccentColor ? { color: thread.authorHexAccentColor } : {},
|
|
7128
|
-
children: thread.authorDisplayName
|
|
7129
|
-
}
|
|
7130
|
-
),
|
|
7131
|
-
":",
|
|
7132
|
-
" "
|
|
7133
|
-
] })
|
|
7134
|
-
] }),
|
|
7135
|
-
/* @__PURE__ */ jsx("span", { className: "flex-1 overflow-ellipsis text-muted-foreground", children: thread.messagePreview })
|
|
7136
|
-
] })
|
|
7137
|
-
] }),
|
|
7138
|
-
thread.previewImageUrl ? /* @__PURE__ */ jsx(
|
|
7139
|
-
"img",
|
|
7140
|
-
{
|
|
7141
|
-
src: thread.previewImageUrl,
|
|
7142
|
-
alt: "",
|
|
7143
|
-
className: "h-28 w-28 rounded-lg object-cover"
|
|
7144
|
-
}
|
|
7145
|
-
) : null
|
|
7146
|
-
] }),
|
|
7147
|
-
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
|
7148
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7149
|
-
/* @__PURE__ */ jsx("span", { children: reactionsWithCounts.length ? /* @__PURE__ */ jsx("ul", { className: "flex items-center gap-2", children: reactionsWithCounts.map((r, i) => /* @__PURE__ */ jsxs(
|
|
7150
|
-
"li",
|
|
7151
|
-
{
|
|
7152
|
-
className: "flex items-center gap-1 rounded-md border border-blue-600 bg-blue-500/20 px-[5px] py-[0.5px] text-sm",
|
|
7153
|
-
children: [
|
|
7154
|
-
/* @__PURE__ */ jsx("span", { className: "h-3 w-3 leading-3", children: /* @__PURE__ */ jsx(Emoji, { name: r.emojiName, url: r.emojiUrl }) }),
|
|
7155
|
-
/* @__PURE__ */ jsx("span", { children: r.count })
|
|
7156
|
-
]
|
|
7157
|
-
},
|
|
7158
|
-
i
|
|
7159
|
-
)) }) : null }),
|
|
7160
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
7161
|
-
/* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
7162
|
-
/* @__PURE__ */ jsx(Icon, { name: "Chat" }),
|
|
7163
|
-
" ",
|
|
7164
|
-
thread.messageCount
|
|
7165
|
-
] }),
|
|
7166
|
-
` · ${dayjs(thread.lastUpdated).tz(hints.timeZone).fromNow()}`
|
|
7167
|
-
] })
|
|
7168
|
-
] }),
|
|
7169
|
-
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-4", children: [
|
|
7170
|
-
/* @__PURE__ */ jsx("a", { href: thread.link.replace(/^https/, "discord"), children: /* @__PURE__ */ jsx(Icon, { name: "Discord" }) }),
|
|
7171
|
-
/* @__PURE__ */ jsx("a", { href: thread.link, target: "_blank", rel: "noreferrer noopener", children: /* @__PURE__ */ jsx(Icon, { name: "ExternalLink" }) })
|
|
7172
|
-
] })
|
|
7173
|
-
] })
|
|
7174
|
-
] }) });
|
|
7175
|
-
}
|
|
7176
|
-
function Emoji({ name, url }) {
|
|
7177
|
-
return url ? /* @__PURE__ */ jsx("img", { src: url, alt: name, className: "h-full w-full" }) : name ? name : null;
|
|
7178
|
-
}
|
|
7179
7170
|
const epicshopTempDir = path.join(os.tmpdir(), "epicshop");
|
|
7180
7171
|
const isDeployed = ENV.EPICSHOP_DEPLOYED;
|
|
7181
7172
|
const diffTmpDir = path.join(epicshopTempDir, "diff");
|
|
@@ -7235,10 +7226,7 @@ function getFileCodeblocks(file, filePathApp1, filePathApp2, type) {
|
|
|
7235
7226
|
type === "AddedFile" ? `Binary file added` : type === "DeletedFile" ? "Binary file deleted" : "Binary file changed"
|
|
7236
7227
|
);
|
|
7237
7228
|
} else {
|
|
7238
|
-
startLine = chunk.type === "Chunk" ? chunk.fromFileRange.start :
|
|
7239
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
7240
|
-
chunk.type === "CombinedChunk" ? chunk.fromFileRangeA.start : 1
|
|
7241
|
-
);
|
|
7229
|
+
startLine = chunk.type === "Chunk" ? chunk.fromFileRange.start : chunk.type === "CombinedChunk" ? chunk.fromFileRangeA.start : 1;
|
|
7242
7230
|
toStartLine = chunk.toFileRange.start;
|
|
7243
7231
|
for (let lineNumber = 0; lineNumber < chunk.changes.length; lineNumber++) {
|
|
7244
7232
|
const change = chunk.changes[lineNumber];
|
|
@@ -7442,7 +7430,6 @@ async function getDiffFilesImpl(app1, app2) {
|
|
|
7442
7430
|
};
|
|
7443
7431
|
return parsed.files.map((file) => ({
|
|
7444
7432
|
// prettier-ignore
|
|
7445
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
7446
7433
|
status: typesMap[file.type] ?? "unknown",
|
|
7447
7434
|
path: diffPathToRelative(
|
|
7448
7435
|
file.type === "RenamedFile" ? file.pathBefore : file.path
|
|
@@ -7680,75 +7667,415 @@ function PlaygroundChooser({
|
|
|
7680
7667
|
/* @__PURE__ */ jsx("span", { className: "w-80 flex-1 overflow-hidden text-ellipsis whitespace-nowrap scrollbar-thin scrollbar-thumb-scrollbar", children: /* @__PURE__ */ jsx(
|
|
7681
7668
|
Select.Value,
|
|
7682
7669
|
{
|
|
7683
|
-
placeholder: "Select current app",
|
|
7684
|
-
className: "inline-block w-40 text-ellipsis"
|
|
7670
|
+
placeholder: "Select current app",
|
|
7671
|
+
className: "inline-block w-40 text-ellipsis"
|
|
7672
|
+
}
|
|
7673
|
+
) }),
|
|
7674
|
+
/* @__PURE__ */ jsx(Select.Icon, { children: /* @__PURE__ */ jsx(Icon, { name: "TriangleDownSmall" }) })
|
|
7675
|
+
]
|
|
7676
|
+
}
|
|
7677
|
+
),
|
|
7678
|
+
/* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsxs(
|
|
7679
|
+
Select.Content,
|
|
7680
|
+
{
|
|
7681
|
+
position: "popper",
|
|
7682
|
+
align: "start",
|
|
7683
|
+
className: "z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",
|
|
7684
|
+
children: [
|
|
7685
|
+
/* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronUp" }) }),
|
|
7686
|
+
/* @__PURE__ */ jsx(Select.Viewport, { className: "p-3", children: /* @__PURE__ */ jsxs(Select.Group, { children: [
|
|
7687
|
+
/* @__PURE__ */ jsx(Select.Label, { className: "px-5 pb-3 font-mono uppercase", children: "App" }),
|
|
7688
|
+
allApps.filter((app) => app.name !== "playground").map((app) => {
|
|
7689
|
+
return /* @__PURE__ */ jsx(SelectItem, { value: app.name, children: app.displayName }, app.name);
|
|
7690
|
+
})
|
|
7691
|
+
] }) }),
|
|
7692
|
+
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
|
|
7693
|
+
]
|
|
7694
|
+
}
|
|
7695
|
+
) })
|
|
7696
|
+
]
|
|
7697
|
+
}
|
|
7698
|
+
);
|
|
7699
|
+
}
|
|
7700
|
+
function SelectItem({
|
|
7701
|
+
value,
|
|
7702
|
+
children
|
|
7703
|
+
}) {
|
|
7704
|
+
return /* @__PURE__ */ jsxs(
|
|
7705
|
+
Select.Item,
|
|
7706
|
+
{
|
|
7707
|
+
value,
|
|
7708
|
+
className: "relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100",
|
|
7709
|
+
children: [
|
|
7710
|
+
/* @__PURE__ */ jsx(Select.ItemText, { children }),
|
|
7711
|
+
/* @__PURE__ */ jsx(Select.ItemIndicator, { className: "absolute left-0 inline-flex w-[25px] items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "CheckSmall" }) })
|
|
7712
|
+
]
|
|
7713
|
+
}
|
|
7714
|
+
);
|
|
7715
|
+
}
|
|
7716
|
+
function SetAppToPlayground({ appName }) {
|
|
7717
|
+
if (ENV.EPICSHOP_DEPLOYED)
|
|
7718
|
+
return null;
|
|
7719
|
+
return /* @__PURE__ */ jsx(
|
|
7720
|
+
SetPlayground,
|
|
7721
|
+
{
|
|
7722
|
+
appName,
|
|
7723
|
+
tooltipText: "Playground is not set to the right app. Click to set Playground.",
|
|
7724
|
+
children: /* @__PURE__ */ jsxs("span", { className: "flex items-center justify-center gap-1 text-foreground-danger hover:underline", children: [
|
|
7725
|
+
/* @__PURE__ */ jsx(Icon, { name: "Unlinked", className: "animate-ping" }),
|
|
7726
|
+
" ",
|
|
7727
|
+
/* @__PURE__ */ jsx("span", { className: "uppercase", children: "Set to Playground" })
|
|
7728
|
+
] })
|
|
7729
|
+
}
|
|
7730
|
+
);
|
|
7731
|
+
}
|
|
7732
|
+
const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7733
|
+
__proto__: null,
|
|
7734
|
+
PlaygroundChooser,
|
|
7735
|
+
SetAppToPlayground,
|
|
7736
|
+
SetPlayground,
|
|
7737
|
+
action: action$8
|
|
7738
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
7739
|
+
const EmojiDataSchema = z$1.union([
|
|
7740
|
+
z$1.object({
|
|
7741
|
+
emojiName: z$1.never().optional(),
|
|
7742
|
+
emojiUrl: z$1.string()
|
|
7743
|
+
}),
|
|
7744
|
+
z$1.object({
|
|
7745
|
+
emojiName: z$1.string(),
|
|
7746
|
+
emojiUrl: z$1.never().optional()
|
|
7747
|
+
}),
|
|
7748
|
+
z$1.object({
|
|
7749
|
+
emojiName: z$1.never().optional(),
|
|
7750
|
+
emojiUrl: z$1.never().optional()
|
|
7751
|
+
})
|
|
7752
|
+
]);
|
|
7753
|
+
const ThreadItemSchema = z$1.object({
|
|
7754
|
+
id: z$1.string(),
|
|
7755
|
+
tags: z$1.array(
|
|
7756
|
+
z$1.object({
|
|
7757
|
+
name: z$1.string()
|
|
7758
|
+
}).and(EmojiDataSchema)
|
|
7759
|
+
),
|
|
7760
|
+
name: z$1.string(),
|
|
7761
|
+
link: z$1.string(),
|
|
7762
|
+
authorDisplayName: z$1.string(),
|
|
7763
|
+
authorHexAccentColor: z$1.string().nullable().optional(),
|
|
7764
|
+
authorAvatarUrl: z$1.string().nullable(),
|
|
7765
|
+
messagePreview: z$1.string(),
|
|
7766
|
+
messageCount: z$1.number(),
|
|
7767
|
+
lastUpdated: z$1.string(),
|
|
7768
|
+
previewImageUrl: z$1.string().nullable(),
|
|
7769
|
+
reactions: z$1.array(
|
|
7770
|
+
z$1.object({
|
|
7771
|
+
count: z$1.number()
|
|
7772
|
+
}).and(EmojiDataSchema)
|
|
7773
|
+
)
|
|
7774
|
+
});
|
|
7775
|
+
const ThreadDataSchema = z$1.array(ThreadItemSchema);
|
|
7776
|
+
const EpicForumResponseSchema = z$1.object({
|
|
7777
|
+
status: z$1.literal("error"),
|
|
7778
|
+
error: z$1.string()
|
|
7779
|
+
}).or(
|
|
7780
|
+
z$1.object({
|
|
7781
|
+
status: z$1.literal("success"),
|
|
7782
|
+
threadData: ThreadDataSchema
|
|
7783
|
+
})
|
|
7784
|
+
);
|
|
7785
|
+
async function fetchDiscordPosts({ request }) {
|
|
7786
|
+
return cachified({
|
|
7787
|
+
key: "fetchDiscordPosts",
|
|
7788
|
+
request,
|
|
7789
|
+
cache: fsCache,
|
|
7790
|
+
ttl: 1e3 * 60 * 2,
|
|
7791
|
+
swr: 1e3 * 60 * 60 * 24 * 7,
|
|
7792
|
+
checkValue: ThreadDataSchema,
|
|
7793
|
+
async getFreshValue() {
|
|
7794
|
+
const forceFresh = await shouldForceFresh({ request });
|
|
7795
|
+
const searchParams = new URLSearchParams(
|
|
7796
|
+
forceFresh ? { fresh: "true" } : {}
|
|
7797
|
+
);
|
|
7798
|
+
const result = await fetch(
|
|
7799
|
+
// `http://localhost:3000/resources/epic-web-forum?${searchParams}`,
|
|
7800
|
+
`https://kcd-discord-bot-v2.fly.dev/resources/epic-web-forum?${searchParams}`,
|
|
7801
|
+
{
|
|
7802
|
+
method: "POST",
|
|
7803
|
+
headers: { "content-type": "application/json" }
|
|
7804
|
+
}
|
|
7805
|
+
);
|
|
7806
|
+
if (!result.ok) {
|
|
7807
|
+
console.error(`There was an error communicating with discord`);
|
|
7808
|
+
try {
|
|
7809
|
+
console.error(await result.text());
|
|
7810
|
+
} catch {
|
|
7811
|
+
}
|
|
7812
|
+
return [];
|
|
7813
|
+
}
|
|
7814
|
+
const jsonResult = await result.json();
|
|
7815
|
+
const epicForumResponseResult = EpicForumResponseSchema.safeParse(jsonResult);
|
|
7816
|
+
if (epicForumResponseResult.success) {
|
|
7817
|
+
if (epicForumResponseResult.data.status === "error") {
|
|
7818
|
+
console.error(`There was an error communicating with discord`);
|
|
7819
|
+
console.error(epicForumResponseResult.data.error);
|
|
7820
|
+
return [];
|
|
7821
|
+
} else {
|
|
7822
|
+
return epicForumResponseResult.data.threadData;
|
|
7823
|
+
}
|
|
7824
|
+
} else {
|
|
7825
|
+
console.error(`There was an error parsing the discord response`);
|
|
7826
|
+
console.error(epicForumResponseResult.error.flatten());
|
|
7827
|
+
return [];
|
|
7828
|
+
}
|
|
7829
|
+
}
|
|
7830
|
+
});
|
|
7831
|
+
}
|
|
7832
|
+
async function loader$l() {
|
|
7833
|
+
return json({ discordAuthUrl: getDiscordAuthURL() });
|
|
7834
|
+
}
|
|
7835
|
+
function useDiscordCTALink({
|
|
7836
|
+
discordAuthUrl
|
|
7837
|
+
}) {
|
|
7838
|
+
const user = useOptionalUser();
|
|
7839
|
+
const discordMember = useOptionalDiscordMember();
|
|
7840
|
+
if (!user) {
|
|
7841
|
+
return "/login";
|
|
7842
|
+
}
|
|
7843
|
+
if (!discordMember) {
|
|
7844
|
+
return discordAuthUrl;
|
|
7845
|
+
}
|
|
7846
|
+
return "https://discord.com/channels/715220730605731931/1161045224907341972";
|
|
7847
|
+
}
|
|
7848
|
+
function DiscordCTA({ discordAuthUrl }) {
|
|
7849
|
+
const user = useOptionalUser();
|
|
7850
|
+
const discordMember = useOptionalDiscordMember();
|
|
7851
|
+
if (!user) {
|
|
7852
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xl", children: [
|
|
7853
|
+
/* @__PURE__ */ jsxs(Link, { to: "/login", className: "inline-flex items-center gap-2 underline", children: [
|
|
7854
|
+
/* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }),
|
|
7855
|
+
"Login"
|
|
7856
|
+
] }),
|
|
7857
|
+
" ",
|
|
7858
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
7859
|
+
"to get access to the exclusive",
|
|
7860
|
+
" ",
|
|
7861
|
+
/* @__PURE__ */ jsx(Link, { to: "/discord", className: "underline", children: "discord channel" }),
|
|
7862
|
+
"."
|
|
7863
|
+
] })
|
|
7864
|
+
] });
|
|
7865
|
+
}
|
|
7866
|
+
if (!discordMember) {
|
|
7867
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-2 text-xl", children: [
|
|
7868
|
+
/* @__PURE__ */ jsxs(Link, { to: discordAuthUrl, className: "flex items-center gap-2 underline", children: [
|
|
7869
|
+
/* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }),
|
|
7870
|
+
"Connect Discord"
|
|
7871
|
+
] }),
|
|
7872
|
+
" ",
|
|
7873
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
7874
|
+
"to get access to the exclusive",
|
|
7875
|
+
" ",
|
|
7876
|
+
/* @__PURE__ */ jsx(Link, { to: "/discord", className: "underline", children: "discord channel" }),
|
|
7877
|
+
"."
|
|
7878
|
+
] })
|
|
7879
|
+
] });
|
|
7880
|
+
}
|
|
7881
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2 text-xl underline", children: [
|
|
7882
|
+
/* @__PURE__ */ jsx(Link, { to: "discord://discord.com/channels/715220730605731931/1161045224907341972", children: /* @__PURE__ */ jsx(Icon, { name: "Discord", size: "2xl" }) }),
|
|
7883
|
+
/* @__PURE__ */ jsx(
|
|
7884
|
+
Link,
|
|
7885
|
+
{
|
|
7886
|
+
to: "https://discord.com/channels/715220730605731931/1161045224907341972",
|
|
7887
|
+
target: "_blank",
|
|
7888
|
+
rel: "noreferrer noopener",
|
|
7889
|
+
children: "Open Discord"
|
|
7890
|
+
}
|
|
7891
|
+
)
|
|
7892
|
+
] });
|
|
7893
|
+
}
|
|
7894
|
+
function DiscordRoute() {
|
|
7895
|
+
const data = useLoaderData();
|
|
7896
|
+
return /* @__PURE__ */ jsxs("div", { className: "container flex h-full max-w-3xl flex-col items-center justify-center gap-4 p-12", children: [
|
|
7897
|
+
/* @__PURE__ */ jsx(DiscordCTA, { discordAuthUrl: data.discordAuthUrl }),
|
|
7898
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
7899
|
+
"The",
|
|
7900
|
+
" ",
|
|
7901
|
+
/* @__PURE__ */ jsx(
|
|
7902
|
+
Link,
|
|
7903
|
+
{
|
|
7904
|
+
target: "_blank",
|
|
7905
|
+
rel: "noreferrer noopener",
|
|
7906
|
+
className: "underline",
|
|
7907
|
+
to: "https://kentcdodds.com/discord",
|
|
7908
|
+
children: "Epic Web Community on Discord"
|
|
7909
|
+
}
|
|
7910
|
+
),
|
|
7911
|
+
" ",
|
|
7912
|
+
"is a great place to hang out with other developers who are working through this workshop. You can ask questions, get help, and solidify what you're learning by helping others."
|
|
7913
|
+
] }),
|
|
7914
|
+
/* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsxs("small", { className: "text-sm", children: [
|
|
7915
|
+
"If you've not joined the Epic Web Community on Discord yet, you'll be required to go through a short onboarding process first. A friendly bot will explain the process when you",
|
|
7916
|
+
" ",
|
|
7917
|
+
/* @__PURE__ */ jsx(
|
|
7918
|
+
Link,
|
|
7919
|
+
{
|
|
7920
|
+
to: "https://kcd.im/discord",
|
|
7921
|
+
target: "_blank",
|
|
7922
|
+
rel: "noreferrer noopener",
|
|
7923
|
+
className: "underline",
|
|
7924
|
+
children: "join"
|
|
7925
|
+
}
|
|
7926
|
+
),
|
|
7927
|
+
"."
|
|
7928
|
+
] }) })
|
|
7929
|
+
] });
|
|
7930
|
+
}
|
|
7931
|
+
const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7932
|
+
__proto__: null,
|
|
7933
|
+
DiscordCTA,
|
|
7934
|
+
default: DiscordRoute,
|
|
7935
|
+
loader: loader$l,
|
|
7936
|
+
useDiscordCTALink
|
|
7937
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
7938
|
+
function DiscordChat() {
|
|
7939
|
+
const data = useLoaderData();
|
|
7940
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col gap-4 pt-4", children: [
|
|
7941
|
+
/* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsx(DiscordCTA, { discordAuthUrl: data.discordAuthUrl }) }),
|
|
7942
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-scroll bg-accent pb-4 scrollbar-thin scrollbar-thumb-scrollbar", children: /* @__PURE__ */ jsx(DiscordPosts, {}) })
|
|
7943
|
+
] });
|
|
7944
|
+
}
|
|
7945
|
+
function DiscordPosts() {
|
|
7946
|
+
const data = useLoaderData();
|
|
7947
|
+
const ctaLink = useDiscordCTALink({ discordAuthUrl: data.discordAuthUrl });
|
|
7948
|
+
const altDown = useAltDown();
|
|
7949
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col items-center justify-between", children: [
|
|
7950
|
+
/* @__PURE__ */ jsx(
|
|
7951
|
+
React.Suspense,
|
|
7952
|
+
{
|
|
7953
|
+
fallback: /* @__PURE__ */ jsx("div", { className: "flex h-full w-full flex-col items-center justify-center", children: /* @__PURE__ */ jsx(Loading, { children: "Loading Discord Posts" }) }),
|
|
7954
|
+
children: /* @__PURE__ */ jsx(
|
|
7955
|
+
Await,
|
|
7956
|
+
{
|
|
7957
|
+
resolve: data.discordPostsPromise,
|
|
7958
|
+
errorElement: /* @__PURE__ */ jsx("div", { className: "text-red-500", children: "There was a problem loading the discord posts" }),
|
|
7959
|
+
children: (posts) => /* @__PURE__ */ jsx("ul", { className: "flex w-full flex-col gap-4 p-3 xl:p-12", children: posts.map((post) => /* @__PURE__ */ jsx(
|
|
7960
|
+
"li",
|
|
7961
|
+
{
|
|
7962
|
+
className: "rounded-xl border bg-background transition-all duration-200 focus-within:-translate-y-1 focus-within:shadow-lg hover:-translate-y-1 hover:shadow-lg",
|
|
7963
|
+
children: /* @__PURE__ */ jsx(DiscordPost, { thread: post })
|
|
7964
|
+
},
|
|
7965
|
+
post.id
|
|
7966
|
+
)) })
|
|
7967
|
+
}
|
|
7968
|
+
)
|
|
7969
|
+
}
|
|
7970
|
+
),
|
|
7971
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
7972
|
+
Link,
|
|
7973
|
+
{
|
|
7974
|
+
to: altDown && !ctaLink.includes("oauth") ? ctaLink.replace(/^https/, "discord") : ctaLink,
|
|
7975
|
+
target: ctaLink.includes("oauth") ? void 0 : "_blank",
|
|
7976
|
+
rel: "noreferrer noopener",
|
|
7977
|
+
onClick: altDown ? (e) => {
|
|
7978
|
+
e.preventDefault();
|
|
7979
|
+
window.open(
|
|
7980
|
+
e.currentTarget.href,
|
|
7981
|
+
"_blank",
|
|
7982
|
+
"noreferrer noopener"
|
|
7983
|
+
);
|
|
7984
|
+
} : void 0,
|
|
7985
|
+
className: "flex items-center gap-2 p-2 text-xl hover:underline",
|
|
7986
|
+
children: [
|
|
7987
|
+
"Create Post ",
|
|
7988
|
+
/* @__PURE__ */ jsx(Icon, { name: "ExternalLink" })
|
|
7989
|
+
]
|
|
7990
|
+
}
|
|
7991
|
+
) })
|
|
7992
|
+
] });
|
|
7993
|
+
}
|
|
7994
|
+
function DiscordPost({ thread }) {
|
|
7995
|
+
const reactionsWithCounts = thread.reactions.filter((r) => r.count);
|
|
7996
|
+
const hints = useHints();
|
|
7997
|
+
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 p-4", children: [
|
|
7998
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
|
|
7999
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
8000
|
+
thread.tags.length ? /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: thread.tags.map((t) => /* @__PURE__ */ jsxs(
|
|
8001
|
+
"div",
|
|
8002
|
+
{
|
|
8003
|
+
className: "flex items-center justify-center gap-1 rounded-full bg-accent px-2 py-1 text-sm",
|
|
8004
|
+
children: [
|
|
8005
|
+
/* @__PURE__ */ jsx("span", { className: "h-3 w-3 leading-3", children: /* @__PURE__ */ jsx(Emoji, { name: t.emojiName, url: t.emojiUrl }) }),
|
|
8006
|
+
/* @__PURE__ */ jsx("span", { children: t.name })
|
|
8007
|
+
]
|
|
8008
|
+
},
|
|
8009
|
+
t.name
|
|
8010
|
+
)) }) : null,
|
|
8011
|
+
/* @__PURE__ */ jsx("strong", { className: "text-xl font-bold", children: thread.name }),
|
|
8012
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-1", children: [
|
|
8013
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
8014
|
+
thread.authorAvatarUrl ? /* @__PURE__ */ jsx(
|
|
8015
|
+
"img",
|
|
8016
|
+
{
|
|
8017
|
+
src: thread.authorAvatarUrl,
|
|
8018
|
+
alt: "",
|
|
8019
|
+
className: "h-6 w-6 rounded-full"
|
|
8020
|
+
}
|
|
8021
|
+
) : null,
|
|
8022
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
8023
|
+
/* @__PURE__ */ jsx(
|
|
8024
|
+
"span",
|
|
8025
|
+
{
|
|
8026
|
+
className: "font-bold",
|
|
8027
|
+
style: thread.authorHexAccentColor ? { color: thread.authorHexAccentColor } : {},
|
|
8028
|
+
children: thread.authorDisplayName
|
|
7685
8029
|
}
|
|
7686
|
-
)
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
8030
|
+
),
|
|
8031
|
+
":",
|
|
8032
|
+
" "
|
|
8033
|
+
] })
|
|
8034
|
+
] }),
|
|
8035
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 overflow-ellipsis text-muted-foreground", children: thread.messagePreview })
|
|
8036
|
+
] })
|
|
8037
|
+
] }),
|
|
8038
|
+
thread.previewImageUrl ? /* @__PURE__ */ jsx(
|
|
8039
|
+
"img",
|
|
8040
|
+
{
|
|
8041
|
+
src: thread.previewImageUrl,
|
|
8042
|
+
alt: "",
|
|
8043
|
+
className: "h-28 w-28 rounded-lg object-cover"
|
|
8044
|
+
}
|
|
8045
|
+
) : null
|
|
8046
|
+
] }),
|
|
8047
|
+
/* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
|
|
8048
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
8049
|
+
/* @__PURE__ */ jsx("span", { children: reactionsWithCounts.length ? /* @__PURE__ */ jsx("ul", { className: "flex items-center gap-2", children: reactionsWithCounts.map((r, i) => /* @__PURE__ */ jsxs(
|
|
8050
|
+
"li",
|
|
7693
8051
|
{
|
|
7694
|
-
|
|
7695
|
-
align: "start",
|
|
7696
|
-
className: "z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",
|
|
8052
|
+
className: "flex items-center gap-1 rounded-md border border-blue-600 bg-blue-500/20 px-[5px] py-[0.5px] text-sm",
|
|
7697
8053
|
children: [
|
|
7698
|
-
/* @__PURE__ */ jsx(
|
|
7699
|
-
/* @__PURE__ */ jsx(
|
|
7700
|
-
/* @__PURE__ */ jsx(Select.Label, { className: "px-5 pb-3 font-mono uppercase", children: "App" }),
|
|
7701
|
-
allApps.filter((app) => app.name !== "playground").map((app) => {
|
|
7702
|
-
return /* @__PURE__ */ jsx(SelectItem$1, { value: app.name, children: app.displayName }, app.name);
|
|
7703
|
-
})
|
|
7704
|
-
] }) }),
|
|
7705
|
-
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
|
|
8054
|
+
/* @__PURE__ */ jsx("span", { className: "h-3 w-3 leading-3", children: /* @__PURE__ */ jsx(Emoji, { name: r.emojiName, url: r.emojiUrl }) }),
|
|
8055
|
+
/* @__PURE__ */ jsx("span", { children: r.count })
|
|
7706
8056
|
]
|
|
7707
|
-
}
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
}
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7722
|
-
children: [
|
|
7723
|
-
/* @__PURE__ */ jsx(Select.ItemText, { children }),
|
|
7724
|
-
/* @__PURE__ */ jsx(Select.ItemIndicator, { className: "absolute left-0 inline-flex w-[25px] items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "CheckSmall" }) })
|
|
7725
|
-
]
|
|
7726
|
-
}
|
|
7727
|
-
);
|
|
7728
|
-
}
|
|
7729
|
-
function SetAppToPlayground({ appName }) {
|
|
7730
|
-
if (ENV.EPICSHOP_DEPLOYED)
|
|
7731
|
-
return null;
|
|
7732
|
-
return /* @__PURE__ */ jsx(
|
|
7733
|
-
SetPlayground,
|
|
7734
|
-
{
|
|
7735
|
-
appName,
|
|
7736
|
-
tooltipText: "Playground is not set to the right app. Click to set Playground.",
|
|
7737
|
-
children: /* @__PURE__ */ jsxs("span", { className: "flex items-center justify-center gap-1 text-foreground-danger hover:underline", children: [
|
|
7738
|
-
/* @__PURE__ */ jsx(Icon, { name: "Unlinked", className: "animate-ping" }),
|
|
7739
|
-
" ",
|
|
7740
|
-
/* @__PURE__ */ jsx("span", { className: "uppercase", children: "Set to Playground" })
|
|
8057
|
+
},
|
|
8058
|
+
i
|
|
8059
|
+
)) }) : null }),
|
|
8060
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
|
|
8061
|
+
/* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
8062
|
+
/* @__PURE__ */ jsx(Icon, { name: "Chat" }),
|
|
8063
|
+
" ",
|
|
8064
|
+
thread.messageCount
|
|
8065
|
+
] }),
|
|
8066
|
+
` · ${dayjs(thread.lastUpdated).tz(hints.timeZone).fromNow()}`
|
|
8067
|
+
] })
|
|
8068
|
+
] }),
|
|
8069
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-4", children: [
|
|
8070
|
+
/* @__PURE__ */ jsx("a", { href: thread.link.replace(/^https/, "discord"), children: /* @__PURE__ */ jsx(Icon, { name: "Discord" }) }),
|
|
8071
|
+
/* @__PURE__ */ jsx("a", { href: thread.link, target: "_blank", rel: "noreferrer noopener", children: /* @__PURE__ */ jsx(Icon, { name: "ExternalLink" }) })
|
|
7741
8072
|
] })
|
|
7742
|
-
}
|
|
7743
|
-
);
|
|
8073
|
+
] })
|
|
8074
|
+
] }) });
|
|
8075
|
+
}
|
|
8076
|
+
function Emoji({ name, url }) {
|
|
8077
|
+
return url ? /* @__PURE__ */ jsx("img", { src: url, alt: name, className: "h-full w-full" }) : name ? name : null;
|
|
7744
8078
|
}
|
|
7745
|
-
const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7746
|
-
__proto__: null,
|
|
7747
|
-
PlaygroundChooser,
|
|
7748
|
-
SetAppToPlayground,
|
|
7749
|
-
SetPlayground,
|
|
7750
|
-
action: action$8
|
|
7751
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
7752
8079
|
function PlaygroundWindow({
|
|
7753
8080
|
playgroundAppName,
|
|
7754
8081
|
problemAppName,
|
|
@@ -8047,18 +8374,15 @@ const InBrowserBrowser = forwardRef(
|
|
|
8047
8374
|
);
|
|
8048
8375
|
function InBrowserBrowserImpl({ name, port: port2, portIsAvailable, isRunning, baseUrl, id, initialRoute }, ref) {
|
|
8049
8376
|
const requestInfo = useRequestInfo();
|
|
8050
|
-
return isRunning ? (
|
|
8051
|
-
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
|
|
8055
|
-
|
|
8056
|
-
|
|
8057
|
-
|
|
8058
|
-
|
|
8059
|
-
initialRoute
|
|
8060
|
-
}
|
|
8061
|
-
)
|
|
8377
|
+
return isRunning ? /* @__PURE__ */ jsx(
|
|
8378
|
+
InBrowserBrowserForRealz,
|
|
8379
|
+
{
|
|
8380
|
+
baseUrl,
|
|
8381
|
+
id,
|
|
8382
|
+
name,
|
|
8383
|
+
ref,
|
|
8384
|
+
initialRoute
|
|
8385
|
+
}
|
|
8062
8386
|
) : portIsAvailable === false ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center", children: [
|
|
8063
8387
|
/* @__PURE__ */ jsxs("p", { className: "max-w-xs pb-5 text-center", role: "status", children: [
|
|
8064
8388
|
`The port for this app is unavailable. It could be that you're running it `,
|
|
@@ -8490,7 +8814,6 @@ async function action$6({ request }) {
|
|
|
8490
8814
|
await fs.promises.readFile(cacheLocation, "utf-8")
|
|
8491
8815
|
);
|
|
8492
8816
|
const cachedEmbeddedFiles = new Map(
|
|
8493
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
|
|
8494
8817
|
Object.entries(((_a2 = cached == null ? void 0 : cached.value) == null ? void 0 : _a2.embeddedFiles) ?? {})
|
|
8495
8818
|
);
|
|
8496
8819
|
if (cachedEmbeddedFiles.has(embeddedKey)) {
|
|
@@ -8827,124 +9150,6 @@ function LinkToApp({
|
|
|
8827
9150
|
) }) : null
|
|
8828
9151
|
] });
|
|
8829
9152
|
}
|
|
8830
|
-
const AccordionComponent = ({
|
|
8831
|
-
title,
|
|
8832
|
-
children,
|
|
8833
|
-
variant,
|
|
8834
|
-
icon,
|
|
8835
|
-
forceMount = false
|
|
8836
|
-
}) => {
|
|
8837
|
-
const getVariantIcon = () => {
|
|
8838
|
-
switch (variant) {
|
|
8839
|
-
case "changed":
|
|
8840
|
-
return /* @__PURE__ */ jsx(
|
|
8841
|
-
Icon,
|
|
8842
|
-
{
|
|
8843
|
-
name: "Modified",
|
|
8844
|
-
"aria-label": "Modified",
|
|
8845
|
-
className: "text-[#fb923c]"
|
|
8846
|
-
}
|
|
8847
|
-
);
|
|
8848
|
-
case "renamed":
|
|
8849
|
-
return /* @__PURE__ */ jsx(
|
|
8850
|
-
Icon,
|
|
8851
|
-
{
|
|
8852
|
-
name: "Renamed",
|
|
8853
|
-
"aria-label": "Renamed",
|
|
8854
|
-
className: "text-[#fb923c]"
|
|
8855
|
-
}
|
|
8856
|
-
);
|
|
8857
|
-
case "added":
|
|
8858
|
-
return /* @__PURE__ */ jsx(Icon, { name: "Added", "aria-label": "Added", className: "text-[#10b981]" });
|
|
8859
|
-
case "deleted":
|
|
8860
|
-
return /* @__PURE__ */ jsx(
|
|
8861
|
-
Icon,
|
|
8862
|
-
{
|
|
8863
|
-
name: "Deleted",
|
|
8864
|
-
"aria-label": "Deleted",
|
|
8865
|
-
className: "text-[#ef4444]"
|
|
8866
|
-
}
|
|
8867
|
-
);
|
|
8868
|
-
default:
|
|
8869
|
-
return /* @__PURE__ */ jsx(
|
|
8870
|
-
Icon,
|
|
8871
|
-
{
|
|
8872
|
-
name: "Modified",
|
|
8873
|
-
"aria-label": "Modified",
|
|
8874
|
-
className: "text-[#fb923c]"
|
|
8875
|
-
}
|
|
8876
|
-
);
|
|
8877
|
-
}
|
|
8878
|
-
};
|
|
8879
|
-
const getVariantLabel = () => {
|
|
8880
|
-
switch (variant) {
|
|
8881
|
-
case "changed":
|
|
8882
|
-
return "modified";
|
|
8883
|
-
default:
|
|
8884
|
-
return variant;
|
|
8885
|
-
}
|
|
8886
|
-
};
|
|
8887
|
-
const fixedTitle = title.replace(/\\\\/g, "\\");
|
|
8888
|
-
return /* @__PURE__ */ jsxs(Accordion.Item, { value: title, children: [
|
|
8889
|
-
/* @__PURE__ */ jsxs(AccordionTrigger, { variant: getVariantLabel(), children: [
|
|
8890
|
-
icon ? icon : getVariantIcon(),
|
|
8891
|
-
" ",
|
|
8892
|
-
fixedTitle
|
|
8893
|
-
] }),
|
|
8894
|
-
/* @__PURE__ */ jsx(
|
|
8895
|
-
AccordionContent,
|
|
8896
|
-
{
|
|
8897
|
-
forceMount,
|
|
8898
|
-
className: clsx(
|
|
8899
|
-
"prose max-w-none whitespace-pre-wrap dark:prose-invert prose-pre:m-0 prose-pre:mb-1 prose-pre:rounded-none",
|
|
8900
|
-
{
|
|
8901
|
-
"radix-state-closed:hidden": forceMount
|
|
8902
|
-
}
|
|
8903
|
-
),
|
|
8904
|
-
children
|
|
8905
|
-
}
|
|
8906
|
-
)
|
|
8907
|
-
] });
|
|
8908
|
-
};
|
|
8909
|
-
const AccordionTrigger = React.forwardRef(
|
|
8910
|
-
({ children, className, variant, ...props }, forwardedRef) => /* @__PURE__ */ jsx(Accordion.Header, { className: "flex", asChild: true, children: /* @__PURE__ */ jsxs(
|
|
8911
|
-
Accordion.Trigger,
|
|
8912
|
-
{
|
|
8913
|
-
className: clsx(
|
|
8914
|
-
"group flex w-full items-center justify-between border-b p-4 pr-3 font-mono text-sm font-medium leading-none hover:bg-foreground/20",
|
|
8915
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
8916
|
-
className
|
|
8917
|
-
),
|
|
8918
|
-
...props,
|
|
8919
|
-
ref: forwardedRef,
|
|
8920
|
-
children: [
|
|
8921
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-1.5", children }),
|
|
8922
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
8923
|
-
/* @__PURE__ */ jsx("span", { className: "font-mono text-xs font-normal uppercase text-muted-foreground", children: variant }),
|
|
8924
|
-
/* @__PURE__ */ jsx(
|
|
8925
|
-
Icon,
|
|
8926
|
-
{
|
|
8927
|
-
name: "TriangleDownSmall",
|
|
8928
|
-
className: "transition group-radix-state-open:rotate-180",
|
|
8929
|
-
"aria-hidden": true
|
|
8930
|
-
}
|
|
8931
|
-
)
|
|
8932
|
-
] })
|
|
8933
|
-
]
|
|
8934
|
-
}
|
|
8935
|
-
) })
|
|
8936
|
-
);
|
|
8937
|
-
const AccordionContent = React.forwardRef(
|
|
8938
|
-
({ children, className, ...props }, forwardedRef) => /* @__PURE__ */ jsx(
|
|
8939
|
-
Accordion.Content,
|
|
8940
|
-
{
|
|
8941
|
-
className: clsx("", className),
|
|
8942
|
-
...props,
|
|
8943
|
-
ref: forwardedRef,
|
|
8944
|
-
children: /* @__PURE__ */ jsx("div", { children })
|
|
8945
|
-
}
|
|
8946
|
-
)
|
|
8947
|
-
);
|
|
8948
9153
|
const testRunnerStatusDataSchema = z$1.intersection(
|
|
8949
9154
|
z$1.object({
|
|
8950
9155
|
type: z$1.literal("epicshop:test-status-update"),
|
|
@@ -9594,232 +9799,6 @@ function TouchedFiles() {
|
|
|
9594
9799
|
) })
|
|
9595
9800
|
] }) });
|
|
9596
9801
|
}
|
|
9597
|
-
const pre = (props) => /* @__PURE__ */ jsx("pre", { ...props });
|
|
9598
|
-
const mdxComponents$3 = {
|
|
9599
|
-
Accordion: AccordionComponent,
|
|
9600
|
-
// override the pre-with-buttons
|
|
9601
|
-
pre
|
|
9602
|
-
};
|
|
9603
|
-
function Diff({
|
|
9604
|
-
diff,
|
|
9605
|
-
allApps
|
|
9606
|
-
}) {
|
|
9607
|
-
const submit = useSubmit();
|
|
9608
|
-
const [params] = useSearchParams();
|
|
9609
|
-
const paramsWithForcedRefresh = new URLSearchParams(params);
|
|
9610
|
-
paramsWithForcedRefresh.set("forceFresh", "diff");
|
|
9611
|
-
const navigation = useNavigation();
|
|
9612
|
-
const spinnerNavigating = useSpinDelay(navigation.state !== "idle", {
|
|
9613
|
-
delay: 0,
|
|
9614
|
-
minDuration: 1e3
|
|
9615
|
-
});
|
|
9616
|
-
const hiddenInputs = [];
|
|
9617
|
-
for (const [key, value] of params.entries()) {
|
|
9618
|
-
if (key === "app1" || key === "app2")
|
|
9619
|
-
continue;
|
|
9620
|
-
hiddenInputs.push(
|
|
9621
|
-
/* @__PURE__ */ jsx("input", { type: "hidden", name: key, value }, key)
|
|
9622
|
-
);
|
|
9623
|
-
}
|
|
9624
|
-
return /* @__PURE__ */ jsx(
|
|
9625
|
-
Suspense,
|
|
9626
|
-
{
|
|
9627
|
-
fallback: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsx(SimpleTooltip, { content: "Loading diff", children: /* @__PURE__ */ jsx(Icon, { name: "Refresh", className: "animate-spin" }) }) }),
|
|
9628
|
-
children: /* @__PURE__ */ jsx(
|
|
9629
|
-
Await,
|
|
9630
|
-
{
|
|
9631
|
-
resolve: diff,
|
|
9632
|
-
errorElement: /* @__PURE__ */ jsx("p", { className: "p-6 text-foreground-danger", children: "There was an error calculating the diff. Sorry." }),
|
|
9633
|
-
children: (diff2) => /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full flex-col", children: [
|
|
9634
|
-
/* @__PURE__ */ jsxs("div", { className: "flex h-14 min-h-14 w-full overflow-x-hidden border-b", children: [
|
|
9635
|
-
/* @__PURE__ */ jsx("div", { className: "border-r", children: /* @__PURE__ */ jsx(SimpleTooltip, { content: "Reload diff", children: /* @__PURE__ */ jsx(
|
|
9636
|
-
Link,
|
|
9637
|
-
{
|
|
9638
|
-
to: `.?${paramsWithForcedRefresh}`,
|
|
9639
|
-
className: "flex h-full w-14 items-center justify-center",
|
|
9640
|
-
children: /* @__PURE__ */ jsx(
|
|
9641
|
-
Icon,
|
|
9642
|
-
{
|
|
9643
|
-
name: "Refresh",
|
|
9644
|
-
className: cn({ "animate-spin": spinnerNavigating })
|
|
9645
|
-
}
|
|
9646
|
-
)
|
|
9647
|
-
}
|
|
9648
|
-
) }) }),
|
|
9649
|
-
/* @__PURE__ */ jsxs(
|
|
9650
|
-
Form,
|
|
9651
|
-
{
|
|
9652
|
-
onChange: (e) => submit(e.currentTarget),
|
|
9653
|
-
className: "flex h-full flex-1 items-center overflow-x-auto scrollbar-thin scrollbar-thumb-scrollbar",
|
|
9654
|
-
children: [
|
|
9655
|
-
hiddenInputs,
|
|
9656
|
-
/* @__PURE__ */ jsx(
|
|
9657
|
-
SelectFileToDiff,
|
|
9658
|
-
{
|
|
9659
|
-
name: "app1",
|
|
9660
|
-
label: "App 1",
|
|
9661
|
-
className: "border-r",
|
|
9662
|
-
allApps,
|
|
9663
|
-
defaultValue: diff2.app1
|
|
9664
|
-
}
|
|
9665
|
-
),
|
|
9666
|
-
/* @__PURE__ */ jsx(
|
|
9667
|
-
SelectFileToDiff,
|
|
9668
|
-
{
|
|
9669
|
-
name: "app2",
|
|
9670
|
-
label: "App 2",
|
|
9671
|
-
allApps,
|
|
9672
|
-
defaultValue: diff2.app2
|
|
9673
|
-
}
|
|
9674
|
-
)
|
|
9675
|
-
]
|
|
9676
|
-
},
|
|
9677
|
-
`${diff2.app1}${diff2.app2}`
|
|
9678
|
-
)
|
|
9679
|
-
] }),
|
|
9680
|
-
/* @__PURE__ */ jsx("div", { className: "flex-grow overflow-y-scroll scrollbar-thin scrollbar-thumb-scrollbar", children: diff2.diffCode ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Accordion.Root, { className: "w-full", type: "multiple", children: /* @__PURE__ */ jsx(Mdx, { code: diff2.diffCode, components: mdxComponents$3 }) }) }) : diff2.app1 && diff2.app2 ? /* @__PURE__ */ jsx("p", { className: "m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background", children: "There was a problem generating the diff" }) : /* @__PURE__ */ jsx("p", { className: "m-5 inline-flex items-center justify-center bg-foreground px-1 py-0.5 font-mono text-sm uppercase text-background", children: "Select two apps to compare" }) })
|
|
9681
|
-
] })
|
|
9682
|
-
}
|
|
9683
|
-
)
|
|
9684
|
-
}
|
|
9685
|
-
);
|
|
9686
|
-
}
|
|
9687
|
-
function SelectFileToDiff({
|
|
9688
|
-
name,
|
|
9689
|
-
label,
|
|
9690
|
-
className,
|
|
9691
|
-
allApps,
|
|
9692
|
-
defaultValue
|
|
9693
|
-
}) {
|
|
9694
|
-
return /* @__PURE__ */ jsxs(Select.Root, { name, defaultValue, children: [
|
|
9695
|
-
/* @__PURE__ */ jsxs(
|
|
9696
|
-
Select.Trigger,
|
|
9697
|
-
{
|
|
9698
|
-
className: clsx(
|
|
9699
|
-
"flex h-full w-full max-w-[50%] items-center justify-between px-3 text-left radix-placeholder:text-gray-500 focus-visible:outline-none",
|
|
9700
|
-
className
|
|
9701
|
-
),
|
|
9702
|
-
"aria-label": `Select ${label} for git Diff`,
|
|
9703
|
-
children: [
|
|
9704
|
-
/* @__PURE__ */ jsxs("span", { className: "overflow-hidden text-ellipsis whitespace-nowrap", children: [
|
|
9705
|
-
label,
|
|
9706
|
-
":",
|
|
9707
|
-
" ",
|
|
9708
|
-
/* @__PURE__ */ jsx(
|
|
9709
|
-
SelectValue,
|
|
9710
|
-
{
|
|
9711
|
-
placeholder: `Select ${label}`,
|
|
9712
|
-
className: "inline-block w-40 text-ellipsis"
|
|
9713
|
-
}
|
|
9714
|
-
)
|
|
9715
|
-
] }),
|
|
9716
|
-
/* @__PURE__ */ jsx(Select.Icon, { className: "", children: /* @__PURE__ */ jsx(Icon, { name: "TriangleDownSmall" }) })
|
|
9717
|
-
]
|
|
9718
|
-
}
|
|
9719
|
-
),
|
|
9720
|
-
/* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsxs(
|
|
9721
|
-
Select.Content,
|
|
9722
|
-
{
|
|
9723
|
-
position: "popper",
|
|
9724
|
-
align: "start",
|
|
9725
|
-
className: "z-20 max-h-[50vh] bg-black text-white lg:max-h-[70vh]",
|
|
9726
|
-
children: [
|
|
9727
|
-
/* @__PURE__ */ jsx(Select.ScrollUpButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronUp" }) }),
|
|
9728
|
-
/* @__PURE__ */ jsx(Select.Viewport, { className: "p-3", children: /* @__PURE__ */ jsxs(Select.Group, { children: [
|
|
9729
|
-
/* @__PURE__ */ jsx(Select.Label, { className: "px-5 pb-3 font-mono uppercase", children: label }),
|
|
9730
|
-
allApps.map((app) => {
|
|
9731
|
-
return (
|
|
9732
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
9733
|
-
/* @__PURE__ */ jsx(SelectItem, { value: app.name, children: app.displayName }, app.name)
|
|
9734
|
-
);
|
|
9735
|
-
})
|
|
9736
|
-
] }) }),
|
|
9737
|
-
/* @__PURE__ */ jsx(Select.ScrollDownButton, { className: "flex h-5 cursor-default items-center justify-center ", children: /* @__PURE__ */ jsx(Icon, { name: "ChevronDown" }) })
|
|
9738
|
-
]
|
|
9739
|
-
}
|
|
9740
|
-
) })
|
|
9741
|
-
] });
|
|
9742
|
-
}
|
|
9743
|
-
const SelectItem = React__default.forwardRef(
|
|
9744
|
-
({ children, className, ...props }, forwardedRef) => {
|
|
9745
|
-
return /* @__PURE__ */ jsxs(
|
|
9746
|
-
Select.Item,
|
|
9747
|
-
{
|
|
9748
|
-
className: clsx(
|
|
9749
|
-
"relative flex cursor-pointer select-none items-center rounded px-10 py-2 leading-none opacity-80 radix-disabled:text-red-500 radix-highlighted:opacity-100 radix-highlighted:outline-none radix-state-checked:opacity-100",
|
|
9750
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
9751
|
-
className
|
|
9752
|
-
),
|
|
9753
|
-
...props,
|
|
9754
|
-
ref: forwardedRef,
|
|
9755
|
-
children: [
|
|
9756
|
-
/* @__PURE__ */ jsx(Select.ItemText, { children }),
|
|
9757
|
-
/* @__PURE__ */ jsx(Select.ItemIndicator, { className: "absolute left-0 inline-flex w-[25px] items-center justify-center", children: /* @__PURE__ */ jsx(Icon, { name: "CheckSmall" }) })
|
|
9758
|
-
]
|
|
9759
|
-
}
|
|
9760
|
-
);
|
|
9761
|
-
}
|
|
9762
|
-
);
|
|
9763
|
-
const SelectValue = React__default.forwardRef(
|
|
9764
|
-
({ children, className, ...props }, forwardedRef) => {
|
|
9765
|
-
return /* @__PURE__ */ jsx(Select.Value, { ...props, ref: forwardedRef, children: props.value });
|
|
9766
|
-
}
|
|
9767
|
-
);
|
|
9768
|
-
function NavChevrons({
|
|
9769
|
-
prev,
|
|
9770
|
-
next
|
|
9771
|
-
}) {
|
|
9772
|
-
return /* @__PURE__ */ jsxs("div", { className: "relative flex h-full overflow-hidden", children: [
|
|
9773
|
-
prev ? /* @__PURE__ */ jsx(
|
|
9774
|
-
Link,
|
|
9775
|
-
{
|
|
9776
|
-
prefetch: "intent",
|
|
9777
|
-
...prev,
|
|
9778
|
-
className: "group flex h-full items-center justify-center border-l px-7",
|
|
9779
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9780
|
-
/* @__PURE__ */ jsx(
|
|
9781
|
-
Icon,
|
|
9782
|
-
{
|
|
9783
|
-
name: "ChevronLeft",
|
|
9784
|
-
className: "absolute opacity-100 transition duration-300 ease-in-out group-hover:translate-y-10 group-hover:opacity-0"
|
|
9785
|
-
}
|
|
9786
|
-
),
|
|
9787
|
-
/* @__PURE__ */ jsx(
|
|
9788
|
-
Icon,
|
|
9789
|
-
{
|
|
9790
|
-
name: "ChevronLeft",
|
|
9791
|
-
className: "absolute -translate-y-10 opacity-0 transition duration-300 ease-in-out group-hover:translate-y-0 group-hover:opacity-100"
|
|
9792
|
-
}
|
|
9793
|
-
)
|
|
9794
|
-
] })
|
|
9795
|
-
}
|
|
9796
|
-
) : null,
|
|
9797
|
-
next ? /* @__PURE__ */ jsx(
|
|
9798
|
-
Link,
|
|
9799
|
-
{
|
|
9800
|
-
prefetch: "intent",
|
|
9801
|
-
...next,
|
|
9802
|
-
className: "group flex h-full items-center justify-center border-l px-7",
|
|
9803
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9804
|
-
/* @__PURE__ */ jsx(
|
|
9805
|
-
Icon,
|
|
9806
|
-
{
|
|
9807
|
-
name: "ChevronRight",
|
|
9808
|
-
className: "absolute opacity-100 transition duration-300 ease-in-out group-hover:translate-y-10 group-hover:opacity-0"
|
|
9809
|
-
}
|
|
9810
|
-
),
|
|
9811
|
-
/* @__PURE__ */ jsx(
|
|
9812
|
-
Icon,
|
|
9813
|
-
{
|
|
9814
|
-
name: "ChevronRight",
|
|
9815
|
-
className: "absolute -translate-y-10 opacity-0 transition duration-300 ease-in-out group-hover:translate-y-0 group-hover:opacity-100"
|
|
9816
|
-
}
|
|
9817
|
-
)
|
|
9818
|
-
] })
|
|
9819
|
-
}
|
|
9820
|
-
) : null
|
|
9821
|
-
] });
|
|
9822
|
-
}
|
|
9823
9802
|
function pageTitle(data, workshopTitle) {
|
|
9824
9803
|
var _a2;
|
|
9825
9804
|
const exerciseNumber = (data == null ? void 0 : data.exerciseStepApp.exerciseNumber.toString().padStart(2, "0")) ?? "00";
|
|
@@ -10607,24 +10586,6 @@ const route9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
10607
10586
|
default: Account,
|
|
10608
10587
|
loader: loader$g
|
|
10609
10588
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10610
|
-
async function resolveApps({
|
|
10611
|
-
request,
|
|
10612
|
-
params,
|
|
10613
|
-
timings
|
|
10614
|
-
}) {
|
|
10615
|
-
const url = new URL(request.url);
|
|
10616
|
-
const { appName } = params;
|
|
10617
|
-
invariantResponse(appName, "appName param required");
|
|
10618
|
-
const app = await getAppByName(appName, { request, timings });
|
|
10619
|
-
const fileAppName = url.searchParams.get("fileAppName");
|
|
10620
|
-
if (fileAppName) {
|
|
10621
|
-
const apps = await getApps({ request, timings });
|
|
10622
|
-
const fileApp = fileAppName ? apps.find((app2) => app2.name === fileAppName) : app;
|
|
10623
|
-
return { app, fileApp };
|
|
10624
|
-
} else {
|
|
10625
|
-
return { app, fileApp: app };
|
|
10626
|
-
}
|
|
10627
|
-
}
|
|
10628
10589
|
async function getForceFresh(filePath, cacheEntry) {
|
|
10629
10590
|
if (!cacheEntry)
|
|
10630
10591
|
return true;
|
|
@@ -10675,6 +10636,24 @@ async function compileTs(filePath, fullPath, {
|
|
|
10675
10636
|
}
|
|
10676
10637
|
});
|
|
10677
10638
|
}
|
|
10639
|
+
async function resolveApps({
|
|
10640
|
+
request,
|
|
10641
|
+
params,
|
|
10642
|
+
timings
|
|
10643
|
+
}) {
|
|
10644
|
+
const url = new URL(request.url);
|
|
10645
|
+
const { appName } = params;
|
|
10646
|
+
invariantResponse(appName, "appName param required");
|
|
10647
|
+
const app = await getAppByName(appName, { request, timings });
|
|
10648
|
+
const fileAppName = url.searchParams.get("fileAppName");
|
|
10649
|
+
if (fileAppName) {
|
|
10650
|
+
const apps = await getApps({ request, timings });
|
|
10651
|
+
const fileApp = fileAppName ? apps.find((app2) => app2.name === fileAppName) : app;
|
|
10652
|
+
return { app, fileApp };
|
|
10653
|
+
} else {
|
|
10654
|
+
return { app, fileApp: app };
|
|
10655
|
+
}
|
|
10656
|
+
}
|
|
10678
10657
|
async function loader$f({ request, params }) {
|
|
10679
10658
|
const timings = makeTimings("app-file");
|
|
10680
10659
|
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
@@ -12133,7 +12112,7 @@ const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
12133
12112
|
__proto__: null,
|
|
12134
12113
|
loader
|
|
12135
12114
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
12136
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-0j1eoieD.js", "imports": ["/assets/index-D6ygCrVn.js", "/assets/components-C5xBZAiL.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-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": "*", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-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", "index": void 0, "caseSensitive": void 0, "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/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-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", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": true, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-0b01450d.js", "version": "0b01450d" };
|
|
12115
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-0j1eoieD.js", "imports": ["/assets/index-D6ygCrVn.js", "/assets/components-C5xBZAiL.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-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": "*", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-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", "index": void 0, "caseSensitive": void 0, "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/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-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", "index": void 0, "caseSensitive": void 0, "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", "path": void 0, "index": true, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-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", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-03cfc48d.js", "version": "03cfc48d" };
|
|
12137
12116
|
const mode = "production";
|
|
12138
12117
|
const assetsBuildDirectory = "build/client";
|
|
12139
12118
|
const basename = "/";
|