@epic-web/workshop-app 5.0.3 → 5.1.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/app.epic_ws_.js_-l0sNRNKZ.js +2 -0
- package/build/client/assets/app.epic_ws_.js_-l0sNRNKZ.js.map +1 -0
- package/build/client/assets/manifest-b22910a7.js +1 -0
- package/build/server/index.js +265 -2484
- package/build/server/index.js.map +1 -1
- package/package.json +3 -25
- package/build/client/assets/manifest-d7c89645.js +0 -1
- package/node_modules/@babel/runtime/LICENSE +0 -22
- package/node_modules/@babel/runtime/README.md +0 -19
- package/node_modules/@babel/runtime/helpers/AwaitValue.js +0 -4
- package/node_modules/@babel/runtime/helpers/OverloadYield.js +0 -4
- package/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js +0 -9
- package/node_modules/@babel/runtime/helpers/applyDecs.js +0 -236
- package/node_modules/@babel/runtime/helpers/applyDecs2203.js +0 -184
- package/node_modules/@babel/runtime/helpers/applyDecs2203R.js +0 -191
- package/node_modules/@babel/runtime/helpers/applyDecs2301.js +0 -222
- package/node_modules/@babel/runtime/helpers/applyDecs2305.js +0 -133
- package/node_modules/@babel/runtime/helpers/applyDecs2311.js +0 -124
- package/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +0 -6
- package/node_modules/@babel/runtime/helpers/arrayWithHoles.js +0 -4
- package/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +0 -5
- package/node_modules/@babel/runtime/helpers/assertClassBrand.js +0 -5
- package/node_modules/@babel/runtime/helpers/assertThisInitialized.js +0 -5
- package/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js +0 -24
- package/node_modules/@babel/runtime/helpers/asyncIterator.js +0 -45
- package/node_modules/@babel/runtime/helpers/asyncToGenerator.js +0 -26
- package/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js +0 -5
- package/node_modules/@babel/runtime/helpers/callSuper.js +0 -7
- package/node_modules/@babel/runtime/helpers/checkInRHS.js +0 -6
- package/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js +0 -4
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js +0 -10
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js +0 -4
- package/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classCallCheck.js +0 -4
- package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js +0 -5
- package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js +0 -4
- package/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js +0 -5
- package/node_modules/@babel/runtime/helpers/classNameTDZError.js +0 -4
- package/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateGetter.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js +0 -5
- package/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js +0 -4
- package/node_modules/@babel/runtime/helpers/classPrivateSetter.js +0 -5
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js +0 -5
- package/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js +0 -4
- package/node_modules/@babel/runtime/helpers/construct.js +0 -10
- package/node_modules/@babel/runtime/helpers/createClass.js +0 -13
- package/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js +0 -50
- package/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js +0 -19
- package/node_modules/@babel/runtime/helpers/createSuper.js +0 -16
- package/node_modules/@babel/runtime/helpers/decorate.js +0 -250
- package/node_modules/@babel/runtime/helpers/defaults.js +0 -9
- package/node_modules/@babel/runtime/helpers/defineAccessor.js +0 -8
- package/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js +0 -12
- package/node_modules/@babel/runtime/helpers/defineProperty.js +0 -10
- package/node_modules/@babel/runtime/helpers/dispose.js +0 -28
- package/node_modules/@babel/runtime/helpers/esm/AwaitValue.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/OverloadYield.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/applyDecs.js +0 -236
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js +0 -184
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js +0 -191
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js +0 -222
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js +0 -133
- package/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js +0 -124
- package/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js +0 -24
- package/node_modules/@babel/runtime/helpers/esm/asyncIterator.js +0 -45
- package/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +0 -26
- package/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/callSuper.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/checkInRHS.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/construct.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/createClass.js +0 -13
- package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js +0 -50
- package/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js +0 -19
- package/node_modules/@babel/runtime/helpers/esm/createSuper.js +0 -16
- package/node_modules/@babel/runtime/helpers/esm/decorate.js +0 -250
- package/node_modules/@babel/runtime/helpers/esm/defaults.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/defineAccessor.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js +0 -12
- package/node_modules/@babel/runtime/helpers/esm/defineProperty.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/dispose.js +0 -28
- package/node_modules/@babel/runtime/helpers/esm/extends.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/get.js +0 -11
- package/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/identity.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js +0 -27
- package/node_modules/@babel/runtime/helpers/esm/inherits.js +0 -14
- package/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +0 -5
- package/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/instanceof.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js +0 -27
- package/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +0 -28
- package/node_modules/@babel/runtime/helpers/esm/jsx.js +0 -22
- package/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/objectSpread.js +0 -14
- package/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +0 -23
- package/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +0 -13
- package/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/package.json +0 -3
- package/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/readOnlyError.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +0 -304
- package/node_modules/@babel/runtime/helpers/esm/set.js +0 -22
- package/node_modules/@babel/runtime/helpers/esm/setFunctionName.js +0 -12
- package/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/superPropBase.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/tdz.js +0 -4
- package/node_modules/@babel/runtime/helpers/esm/temporalRef.js +0 -6
- package/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js +0 -2
- package/node_modules/@babel/runtime/helpers/esm/toArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +0 -12
- package/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +0 -7
- package/node_modules/@babel/runtime/helpers/esm/toSetter.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/typeof.js +0 -10
- package/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +0 -9
- package/node_modules/@babel/runtime/helpers/esm/using.js +0 -12
- package/node_modules/@babel/runtime/helpers/esm/usingCtx.js +0 -47
- package/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js +0 -69
- package/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js +0 -27
- package/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js +0 -51
- package/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js +0 -4
- package/node_modules/@babel/runtime/helpers/extends.js +0 -10
- package/node_modules/@babel/runtime/helpers/get.js +0 -11
- package/node_modules/@babel/runtime/helpers/getPrototypeOf.js +0 -6
- package/node_modules/@babel/runtime/helpers/identity.js +0 -4
- package/node_modules/@babel/runtime/helpers/importDeferProxy.js +0 -27
- package/node_modules/@babel/runtime/helpers/inherits.js +0 -14
- package/node_modules/@babel/runtime/helpers/inheritsLoose.js +0 -5
- package/node_modules/@babel/runtime/helpers/initializerDefineProperty.js +0 -9
- package/node_modules/@babel/runtime/helpers/initializerWarningHelper.js +0 -4
- package/node_modules/@babel/runtime/helpers/instanceof.js +0 -4
- package/node_modules/@babel/runtime/helpers/interopRequireDefault.js +0 -6
- package/node_modules/@babel/runtime/helpers/interopRequireWildcard.js +0 -27
- package/node_modules/@babel/runtime/helpers/isNativeFunction.js +0 -8
- package/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js +0 -9
- package/node_modules/@babel/runtime/helpers/iterableToArray.js +0 -4
- package/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js +0 -28
- package/node_modules/@babel/runtime/helpers/jsx.js +0 -22
- package/node_modules/@babel/runtime/helpers/maybeArrayLike.js +0 -9
- package/node_modules/@babel/runtime/helpers/newArrowCheck.js +0 -4
- package/node_modules/@babel/runtime/helpers/nonIterableRest.js +0 -4
- package/node_modules/@babel/runtime/helpers/nonIterableSpread.js +0 -4
- package/node_modules/@babel/runtime/helpers/nullishReceiverError.js +0 -4
- package/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js +0 -4
- package/node_modules/@babel/runtime/helpers/objectSpread.js +0 -14
- package/node_modules/@babel/runtime/helpers/objectSpread2.js +0 -23
- package/node_modules/@babel/runtime/helpers/objectWithoutProperties.js +0 -13
- package/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +0 -10
- package/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js +0 -8
- package/node_modules/@babel/runtime/helpers/readOnlyError.js +0 -4
- package/node_modules/@babel/runtime/helpers/regeneratorRuntime.js +0 -304
- package/node_modules/@babel/runtime/helpers/set.js +0 -22
- package/node_modules/@babel/runtime/helpers/setFunctionName.js +0 -12
- package/node_modules/@babel/runtime/helpers/setPrototypeOf.js +0 -6
- package/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js +0 -7
- package/node_modules/@babel/runtime/helpers/slicedToArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/superPropBase.js +0 -6
- package/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js +0 -8
- package/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js +0 -4
- package/node_modules/@babel/runtime/helpers/tdz.js +0 -4
- package/node_modules/@babel/runtime/helpers/temporalRef.js +0 -6
- package/node_modules/@babel/runtime/helpers/temporalUndefined.js +0 -2
- package/node_modules/@babel/runtime/helpers/toArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/toConsumableArray.js +0 -8
- package/node_modules/@babel/runtime/helpers/toPrimitive.js +0 -12
- package/node_modules/@babel/runtime/helpers/toPropertyKey.js +0 -7
- package/node_modules/@babel/runtime/helpers/toSetter.js +0 -10
- package/node_modules/@babel/runtime/helpers/typeof.js +0 -10
- package/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +0 -9
- package/node_modules/@babel/runtime/helpers/using.js +0 -12
- package/node_modules/@babel/runtime/helpers/usingCtx.js +0 -47
- package/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js +0 -69
- package/node_modules/@babel/runtime/helpers/wrapNativeSuper.js +0 -27
- package/node_modules/@babel/runtime/helpers/wrapRegExp.js +0 -51
- package/node_modules/@babel/runtime/helpers/writeOnlyError.js +0 -4
- package/node_modules/@babel/runtime/package.json +0 -1038
- package/node_modules/@babel/runtime/regenerator/index.js +0 -15
- package/node_modules/@conform-to/dom/LICENSE +0 -21
- package/node_modules/@conform-to/dom/README +0 -37
- package/node_modules/@conform-to/dom/_virtual/_rollupPluginBabelHelpers.js +0 -58
- package/node_modules/@conform-to/dom/_virtual/_rollupPluginBabelHelpers.mjs +0 -51
- package/node_modules/@conform-to/dom/dom.d.ts +0 -55
- package/node_modules/@conform-to/dom/dom.js +0 -104
- package/node_modules/@conform-to/dom/dom.mjs +0 -95
- package/node_modules/@conform-to/dom/form.d.ts +0 -246
- package/node_modules/@conform-to/dom/form.js +0 -582
- package/node_modules/@conform-to/dom/form.mjs +0 -578
- package/node_modules/@conform-to/dom/formdata.d.ts +0 -61
- package/node_modules/@conform-to/dom/formdata.js +0 -214
- package/node_modules/@conform-to/dom/formdata.mjs +0 -200
- package/node_modules/@conform-to/dom/index.d.ts +0 -26
- package/node_modules/@conform-to/dom/index.js +0 -20
- package/node_modules/@conform-to/dom/index.mjs +0 -4
- package/node_modules/@conform-to/dom/intent.d.ts +0 -114
- package/node_modules/@conform-to/dom/intent.js +0 -136
- package/node_modules/@conform-to/dom/intent.mjs +0 -126
- package/node_modules/@conform-to/dom/package.json +0 -59
- package/node_modules/@conform-to/dom/parse.d.ts +0 -50
- package/node_modules/@conform-to/dom/parse.js +0 -43
- package/node_modules/@conform-to/dom/parse.mjs +0 -37
- package/node_modules/@conform-to/dom/submission.d.ts +0 -135
- package/node_modules/@conform-to/dom/submission.js +0 -305
- package/node_modules/@conform-to/dom/submission.mjs +0 -288
- package/node_modules/@conform-to/dom/types.d.ts +0 -23
- package/node_modules/@conform-to/dom/util.d.ts +0 -6
- package/node_modules/@conform-to/dom/util.js +0 -19
- package/node_modules/@conform-to/dom/util.mjs +0 -13
- package/node_modules/@conform-to/react/LICENSE +0 -21
- package/node_modules/@conform-to/react/README +0 -37
- package/node_modules/@conform-to/react/_virtual/_rollupPluginBabelHelpers.js +0 -87
- package/node_modules/@conform-to/react/_virtual/_rollupPluginBabelHelpers.mjs +0 -78
- package/node_modules/@conform-to/react/context.d.ts +0 -200
- package/node_modules/@conform-to/react/context.js +0 -256
- package/node_modules/@conform-to/react/context.mjs +0 -241
- package/node_modules/@conform-to/react/experimental.d.ts +0 -0
- package/node_modules/@conform-to/react/helpers.d.ts +0 -208
- package/node_modules/@conform-to/react/helpers.js +0 -222
- package/node_modules/@conform-to/react/helpers.mjs +0 -211
- package/node_modules/@conform-to/react/hooks.d.ts +0 -63
- package/node_modules/@conform-to/react/hooks.js +0 -88
- package/node_modules/@conform-to/react/hooks.mjs +0 -79
- package/node_modules/@conform-to/react/index.d.ts +0 -29
- package/node_modules/@conform-to/react/index.js +0 -30
- package/node_modules/@conform-to/react/index.mjs +0 -5
- package/node_modules/@conform-to/react/integrations.d.ts +0 -45
- package/node_modules/@conform-to/react/integrations.js +0 -298
- package/node_modules/@conform-to/react/integrations.mjs +0 -284
- package/node_modules/@conform-to/react/package.json +0 -69
- package/node_modules/@conform-to/zod/LICENSE +0 -21
- package/node_modules/@conform-to/zod/README +0 -37
- package/node_modules/@conform-to/zod/_virtual/_rollupPluginBabelHelpers.js +0 -58
- package/node_modules/@conform-to/zod/_virtual/_rollupPluginBabelHelpers.mjs +0 -51
- package/node_modules/@conform-to/zod/coercion.d.ts +0 -37
- package/node_modules/@conform-to/zod/coercion.js +0 -171
- package/node_modules/@conform-to/zod/coercion.mjs +0 -164
- package/node_modules/@conform-to/zod/constraint.d.ts +0 -5
- package/node_modules/@conform-to/zod/constraint.js +0 -103
- package/node_modules/@conform-to/zod/constraint.mjs +0 -99
- package/node_modules/@conform-to/zod/index.d.ts +0 -2
- package/node_modules/@conform-to/zod/index.js +0 -12
- package/node_modules/@conform-to/zod/index.mjs +0 -2
- package/node_modules/@conform-to/zod/package.json +0 -61
- package/node_modules/@conform-to/zod/parse.d.ts +0 -46
- package/node_modules/@conform-to/zod/parse.js +0 -64
- package/node_modules/@conform-to/zod/parse.mjs +0 -59
- package/node_modules/@epic-web/client-hints/README.md +0 -221
- package/node_modules/@epic-web/client-hints/dist/color-scheme.d.ts +0 -12
- package/node_modules/@epic-web/client-hints/dist/color-scheme.js +0 -25
- package/node_modules/@epic-web/client-hints/dist/index.d.ts +0 -6
- package/node_modules/@epic-web/client-hints/dist/index.js +0 -79
- package/node_modules/@epic-web/client-hints/dist/reduced-motion.d.ts +0 -12
- package/node_modules/@epic-web/client-hints/dist/reduced-motion.js +0 -25
- package/node_modules/@epic-web/client-hints/dist/time-zone.d.ts +0 -5
- package/node_modules/@epic-web/client-hints/dist/time-zone.js +0 -5
- package/node_modules/@epic-web/client-hints/dist/utils.d.ts +0 -9
- package/node_modules/@epic-web/client-hints/dist/utils.js +0 -1
- package/node_modules/@epic-web/client-hints/package.json +0 -71
- package/node_modules/@epic-web/restore-scroll/README.md +0 -108
- package/node_modules/@epic-web/restore-scroll/dist/index.d.ts +0 -7
- package/node_modules/@epic-web/restore-scroll/dist/index.js +0 -85
- package/node_modules/@epic-web/restore-scroll/package.json +0 -64
- package/node_modules/@floating-ui/core/LICENSE +0 -20
- package/node_modules/@floating-ui/core/README.md +0 -4
- package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs +0 -1
- package/node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs +0 -1164
- package/node_modules/@floating-ui/core/dist/floating-ui.core.d.mts +0 -521
- package/node_modules/@floating-ui/core/dist/floating-ui.core.d.ts +0 -521
- package/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js +0 -1036
- package/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +0 -1036
- package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.js +0 -1183
- package/node_modules/@floating-ui/core/dist/floating-ui.core.umd.min.js +0 -1
- package/node_modules/@floating-ui/core/package.json +0 -63
- package/node_modules/@floating-ui/dom/LICENSE +0 -20
- package/node_modules/@floating-ui/dom/README.md +0 -4
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs +0 -1
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs +0 -853
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts +0 -356
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.d.ts +0 -356
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js +0 -704
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +0 -704
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.js +0 -872
- package/node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.min.js +0 -1
- package/node_modules/@floating-ui/dom/package.json +0 -71
- package/node_modules/@floating-ui/react-dom/LICENSE +0 -20
- package/node_modules/@floating-ui/react-dom/README.md +0 -3
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.mts +0 -307
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.d.ts +0 -307
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js +0 -363
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs +0 -363
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.umd.js +0 -414
- package/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.umd.min.js +0 -1
- package/node_modules/@floating-ui/react-dom/package.json +0 -77
- package/node_modules/@floating-ui/utils/LICENSE +0 -20
- package/node_modules/@floating-ui/utils/README.md +0 -4
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts +0 -103
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.d.ts +0 -103
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts +0 -45
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.ts +0 -45
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.esm.js +0 -139
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +0 -139
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.js +0 -165
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.umd.min.js +0 -1
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js +0 -138
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +0 -138
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.umd.js +0 -169
- package/node_modules/@floating-ui/utils/dist/floating-ui.utils.umd.min.js +0 -1
- package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.d.ts +0 -45
- package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.esm.js +0 -139
- package/node_modules/@floating-ui/utils/dom/floating-ui.utils.dom.umd.js +0 -165
- package/node_modules/@floating-ui/utils/dom/package.json +0 -6
- package/node_modules/@floating-ui/utils/package.json +0 -70
- package/node_modules/@radix-ui/number/README.md +0 -13
- package/node_modules/@radix-ui/number/dist/index.d.mts +0 -3
- package/node_modules/@radix-ui/number/dist/index.d.ts +0 -3
- package/node_modules/@radix-ui/number/dist/index.js +0 -31
- package/node_modules/@radix-ui/number/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/number/dist/index.mjs +0 -8
- package/node_modules/@radix-ui/number/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/number/package.json +0 -38
- package/node_modules/@radix-ui/primitive/README.md +0 -13
- package/node_modules/@radix-ui/primitive/dist/index.d.mts +0 -5
- package/node_modules/@radix-ui/primitive/dist/index.d.ts +0 -5
- package/node_modules/@radix-ui/primitive/dist/index.js +0 -36
- package/node_modules/@radix-ui/primitive/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/primitive/dist/index.mjs +0 -13
- package/node_modules/@radix-ui/primitive/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/primitive/package.json +0 -38
- package/node_modules/@radix-ui/react-accordion/README.md +0 -13
- package/node_modules/@radix-ui/react-accordion/dist/index.d.mts +0 -125
- package/node_modules/@radix-ui/react-accordion/dist/index.d.ts +0 -125
- package/node_modules/@radix-ui/react-accordion/dist/index.js +0 -350
- package/node_modules/@radix-ui/react-accordion/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-accordion/dist/index.mjs +0 -318
- package/node_modules/@radix-ui/react-accordion/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-accordion/package.json +0 -63
- package/node_modules/@radix-ui/react-arrow/README.md +0 -13
- package/node_modules/@radix-ui/react-arrow/dist/index.d.mts +0 -10
- package/node_modules/@radix-ui/react-arrow/dist/index.d.ts +0 -10
- package/node_modules/@radix-ui/react-arrow/dist/index.js +0 -60
- package/node_modules/@radix-ui/react-arrow/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-arrow/dist/index.mjs +0 -27
- package/node_modules/@radix-ui/react-arrow/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-arrow/package.json +0 -55
- package/node_modules/@radix-ui/react-collapsible/README.md +0 -13
- package/node_modules/@radix-ui/react-collapsible/dist/index.d.mts +0 -43
- package/node_modules/@radix-ui/react-collapsible/dist/index.d.ts +0 -43
- package/node_modules/@radix-ui/react-collapsible/dist/index.js +0 -186
- package/node_modules/@radix-ui/react-collapsible/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-collapsible/dist/index.mjs +0 -154
- package/node_modules/@radix-ui/react-collapsible/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-collapsible/package.json +0 -62
- package/node_modules/@radix-ui/react-collection/README.md +0 -13
- package/node_modules/@radix-ui/react-collection/dist/index.d.mts +0 -34
- package/node_modules/@radix-ui/react-collection/dist/index.d.ts +0 -34
- package/node_modules/@radix-ui/react-collection/dist/index.js +0 -104
- package/node_modules/@radix-ui/react-collection/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-collection/dist/index.mjs +0 -72
- package/node_modules/@radix-ui/react-collection/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-collection/package.json +0 -58
- package/node_modules/@radix-ui/react-compose-refs/README.md +0 -13
- package/node_modules/@radix-ui/react-compose-refs/dist/index.d.mts +0 -15
- package/node_modules/@radix-ui/react-compose-refs/dist/index.d.ts +0 -15
- package/node_modules/@radix-ui/react-compose-refs/dist/index.js +0 -53
- package/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs +0 -20
- package/node_modules/@radix-ui/react-compose-refs/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-compose-refs/package.json +0 -47
- package/node_modules/@radix-ui/react-context/README.md +0 -13
- package/node_modules/@radix-ui/react-context/dist/index.d.mts +0 -28
- package/node_modules/@radix-ui/react-context/dist/index.d.ts +0 -28
- package/node_modules/@radix-ui/react-context/dist/index.js +0 -114
- package/node_modules/@radix-ui/react-context/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-context/dist/index.mjs +0 -81
- package/node_modules/@radix-ui/react-context/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-context/package.json +0 -47
- package/node_modules/@radix-ui/react-direction/README.md +0 -13
- package/node_modules/@radix-ui/react-direction/dist/index.d.mts +0 -12
- package/node_modules/@radix-ui/react-direction/dist/index.d.ts +0 -12
- package/node_modules/@radix-ui/react-direction/dist/index.js +0 -52
- package/node_modules/@radix-ui/react-direction/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-direction/dist/index.mjs +0 -19
- package/node_modules/@radix-ui/react-direction/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-direction/package.json +0 -47
- package/node_modules/@radix-ui/react-dismissable-layer/README.md +0 -13
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.mts +0 -51
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.d.ts +0 -51
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +0 -253
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs +0 -221
- package/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-dismissable-layer/package.json +0 -62
- package/node_modules/@radix-ui/react-focus-guards/README.md +0 -13
- package/node_modules/@radix-ui/react-focus-guards/dist/index.d.mts +0 -9
- package/node_modules/@radix-ui/react-focus-guards/dist/index.d.ts +0 -9
- package/node_modules/@radix-ui/react-focus-guards/dist/index.js +0 -69
- package/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-focus-guards/dist/index.mjs +0 -37
- package/node_modules/@radix-ui/react-focus-guards/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-focus-guards/package.json +0 -47
- package/node_modules/@radix-ui/react-focus-scope/README.md +0 -13
- package/node_modules/@radix-ui/react-focus-scope/dist/index.d.mts +0 -32
- package/node_modules/@radix-ui/react-focus-scope/dist/index.d.ts +0 -32
- package/node_modules/@radix-ui/react-focus-scope/dist/index.js +0 -246
- package/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-focus-scope/dist/index.mjs +0 -214
- package/node_modules/@radix-ui/react-focus-scope/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-focus-scope/package.json +0 -57
- package/node_modules/@radix-ui/react-id/README.md +0 -13
- package/node_modules/@radix-ui/react-id/dist/index.d.mts +0 -3
- package/node_modules/@radix-ui/react-id/dist/index.d.ts +0 -3
- package/node_modules/@radix-ui/react-id/dist/index.js +0 -49
- package/node_modules/@radix-ui/react-id/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-id/dist/index.mjs +0 -16
- package/node_modules/@radix-ui/react-id/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-id/package.json +0 -50
- package/node_modules/@radix-ui/react-popover/README.md +0 -13
- package/node_modules/@radix-ui/react-popover/dist/index.d.mts +0 -95
- package/node_modules/@radix-ui/react-popover/dist/index.d.ts +0 -95
- package/node_modules/@radix-ui/react-popover/dist/index.js +0 -350
- package/node_modules/@radix-ui/react-popover/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-popover/dist/index.mjs +0 -318
- package/node_modules/@radix-ui/react-popover/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-popover/package.json +0 -69
- package/node_modules/@radix-ui/react-popper/README.md +0 -13
- package/node_modules/@radix-ui/react-popper/dist/index.d.mts +0 -56
- package/node_modules/@radix-ui/react-popper/dist/index.d.ts +0 -56
- package/node_modules/@radix-ui/react-popper/dist/index.js +0 -325
- package/node_modules/@radix-ui/react-popper/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-popper/dist/index.mjs +0 -303
- package/node_modules/@radix-ui/react-popper/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-popper/package.json +0 -64
- package/node_modules/@radix-ui/react-portal/README.md +0 -13
- package/node_modules/@radix-ui/react-portal/dist/index.d.mts +0 -14
- package/node_modules/@radix-ui/react-portal/dist/index.d.ts +0 -14
- package/node_modules/@radix-ui/react-portal/dist/index.js +0 -55
- package/node_modules/@radix-ui/react-portal/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-portal/dist/index.mjs +0 -23
- package/node_modules/@radix-ui/react-portal/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-portal/package.json +0 -56
- package/node_modules/@radix-ui/react-presence/README.md +0 -13
- package/node_modules/@radix-ui/react-presence/dist/index.d.mts +0 -11
- package/node_modules/@radix-ui/react-presence/dist/index.d.ts +0 -11
- package/node_modules/@radix-ui/react-presence/dist/index.js +0 -158
- package/node_modules/@radix-ui/react-presence/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-presence/dist/index.mjs +0 -126
- package/node_modules/@radix-ui/react-presence/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-presence/package.json +0 -56
- package/node_modules/@radix-ui/react-primitive/README.md +0 -13
- package/node_modules/@radix-ui/react-primitive/dist/index.d.mts +0 -52
- package/node_modules/@radix-ui/react-primitive/dist/index.d.ts +0 -52
- package/node_modules/@radix-ui/react-primitive/dist/index.js +0 -78
- package/node_modules/@radix-ui/react-primitive/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-primitive/dist/index.mjs +0 -45
- package/node_modules/@radix-ui/react-primitive/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-primitive/package.json +0 -58
- package/node_modules/@radix-ui/react-roving-focus/README.md +0 -13
- package/node_modules/@radix-ui/react-roving-focus/dist/index.d.mts +0 -55
- package/node_modules/@radix-ui/react-roving-focus/dist/index.d.ts +0 -55
- package/node_modules/@radix-ui/react-roving-focus/dist/index.js +0 -260
- package/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-roving-focus/dist/index.mjs +0 -228
- package/node_modules/@radix-ui/react-roving-focus/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-roving-focus/package.json +0 -63
- package/node_modules/@radix-ui/react-select/README.md +0 -13
- package/node_modules/@radix-ui/react-select/dist/index.d.mts +0 -144
- package/node_modules/@radix-ui/react-select/dist/index.d.ts +0 -144
- package/node_modules/@radix-ui/react-select/dist/index.js +0 -1182
- package/node_modules/@radix-ui/react-select/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-select/dist/index.mjs +0 -1150
- package/node_modules/@radix-ui/react-select/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-select/package.json +0 -75
- package/node_modules/@radix-ui/react-slot/README.md +0 -13
- package/node_modules/@radix-ui/react-slot/dist/index.d.mts +0 -13
- package/node_modules/@radix-ui/react-slot/dist/index.d.ts +0 -13
- package/node_modules/@radix-ui/react-slot/dist/index.js +0 -118
- package/node_modules/@radix-ui/react-slot/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-slot/dist/index.mjs +0 -85
- package/node_modules/@radix-ui/react-slot/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-slot/package.json +0 -50
- package/node_modules/@radix-ui/react-tabs/README.md +0 -13
- package/node_modules/@radix-ui/react-tabs/dist/index.d.mts +0 -66
- package/node_modules/@radix-ui/react-tabs/dist/index.d.ts +0 -66
- package/node_modules/@radix-ui/react-tabs/dist/index.js +0 -231
- package/node_modules/@radix-ui/react-tabs/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-tabs/dist/index.mjs +0 -199
- package/node_modules/@radix-ui/react-tabs/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-tabs/package.json +0 -62
- package/node_modules/@radix-ui/react-toast/README.md +0 -13
- package/node_modules/@radix-ui/react-toast/dist/index.d.mts +0 -130
- package/node_modules/@radix-ui/react-toast/dist/index.d.ts +0 -130
- package/node_modules/@radix-ui/react-toast/dist/index.js +0 -681
- package/node_modules/@radix-ui/react-toast/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-toast/dist/index.mjs +0 -649
- package/node_modules/@radix-ui/react-toast/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-toast/package.json +0 -66
- package/node_modules/@radix-ui/react-use-callback-ref/README.md +0 -13
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.d.mts +0 -7
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.d.ts +0 -7
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +0 -46
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs +0 -13
- package/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-callback-ref/package.json +0 -47
- package/node_modules/@radix-ui/react-use-controllable-state/README.md +0 -13
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.mts +0 -10
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.d.ts +0 -10
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +0 -80
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs +0 -47
- package/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-controllable-state/package.json +0 -50
- package/node_modules/@radix-ui/react-use-escape-keydown/README.md +0 -13
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.d.mts +0 -6
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.d.ts +0 -6
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +0 -52
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs +0 -19
- package/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-escape-keydown/package.json +0 -50
- package/node_modules/@radix-ui/react-use-layout-effect/README.md +0 -13
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.mts +0 -12
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.d.ts +0 -12
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +0 -41
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs +0 -8
- package/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-layout-effect/package.json +0 -47
- package/node_modules/@radix-ui/react-use-previous/README.md +0 -13
- package/node_modules/@radix-ui/react-use-previous/dist/index.d.mts +0 -3
- package/node_modules/@radix-ui/react-use-previous/dist/index.d.ts +0 -3
- package/node_modules/@radix-ui/react-use-previous/dist/index.js +0 -49
- package/node_modules/@radix-ui/react-use-previous/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-previous/dist/index.mjs +0 -16
- package/node_modules/@radix-ui/react-use-previous/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-previous/package.json +0 -47
- package/node_modules/@radix-ui/react-use-rect/README.md +0 -13
- package/node_modules/@radix-ui/react-use-rect/dist/index.d.mts +0 -9
- package/node_modules/@radix-ui/react-use-rect/dist/index.d.ts +0 -9
- package/node_modules/@radix-ui/react-use-rect/dist/index.js +0 -54
- package/node_modules/@radix-ui/react-use-rect/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-rect/dist/index.mjs +0 -21
- package/node_modules/@radix-ui/react-use-rect/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-rect/package.json +0 -50
- package/node_modules/@radix-ui/react-use-size/README.md +0 -13
- package/node_modules/@radix-ui/react-use-size/dist/index.d.mts +0 -6
- package/node_modules/@radix-ui/react-use-size/dist/index.d.ts +0 -6
- package/node_modules/@radix-ui/react-use-size/dist/index.js +0 -74
- package/node_modules/@radix-ui/react-use-size/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-use-size/dist/index.mjs +0 -41
- package/node_modules/@radix-ui/react-use-size/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-use-size/package.json +0 -53
- package/node_modules/@radix-ui/react-visually-hidden/README.md +0 -13
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.d.mts +0 -10
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.d.ts +0 -10
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.js +0 -70
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs +0 -37
- package/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/react-visually-hidden/package.json +0 -55
- package/node_modules/@radix-ui/rect/README.md +0 -13
- package/node_modules/@radix-ui/rect/dist/index.d.mts +0 -16
- package/node_modules/@radix-ui/rect/dist/index.d.ts +0 -16
- package/node_modules/@radix-ui/rect/dist/index.js +0 -73
- package/node_modules/@radix-ui/rect/dist/index.js.map +0 -7
- package/node_modules/@radix-ui/rect/dist/index.mjs +0 -50
- package/node_modules/@radix-ui/rect/dist/index.mjs.map +0 -7
- package/node_modules/@radix-ui/rect/package.json +0 -38
- package/node_modules/@remix-run/react/CHANGELOG.md +0 -964
- package/node_modules/@remix-run/react/LICENSE.md +0 -22
- package/node_modules/@remix-run/react/README.md +0 -13
- package/node_modules/@remix-run/react/dist/_virtual/_rollupPluginBabelHelpers.js +0 -30
- package/node_modules/@remix-run/react/dist/browser.d.ts +0 -37
- package/node_modules/@remix-run/react/dist/browser.js +0 -268
- package/node_modules/@remix-run/react/dist/components.d.ts +0 -137
- package/node_modules/@remix-run/react/dist/components.js +0 -911
- package/node_modules/@remix-run/react/dist/data.d.ts +0 -15
- package/node_modules/@remix-run/react/dist/data.js +0 -280
- package/node_modules/@remix-run/react/dist/entry.d.ts +0 -51
- package/node_modules/@remix-run/react/dist/errorBoundaries.d.ts +0 -36
- package/node_modules/@remix-run/react/dist/errorBoundaries.js +0 -186
- package/node_modules/@remix-run/react/dist/errors.d.ts +0 -2
- package/node_modules/@remix-run/react/dist/errors.js +0 -53
- package/node_modules/@remix-run/react/dist/esm/_virtual/_rollupPluginBabelHelpers.js +0 -26
- package/node_modules/@remix-run/react/dist/esm/browser.js +0 -308
- package/node_modules/@remix-run/react/dist/esm/components.js +0 -878
- package/node_modules/@remix-run/react/dist/esm/data.js +0 -267
- package/node_modules/@remix-run/react/dist/esm/errorBoundaries.js +0 -160
- package/node_modules/@remix-run/react/dist/esm/errors.js +0 -49
- package/node_modules/@remix-run/react/dist/esm/fallback.js +0 -35
- package/node_modules/@remix-run/react/dist/esm/fog-of-war.js +0 -226
- package/node_modules/@remix-run/react/dist/esm/index.js +0 -17
- package/node_modules/@remix-run/react/dist/esm/invariant.js +0 -17
- package/node_modules/@remix-run/react/dist/esm/links.js +0 -258
- package/node_modules/@remix-run/react/dist/esm/markup.js +0 -34
- package/node_modules/@remix-run/react/dist/esm/routeModules.js +0 -89
- package/node_modules/@remix-run/react/dist/esm/routes.js +0 -411
- package/node_modules/@remix-run/react/dist/esm/scroll-restoration.js +0 -84
- package/node_modules/@remix-run/react/dist/esm/server.js +0 -93
- package/node_modules/@remix-run/react/dist/esm/single-fetch.js +0 -309
- package/node_modules/@remix-run/react/dist/fallback.d.ts +0 -2
- package/node_modules/@remix-run/react/dist/fallback.js +0 -59
- package/node_modules/@remix-run/react/dist/fog-of-war.d.ts +0 -37
- package/node_modules/@remix-run/react/dist/fog-of-war.js +0 -254
- package/node_modules/@remix-run/react/dist/index.d.ts +0 -16
- package/node_modules/@remix-run/react/dist/index.js +0 -227
- package/node_modules/@remix-run/react/dist/invariant.d.ts +0 -2
- package/node_modules/@remix-run/react/dist/invariant.js +0 -19
- package/node_modules/@remix-run/react/dist/links.d.ts +0 -128
- package/node_modules/@remix-run/react/dist/links.js +0 -268
- package/node_modules/@remix-run/react/dist/markup.d.ts +0 -5
- package/node_modules/@remix-run/react/dist/markup.js +0 -39
- package/node_modules/@remix-run/react/dist/routeModules.d.ts +0 -132
- package/node_modules/@remix-run/react/dist/routeModules.js +0 -111
- package/node_modules/@remix-run/react/dist/routes.d.ts +0 -32
- package/node_modules/@remix-run/react/dist/routes.js +0 -438
- package/node_modules/@remix-run/react/dist/scroll-restoration.d.ts +0 -12
- package/node_modules/@remix-run/react/dist/scroll-restoration.js +0 -108
- package/node_modules/@remix-run/react/dist/server.d.ts +0 -14
- package/node_modules/@remix-run/react/dist/server.js +0 -117
- package/node_modules/@remix-run/react/dist/single-fetch.d.ts +0 -34
- package/node_modules/@remix-run/react/dist/single-fetch.js +0 -339
- package/node_modules/@remix-run/react/dist/warnings.d.ts +0 -1
- package/node_modules/@remix-run/react/future/single-fetch.d.ts +0 -73
- package/node_modules/@remix-run/react/package.json +0 -59
- package/node_modules/@remix-run/router/CHANGELOG.md +0 -747
- package/node_modules/@remix-run/router/LICENSE.md +0 -23
- package/node_modules/@remix-run/router/README.md +0 -135
- package/node_modules/@remix-run/router/dist/history.d.ts +0 -250
- package/node_modules/@remix-run/router/dist/index.d.ts +0 -9
- package/node_modules/@remix-run/router/dist/router.cjs.js +0 -5407
- package/node_modules/@remix-run/router/dist/router.cjs.js.map +0 -1
- package/node_modules/@remix-run/router/dist/router.d.ts +0 -523
- package/node_modules/@remix-run/router/dist/router.js +0 -4856
- package/node_modules/@remix-run/router/dist/router.js.map +0 -1
- package/node_modules/@remix-run/router/dist/router.umd.js +0 -5413
- package/node_modules/@remix-run/router/dist/router.umd.js.map +0 -1
- package/node_modules/@remix-run/router/dist/router.umd.min.js +0 -12
- package/node_modules/@remix-run/router/dist/router.umd.min.js.map +0 -1
- package/node_modules/@remix-run/router/dist/utils.d.ts +0 -528
- package/node_modules/@remix-run/router/history.ts +0 -746
- package/node_modules/@remix-run/router/index.ts +0 -101
- package/node_modules/@remix-run/router/package.json +0 -33
- package/node_modules/@remix-run/router/router.ts +0 -5760
- package/node_modules/@remix-run/router/utils.ts +0 -1673
- package/node_modules/@remix-run/server-runtime/CHANGELOG.md +0 -1023
- package/node_modules/@remix-run/server-runtime/LICENSE.md +0 -22
- package/node_modules/@remix-run/server-runtime/README.md +0 -26
- package/node_modules/@remix-run/server-runtime/dist/build.d.ts +0 -39
- package/node_modules/@remix-run/server-runtime/dist/cookies.d.ts +0 -69
- package/node_modules/@remix-run/server-runtime/dist/cookies.js +0 -173
- package/node_modules/@remix-run/server-runtime/dist/crypto.d.ts +0 -2
- package/node_modules/@remix-run/server-runtime/dist/data.d.ts +0 -33
- package/node_modules/@remix-run/server-runtime/dist/data.js +0 -138
- package/node_modules/@remix-run/server-runtime/dist/deprecations.d.ts +0 -1
- package/node_modules/@remix-run/server-runtime/dist/deprecations.js +0 -19
- package/node_modules/@remix-run/server-runtime/dist/dev.d.ts +0 -10
- package/node_modules/@remix-run/server-runtime/dist/dev.js +0 -53
- package/node_modules/@remix-run/server-runtime/dist/entry.d.ts +0 -43
- package/node_modules/@remix-run/server-runtime/dist/entry.js +0 -22
- package/node_modules/@remix-run/server-runtime/dist/errors.d.ts +0 -51
- package/node_modules/@remix-run/server-runtime/dist/errors.js +0 -122
- package/node_modules/@remix-run/server-runtime/dist/esm/cookies.js +0 -168
- package/node_modules/@remix-run/server-runtime/dist/esm/data.js +0 -133
- package/node_modules/@remix-run/server-runtime/dist/esm/deprecations.js +0 -15
- package/node_modules/@remix-run/server-runtime/dist/esm/dev.js +0 -46
- package/node_modules/@remix-run/server-runtime/dist/esm/entry.js +0 -18
- package/node_modules/@remix-run/server-runtime/dist/esm/errors.js +0 -115
- package/node_modules/@remix-run/server-runtime/dist/esm/formData.js +0 -55
- package/node_modules/@remix-run/server-runtime/dist/esm/headers.js +0 -90
- package/node_modules/@remix-run/server-runtime/dist/esm/index.js +0 -21
- package/node_modules/@remix-run/server-runtime/dist/esm/invariant.js +0 -18
- package/node_modules/@remix-run/server-runtime/dist/esm/markup.js +0 -29
- package/node_modules/@remix-run/server-runtime/dist/esm/mode.js +0 -24
- package/node_modules/@remix-run/server-runtime/dist/esm/responses.js +0 -123
- package/node_modules/@remix-run/server-runtime/dist/esm/routeMatching.js +0 -23
- package/node_modules/@remix-run/server-runtime/dist/esm/routes.js +0 -81
- package/node_modules/@remix-run/server-runtime/dist/esm/server.js +0 -524
- package/node_modules/@remix-run/server-runtime/dist/esm/serverHandoff.js +0 -20
- package/node_modules/@remix-run/server-runtime/dist/esm/sessions/cookieStorage.js +0 -51
- package/node_modules/@remix-run/server-runtime/dist/esm/sessions/memoryStorage.js +0 -61
- package/node_modules/@remix-run/server-runtime/dist/esm/sessions.js +0 -145
- package/node_modules/@remix-run/server-runtime/dist/esm/single-fetch.js +0 -450
- package/node_modules/@remix-run/server-runtime/dist/esm/upload/errors.js +0 -19
- package/node_modules/@remix-run/server-runtime/dist/esm/upload/memoryUploadHandler.js +0 -50
- package/node_modules/@remix-run/server-runtime/dist/esm/warnings.js +0 -19
- package/node_modules/@remix-run/server-runtime/dist/formData.d.ts +0 -15
- package/node_modules/@remix-run/server-runtime/dist/formData.js +0 -60
- package/node_modules/@remix-run/server-runtime/dist/headers.d.ts +0 -3
- package/node_modules/@remix-run/server-runtime/dist/headers.js +0 -94
- package/node_modules/@remix-run/server-runtime/dist/index.d.ts +0 -14
- package/node_modules/@remix-run/server-runtime/dist/index.js +0 -50
- package/node_modules/@remix-run/server-runtime/dist/interface.d.ts +0 -6
- package/node_modules/@remix-run/server-runtime/dist/invariant.d.ts +0 -2
- package/node_modules/@remix-run/server-runtime/dist/invariant.js +0 -22
- package/node_modules/@remix-run/server-runtime/dist/jsonify.d.ts +0 -33
- package/node_modules/@remix-run/server-runtime/dist/links.d.ts +0 -104
- package/node_modules/@remix-run/server-runtime/dist/markup.d.ts +0 -1
- package/node_modules/@remix-run/server-runtime/dist/markup.js +0 -33
- package/node_modules/@remix-run/server-runtime/dist/mode.d.ts +0 -9
- package/node_modules/@remix-run/server-runtime/dist/mode.js +0 -29
- package/node_modules/@remix-run/server-runtime/dist/reexport.d.ts +0 -14
- package/node_modules/@remix-run/server-runtime/dist/responses.d.ts +0 -47
- package/node_modules/@remix-run/server-runtime/dist/responses.js +0 -135
- package/node_modules/@remix-run/server-runtime/dist/routeMatching.d.ts +0 -8
- package/node_modules/@remix-run/server-runtime/dist/routeMatching.js +0 -27
- package/node_modules/@remix-run/server-runtime/dist/routeModules.d.ts +0 -214
- package/node_modules/@remix-run/server-runtime/dist/routes.d.ts +0 -31
- package/node_modules/@remix-run/server-runtime/dist/routes.js +0 -86
- package/node_modules/@remix-run/server-runtime/dist/serialize.d.ts +0 -25
- package/node_modules/@remix-run/server-runtime/dist/server.d.ts +0 -5
- package/node_modules/@remix-run/server-runtime/dist/server.js +0 -528
- package/node_modules/@remix-run/server-runtime/dist/serverHandoff.d.ts +0 -12
- package/node_modules/@remix-run/server-runtime/dist/serverHandoff.js +0 -24
- package/node_modules/@remix-run/server-runtime/dist/sessions/cookieStorage.d.ts +0 -23
- package/node_modules/@remix-run/server-runtime/dist/sessions/cookieStorage.js +0 -55
- package/node_modules/@remix-run/server-runtime/dist/sessions/memoryStorage.d.ts +0 -20
- package/node_modules/@remix-run/server-runtime/dist/sessions/memoryStorage.js +0 -65
- package/node_modules/@remix-run/server-runtime/dist/sessions.d.ts +0 -143
- package/node_modules/@remix-run/server-runtime/dist/sessions.js +0 -152
- package/node_modules/@remix-run/server-runtime/dist/single-fetch.d.ts +0 -90
- package/node_modules/@remix-run/server-runtime/dist/single-fetch.js +0 -468
- package/node_modules/@remix-run/server-runtime/dist/typecheck.d.ts +0 -4
- package/node_modules/@remix-run/server-runtime/dist/upload/errors.d.ts +0 -5
- package/node_modules/@remix-run/server-runtime/dist/upload/errors.js +0 -23
- package/node_modules/@remix-run/server-runtime/dist/upload/memoryUploadHandler.d.ts +0 -21
- package/node_modules/@remix-run/server-runtime/dist/upload/memoryUploadHandler.js +0 -54
- package/node_modules/@remix-run/server-runtime/dist/warnings.d.ts +0 -1
- package/node_modules/@remix-run/server-runtime/dist/warnings.js +0 -23
- package/node_modules/@remix-run/server-runtime/package.json +0 -51
- package/node_modules/@types/cookie/LICENSE +0 -21
- package/node_modules/@types/cookie/README.md +0 -15
- package/node_modules/@types/cookie/index.d.ts +0 -154
- package/node_modules/@types/cookie/package.json +0 -30
- package/node_modules/@web3-storage/multipart-parser/README.md +0 -37
- package/node_modules/@web3-storage/multipart-parser/cjs/src/index.js +0 -218
- package/node_modules/@web3-storage/multipart-parser/cjs/src/search.js +0 -269
- package/node_modules/@web3-storage/multipart-parser/cjs/src/utils.js +0 -37
- package/node_modules/@web3-storage/multipart-parser/esm/package.json +0 -4
- package/node_modules/@web3-storage/multipart-parser/esm/src/index.js +0 -219
- package/node_modules/@web3-storage/multipart-parser/esm/src/search.js +0 -269
- package/node_modules/@web3-storage/multipart-parser/esm/src/utils.js +0 -28
- package/node_modules/@web3-storage/multipart-parser/index.js +0 -1
- package/node_modules/@web3-storage/multipart-parser/package.json +0 -44
- package/node_modules/@web3-storage/multipart-parser/src/index.js +0 -257
- package/node_modules/@web3-storage/multipart-parser/src/search.js +0 -329
- package/node_modules/@web3-storage/multipart-parser/src/utils.js +0 -43
- package/node_modules/@web3-storage/multipart-parser/test/test.spec.js +0 -65
- package/node_modules/@web3-storage/multipart-parser/tsconfig.json +0 -41
- package/node_modules/@web3-storage/multipart-parser/types/index.d.ts +0 -15
- package/node_modules/@web3-storage/multipart-parser/types/index.d.ts.map +0 -1
- package/node_modules/@web3-storage/multipart-parser/types/search.d.ts +0 -36
- package/node_modules/@web3-storage/multipart-parser/types/search.d.ts.map +0 -1
- package/node_modules/@web3-storage/multipart-parser/types/utils.d.ts +0 -18
- package/node_modules/@web3-storage/multipart-parser/types/utils.d.ts.map +0 -1
- package/node_modules/aria-hidden/LICENSE +0 -21
- package/node_modules/aria-hidden/README.md +0 -99
- package/node_modules/aria-hidden/dist/es2015/index.d.ts +0 -29
- package/node_modules/aria-hidden/dist/es2015/index.js +0 -166
- package/node_modules/aria-hidden/dist/es2019/index.d.ts +0 -29
- package/node_modules/aria-hidden/dist/es2019/index.js +0 -155
- package/node_modules/aria-hidden/dist/es5/index.d.ts +0 -29
- package/node_modules/aria-hidden/dist/es5/index.js +0 -173
- package/node_modules/aria-hidden/package.json +0 -70
- package/node_modules/assertion-error/LICENSE +0 -21
- package/node_modules/assertion-error/README.md +0 -68
- package/node_modules/assertion-error/index.d.ts +0 -27
- package/node_modules/assertion-error/index.js +0 -60
- package/node_modules/assertion-error/package.json +0 -32
- package/node_modules/chai/CODEOWNERS +0 -1
- package/node_modules/chai/CODE_OF_CONDUCT.md +0 -58
- package/node_modules/chai/CONTRIBUTING.md +0 -218
- package/node_modules/chai/History.md +0 -1059
- package/node_modules/chai/LICENSE +0 -21
- package/node_modules/chai/README.md +0 -154
- package/node_modules/chai/ReleaseNotes.md +0 -737
- package/node_modules/chai/chai.js +0 -4018
- package/node_modules/chai/eslint.config.js +0 -12
- package/node_modules/chai/index.js +0 -1
- package/node_modules/chai/lib/chai/assertion.js +0 -164
- package/node_modules/chai/lib/chai/config.js +0 -114
- package/node_modules/chai/lib/chai/core/assertions.js +0 -3933
- package/node_modules/chai/lib/chai/interface/assert.js +0 -3012
- package/node_modules/chai/lib/chai/interface/expect.js +0 -55
- package/node_modules/chai/lib/chai/interface/should.js +0 -221
- package/node_modules/chai/lib/chai/utils/addChainableMethod.js +0 -147
- package/node_modules/chai/lib/chai/utils/addLengthGuard.js +0 -60
- package/node_modules/chai/lib/chai/utils/addMethod.js +0 -67
- package/node_modules/chai/lib/chai/utils/addProperty.js +0 -71
- package/node_modules/chai/lib/chai/utils/compareByInspect.js +0 -26
- package/node_modules/chai/lib/chai/utils/expectTypes.js +0 -50
- package/node_modules/chai/lib/chai/utils/flag.js +0 -33
- package/node_modules/chai/lib/chai/utils/getActual.js +0 -20
- package/node_modules/chai/lib/chai/utils/getEnumerableProperties.js +0 -25
- package/node_modules/chai/lib/chai/utils/getMessage.js +0 -46
- package/node_modules/chai/lib/chai/utils/getOperator.js +0 -58
- package/node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js +0 -24
- package/node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js +0 -26
- package/node_modules/chai/lib/chai/utils/getProperties.js +0 -38
- package/node_modules/chai/lib/chai/utils/index.js +0 -107
- package/node_modules/chai/lib/chai/utils/inspect.js +0 -31
- package/node_modules/chai/lib/chai/utils/isNaN.js +0 -26
- package/node_modules/chai/lib/chai/utils/isProxyEnabled.js +0 -24
- package/node_modules/chai/lib/chai/utils/objDisplay.js +0 -46
- package/node_modules/chai/lib/chai/utils/overwriteChainableMethod.js +0 -68
- package/node_modules/chai/lib/chai/utils/overwriteMethod.js +0 -91
- package/node_modules/chai/lib/chai/utils/overwriteProperty.js +0 -90
- package/node_modules/chai/lib/chai/utils/proxify.js +0 -147
- package/node_modules/chai/lib/chai/utils/test.js +0 -24
- package/node_modules/chai/lib/chai/utils/transferFlags.js +0 -43
- package/node_modules/chai/lib/chai/utils/type-detect.js +0 -20
- package/node_modules/chai/lib/chai.js +0 -65
- package/node_modules/chai/package.json +0 -61
- package/node_modules/chai/register-assert.cjs +0 -3
- package/node_modules/chai/register-assert.js +0 -3
- package/node_modules/chai/register-expect.cjs +0 -3
- package/node_modules/chai/register-expect.js +0 -3
- package/node_modules/chai/register-should.cjs +0 -3
- package/node_modules/chai/register-should.js +0 -3
- package/node_modules/chai/web-test-runner.config.js +0 -20
- package/node_modules/chai-dom/.eslintrc +0 -22
- package/node_modules/chai-dom/.travis.yml +0 -15
- package/node_modules/chai-dom/LICENSE +0 -24
- package/node_modules/chai-dom/README.md +0 -267
- package/node_modules/chai-dom/bower.json +0 -31
- package/node_modules/chai-dom/chai-dom.js +0 -429
- package/node_modules/chai-dom/package.json +0 -44
- package/node_modules/chai-dom/test/.eslintrc +0 -12
- package/node_modules/chai-dom/test/index.html +0 -27
- package/node_modules/chai-dom/test/tests.js +0 -1124
- package/node_modules/chai-dom/testem.js +0 -31
- package/node_modules/check-error/LICENSE +0 -19
- package/node_modules/check-error/README.md +0 -144
- package/node_modules/check-error/index.js +0 -135
- package/node_modules/check-error/package.json +0 -66
- package/node_modules/clsx/clsx.d.mts +0 -6
- package/node_modules/clsx/clsx.d.ts +0 -10
- package/node_modules/clsx/dist/clsx.js +0 -1
- package/node_modules/clsx/dist/clsx.min.js +0 -1
- package/node_modules/clsx/dist/clsx.mjs +0 -1
- package/node_modules/clsx/dist/lite.js +0 -1
- package/node_modules/clsx/dist/lite.mjs +0 -1
- package/node_modules/clsx/license +0 -9
- package/node_modules/clsx/package.json +0 -60
- package/node_modules/clsx/readme.md +0 -154
- package/node_modules/cookie/HISTORY.md +0 -147
- package/node_modules/cookie/LICENSE +0 -24
- package/node_modules/cookie/README.md +0 -317
- package/node_modules/cookie/SECURITY.md +0 -25
- package/node_modules/cookie/index.js +0 -274
- package/node_modules/cookie/package.json +0 -44
- package/node_modules/deep-eql/LICENSE +0 -19
- package/node_modules/deep-eql/README.md +0 -93
- package/node_modules/deep-eql/index.js +0 -513
- package/node_modules/deep-eql/package.json +0 -73
- package/node_modules/detect-node-es/LICENSE +0 -21
- package/node_modules/detect-node-es/Readme.md +0 -39
- package/node_modules/detect-node-es/es5/browser.js +0 -2
- package/node_modules/detect-node-es/es5/node.d.ts +0 -4
- package/node_modules/detect-node-es/es5/node.js +0 -2
- package/node_modules/detect-node-es/esm/browser.js +0 -2
- package/node_modules/detect-node-es/esm/node.js +0 -2
- package/node_modules/detect-node-es/package.json +0 -29
- package/node_modules/framer-motion/LICENSE.md +0 -21
- package/node_modules/framer-motion/README.md +0 -105
- package/node_modules/framer-motion/dist/cjs/dom-entry-GDJJhIpT.js +0 -5959
- package/node_modules/framer-motion/dist/cjs/dom-entry.js +0 -53
- package/node_modules/framer-motion/dist/cjs/index.js +0 -6566
- package/node_modules/framer-motion/dist/dom-entry.d.ts +0 -964
- package/node_modules/framer-motion/dist/dom.js +0 -1
- package/node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +0 -80
- package/node_modules/framer-motion/dist/es/animation/animate.mjs +0 -83
- package/node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +0 -295
- package/node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +0 -84
- package/node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +0 -382
- package/node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +0 -17
- package/node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +0 -40
- package/node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs +0 -40
- package/node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs +0 -23
- package/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +0 -12
- package/node_modules/framer-motion/dist/es/animation/generators/inertia.mjs +0 -87
- package/node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs +0 -51
- package/node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs +0 -89
- package/node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs +0 -131
- package/node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +0 -17
- package/node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs +0 -9
- package/node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs +0 -80
- package/node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs +0 -17
- package/node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs +0 -62
- package/node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs +0 -41
- package/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs +0 -112
- package/node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs +0 -11
- package/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +0 -80
- package/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs +0 -66
- package/node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs +0 -29
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +0 -6
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +0 -7
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs +0 -83
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs +0 -80
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs +0 -3
- package/node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs +0 -3
- package/node_modules/framer-motion/dist/es/animation/sequence/create.mjs +0 -230
- package/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +0 -21
- package/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs +0 -31
- package/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs +0 -14
- package/node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs +0 -32
- package/node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs +0 -40
- package/node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs +0 -30
- package/node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +0 -7
- package/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +0 -5
- package/node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +0 -5
- package/node_modules/framer-motion/dist/es/animation/utils/is-none.mjs +0 -15
- package/node_modules/framer-motion/dist/es/animation/utils/stagger.mjs +0 -26
- package/node_modules/framer-motion/dist/es/animation/utils/transitions.mjs +0 -15
- package/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs +0 -76
- package/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs +0 -57
- package/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs +0 -169
- package/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs +0 -66
- package/node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs +0 -15
- package/node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs +0 -31
- package/node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs +0 -67
- package/node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs +0 -43
- package/node_modules/framer-motion/dist/es/components/Reorder/Group.mjs +0 -52
- package/node_modules/framer-motion/dist/es/components/Reorder/Item.mjs +0 -33
- package/node_modules/framer-motion/dist/es/components/Reorder/index.mjs +0 -9
- package/node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs +0 -24
- package/node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs +0 -10
- package/node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs +0 -5
- package/node_modules/framer-motion/dist/es/context/LazyContext.mjs +0 -5
- package/node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs +0 -12
- package/node_modules/framer-motion/dist/es/context/MotionContext/create.mjs +0 -13
- package/node_modules/framer-motion/dist/es/context/MotionContext/index.mjs +0 -5
- package/node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs +0 -17
- package/node_modules/framer-motion/dist/es/context/PresenceContext.mjs +0 -8
- package/node_modules/framer-motion/dist/es/context/ReorderContext.mjs +0 -5
- package/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs +0 -8
- package/node_modules/framer-motion/dist/es/debug/record.mjs +0 -7
- package/node_modules/framer-motion/dist/es/dom-entry.mjs +0 -25
- package/node_modules/framer-motion/dist/es/easing/anticipate.mjs +0 -5
- package/node_modules/framer-motion/dist/es/easing/back.mjs +0 -9
- package/node_modules/framer-motion/dist/es/easing/circ.mjs +0 -8
- package/node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs +0 -51
- package/node_modules/framer-motion/dist/es/easing/ease.mjs +0 -7
- package/node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs +0 -5
- package/node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs +0 -5
- package/node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +0 -18
- package/node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +0 -8
- package/node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +0 -3
- package/node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs +0 -5
- package/node_modules/framer-motion/dist/es/easing/utils/map.mjs +0 -37
- package/node_modules/framer-motion/dist/es/events/add-dom-event.mjs +0 -6
- package/node_modules/framer-motion/dist/es/events/add-pointer-event.mjs +0 -8
- package/node_modules/framer-motion/dist/es/events/event-info.mjs +0 -15
- package/node_modules/framer-motion/dist/es/events/use-dom-event.mjs +0 -34
- package/node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs +0 -18
- package/node_modules/framer-motion/dist/es/frameloop/batcher.mjs +0 -65
- package/node_modules/framer-motion/dist/es/frameloop/frame.mjs +0 -6
- package/node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs +0 -20
- package/node_modules/framer-motion/dist/es/frameloop/microtask.mjs +0 -5
- package/node_modules/framer-motion/dist/es/frameloop/render-step.mjs +0 -104
- package/node_modules/framer-motion/dist/es/frameloop/sync-time.mjs +0 -31
- package/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +0 -484
- package/node_modules/framer-motion/dist/es/gestures/drag/index.mjs +0 -27
- package/node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs +0 -88
- package/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs +0 -129
- package/node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs +0 -53
- package/node_modules/framer-motion/dist/es/gestures/focus.mjs +0 -41
- package/node_modules/framer-motion/dist/es/gestures/hover.mjs +0 -33
- package/node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs +0 -156
- package/node_modules/framer-motion/dist/es/gestures/pan/index.mjs +0 -50
- package/node_modules/framer-motion/dist/es/gestures/press.mjs +0 -130
- package/node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs +0 -20
- package/node_modules/framer-motion/dist/es/index.mjs +0 -101
- package/node_modules/framer-motion/dist/es/motion/features/Feature.mjs +0 -9
- package/node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs +0 -31
- package/node_modules/framer-motion/dist/es/motion/features/animation/index.mjs +0 -41
- package/node_modules/framer-motion/dist/es/motion/features/animations.mjs +0 -13
- package/node_modules/framer-motion/dist/es/motion/features/definitions.mjs +0 -28
- package/node_modules/framer-motion/dist/es/motion/features/drag.mjs +0 -17
- package/node_modules/framer-motion/dist/es/motion/features/gestures.mjs +0 -21
- package/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs +0 -133
- package/node_modules/framer-motion/dist/es/motion/features/layout.mjs +0 -11
- package/node_modules/framer-motion/dist/es/motion/features/load-features.mjs +0 -12
- package/node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs +0 -72
- package/node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs +0 -49
- package/node_modules/framer-motion/dist/es/motion/index.mjs +0 -97
- package/node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +0 -11
- package/node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs +0 -12
- package/node_modules/framer-motion/dist/es/motion/utils/symbol.mjs +0 -3
- package/node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs +0 -17
- package/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs +0 -36
- package/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs +0 -127
- package/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs +0 -81
- package/node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs +0 -57
- package/node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs +0 -93
- package/node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs +0 -33
- package/node_modules/framer-motion/dist/es/projection/geometry/copy.mjs +0 -20
- package/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs +0 -122
- package/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs +0 -41
- package/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs +0 -54
- package/node_modules/framer-motion/dist/es/projection/geometry/models.mjs +0 -17
- package/node_modules/framer-motion/dist/es/projection/geometry/utils.mjs +0 -25
- package/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +0 -13
- package/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +0 -27
- package/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +0 -1562
- package/node_modules/framer-motion/dist/es/projection/node/group.mjs +0 -24
- package/node_modules/framer-motion/dist/es/projection/node/state.mjs +0 -19
- package/node_modules/framer-motion/dist/es/projection/shared/stack.mjs +0 -112
- package/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +0 -41
- package/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +0 -35
- package/node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs +0 -6
- package/node_modules/framer-motion/dist/es/projection/styles/transform.mjs +0 -49
- package/node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs +0 -14
- package/node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs +0 -14
- package/node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs +0 -5
- package/node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs +0 -26
- package/node_modules/framer-motion/dist/es/projection/utils/measure.mjs +0 -17
- package/node_modules/framer-motion/dist/es/projection-entry.mjs +0 -11
- package/node_modules/framer-motion/dist/es/render/VisualElement.mjs +0 -496
- package/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +0 -130
- package/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +0 -28
- package/node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs +0 -15
- package/node_modules/framer-motion/dist/es/render/dom/features-animation.mjs +0 -14
- package/node_modules/framer-motion/dist/es/render/dom/features-max.mjs +0 -14
- package/node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs +0 -9
- package/node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs +0 -47
- package/node_modules/framer-motion/dist/es/render/dom/motion.mjs +0 -42
- package/node_modules/framer-motion/dist/es/render/dom/resize/handle-element.mjs +0 -64
- package/node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs +0 -30
- package/node_modules/framer-motion/dist/es/render/dom/resize/index.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs +0 -36
- package/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs +0 -56
- package/node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs +0 -18
- package/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +0 -45
- package/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +0 -59
- package/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +0 -45
- package/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +0 -35
- package/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +0 -20
- package/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +0 -48
- package/node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs +0 -5
- package/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs +0 -84
- package/node_modules/framer-motion/dist/es/render/dom/use-render.mjs +0 -33
- package/node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +0 -6
- package/node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs +0 -19
- package/node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +0 -42
- package/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs +0 -59
- package/node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +0 -13
- package/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs +0 -30
- package/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +0 -5
- package/node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +0 -28
- package/node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +0 -65
- package/node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +0 -15
- package/node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs +0 -30
- package/node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +0 -15
- package/node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs +0 -15
- package/node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +0 -10
- package/node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs +0 -74
- package/node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs +0 -6
- package/node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +0 -9
- package/node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs +0 -43
- package/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +0 -59
- package/node_modules/framer-motion/dist/es/render/html/config-motion.mjs +0 -12
- package/node_modules/framer-motion/dist/es/render/html/use-props.mjs +0 -57
- package/node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs +0 -74
- package/node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs +0 -45
- package/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +0 -30
- package/node_modules/framer-motion/dist/es/render/html/utils/render.mjs +0 -9
- package/node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +0 -20
- package/node_modules/framer-motion/dist/es/render/html/utils/transform.mjs +0 -28
- package/node_modules/framer-motion/dist/es/render/store.mjs +0 -3
- package/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +0 -47
- package/node_modules/framer-motion/dist/es/render/svg/config-motion.mjs +0 -40
- package/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs +0 -33
- package/node_modules/framer-motion/dist/es/render/svg/use-props.mjs +0 -24
- package/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +0 -52
- package/node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +0 -30
- package/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +0 -3
- package/node_modules/framer-motion/dist/es/render/svg/utils/path.mjs +0 -32
- package/node_modules/framer-motion/dist/es/render/svg/utils/render.mjs +0 -12
- package/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +0 -19
- package/node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +0 -18
- package/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +0 -164
- package/node_modules/framer-motion/dist/es/render/utils/animation-state.mjs +0 -328
- package/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs +0 -3
- package/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs +0 -24
- package/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +0 -13
- package/node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +0 -67
- package/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +0 -8
- package/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs +0 -36
- package/node_modules/framer-motion/dist/es/render/utils/setters.mjs +0 -27
- package/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs +0 -12
- package/node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs +0 -6
- package/node_modules/framer-motion/dist/es/utils/array.mjs +0 -21
- package/node_modules/framer-motion/dist/es/utils/clamp.mjs +0 -9
- package/node_modules/framer-motion/dist/es/utils/delay.mjs +0 -20
- package/node_modules/framer-motion/dist/es/utils/distance.mjs +0 -9
- package/node_modules/framer-motion/dist/es/utils/errors.mjs +0 -18
- package/node_modules/framer-motion/dist/es/utils/get-context-window.mjs +0 -6
- package/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs +0 -42
- package/node_modules/framer-motion/dist/es/utils/interpolate.mjs +0 -75
- package/node_modules/framer-motion/dist/es/utils/is-browser.mjs +0 -3
- package/node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs +0 -6
- package/node_modules/framer-motion/dist/es/utils/is-ref-object.mjs +0 -7
- package/node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs +0 -6
- package/node_modules/framer-motion/dist/es/utils/memo.mjs +0 -10
- package/node_modules/framer-motion/dist/es/utils/mix/color.mjs +0 -47
- package/node_modules/framer-motion/dist/es/utils/mix/complex.mjs +0 -94
- package/node_modules/framer-motion/dist/es/utils/mix/immediate.mjs +0 -5
- package/node_modules/framer-motion/dist/es/utils/mix/index.mjs +0 -14
- package/node_modules/framer-motion/dist/es/utils/mix/number.mjs +0 -26
- package/node_modules/framer-motion/dist/es/utils/mix/visibility.mjs +0 -16
- package/node_modules/framer-motion/dist/es/utils/noop.mjs +0 -3
- package/node_modules/framer-motion/dist/es/utils/offsets/default.mjs +0 -9
- package/node_modules/framer-motion/dist/es/utils/offsets/fill.mjs +0 -12
- package/node_modules/framer-motion/dist/es/utils/offsets/time.mjs +0 -5
- package/node_modules/framer-motion/dist/es/utils/pipe.mjs +0 -11
- package/node_modules/framer-motion/dist/es/utils/progress.mjs +0 -18
- package/node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs +0 -19
- package/node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs +0 -5
- package/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs +0 -19
- package/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs +0 -47
- package/node_modules/framer-motion/dist/es/utils/resolve-value.mjs +0 -11
- package/node_modules/framer-motion/dist/es/utils/shallow-compare.mjs +0 -14
- package/node_modules/framer-motion/dist/es/utils/subscription-manager.mjs +0 -40
- package/node_modules/framer-motion/dist/es/utils/time-conversion.mjs +0 -10
- package/node_modules/framer-motion/dist/es/utils/transform.mjs +0 -21
- package/node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs +0 -21
- package/node_modules/framer-motion/dist/es/utils/use-constant.mjs +0 -18
- package/node_modules/framer-motion/dist/es/utils/use-cycle.mjs +0 -47
- package/node_modules/framer-motion/dist/es/utils/use-force-update.mjs +0 -19
- package/node_modules/framer-motion/dist/es/utils/use-in-view.mjs +0 -23
- package/node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs +0 -5
- package/node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs +0 -41
- package/node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs +0 -15
- package/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs +0 -6
- package/node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs +0 -13
- package/node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs +0 -7
- package/node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs +0 -11
- package/node_modules/framer-motion/dist/es/utils/warn-once.mjs +0 -11
- package/node_modules/framer-motion/dist/es/utils/wrap.mjs +0 -6
- package/node_modules/framer-motion/dist/es/value/index.mjs +0 -319
- package/node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs +0 -14
- package/node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs +0 -14
- package/node_modules/framer-motion/dist/es/value/types/color/hex.mjs +0 -40
- package/node_modules/framer-motion/dist/es/value/types/color/hsla.mjs +0 -22
- package/node_modules/framer-motion/dist/es/value/types/color/index.mjs +0 -28
- package/node_modules/framer-motion/dist/es/value/types/color/rgba.mjs +0 -25
- package/node_modules/framer-motion/dist/es/value/types/color/utils.mjs +0 -23
- package/node_modules/framer-motion/dist/es/value/types/complex/filter.mjs +0 -30
- package/node_modules/framer-motion/dist/es/value/types/complex/index.mjs +0 -90
- package/node_modules/framer-motion/dist/es/value/types/numbers/index.mjs +0 -17
- package/node_modules/framer-motion/dist/es/value/types/numbers/units.mjs +0 -19
- package/node_modules/framer-motion/dist/es/value/types/utils.mjs +0 -15
- package/node_modules/framer-motion/dist/es/value/use-combine-values.mjs +0 -37
- package/node_modules/framer-motion/dist/es/value/use-computed.mjs +0 -19
- package/node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs +0 -52
- package/node_modules/framer-motion/dist/es/value/use-motion-template.mjs +0 -45
- package/node_modules/framer-motion/dist/es/value/use-motion-value.mjs +0 -38
- package/node_modules/framer-motion/dist/es/value/use-scroll.mjs +0 -39
- package/node_modules/framer-motion/dist/es/value/use-spring.mjs +0 -80
- package/node_modules/framer-motion/dist/es/value/use-time.mjs +0 -10
- package/node_modules/framer-motion/dist/es/value/use-transform.mjs +0 -29
- package/node_modules/framer-motion/dist/es/value/use-velocity.mjs +0 -35
- package/node_modules/framer-motion/dist/es/value/use-will-change/index.mjs +0 -50
- package/node_modules/framer-motion/dist/es/value/use-will-change/is.mjs +0 -7
- package/node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs +0 -3
- package/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +0 -16
- package/node_modules/framer-motion/dist/framer-motion.dev.js +0 -12433
- package/node_modules/framer-motion/dist/framer-motion.js +0 -1
- package/node_modules/framer-motion/dist/index.d.ts +0 -5278
- package/node_modules/framer-motion/dist/three-entry.d.ts +0 -2954
- package/node_modules/framer-motion/dom/README.md +0 -1
- package/node_modules/framer-motion/dom/package.json +0 -6
- package/node_modules/framer-motion/package.json +0 -108
- package/node_modules/get-func-name/LICENSE +0 -19
- package/node_modules/get-func-name/README.md +0 -123
- package/node_modules/get-func-name/get-func-name.js +0 -1
- package/node_modules/get-func-name/index.js +0 -52
- package/node_modules/get-func-name/package.json +0 -85
- package/node_modules/get-nonce/LICENSE +0 -21
- package/node_modules/get-nonce/README.md +0 -54
- package/node_modules/get-nonce/dist/es2015/index.d.ts +0 -2
- package/node_modules/get-nonce/dist/es2015/index.js +0 -13
- package/node_modules/get-nonce/dist/es5/index.d.ts +0 -2
- package/node_modules/get-nonce/dist/es5/index.js +0 -15
- package/node_modules/get-nonce/package.json +0 -68
- package/node_modules/invariant/LICENSE +0 -21
- package/node_modules/invariant/README.md +0 -37
- package/node_modules/invariant/browser.js +0 -49
- package/node_modules/invariant/invariant.js +0 -51
- package/node_modules/invariant/invariant.js.flow +0 -7
- package/node_modules/invariant/package.json +0 -35
- package/node_modules/js-tokens/LICENSE +0 -21
- package/node_modules/js-tokens/README.md +0 -240
- package/node_modules/js-tokens/index.js +0 -23
- package/node_modules/js-tokens/package.json +0 -30
- package/node_modules/loose-envify/LICENSE +0 -21
- package/node_modules/loose-envify/README.md +0 -45
- package/node_modules/loose-envify/cli.js +0 -16
- package/node_modules/loose-envify/custom.js +0 -4
- package/node_modules/loose-envify/index.js +0 -3
- package/node_modules/loose-envify/loose-envify.js +0 -36
- package/node_modules/loose-envify/package.json +0 -36
- package/node_modules/loose-envify/replace.js +0 -65
- package/node_modules/loupe/LICENSE +0 -9
- package/node_modules/loupe/README.md +0 -63
- package/node_modules/loupe/lib/arguments.d.ts +0 -3
- package/node_modules/loupe/lib/arguments.d.ts.map +0 -1
- package/node_modules/loupe/lib/arguments.js +0 -7
- package/node_modules/loupe/lib/array.d.ts +0 -3
- package/node_modules/loupe/lib/array.d.ts.map +0 -1
- package/node_modules/loupe/lib/array.js +0 -16
- package/node_modules/loupe/lib/bigint.d.ts +0 -3
- package/node_modules/loupe/lib/bigint.d.ts.map +0 -1
- package/node_modules/loupe/lib/bigint.js +0 -7
- package/node_modules/loupe/lib/class.d.ts +0 -5
- package/node_modules/loupe/lib/class.d.ts.map +0 -1
- package/node_modules/loupe/lib/class.js +0 -15
- package/node_modules/loupe/lib/date.d.ts +0 -3
- package/node_modules/loupe/lib/date.d.ts.map +0 -1
- package/node_modules/loupe/lib/date.js +0 -11
- package/node_modules/loupe/lib/error.d.ts +0 -3
- package/node_modules/loupe/lib/error.d.ts.map +0 -1
- package/node_modules/loupe/lib/error.js +0 -29
- package/node_modules/loupe/lib/function.d.ts +0 -7
- package/node_modules/loupe/lib/function.d.ts.map +0 -1
- package/node_modules/loupe/lib/function.js +0 -9
- package/node_modules/loupe/lib/helpers.d.ts +0 -7
- package/node_modules/loupe/lib/helpers.d.ts.map +0 -1
- package/node_modules/loupe/lib/helpers.js +0 -159
- package/node_modules/loupe/lib/html.d.ts +0 -5
- package/node_modules/loupe/lib/html.d.ts.map +0 -1
- package/node_modules/loupe/lib/html.js +0 -34
- package/node_modules/loupe/lib/index.d.ts +0 -7
- package/node_modules/loupe/lib/index.d.ts.map +0 -1
- package/node_modules/loupe/lib/index.js +0 -161
- package/node_modules/loupe/lib/map.d.ts +0 -3
- package/node_modules/loupe/lib/map.d.ts.map +0 -1
- package/node_modules/loupe/lib/map.js +0 -24
- package/node_modules/loupe/lib/number.d.ts +0 -3
- package/node_modules/loupe/lib/number.d.ts.map +0 -1
- package/node_modules/loupe/lib/number.js +0 -17
- package/node_modules/loupe/lib/object.d.ts +0 -3
- package/node_modules/loupe/lib/object.d.ts.map +0 -1
- package/node_modules/loupe/lib/object.js +0 -22
- package/node_modules/loupe/lib/promise.d.ts +0 -5
- package/node_modules/loupe/lib/promise.d.ts.map +0 -1
- package/node_modules/loupe/lib/promise.js +0 -18
- package/node_modules/loupe/lib/regexp.d.ts +0 -3
- package/node_modules/loupe/lib/regexp.d.ts.map +0 -1
- package/node_modules/loupe/lib/regexp.js +0 -7
- package/node_modules/loupe/lib/set.d.ts +0 -3
- package/node_modules/loupe/lib/set.d.ts.map +0 -1
- package/node_modules/loupe/lib/set.js +0 -15
- package/node_modules/loupe/lib/string.d.ts +0 -3
- package/node_modules/loupe/lib/string.d.ts.map +0 -1
- package/node_modules/loupe/lib/string.js +0 -24
- package/node_modules/loupe/lib/symbol.d.ts +0 -2
- package/node_modules/loupe/lib/symbol.d.ts.map +0 -1
- package/node_modules/loupe/lib/symbol.js +0 -6
- package/node_modules/loupe/lib/typedarray.d.ts +0 -5
- package/node_modules/loupe/lib/typedarray.d.ts.map +0 -1
- package/node_modules/loupe/lib/typedarray.js +0 -38
- package/node_modules/loupe/lib/types.d.ts +0 -15
- package/node_modules/loupe/lib/types.d.ts.map +0 -1
- package/node_modules/loupe/lib/types.js +0 -1
- package/node_modules/loupe/loupe.js +0 -644
- package/node_modules/loupe/package.json +0 -126
- package/node_modules/pathval/LICENSE +0 -16
- package/node_modules/pathval/README.md +0 -147
- package/node_modules/pathval/index.js +0 -292
- package/node_modules/pathval/package.json +0 -73
- package/node_modules/pathval/pathval.js +0 -1
- package/node_modules/react-remove-scroll/LICENSE +0 -21
- package/node_modules/react-remove-scroll/README.md +0 -152
- package/node_modules/react-remove-scroll/UI/UI.d.ts +0 -1
- package/node_modules/react-remove-scroll/UI/package.json +0 -8
- package/node_modules/react-remove-scroll/dist/es2015/Combination.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2015/Combination.js +0 -7
- package/node_modules/react-remove-scroll/dist/es2015/SideEffect.d.ts +0 -5
- package/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +0 -157
- package/node_modules/react-remove-scroll/dist/es2015/UI.d.ts +0 -7
- package/node_modules/react-remove-scroll/dist/es2015/UI.js +0 -36
- package/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +0 -19
- package/node_modules/react-remove-scroll/dist/es2015/handleScroll.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +0 -104
- package/node_modules/react-remove-scroll/dist/es2015/index.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2015/index.js +0 -2
- package/node_modules/react-remove-scroll/dist/es2015/medium.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2015/medium.js +0 -2
- package/node_modules/react-remove-scroll/dist/es2015/pinchAndZoom.d.ts +0 -8
- package/node_modules/react-remove-scroll/dist/es2015/pinchAndZoom.js +0 -33
- package/node_modules/react-remove-scroll/dist/es2015/sidecar.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2015/sidecar.js +0 -4
- package/node_modules/react-remove-scroll/dist/es2015/types.d.ts +0 -98
- package/node_modules/react-remove-scroll/dist/es2015/types.js +0 -1
- package/node_modules/react-remove-scroll/dist/es2019/Combination.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2019/Combination.js +0 -6
- package/node_modules/react-remove-scroll/dist/es2019/SideEffect.d.ts +0 -5
- package/node_modules/react-remove-scroll/dist/es2019/SideEffect.js +0 -155
- package/node_modules/react-remove-scroll/dist/es2019/UI.d.ts +0 -7
- package/node_modules/react-remove-scroll/dist/es2019/UI.js +0 -41
- package/node_modules/react-remove-scroll/dist/es2019/aggresiveCapture.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2019/aggresiveCapture.js +0 -19
- package/node_modules/react-remove-scroll/dist/es2019/handleScroll.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es2019/handleScroll.js +0 -92
- package/node_modules/react-remove-scroll/dist/es2019/index.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2019/index.js +0 -2
- package/node_modules/react-remove-scroll/dist/es2019/medium.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2019/medium.js +0 -2
- package/node_modules/react-remove-scroll/dist/es2019/pinchAndZoom.d.ts +0 -8
- package/node_modules/react-remove-scroll/dist/es2019/pinchAndZoom.js +0 -33
- package/node_modules/react-remove-scroll/dist/es2019/sidecar.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es2019/sidecar.js +0 -4
- package/node_modules/react-remove-scroll/dist/es2019/types.d.ts +0 -98
- package/node_modules/react-remove-scroll/dist/es2019/types.js +0 -1
- package/node_modules/react-remove-scroll/dist/es5/Combination.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es5/Combination.js +0 -9
- package/node_modules/react-remove-scroll/dist/es5/SideEffect.d.ts +0 -5
- package/node_modules/react-remove-scroll/dist/es5/SideEffect.js +0 -163
- package/node_modules/react-remove-scroll/dist/es5/UI.d.ts +0 -7
- package/node_modules/react-remove-scroll/dist/es5/UI.js +0 -39
- package/node_modules/react-remove-scroll/dist/es5/aggresiveCapture.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es5/aggresiveCapture.js +0 -22
- package/node_modules/react-remove-scroll/dist/es5/handleScroll.d.ts +0 -3
- package/node_modules/react-remove-scroll/dist/es5/handleScroll.js +0 -109
- package/node_modules/react-remove-scroll/dist/es5/index.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es5/index.js +0 -6
- package/node_modules/react-remove-scroll/dist/es5/medium.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es5/medium.js +0 -5
- package/node_modules/react-remove-scroll/dist/es5/pinchAndZoom.d.ts +0 -8
- package/node_modules/react-remove-scroll/dist/es5/pinchAndZoom.js +0 -37
- package/node_modules/react-remove-scroll/dist/es5/sidecar.d.ts +0 -2
- package/node_modules/react-remove-scroll/dist/es5/sidecar.js +0 -6
- package/node_modules/react-remove-scroll/dist/es5/types.d.ts +0 -98
- package/node_modules/react-remove-scroll/dist/es5/types.js +0 -2
- package/node_modules/react-remove-scroll/dist/index.js +0 -93
- package/node_modules/react-remove-scroll/package.json +0 -97
- package/node_modules/react-remove-scroll/sidecar/package.json +0 -7
- package/node_modules/react-remove-scroll/sidecar/sidecar.d.ts +0 -5
- package/node_modules/react-remove-scroll-bar/README.md +0 -52
- package/node_modules/react-remove-scroll-bar/constants/package.json +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es2015/component.d.ts +0 -13
- package/node_modules/react-remove-scroll-bar/dist/es2015/component.js +0 -53
- package/node_modules/react-remove-scroll-bar/dist/es2015/constants.d.ts +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es2015/index.d.ts +0 -4
- package/node_modules/react-remove-scroll-bar/dist/es2015/index.js +0 -4
- package/node_modules/react-remove-scroll-bar/dist/es2015/utils.d.ts +0 -14
- package/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +0 -29
- package/node_modules/react-remove-scroll-bar/dist/es2019/component.d.ts +0 -13
- package/node_modules/react-remove-scroll-bar/dist/es2019/component.js +0 -85
- package/node_modules/react-remove-scroll-bar/dist/es2019/constants.d.ts +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es2019/constants.js +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es2019/index.d.ts +0 -4
- package/node_modules/react-remove-scroll-bar/dist/es2019/index.js +0 -4
- package/node_modules/react-remove-scroll-bar/dist/es2019/utils.d.ts +0 -14
- package/node_modules/react-remove-scroll-bar/dist/es2019/utils.js +0 -28
- package/node_modules/react-remove-scroll-bar/dist/es5/component.d.ts +0 -13
- package/node_modules/react-remove-scroll-bar/dist/es5/component.js +0 -59
- package/node_modules/react-remove-scroll-bar/dist/es5/constants.d.ts +0 -8
- package/node_modules/react-remove-scroll-bar/dist/es5/constants.js +0 -11
- package/node_modules/react-remove-scroll-bar/dist/es5/index.d.ts +0 -4
- package/node_modules/react-remove-scroll-bar/dist/es5/index.js +0 -12
- package/node_modules/react-remove-scroll-bar/dist/es5/utils.d.ts +0 -14
- package/node_modules/react-remove-scroll-bar/dist/es5/utils.js +0 -33
- package/node_modules/react-remove-scroll-bar/package.json +0 -85
- package/node_modules/react-router/CHANGELOG.md +0 -723
- package/node_modules/react-router/LICENSE.md +0 -23
- package/node_modules/react-router/README.md +0 -16
- package/node_modules/react-router/dist/index.d.ts +0 -29
- package/node_modules/react-router/dist/index.js +0 -1456
- package/node_modules/react-router/dist/index.js.map +0 -1
- package/node_modules/react-router/dist/lib/components.d.ts +0 -157
- package/node_modules/react-router/dist/lib/context.d.ts +0 -102
- package/node_modules/react-router/dist/lib/hooks.d.ts +0 -181
- package/node_modules/react-router/dist/main.js +0 -19
- package/node_modules/react-router/dist/react-router.development.js +0 -1352
- package/node_modules/react-router/dist/react-router.development.js.map +0 -1
- package/node_modules/react-router/dist/react-router.production.min.js +0 -12
- package/node_modules/react-router/dist/react-router.production.min.js.map +0 -1
- package/node_modules/react-router/dist/umd/react-router.development.js +0 -1574
- package/node_modules/react-router/dist/umd/react-router.development.js.map +0 -1
- package/node_modules/react-router/dist/umd/react-router.production.min.js +0 -12
- package/node_modules/react-router/dist/umd/react-router.production.min.js.map +0 -1
- package/node_modules/react-router/package.json +0 -44
- package/node_modules/react-router-dom/CHANGELOG.md +0 -866
- package/node_modules/react-router-dom/LICENSE.md +0 -23
- package/node_modules/react-router-dom/README.md +0 -5
- package/node_modules/react-router-dom/dist/dom.d.ts +0 -117
- package/node_modules/react-router-dom/dist/index.d.ts +0 -331
- package/node_modules/react-router-dom/dist/index.js +0 -1447
- package/node_modules/react-router-dom/dist/index.js.map +0 -1
- package/node_modules/react-router-dom/dist/main.js +0 -19
- package/node_modules/react-router-dom/dist/react-router-dom.development.js +0 -1514
- package/node_modules/react-router-dom/dist/react-router-dom.development.js.map +0 -1
- package/node_modules/react-router-dom/dist/react-router-dom.production.min.js +0 -12
- package/node_modules/react-router-dom/dist/react-router-dom.production.min.js.map +0 -1
- package/node_modules/react-router-dom/dist/server.d.ts +0 -31
- package/node_modules/react-router-dom/dist/server.js +0 -322
- package/node_modules/react-router-dom/dist/server.mjs +0 -297
- package/node_modules/react-router-dom/dist/umd/react-router-dom.development.js +0 -1813
- package/node_modules/react-router-dom/dist/umd/react-router-dom.development.js.map +0 -1
- package/node_modules/react-router-dom/dist/umd/react-router-dom.production.min.js +0 -12
- package/node_modules/react-router-dom/dist/umd/react-router-dom.production.min.js.map +0 -1
- package/node_modules/react-router-dom/package.json +0 -49
- package/node_modules/react-router-dom/server.d.ts +0 -31
- package/node_modules/react-router-dom/server.js +0 -322
- package/node_modules/react-router-dom/server.mjs +0 -297
- package/node_modules/react-style-singleton/README.md +0 -41
- package/node_modules/react-style-singleton/dist/es2015/component.d.ts +0 -21
- package/node_modules/react-style-singleton/dist/es2015/component.js +0 -16
- package/node_modules/react-style-singleton/dist/es2015/hook.d.ts +0 -23
- package/node_modules/react-style-singleton/dist/es2015/hook.js +0 -22
- package/node_modules/react-style-singleton/dist/es2015/index.d.ts +0 -3
- package/node_modules/react-style-singleton/dist/es2015/index.js +0 -3
- package/node_modules/react-style-singleton/dist/es2015/singleton.d.ts +0 -4
- package/node_modules/react-style-singleton/dist/es2015/singleton.js +0 -48
- package/node_modules/react-style-singleton/dist/es2019/component.d.ts +0 -21
- package/node_modules/react-style-singleton/dist/es2019/component.js +0 -15
- package/node_modules/react-style-singleton/dist/es2019/hook.d.ts +0 -23
- package/node_modules/react-style-singleton/dist/es2019/hook.js +0 -22
- package/node_modules/react-style-singleton/dist/es2019/index.d.ts +0 -3
- package/node_modules/react-style-singleton/dist/es2019/index.js +0 -3
- package/node_modules/react-style-singleton/dist/es2019/singleton.d.ts +0 -4
- package/node_modules/react-style-singleton/dist/es2019/singleton.js +0 -48
- package/node_modules/react-style-singleton/dist/es5/component.d.ts +0 -21
- package/node_modules/react-style-singleton/dist/es5/component.js +0 -20
- package/node_modules/react-style-singleton/dist/es5/hook.d.ts +0 -23
- package/node_modules/react-style-singleton/dist/es5/hook.js +0 -27
- package/node_modules/react-style-singleton/dist/es5/index.d.ts +0 -3
- package/node_modules/react-style-singleton/dist/es5/index.js +0 -9
- package/node_modules/react-style-singleton/dist/es5/singleton.d.ts +0 -4
- package/node_modules/react-style-singleton/dist/es5/singleton.js +0 -52
- package/node_modules/react-style-singleton/dist/index.js +0 -1
- package/node_modules/react-style-singleton/package.json +0 -87
- package/node_modules/regenerator-runtime/LICENSE +0 -21
- package/node_modules/regenerator-runtime/README.md +0 -31
- package/node_modules/regenerator-runtime/package.json +0 -19
- package/node_modules/regenerator-runtime/path.js +0 -11
- package/node_modules/regenerator-runtime/runtime.js +0 -761
- package/node_modules/remix-utils/.eslintrc.cjs +0 -54
- package/node_modules/remix-utils/LICENSE +0 -21
- package/node_modules/remix-utils/README.md +0 -2149
- package/node_modules/remix-utils/build/client/cache-assets.d.ts +0 -22
- package/node_modules/remix-utils/build/client/cache-assets.js +0 -66
- package/node_modules/remix-utils/build/common/promise.d.ts +0 -87
- package/node_modules/remix-utils/build/common/promise.js +0 -112
- package/node_modules/remix-utils/build/common/timers.d.ts +0 -27
- package/node_modules/remix-utils/build/common/timers.js +0 -47
- package/node_modules/remix-utils/build/react/authenticity-token.d.ts +0 -50
- package/node_modules/remix-utils/build/react/authenticity-token.js +0 -54
- package/node_modules/remix-utils/build/react/client-only.d.ts +0 -27
- package/node_modules/remix-utils/build/react/client-only.js +0 -20
- package/node_modules/remix-utils/build/react/existing-search-params.d.ts +0 -34
- package/node_modules/remix-utils/build/react/existing-search-params.js +0 -32
- package/node_modules/remix-utils/build/react/external-scripts.d.ts +0 -91
- package/node_modules/remix-utils/build/react/external-scripts.js +0 -106
- package/node_modules/remix-utils/build/react/fetcher-type.d.ts +0 -31
- package/node_modules/remix-utils/build/react/fetcher-type.js +0 -53
- package/node_modules/remix-utils/build/react/handle-conventions.d.ts +0 -10
- package/node_modules/remix-utils/build/react/handle-conventions.js +0 -1
- package/node_modules/remix-utils/build/react/honeypot.d.ts +0 -11
- package/node_modules/remix-utils/build/react/honeypot.js +0 -16
- package/node_modules/remix-utils/build/react/server-only.d.ts +0 -25
- package/node_modules/remix-utils/build/react/server-only.js +0 -18
- package/node_modules/remix-utils/build/react/use-debounce-fetcher.d.ts +0 -28
- package/node_modules/remix-utils/build/react/use-debounce-fetcher.js +0 -27
- package/node_modules/remix-utils/build/react/use-debounce-submit.d.ts +0 -7
- package/node_modules/remix-utils/build/react/use-debounce-submit.js +0 -41
- package/node_modules/remix-utils/build/react/use-delegated-anchors.d.ts +0 -6
- package/node_modules/remix-utils/build/react/use-delegated-anchors.js +0 -69
- package/node_modules/remix-utils/build/react/use-event-source.d.ts +0 -17
- package/node_modules/remix-utils/build/react/use-event-source.js +0 -37
- package/node_modules/remix-utils/build/react/use-global-navigation-state.d.ts +0 -33
- package/node_modules/remix-utils/build/react/use-global-navigation-state.js +0 -67
- package/node_modules/remix-utils/build/react/use-hydrated.d.ts +0 -18
- package/node_modules/remix-utils/build/react/use-hydrated.js +0 -24
- package/node_modules/remix-utils/build/react/use-locales.d.ts +0 -24
- package/node_modules/remix-utils/build/react/use-locales.js +0 -56
- package/node_modules/remix-utils/build/react/use-should-hydrate.d.ts +0 -21
- package/node_modules/remix-utils/build/react/use-should-hydrate.js +0 -44
- package/node_modules/remix-utils/build/server/cors.d.ts +0 -101
- package/node_modules/remix-utils/build/server/cors.js +0 -179
- package/node_modules/remix-utils/build/server/csrf.d.ts +0 -85
- package/node_modules/remix-utils/build/server/csrf.js +0 -121
- package/node_modules/remix-utils/build/server/event-stream.d.ts +0 -27
- package/node_modules/remix-utils/build/server/event-stream.js +0 -44
- package/node_modules/remix-utils/build/server/get-client-ip-address.d.ts +0 -29
- package/node_modules/remix-utils/build/server/get-client-ip-address.js +0 -51
- package/node_modules/remix-utils/build/server/get-client-locales.d.ts +0 -18
- package/node_modules/remix-utils/build/server/get-client-locales.js +0 -18
- package/node_modules/remix-utils/build/server/get-headers.d.ts +0 -6
- package/node_modules/remix-utils/build/server/get-headers.js +0 -11
- package/node_modules/remix-utils/build/server/honeypot.d.ts +0 -32
- package/node_modules/remix-utils/build/server/honeypot.js +0 -96
- package/node_modules/remix-utils/build/server/is-prefetch.d.ts +0 -16
- package/node_modules/remix-utils/build/server/is-prefetch.js +0 -11
- package/node_modules/remix-utils/build/server/json-hash.d.ts +0 -6
- package/node_modules/remix-utils/build/server/json-hash.js +0 -16
- package/node_modules/remix-utils/build/server/named-action.d.ts +0 -19
- package/node_modules/remix-utils/build/server/named-action.js +0 -62
- package/node_modules/remix-utils/build/server/parse-accept-header.d.ts +0 -12
- package/node_modules/remix-utils/build/server/parse-accept-header.js +0 -17
- package/node_modules/remix-utils/build/server/preload-route-assets.d.ts +0 -80
- package/node_modules/remix-utils/build/server/preload-route-assets.js +0 -120
- package/node_modules/remix-utils/build/server/redirect-back.d.ts +0 -18
- package/node_modules/remix-utils/build/server/redirect-back.js +0 -29
- package/node_modules/remix-utils/build/server/respond-to.d.ts +0 -40
- package/node_modules/remix-utils/build/server/respond-to.js +0 -22
- package/node_modules/remix-utils/build/server/responses.d.ts +0 -100
- package/node_modules/remix-utils/build/server/responses.js +0 -167
- package/node_modules/remix-utils/build/server/rolling-cookie.d.ts +0 -4
- package/node_modules/remix-utils/build/server/rolling-cookie.js +0 -9
- package/node_modules/remix-utils/build/server/safe-redirect.d.ts +0 -10
- package/node_modules/remix-utils/build/server/safe-redirect.js +0 -22
- package/node_modules/remix-utils/build/server/sec-fetch.d.ts +0 -43
- package/node_modules/remix-utils/build/server/sec-fetch.js +0 -67
- package/node_modules/remix-utils/build/server/typed-cookie.d.ts +0 -17
- package/node_modules/remix-utils/build/server/typed-cookie.js +0 -58
- package/node_modules/remix-utils/build/server/typed-session.d.ts +0 -59
- package/node_modules/remix-utils/build/server/typed-session.js +0 -88
- package/node_modules/remix-utils/package.json +0 -182
- package/node_modules/remix-utils/scripts/check-pkg-exports.ts +0 -61
- package/node_modules/set-cookie-parser/LICENSE +0 -21
- package/node_modules/set-cookie-parser/README.md +0 -199
- package/node_modules/set-cookie-parser/lib/set-cookie.js +0 -226
- package/node_modules/set-cookie-parser/package.json +0 -43
- package/node_modules/source-map/LICENSE +0 -28
- package/node_modules/source-map/README.md +0 -742
- package/node_modules/source-map/dist/source-map.debug.js +0 -3234
- package/node_modules/source-map/dist/source-map.js +0 -3233
- package/node_modules/source-map/dist/source-map.min.js +0 -2
- package/node_modules/source-map/dist/source-map.min.js.map +0 -1
- package/node_modules/source-map/lib/array-set.js +0 -121
- package/node_modules/source-map/lib/base64-vlq.js +0 -140
- package/node_modules/source-map/lib/base64.js +0 -67
- package/node_modules/source-map/lib/binary-search.js +0 -111
- package/node_modules/source-map/lib/mapping-list.js +0 -79
- package/node_modules/source-map/lib/mappings.wasm +0 -0
- package/node_modules/source-map/lib/quick-sort.js +0 -114
- package/node_modules/source-map/lib/read-wasm.js +0 -49
- package/node_modules/source-map/lib/source-map-consumer.js +0 -1145
- package/node_modules/source-map/lib/source-map-generator.js +0 -425
- package/node_modules/source-map/lib/source-node.js +0 -413
- package/node_modules/source-map/lib/util.js +0 -488
- package/node_modules/source-map/lib/wasm.js +0 -107
- package/node_modules/source-map/package.json +0 -73
- package/node_modules/source-map/source-map.d.ts +0 -98
- package/node_modules/source-map/source-map.js +0 -8
- package/node_modules/tailwind-merge/LICENSE.md +0 -21
- package/node_modules/tailwind-merge/README.md +0 -38
- package/node_modules/tailwind-merge/dist/bundle-cjs.js +0 -2595
- package/node_modules/tailwind-merge/dist/bundle-cjs.js.map +0 -1
- package/node_modules/tailwind-merge/dist/bundle-mjs.mjs +0 -2583
- package/node_modules/tailwind-merge/dist/bundle-mjs.mjs.map +0 -1
- package/node_modules/tailwind-merge/dist/es5/bundle-cjs.js +0 -2645
- package/node_modules/tailwind-merge/dist/es5/bundle-cjs.js.map +0 -1
- package/node_modules/tailwind-merge/dist/es5/bundle-mjs.mjs +0 -2633
- package/node_modules/tailwind-merge/dist/es5/bundle-mjs.mjs.map +0 -1
- package/node_modules/tailwind-merge/dist/types.d.ts +0 -2143
- package/node_modules/tailwind-merge/package.json +0 -95
- package/node_modules/tailwind-merge/src/index.ts +0 -14
- package/node_modules/tailwind-merge/src/lib/class-utils.ts +0 -215
- package/node_modules/tailwind-merge/src/lib/config-utils.ts +0 -14
- package/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts +0 -50
- package/node_modules/tailwind-merge/src/lib/default-config.ts +0 -1865
- package/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts +0 -26
- package/node_modules/tailwind-merge/src/lib/from-theme.ts +0 -13
- package/node_modules/tailwind-merge/src/lib/lru-cache.ts +0 -52
- package/node_modules/tailwind-merge/src/lib/merge-classlist.ts +0 -99
- package/node_modules/tailwind-merge/src/lib/merge-configs.ts +0 -72
- package/node_modules/tailwind-merge/src/lib/modifier-utils.ts +0 -95
- package/node_modules/tailwind-merge/src/lib/tw-join.ts +0 -50
- package/node_modules/tailwind-merge/src/lib/tw-merge.ts +0 -4
- package/node_modules/tailwind-merge/src/lib/types.ts +0 -412
- package/node_modules/tailwind-merge/src/lib/validators.ts +0 -104
- package/node_modules/tslib/CopyrightNotice.txt +0 -15
- package/node_modules/tslib/LICENSE.txt +0 -12
- package/node_modules/tslib/README.md +0 -164
- package/node_modules/tslib/SECURITY.md +0 -41
- package/node_modules/tslib/modules/index.d.ts +0 -37
- package/node_modules/tslib/modules/index.js +0 -68
- package/node_modules/tslib/modules/package.json +0 -3
- package/node_modules/tslib/package.json +0 -47
- package/node_modules/tslib/tslib.d.ts +0 -453
- package/node_modules/tslib/tslib.es6.html +0 -1
- package/node_modules/tslib/tslib.es6.js +0 -374
- package/node_modules/tslib/tslib.es6.mjs +0 -373
- package/node_modules/tslib/tslib.html +0 -1
- package/node_modules/tslib/tslib.js +0 -424
- package/node_modules/turbo-stream/LICENSE +0 -7
- package/node_modules/turbo-stream/README.md +0 -31
- package/node_modules/turbo-stream/dist/flatten.d.ts +0 -2
- package/node_modules/turbo-stream/dist/flatten.js +0 -172
- package/node_modules/turbo-stream/dist/turbo-stream.d.ts +0 -12
- package/node_modules/turbo-stream/dist/turbo-stream.js +0 -202
- package/node_modules/turbo-stream/dist/turbo-stream.mjs +0 -530
- package/node_modules/turbo-stream/dist/unflatten.d.ts +0 -2
- package/node_modules/turbo-stream/dist/unflatten.js +0 -127
- package/node_modules/turbo-stream/dist/utils.d.ts +0 -43
- package/node_modules/turbo-stream/dist/utils.js +0 -55
- package/node_modules/turbo-stream/package.json +0 -50
- package/node_modules/type-fest/index.d.ts +0 -160
- package/node_modules/type-fest/package.json +0 -72
- package/node_modules/type-fest/readme.md +0 -992
- package/node_modules/type-fest/source/and.d.ts +0 -25
- package/node_modules/type-fest/source/array-indices.d.ts +0 -23
- package/node_modules/type-fest/source/array-slice.d.ts +0 -107
- package/node_modules/type-fest/source/array-splice.d.ts +0 -97
- package/node_modules/type-fest/source/array-values.d.ts +0 -22
- package/node_modules/type-fest/source/async-return-type.d.ts +0 -23
- package/node_modules/type-fest/source/asyncify.d.ts +0 -32
- package/node_modules/type-fest/source/basic.d.ts +0 -68
- package/node_modules/type-fest/source/camel-case.d.ts +0 -80
- package/node_modules/type-fest/source/camel-cased-properties-deep.d.ts +0 -87
- package/node_modules/type-fest/source/camel-cased-properties.d.ts +0 -36
- package/node_modules/type-fest/source/conditional-except.d.ts +0 -45
- package/node_modules/type-fest/source/conditional-keys.d.ts +0 -47
- package/node_modules/type-fest/source/conditional-pick-deep.d.ts +0 -104
- package/node_modules/type-fest/source/conditional-pick.d.ts +0 -44
- package/node_modules/type-fest/source/conditional-simplify.d.ts +0 -32
- package/node_modules/type-fest/source/delimiter-case.d.ts +0 -99
- package/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts +0 -84
- package/node_modules/type-fest/source/delimiter-cased-properties.d.ts +0 -37
- package/node_modules/type-fest/source/distributed-omit.d.ts +0 -89
- package/node_modules/type-fest/source/distributed-pick.d.ts +0 -85
- package/node_modules/type-fest/source/empty-object.d.ts +0 -46
- package/node_modules/type-fest/source/enforce-optional.d.ts +0 -47
- package/node_modules/type-fest/source/entries.d.ts +0 -62
- package/node_modules/type-fest/source/entry.d.ts +0 -65
- package/node_modules/type-fest/source/exact.d.ts +0 -63
- package/node_modules/type-fest/source/except.d.ts +0 -80
- package/node_modules/type-fest/source/fixed-length-array.d.ts +0 -43
- package/node_modules/type-fest/source/get.d.ts +0 -191
- package/node_modules/type-fest/source/global-this.d.ts +0 -21
- package/node_modules/type-fest/source/greater-than-or-equal.d.ts +0 -22
- package/node_modules/type-fest/source/greater-than.d.ts +0 -51
- package/node_modules/type-fest/source/has-optional-keys.d.ts +0 -21
- package/node_modules/type-fest/source/has-readonly-keys.d.ts +0 -21
- package/node_modules/type-fest/source/has-required-keys.d.ts +0 -59
- package/node_modules/type-fest/source/has-writable-keys.d.ts +0 -21
- package/node_modules/type-fest/source/if-any.d.ts +0 -24
- package/node_modules/type-fest/source/if-empty-object.d.ts +0 -26
- package/node_modules/type-fest/source/if-never.d.ts +0 -24
- package/node_modules/type-fest/source/if-null.d.ts +0 -24
- package/node_modules/type-fest/source/if-unknown.d.ts +0 -24
- package/node_modules/type-fest/source/includes.d.ts +0 -22
- package/node_modules/type-fest/source/int-range.d.ts +0 -53
- package/node_modules/type-fest/source/internal.d.ts +0 -783
- package/node_modules/type-fest/source/invariant-of.d.ts +0 -78
- package/node_modules/type-fest/source/is-any.d.ts +0 -29
- package/node_modules/type-fest/source/is-equal.d.ts +0 -31
- package/node_modules/type-fest/source/is-float.d.ts +0 -33
- package/node_modules/type-fest/source/is-integer.d.ts +0 -48
- package/node_modules/type-fest/source/is-literal.d.ts +0 -258
- package/node_modules/type-fest/source/is-never.d.ts +0 -42
- package/node_modules/type-fest/source/is-null.d.ts +0 -20
- package/node_modules/type-fest/source/is-unknown.d.ts +0 -52
- package/node_modules/type-fest/source/iterable-element.d.ts +0 -54
- package/node_modules/type-fest/source/join.d.ts +0 -68
- package/node_modules/type-fest/source/jsonifiable.d.ts +0 -37
- package/node_modules/type-fest/source/jsonify.d.ts +0 -121
- package/node_modules/type-fest/source/kebab-case.d.ts +0 -38
- package/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts +0 -47
- package/node_modules/type-fest/source/kebab-cased-properties.d.ts +0 -30
- package/node_modules/type-fest/source/keys-of-union.d.ts +0 -40
- package/node_modules/type-fest/source/last-array-element.d.ts +0 -38
- package/node_modules/type-fest/source/less-than-or-equal.d.ts +0 -22
- package/node_modules/type-fest/source/less-than.d.ts +0 -22
- package/node_modules/type-fest/source/literal-to-primitive-deep.d.ts +0 -36
- package/node_modules/type-fest/source/literal-to-primitive.d.ts +0 -36
- package/node_modules/type-fest/source/literal-union.d.ts +0 -35
- package/node_modules/type-fest/source/merge-deep.d.ts +0 -486
- package/node_modules/type-fest/source/merge-exclusive.d.ts +0 -41
- package/node_modules/type-fest/source/merge.d.ts +0 -48
- package/node_modules/type-fest/source/multidimensional-array.d.ts +0 -44
- package/node_modules/type-fest/source/multidimensional-readonly-array.d.ts +0 -48
- package/node_modules/type-fest/source/non-empty-object.d.ts +0 -35
- package/node_modules/type-fest/source/numeric.d.ts +0 -222
- package/node_modules/type-fest/source/observable-like.d.ts +0 -63
- package/node_modules/type-fest/source/omit-deep.d.ts +0 -140
- package/node_modules/type-fest/source/omit-index-signature.d.ts +0 -107
- package/node_modules/type-fest/source/opaque.d.ts +0 -252
- package/node_modules/type-fest/source/optional-keys-of.d.ts +0 -38
- package/node_modules/type-fest/source/or.d.ts +0 -25
- package/node_modules/type-fest/source/override-properties.d.ts +0 -36
- package/node_modules/type-fest/source/package-json.d.ts +0 -676
- package/node_modules/type-fest/source/partial-deep.d.ts +0 -109
- package/node_modules/type-fest/source/partial-on-undefined-deep.d.ts +0 -71
- package/node_modules/type-fest/source/pascal-case.d.ts +0 -38
- package/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts +0 -55
- package/node_modules/type-fest/source/pascal-cased-properties.d.ts +0 -35
- package/node_modules/type-fest/source/paths.d.ts +0 -85
- package/node_modules/type-fest/source/pick-deep.d.ts +0 -149
- package/node_modules/type-fest/source/pick-index-signature.d.ts +0 -102
- package/node_modules/type-fest/source/primitive.d.ts +0 -13
- package/node_modules/type-fest/source/promisable.d.ts +0 -25
- package/node_modules/type-fest/source/readonly-deep.d.ts +0 -81
- package/node_modules/type-fest/source/readonly-keys-of.d.ts +0 -29
- package/node_modules/type-fest/source/readonly-tuple.d.ts +0 -41
- package/node_modules/type-fest/source/replace.d.ts +0 -67
- package/node_modules/type-fest/source/require-all-or-none.d.ts +0 -42
- package/node_modules/type-fest/source/require-at-least-one.d.ts +0 -34
- package/node_modules/type-fest/source/require-exactly-one.d.ts +0 -34
- package/node_modules/type-fest/source/require-one-or-none.d.ts +0 -37
- package/node_modules/type-fest/source/required-deep.d.ts +0 -78
- package/node_modules/type-fest/source/required-keys-of.d.ts +0 -29
- package/node_modules/type-fest/source/schema.d.ts +0 -71
- package/node_modules/type-fest/source/screaming-snake-case.d.ts +0 -33
- package/node_modules/type-fest/source/set-field-type.d.ts +0 -37
- package/node_modules/type-fest/source/set-non-nullable.d.ts +0 -39
- package/node_modules/type-fest/source/set-optional.d.ts +0 -35
- package/node_modules/type-fest/source/set-parameter-type.d.ts +0 -117
- package/node_modules/type-fest/source/set-readonly.d.ts +0 -38
- package/node_modules/type-fest/source/set-required.d.ts +0 -40
- package/node_modules/type-fest/source/set-return-type.d.ts +0 -29
- package/node_modules/type-fest/source/shared-union-fields-deep.d.ts +0 -168
- package/node_modules/type-fest/source/simplify-deep.d.ts +0 -115
- package/node_modules/type-fest/source/simplify.d.ts +0 -58
- package/node_modules/type-fest/source/single-key-object.d.ts +0 -29
- package/node_modules/type-fest/source/snake-case.d.ts +0 -38
- package/node_modules/type-fest/source/snake-cased-properties-deep.d.ts +0 -47
- package/node_modules/type-fest/source/snake-cased-properties.d.ts +0 -30
- package/node_modules/type-fest/source/split-words.d.ts +0 -57
- package/node_modules/type-fest/source/split.d.ts +0 -29
- package/node_modules/type-fest/source/spread.d.ts +0 -85
- package/node_modules/type-fest/source/string-key-of.d.ts +0 -25
- package/node_modules/type-fest/source/string-slice.d.ts +0 -37
- package/node_modules/type-fest/source/stringified.d.ts +0 -23
- package/node_modules/type-fest/source/subtract.d.ts +0 -70
- package/node_modules/type-fest/source/sum.d.ts +0 -70
- package/node_modules/type-fest/source/tagged-union.d.ts +0 -51
- package/node_modules/type-fest/source/trim.d.ts +0 -27
- package/node_modules/type-fest/source/tsconfig-json.d.ts +0 -1198
- package/node_modules/type-fest/source/tuple-to-union.d.ts +0 -51
- package/node_modules/type-fest/source/typed-array.d.ts +0 -17
- package/node_modules/type-fest/source/undefined-on-partial-deep.d.ts +0 -81
- package/node_modules/type-fest/source/union-to-intersection.d.ts +0 -61
- package/node_modules/type-fest/source/unknown-array.d.ts +0 -25
- package/node_modules/type-fest/source/unknown-record.d.ts +0 -31
- package/node_modules/type-fest/source/value-of.d.ts +0 -42
- package/node_modules/type-fest/source/writable-deep.d.ts +0 -83
- package/node_modules/type-fest/source/writable-keys-of.d.ts +0 -30
- package/node_modules/type-fest/source/writable.d.ts +0 -68
- package/node_modules/use-callback-ref/LICENSE +0 -21
- package/node_modules/use-callback-ref/README.md +0 -170
- package/node_modules/use-callback-ref/dist/es2015/assignRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es2015/assignRef.js +0 -22
- package/node_modules/use-callback-ref/dist/es2015/createRef.d.ts +0 -10
- package/node_modules/use-callback-ref/dist/es2015/createRef.js +0 -23
- package/node_modules/use-callback-ref/dist/es2015/index.d.ts +0 -8
- package/node_modules/use-callback-ref/dist/es2015/index.js +0 -12
- package/node_modules/use-callback-ref/dist/es2015/mergeRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es2015/mergeRef.js +0 -18
- package/node_modules/use-callback-ref/dist/es2015/refToCallback.d.ts +0 -24
- package/node_modules/use-callback-ref/dist/es2015/refToCallback.js +0 -48
- package/node_modules/use-callback-ref/dist/es2015/transformRef.d.ts +0 -11
- package/node_modules/use-callback-ref/dist/es2015/transformRef.js +0 -14
- package/node_modules/use-callback-ref/dist/es2015/types.d.ts +0 -5
- package/node_modules/use-callback-ref/dist/es2015/types.js +0 -1
- package/node_modules/use-callback-ref/dist/es2015/useMergeRef.d.ts +0 -17
- package/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +0 -45
- package/node_modules/use-callback-ref/dist/es2015/useRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es2015/useRef.js +0 -39
- package/node_modules/use-callback-ref/dist/es2015/useTransformRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es2015/useTransformRef.js +0 -18
- package/node_modules/use-callback-ref/dist/es2019/assignRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es2019/assignRef.js +0 -22
- package/node_modules/use-callback-ref/dist/es2019/createRef.d.ts +0 -10
- package/node_modules/use-callback-ref/dist/es2019/createRef.js +0 -23
- package/node_modules/use-callback-ref/dist/es2019/index.d.ts +0 -8
- package/node_modules/use-callback-ref/dist/es2019/index.js +0 -12
- package/node_modules/use-callback-ref/dist/es2019/mergeRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es2019/mergeRef.js +0 -18
- package/node_modules/use-callback-ref/dist/es2019/refToCallback.d.ts +0 -24
- package/node_modules/use-callback-ref/dist/es2019/refToCallback.js +0 -48
- package/node_modules/use-callback-ref/dist/es2019/transformRef.d.ts +0 -11
- package/node_modules/use-callback-ref/dist/es2019/transformRef.js +0 -14
- package/node_modules/use-callback-ref/dist/es2019/types.d.ts +0 -5
- package/node_modules/use-callback-ref/dist/es2019/types.js +0 -1
- package/node_modules/use-callback-ref/dist/es2019/useMergeRef.d.ts +0 -17
- package/node_modules/use-callback-ref/dist/es2019/useMergeRef.js +0 -43
- package/node_modules/use-callback-ref/dist/es2019/useRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es2019/useRef.js +0 -39
- package/node_modules/use-callback-ref/dist/es2019/useTransformRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es2019/useTransformRef.js +0 -18
- package/node_modules/use-callback-ref/dist/es5/assignRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es5/assignRef.js +0 -26
- package/node_modules/use-callback-ref/dist/es5/createRef.d.ts +0 -10
- package/node_modules/use-callback-ref/dist/es5/createRef.js +0 -27
- package/node_modules/use-callback-ref/dist/es5/index.d.ts +0 -8
- package/node_modules/use-callback-ref/dist/es5/index.js +0 -24
- package/node_modules/use-callback-ref/dist/es5/mergeRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es5/mergeRef.js +0 -22
- package/node_modules/use-callback-ref/dist/es5/refToCallback.d.ts +0 -24
- package/node_modules/use-callback-ref/dist/es5/refToCallback.js +0 -53
- package/node_modules/use-callback-ref/dist/es5/transformRef.d.ts +0 -11
- package/node_modules/use-callback-ref/dist/es5/transformRef.js +0 -18
- package/node_modules/use-callback-ref/dist/es5/types.d.ts +0 -5
- package/node_modules/use-callback-ref/dist/es5/types.js +0 -2
- package/node_modules/use-callback-ref/dist/es5/useMergeRef.d.ts +0 -17
- package/node_modules/use-callback-ref/dist/es5/useMergeRef.js +0 -50
- package/node_modules/use-callback-ref/dist/es5/useRef.d.ts +0 -16
- package/node_modules/use-callback-ref/dist/es5/useRef.js +0 -43
- package/node_modules/use-callback-ref/dist/es5/useTransformRef.d.ts +0 -15
- package/node_modules/use-callback-ref/dist/es5/useTransformRef.js +0 -22
- package/node_modules/use-callback-ref/package.json +0 -84
- package/node_modules/use-sidecar/LICENSE +0 -21
- package/node_modules/use-sidecar/README.md +0 -349
- package/node_modules/use-sidecar/dist/es2015/config.d.ts +0 -5
- package/node_modules/use-sidecar/dist/es2015/config.js +0 -6
- package/node_modules/use-sidecar/dist/es2015/env.d.ts +0 -4
- package/node_modules/use-sidecar/dist/es2015/env.js +0 -5
- package/node_modules/use-sidecar/dist/es2015/exports.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2015/exports.js +0 -18
- package/node_modules/use-sidecar/dist/es2015/hoc.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2015/hoc.js +0 -15
- package/node_modules/use-sidecar/dist/es2015/hook.d.ts +0 -2
- package/node_modules/use-sidecar/dist/es2015/hook.js +0 -41
- package/node_modules/use-sidecar/dist/es2015/index.d.ts +0 -7
- package/node_modules/use-sidecar/dist/es2015/index.js +0 -6
- package/node_modules/use-sidecar/dist/es2015/medium.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2015/medium.js +0 -78
- package/node_modules/use-sidecar/dist/es2015/renderProp.d.ts +0 -8
- package/node_modules/use-sidecar/dist/es2015/renderProp.js +0 -35
- package/node_modules/use-sidecar/dist/es2015/types.d.ts +0 -47
- package/node_modules/use-sidecar/dist/es2015/types.js +0 -1
- package/node_modules/use-sidecar/dist/es2019/config.d.ts +0 -5
- package/node_modules/use-sidecar/dist/es2019/config.js +0 -6
- package/node_modules/use-sidecar/dist/es2019/env.d.ts +0 -4
- package/node_modules/use-sidecar/dist/es2019/env.js +0 -5
- package/node_modules/use-sidecar/dist/es2019/exports.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2019/exports.js +0 -16
- package/node_modules/use-sidecar/dist/es2019/hoc.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2019/hoc.js +0 -14
- package/node_modules/use-sidecar/dist/es2019/hook.d.ts +0 -2
- package/node_modules/use-sidecar/dist/es2019/hook.js +0 -41
- package/node_modules/use-sidecar/dist/es2019/index.d.ts +0 -7
- package/node_modules/use-sidecar/dist/es2019/index.js +0 -6
- package/node_modules/use-sidecar/dist/es2019/medium.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es2019/medium.js +0 -78
- package/node_modules/use-sidecar/dist/es2019/renderProp.d.ts +0 -8
- package/node_modules/use-sidecar/dist/es2019/renderProp.js +0 -28
- package/node_modules/use-sidecar/dist/es2019/types.d.ts +0 -47
- package/node_modules/use-sidecar/dist/es2019/types.js +0 -1
- package/node_modules/use-sidecar/dist/es5/config.d.ts +0 -5
- package/node_modules/use-sidecar/dist/es5/config.js +0 -10
- package/node_modules/use-sidecar/dist/es5/env.d.ts +0 -4
- package/node_modules/use-sidecar/dist/es5/env.js +0 -8
- package/node_modules/use-sidecar/dist/es5/exports.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es5/exports.js +0 -22
- package/node_modules/use-sidecar/dist/es5/hoc.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es5/hoc.js +0 -19
- package/node_modules/use-sidecar/dist/es5/hook.d.ts +0 -2
- package/node_modules/use-sidecar/dist/es5/hook.js +0 -45
- package/node_modules/use-sidecar/dist/es5/index.d.ts +0 -7
- package/node_modules/use-sidecar/dist/es5/index.js +0 -16
- package/node_modules/use-sidecar/dist/es5/medium.d.ts +0 -3
- package/node_modules/use-sidecar/dist/es5/medium.js +0 -83
- package/node_modules/use-sidecar/dist/es5/renderProp.d.ts +0 -8
- package/node_modules/use-sidecar/dist/es5/renderProp.js +0 -39
- package/node_modules/use-sidecar/dist/es5/types.d.ts +0 -47
- package/node_modules/use-sidecar/dist/es5/types.js +0 -2
- package/node_modules/use-sidecar/package.json +0 -89
- package/node_modules/zod/LICENSE +0 -21
- package/node_modules/zod/README.md +0 -2876
- package/node_modules/zod/index.d.ts +0 -2
- package/node_modules/zod/lib/ZodError.d.ts +0 -164
- package/node_modules/zod/lib/ZodError.js +0 -137
- package/node_modules/zod/lib/__tests__/Mocker.d.ts +0 -17
- package/node_modules/zod/lib/__tests__/Mocker.js +0 -57
- package/node_modules/zod/lib/benchmarks/datetime.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/datetime.js +0 -54
- package/node_modules/zod/lib/benchmarks/discriminatedUnion.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/discriminatedUnion.js +0 -79
- package/node_modules/zod/lib/benchmarks/index.d.ts +0 -1
- package/node_modules/zod/lib/benchmarks/index.js +0 -59
- package/node_modules/zod/lib/benchmarks/ipv4.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/ipv4.js +0 -54
- package/node_modules/zod/lib/benchmarks/object.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/object.js +0 -70
- package/node_modules/zod/lib/benchmarks/primitives.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/primitives.js +0 -170
- package/node_modules/zod/lib/benchmarks/realworld.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/realworld.js +0 -56
- package/node_modules/zod/lib/benchmarks/string.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/string.js +0 -55
- package/node_modules/zod/lib/benchmarks/union.d.ts +0 -5
- package/node_modules/zod/lib/benchmarks/union.js +0 -79
- package/node_modules/zod/lib/errors.d.ts +0 -5
- package/node_modules/zod/lib/errors.js +0 -17
- package/node_modules/zod/lib/external.d.ts +0 -6
- package/node_modules/zod/lib/external.js +0 -18
- package/node_modules/zod/lib/helpers/enumUtil.d.ts +0 -8
- package/node_modules/zod/lib/helpers/enumUtil.js +0 -2
- package/node_modules/zod/lib/helpers/errorUtil.d.ts +0 -9
- package/node_modules/zod/lib/helpers/errorUtil.js +0 -8
- package/node_modules/zod/lib/helpers/parseUtil.d.ts +0 -78
- package/node_modules/zod/lib/helpers/parseUtil.js +0 -125
- package/node_modules/zod/lib/helpers/partialUtil.d.ts +0 -8
- package/node_modules/zod/lib/helpers/partialUtil.js +0 -2
- package/node_modules/zod/lib/helpers/typeAliases.d.ts +0 -2
- package/node_modules/zod/lib/helpers/typeAliases.js +0 -2
- package/node_modules/zod/lib/helpers/util.d.ts +0 -82
- package/node_modules/zod/lib/helpers/util.js +0 -142
- package/node_modules/zod/lib/index.d.ts +0 -4
- package/node_modules/zod/lib/index.js +0 -29
- package/node_modules/zod/lib/index.mjs +0 -4236
- package/node_modules/zod/lib/index.umd.js +0 -4351
- package/node_modules/zod/lib/locales/en.d.ts +0 -3
- package/node_modules/zod/lib/locales/en.js +0 -129
- package/node_modules/zod/lib/types.d.ts +0 -1127
- package/node_modules/zod/lib/types.js +0 -3677
- package/node_modules/zod/package.json +0 -119
package/build/server/index.js
CHANGED
|
@@ -1,37 +1,17 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { PassThrough } from "stream";
|
|
3
|
-
import { createReadableStreamFromReadable,
|
|
4
|
-
import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useLocation, json, redirect
|
|
3
|
+
import { createReadableStreamFromReadable, json as json$1, createCookieSessionStorage, redirect as redirect$1, defer } from "@remix-run/node";
|
|
4
|
+
import { RemixServer, Link, useRouteError, useParams, isRouteErrorResponse, useNavigation, useFetchers, useRouteLoaderData, useRevalidator, useLocation, json, redirect, useFetcher, useLoaderData, Outlet, Meta, Links, ScrollRestoration, Scripts, NavLink, Form, Await, useSearchParams, useSubmit, useNavigate } from "@remix-run/react";
|
|
5
5
|
import { isbot } from "isbot";
|
|
6
6
|
import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
|
|
7
|
-
import path
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import * as C from "@epic-web/cachified";
|
|
11
|
-
import { verboseReporter } from "@epic-web/cachified";
|
|
12
|
-
import { remember } from "@epic-web/remember";
|
|
13
|
-
import fsExtra from "fs-extra";
|
|
14
|
-
import { LRUCache } from "lru-cache";
|
|
15
|
-
import md5 from "md5-hex";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { makeSingletonCache, cachified, fsCache, deleteCache, compiledCodeCache, diffFilesCache, diffCodeCache, shouldForceFresh, getAllFileCacheEntries, ogCache } from "@epic-web/workshop-utils/cache.server";
|
|
9
|
+
import { getPreferences, getAuthInfo, readOnboardingData, getDiscordMember, getUserInfo, requireAuthInfo, DiscordMemberSchema, setDiscordMember, deleteDiscordInfo, deleteDb, setPresencePreferences, PlayerPreferencesSchema, setPlayerPreferences, setAuthInfo, markOnboardingVideoWatched } from "@epic-web/workshop-utils/db.server";
|
|
16
10
|
import { z } from "zod";
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import "@
|
|
20
|
-
import
|
|
21
|
-
import { execa } from "execa";
|
|
22
|
-
import { isGitIgnored, globby } from "globby";
|
|
23
|
-
import fs from "fs";
|
|
24
|
-
import { remarkCodeBlocksShiki } from "@kentcdodds/md-temp";
|
|
25
|
-
import { bundleMDX } from "mdx-bundler";
|
|
26
|
-
import PQueue from "p-queue";
|
|
27
|
-
import remarkAutolinkHeadings from "remark-autolink-headings";
|
|
28
|
-
import emoji from "remark-emoji";
|
|
29
|
-
import gfm from "remark-gfm";
|
|
30
|
-
import { visit } from "unist-util-visit";
|
|
31
|
-
import child_process, { spawn } from "child_process";
|
|
32
|
-
import net from "node:net";
|
|
33
|
-
import chalk from "chalk";
|
|
34
|
-
import fkill from "fkill";
|
|
11
|
+
import { getWorkshopInstructions, getWorkshopFinished, getExercises, getApps, getPlaygroundAppName, extractNumbersAndTypeFromAppNameOrPath, getAppFromFile, getAppByName, isProblemApp, isPlaygroundApp, isExerciseStepApp, getExercise, isSolutionApp, isExampleApp, getRelativePath as getRelativePath$1, workshopRoot, modifiedTimes, getForceFreshForDir, setPlayground, requireExerciseApp, requireExercise, getExerciseApp, getAppDisplayName, getNextExerciseApp, getPrevExerciseApp, getAppPageRoute } from "@epic-web/workshop-utils/apps.server";
|
|
12
|
+
import { getWorkshopConfig } from "@epic-web/workshop-utils/config.server";
|
|
13
|
+
import { getEnv } from "@epic-web/workshop-utils/env.server";
|
|
14
|
+
import { makeTimings, getServerTimeHeader, combineServerTimings, time } from "@epic-web/workshop-utils/timing.server";
|
|
35
15
|
import { cssBundleHref } from "@remix-run/css-bundle";
|
|
36
16
|
import { promiseHash } from "remix-utils/promise";
|
|
37
17
|
import { useSpinDelay } from "spin-delay";
|
|
@@ -54,24 +34,35 @@ import { safeRedirect } from "remix-utils/safe-redirect";
|
|
|
54
34
|
import { ServerOnly } from "remix-utils/server-only";
|
|
55
35
|
import * as cookie from "cookie";
|
|
56
36
|
import cookie__default from "cookie";
|
|
37
|
+
import md5 from "md5-hex";
|
|
57
38
|
import { createId } from "@paralleldrive/cuid2";
|
|
58
39
|
import { usePartySocket } from "partysocket/react";
|
|
59
40
|
import { motion, useAnimationControls } from "framer-motion";
|
|
60
41
|
import { useHydrated } from "remix-utils/use-hydrated";
|
|
61
42
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
62
43
|
import { invariantResponse, invariant } from "@epic-web/invariant";
|
|
44
|
+
import path$1 from "path";
|
|
63
45
|
import etag from "etag";
|
|
46
|
+
import fsExtra from "fs-extra";
|
|
64
47
|
import mimeTypes from "mime-types";
|
|
48
|
+
import fs from "fs";
|
|
49
|
+
import { getDirModifiedTime, modifiedMoreRecentlyThan } from "@epic-web/workshop-utils/modified-time.server";
|
|
65
50
|
import * as esbuild from "esbuild";
|
|
66
51
|
import { ElementScrollRestoration } from "@epic-web/restore-scroll";
|
|
67
52
|
import RealMuxPlayer from "@mux/mux-player-react";
|
|
53
|
+
import child_process from "child_process";
|
|
54
|
+
import os from "os";
|
|
68
55
|
import shellQuote from "shell-quote";
|
|
56
|
+
import { LRUCache } from "lru-cache";
|
|
69
57
|
import * as mdxBundler from "mdx-bundler/client/index.js";
|
|
70
58
|
import * as Select from "@radix-ui/react-select";
|
|
59
|
+
import { compileMarkdownString } from "@epic-web/workshop-utils/compile-mdx.server";
|
|
60
|
+
import { execa } from "execa";
|
|
71
61
|
import ignore from "ignore";
|
|
72
62
|
import parseGitDiff from "parse-git-diff";
|
|
73
63
|
import { bundledLanguagesInfo } from "shiki/langs";
|
|
74
64
|
import * as Popover from "@radix-ui/react-popover";
|
|
65
|
+
import { stopPort, runAppDev, waitOnApp, closeProcess, isAppRunning, isPortAvailable, getTestProcessEntry, isTestRunning, clearTestProcessEntry, runAppTests, getProcesses } from "@epic-web/workshop-utils/process-manager.server";
|
|
75
66
|
import * as Tabs from "@radix-ui/react-tabs";
|
|
76
67
|
import * as Accordion from "@radix-ui/react-accordion";
|
|
77
68
|
import dayjs from "dayjs";
|
|
@@ -82,6 +73,7 @@ import AnsiToHTML from "ansi-to-html";
|
|
|
82
73
|
import { useEventSource } from "remix-utils/sse/react";
|
|
83
74
|
import { eventStream } from "remix-utils/sse/server";
|
|
84
75
|
import { EventEmitter } from "events";
|
|
76
|
+
import { remember } from "@epic-web/remember";
|
|
85
77
|
import { Issuer } from "openid-client";
|
|
86
78
|
import inspector from "node:inspector";
|
|
87
79
|
import { Resvg } from "@resvg/resvg-js";
|
|
@@ -122,2312 +114,84 @@ const entryServer = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineP
|
|
|
122
114
|
__proto__: null,
|
|
123
115
|
default: handleRequest
|
|
124
116
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (!timings) return "";
|
|
163
|
-
return Object.entries(timings).map(([key, timingInfos]) => {
|
|
164
|
-
const dur = timingInfos.reduce((acc, timingInfo) => {
|
|
165
|
-
const time2 = timingInfo.time ?? performance.now() - timingInfo.start;
|
|
166
|
-
return acc + time2;
|
|
167
|
-
}, 0).toFixed(1);
|
|
168
|
-
const desc = timingInfos.map((t) => t.desc).filter(Boolean).join(" & ");
|
|
169
|
-
return [
|
|
170
|
-
key.replaceAll(/(:| |@|=|;|,|\/|\\|\{|\})/g, "_"),
|
|
171
|
-
desc ? `desc=${JSON.stringify(desc)}` : null,
|
|
172
|
-
`dur=${dur}`
|
|
173
|
-
].filter(Boolean).join(";");
|
|
174
|
-
}).join(",");
|
|
175
|
-
}
|
|
176
|
-
function combineServerTimings(headers1, headers2) {
|
|
177
|
-
const newHeaders = new Headers(headers1);
|
|
178
|
-
newHeaders.append("Server-Timing", headers2.get("Server-Timing") ?? "");
|
|
179
|
-
return newHeaders.get("Server-Timing") ?? "";
|
|
180
|
-
}
|
|
181
|
-
function cachifiedTimingReporter(timings, timingKey) {
|
|
182
|
-
if (!timings) return;
|
|
183
|
-
return ({ key }) => {
|
|
184
|
-
timingKey = timingKey ?? key;
|
|
185
|
-
const cacheRetrievalTimer = createTimer(
|
|
186
|
-
`cache:${timingKey}`,
|
|
187
|
-
`${timingKey} cache retrieval`
|
|
188
|
-
);
|
|
189
|
-
let getFreshValueTimer;
|
|
190
|
-
return (event) => {
|
|
191
|
-
switch (event.name) {
|
|
192
|
-
case "getFreshValueStart":
|
|
193
|
-
getFreshValueTimer = createTimer(
|
|
194
|
-
`getFreshValue:${timingKey}`,
|
|
195
|
-
`request forced to wait for a fresh ${timingKey} value`
|
|
196
|
-
);
|
|
197
|
-
break;
|
|
198
|
-
case "getFreshValueSuccess":
|
|
199
|
-
getFreshValueTimer == null ? void 0 : getFreshValueTimer.end(timings);
|
|
200
|
-
break;
|
|
201
|
-
case "done":
|
|
202
|
-
cacheRetrievalTimer.end(timings);
|
|
203
|
-
break;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
const solutionAppCache = makeSingletonCache("SolutionAppCache");
|
|
209
|
-
const problemAppCache = makeSingletonCache("ProblemAppCache");
|
|
210
|
-
const exampleAppCache = makeSingletonCache("ExampleAppCache");
|
|
211
|
-
const playgroundAppCache = makeSingletonCache("PlaygroundAppCache");
|
|
212
|
-
const appsCache = makeSingletonCache("AppsCache");
|
|
213
|
-
const diffCodeCache = makeSingletonCache("DiffCodeCache");
|
|
214
|
-
const diffFilesCache = makeSingletonCache("DiffFilesCache");
|
|
215
|
-
const compiledMarkdownCache = makeSingletonCache(
|
|
216
|
-
"CompiledMarkdownCache"
|
|
217
|
-
);
|
|
218
|
-
const compiledCodeCache = makeSingletonCache("CompiledCodeCache");
|
|
219
|
-
const ogCache = makeSingletonCache("OgCache");
|
|
220
|
-
const compiledInstructionMarkdownCache = makeSingletonFsCache("CompiledInstructionMarkdownCache");
|
|
221
|
-
const dirModifiedTimeCache = makeSingletonCache(
|
|
222
|
-
"DirModifiedTimeCache"
|
|
223
|
-
);
|
|
224
|
-
const cacheDir = path.join(os.homedir(), ".epicshop", "cache");
|
|
225
|
-
const fsCache = makeSingletonFsCache("FsCache");
|
|
226
|
-
async function getAllFileCacheEntries() {
|
|
227
|
-
const files = await fsExtra.readdir(cacheDir);
|
|
228
|
-
const entries = await Promise.all(
|
|
229
|
-
files.map(async (file) => {
|
|
230
|
-
const filePath = path.join(cacheDir, file);
|
|
231
|
-
const data = await fsExtra.readJSON(filePath);
|
|
232
|
-
return data;
|
|
233
|
-
}).filter(Boolean)
|
|
234
|
-
);
|
|
235
|
-
return entries;
|
|
236
|
-
}
|
|
237
|
-
async function deleteCache() {
|
|
238
|
-
if (process.env.EPICSHOP_DEPLOYED) return null;
|
|
239
|
-
try {
|
|
240
|
-
if (await fsExtra.exists(cacheDir)) {
|
|
241
|
-
await fsExtra.remove(cacheDir);
|
|
242
|
-
}
|
|
243
|
-
} catch (error) {
|
|
244
|
-
console.error(`Error deleting the cache in ${cacheDir}`, error);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
function makeSingletonCache(name) {
|
|
248
|
-
return remember(name, () => {
|
|
249
|
-
const lruInstance = new LRUCache({
|
|
250
|
-
max: 1e3
|
|
251
|
-
});
|
|
252
|
-
const lru = {
|
|
253
|
-
name,
|
|
254
|
-
set: (key, value) => {
|
|
255
|
-
const ttl = C.totalTtl(value.metadata);
|
|
256
|
-
lruInstance.set(key, value, {
|
|
257
|
-
ttl: ttl === Infinity ? void 0 : ttl,
|
|
258
|
-
start: value.metadata.createdTime
|
|
259
|
-
});
|
|
260
|
-
return value;
|
|
261
|
-
},
|
|
262
|
-
get: (key) => lruInstance.get(key),
|
|
263
|
-
delete: (key) => lruInstance.delete(key)
|
|
264
|
-
};
|
|
265
|
-
return lru;
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
function makeSingletonFsCache(name) {
|
|
269
|
-
return remember(name, () => {
|
|
270
|
-
const cacheDir2 = path.join(os.homedir(), ".epicshop", "cache", name);
|
|
271
|
-
const fsCache2 = {
|
|
272
|
-
name: `Filesystem cache (${name})`,
|
|
273
|
-
async get(key) {
|
|
274
|
-
try {
|
|
275
|
-
const filePath = path.join(cacheDir2, md5(key));
|
|
276
|
-
const data = await fsExtra.readJSON(filePath);
|
|
277
|
-
if (data.entry) return data.entry;
|
|
278
|
-
return null;
|
|
279
|
-
} catch (error) {
|
|
280
|
-
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
281
|
-
return null;
|
|
282
|
-
}
|
|
283
|
-
throw error;
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
async set(key, entry2) {
|
|
287
|
-
const filePath = path.join(cacheDir2, md5(key));
|
|
288
|
-
await fsExtra.ensureDir(path.dirname(filePath));
|
|
289
|
-
await fsExtra.writeJSON(filePath, { key, entry: entry2 });
|
|
290
|
-
},
|
|
291
|
-
async delete(key) {
|
|
292
|
-
const filePath = path.join(cacheDir2, md5(key));
|
|
293
|
-
await fsExtra.remove(filePath);
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
return fsCache2;
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
async function cachified({
|
|
300
|
-
request,
|
|
301
|
-
timings,
|
|
302
|
-
key,
|
|
303
|
-
timingKey = key.length > 18 ? `${key.slice(0, 7)}...${key.slice(-8)}` : key,
|
|
304
|
-
...options
|
|
305
|
-
}) {
|
|
306
|
-
const forceFresh = await shouldForceFresh({
|
|
307
|
-
forceFresh: options.forceFresh,
|
|
308
|
-
request,
|
|
309
|
-
key
|
|
310
|
-
});
|
|
311
|
-
return C.cachified(
|
|
312
|
-
{
|
|
313
|
-
...options,
|
|
314
|
-
key,
|
|
315
|
-
forceFresh
|
|
316
|
-
},
|
|
317
|
-
C.mergeReporters(
|
|
318
|
-
cachifiedTimingReporter(timings, timingKey),
|
|
319
|
-
process.env.EPICSHOP_DEBUG_CACHE ? verboseReporter() : void 0
|
|
320
|
-
)
|
|
321
|
-
);
|
|
322
|
-
}
|
|
323
|
-
async function shouldForceFresh({
|
|
324
|
-
forceFresh,
|
|
325
|
-
request,
|
|
326
|
-
key
|
|
327
|
-
}) {
|
|
328
|
-
if (typeof forceFresh === "boolean") return forceFresh;
|
|
329
|
-
if (typeof forceFresh === "string" && key) {
|
|
330
|
-
return forceFresh.split(",").includes(key);
|
|
331
|
-
}
|
|
332
|
-
if (!request) return false;
|
|
333
|
-
const fresh = new URL(request.url).searchParams.get("fresh");
|
|
334
|
-
if (typeof fresh !== "string") return false;
|
|
335
|
-
if (fresh === "") return true;
|
|
336
|
-
if (!key) return false;
|
|
337
|
-
return fresh.split(",").includes(key);
|
|
338
|
-
}
|
|
339
|
-
const DiscordMemberSchema = z.object({
|
|
340
|
-
avatarURL: z.string().nullable().optional(),
|
|
341
|
-
displayName: z.string(),
|
|
342
|
-
id: z.string()
|
|
343
|
-
});
|
|
344
|
-
const TokenSetSchema = z.object({
|
|
345
|
-
access_token: z.string(),
|
|
346
|
-
token_type: z.string(),
|
|
347
|
-
scope: z.string()
|
|
348
|
-
});
|
|
349
|
-
const PlayerPreferencesSchema = z.object({
|
|
350
|
-
volumeRate: z.number().optional(),
|
|
351
|
-
playbackRate: z.number().optional(),
|
|
352
|
-
autoplay: z.boolean().optional(),
|
|
353
|
-
subtitle: z.object({
|
|
354
|
-
id: z.string().nullable().default(null),
|
|
355
|
-
mode: z.literal("disabled").or(z.literal("hidden")).or(z.literal("showing")).nullable().default("disabled")
|
|
356
|
-
}).optional().default({}),
|
|
357
|
-
muted: z.boolean().optional(),
|
|
358
|
-
theater: z.boolean().optional(),
|
|
359
|
-
defaultView: z.string().optional(),
|
|
360
|
-
activeSidebarTab: z.number().optional()
|
|
361
|
-
}).optional().default({});
|
|
362
|
-
const PresencePreferencesSchema = z.object({
|
|
363
|
-
optOut: z.boolean()
|
|
364
|
-
}).optional().default({ optOut: false });
|
|
365
|
-
const AuthInfoSchema = z.object({
|
|
366
|
-
tokenSet: TokenSetSchema,
|
|
367
|
-
email: z.string(),
|
|
368
|
-
name: z.string().nullable().optional()
|
|
369
|
-
}).transform((d) => ({ ...d, id: md5(d.email) }));
|
|
370
|
-
const DataSchema = z.object({
|
|
371
|
-
onboarding: z.object({
|
|
372
|
-
tourVideosWatched: z.array(z.string()).default([])
|
|
373
|
-
}).passthrough().optional().default({ tourVideosWatched: [] }),
|
|
374
|
-
preferences: z.object({
|
|
375
|
-
player: PlayerPreferencesSchema,
|
|
376
|
-
presence: PresencePreferencesSchema
|
|
377
|
-
}).optional().default({}),
|
|
378
|
-
authInfo: AuthInfoSchema.optional(),
|
|
379
|
-
discordMember: DiscordMemberSchema.optional()
|
|
380
|
-
});
|
|
381
|
-
const appDir = path.join(os.homedir(), ".epicshop");
|
|
382
|
-
const dbPath = path.join(appDir, "data.json");
|
|
383
|
-
async function deleteDb() {
|
|
384
|
-
if (process.env.EPICSHOP_DEPLOYED) return null;
|
|
385
|
-
try {
|
|
386
|
-
if (await fsExtra.exists(dbPath)) {
|
|
387
|
-
await fsExtra.remove(dbPath);
|
|
388
|
-
}
|
|
389
|
-
} catch (error) {
|
|
390
|
-
console.error(`Error deleting the database in ${dbPath}`, error);
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
async function readDb() {
|
|
394
|
-
if (process.env.EPICSHOP_DEPLOYED) return null;
|
|
395
|
-
try {
|
|
396
|
-
if (await fsExtra.exists(dbPath)) {
|
|
397
|
-
const db = DataSchema.parse(await fsExtra.readJSON(dbPath));
|
|
398
|
-
return db;
|
|
399
|
-
}
|
|
400
|
-
} catch (error) {
|
|
401
|
-
console.error(
|
|
402
|
-
`Error reading the database in ${dbPath}, moving it to a .bkp file to avoid parsing errors in the future`,
|
|
403
|
-
error
|
|
404
|
-
);
|
|
405
|
-
void fsExtra.move(dbPath, `${dbPath}.bkp`).catch(() => {
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
|
-
return null;
|
|
409
|
-
}
|
|
410
|
-
async function getAuthInfo() {
|
|
411
|
-
const data = await readDb();
|
|
412
|
-
return (data == null ? void 0 : data.authInfo) ?? null;
|
|
413
|
-
}
|
|
414
|
-
async function getUserInfo() {
|
|
415
|
-
var _a, _b;
|
|
416
|
-
const db = await readDb();
|
|
417
|
-
if (!(db == null ? void 0 : db.authInfo)) return null;
|
|
418
|
-
return {
|
|
419
|
-
id: db.authInfo.id,
|
|
420
|
-
name: ((_a = db.discordMember) == null ? void 0 : _a.displayName) ?? db.authInfo.name ?? null,
|
|
421
|
-
email: db.authInfo.email,
|
|
422
|
-
avatarUrl: ((_b = db.discordMember) == null ? void 0 : _b.avatarURL) ?? getGravatar({ email: db.authInfo.email, size: 288 })
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
function getGravatar({ email, size }) {
|
|
426
|
-
const gravatarOptions = new URLSearchParams({
|
|
427
|
-
size: size.toString(),
|
|
428
|
-
default: "identicon"
|
|
429
|
-
});
|
|
430
|
-
const gravatarUrl = `https://www.gravatar.com/avatar/${md5(
|
|
431
|
-
email
|
|
432
|
-
)}?${gravatarOptions.toString()}`;
|
|
433
|
-
return gravatarUrl;
|
|
434
|
-
}
|
|
435
|
-
async function requireAuthInfo({
|
|
436
|
-
request,
|
|
437
|
-
redirectTo
|
|
438
|
-
}) {
|
|
439
|
-
const authInfo = await getAuthInfo();
|
|
440
|
-
if (!authInfo) {
|
|
441
|
-
const requestUrl = new URL(request.url);
|
|
442
|
-
redirectTo = redirectTo === null ? null : redirectTo ?? `${requestUrl.pathname}${requestUrl.search}`;
|
|
443
|
-
const loginParams = redirectTo ? new URLSearchParams({ redirectTo }) : null;
|
|
444
|
-
const loginRedirect = ["/login", loginParams == null ? void 0 : loginParams.toString()].filter(Boolean).join("?");
|
|
445
|
-
throw redirect(loginRedirect);
|
|
446
|
-
}
|
|
447
|
-
return authInfo;
|
|
448
|
-
}
|
|
449
|
-
async function setAuthInfo({
|
|
450
|
-
tokenSet,
|
|
451
|
-
email = "unknown@example.com",
|
|
452
|
-
name
|
|
453
|
-
}) {
|
|
454
|
-
const data = await readDb();
|
|
455
|
-
const authInfo = AuthInfoSchema.parse({ tokenSet, email, name });
|
|
456
|
-
await fsExtra.ensureDir(appDir);
|
|
457
|
-
await fsExtra.writeJSON(dbPath, { ...data, authInfo });
|
|
458
|
-
return authInfo;
|
|
459
|
-
}
|
|
460
|
-
async function getPreferences() {
|
|
461
|
-
const data = await readDb();
|
|
462
|
-
return (data == null ? void 0 : data.preferences) ?? null;
|
|
463
|
-
}
|
|
464
|
-
async function setPlayerPreferences(playerPreferences) {
|
|
465
|
-
const data = await readDb();
|
|
466
|
-
const updatedData = {
|
|
467
|
-
...data,
|
|
468
|
-
preferences: { ...data == null ? void 0 : data.preferences, player: playerPreferences }
|
|
469
|
-
};
|
|
470
|
-
await fsExtra.ensureDir(appDir);
|
|
471
|
-
await fsExtra.writeJSON(dbPath, updatedData);
|
|
472
|
-
return updatedData.preferences.player;
|
|
473
|
-
}
|
|
474
|
-
async function setPresencePreferences(presnecePreferences) {
|
|
475
|
-
const data = await readDb();
|
|
476
|
-
const updatedData = {
|
|
477
|
-
...data,
|
|
478
|
-
preferences: { ...data == null ? void 0 : data.preferences, presence: presnecePreferences }
|
|
479
|
-
};
|
|
480
|
-
await fsExtra.ensureDir(appDir);
|
|
481
|
-
await fsExtra.writeJSON(dbPath, updatedData);
|
|
482
|
-
return updatedData.preferences.presence;
|
|
483
|
-
}
|
|
484
|
-
async function getDiscordMember() {
|
|
485
|
-
const data = await readDb();
|
|
486
|
-
return (data == null ? void 0 : data.discordMember) ?? null;
|
|
487
|
-
}
|
|
488
|
-
async function setDiscordMember(discordMember) {
|
|
489
|
-
const data = await readDb();
|
|
490
|
-
const updatedData = {
|
|
491
|
-
...data,
|
|
492
|
-
discordMember
|
|
493
|
-
};
|
|
494
|
-
await fsExtra.ensureDir(appDir);
|
|
495
|
-
await fsExtra.writeJSON(dbPath, updatedData);
|
|
496
|
-
return updatedData.discordMember;
|
|
497
|
-
}
|
|
498
|
-
async function deleteDiscordInfo() {
|
|
499
|
-
const data = await readDb();
|
|
500
|
-
data == null ? true : delete data.discordMember;
|
|
501
|
-
await fsExtra.ensureDir(appDir);
|
|
502
|
-
await fsExtra.writeJSON(dbPath, data);
|
|
503
|
-
}
|
|
504
|
-
async function readOnboardingData() {
|
|
505
|
-
const data = await readDb();
|
|
506
|
-
return (data == null ? void 0 : data.onboarding) ?? null;
|
|
507
|
-
}
|
|
508
|
-
async function markOnboardingVideoWatched(videoUrl) {
|
|
509
|
-
const data = await readDb();
|
|
510
|
-
const updatedData = {
|
|
511
|
-
...data,
|
|
512
|
-
onboarding: {
|
|
513
|
-
...data == null ? void 0 : data.onboarding,
|
|
514
|
-
tourVideosWatched: [
|
|
515
|
-
...(data == null ? void 0 : data.onboarding.tourVideosWatched) ?? [],
|
|
516
|
-
videoUrl
|
|
517
|
-
].filter(Boolean)
|
|
518
|
-
}
|
|
519
|
-
};
|
|
520
|
-
await fsExtra.ensureDir(appDir);
|
|
521
|
-
await fsExtra.writeJSON(dbPath, updatedData);
|
|
522
|
-
return updatedData.onboarding;
|
|
523
|
-
}
|
|
524
|
-
const partykitRoom = "epic-web-presence";
|
|
525
|
-
const partykitBaseUrl = `https://epic-web-presence.kentcdodds.partykit.dev/parties/main/${partykitRoom}`;
|
|
526
|
-
const UserSchema = z.object({
|
|
527
|
-
id: z.string(),
|
|
528
|
-
avatarUrl: z.string().nullable().optional(),
|
|
529
|
-
name: z.string().nullable().optional(),
|
|
530
|
-
location: z.object({
|
|
531
|
-
workshopTitle: z.string().nullable().optional(),
|
|
532
|
-
origin: z.string().nullable().optional(),
|
|
533
|
-
exercise: z.object({
|
|
534
|
-
type: z.union([z.literal("problem"), z.literal("solution")]).nullable().optional(),
|
|
535
|
-
exerciseNumber: z.number().nullable().optional(),
|
|
536
|
-
stepNumber: z.number().nullable().optional()
|
|
537
|
-
}).nullable().optional()
|
|
538
|
-
}).nullable().optional()
|
|
539
|
-
});
|
|
540
|
-
const MessageSchema = z.object({
|
|
541
|
-
type: z.literal("remove-user"),
|
|
542
|
-
payload: z.object({ id: z.string() })
|
|
543
|
-
}).or(z.object({ type: z.literal("add-user"), payload: UserSchema })).or(
|
|
544
|
-
z.object({
|
|
545
|
-
type: z.literal("presence"),
|
|
546
|
-
payload: z.object({ users: z.array(UserSchema) })
|
|
547
|
-
})
|
|
548
|
-
);
|
|
549
|
-
const PresenceSchema = z.object({ users: z.array(UserSchema) });
|
|
550
|
-
const presenceCache = makeSingletonCache("PresenceCache");
|
|
551
|
-
async function getPresentUsers(user, { timings, request } = {}) {
|
|
552
|
-
return cachified({
|
|
553
|
-
key: "presence",
|
|
554
|
-
cache: presenceCache,
|
|
555
|
-
timings,
|
|
556
|
-
request,
|
|
557
|
-
ttl: 1e3 * 60 * 5,
|
|
558
|
-
swr: 1e3 * 60 * 60 * 24,
|
|
559
|
-
checkValue: z.array(UserSchema),
|
|
560
|
-
async getFreshValue(context) {
|
|
561
|
-
try {
|
|
562
|
-
const response = await Promise.race([
|
|
563
|
-
fetch(`${partykitBaseUrl}/presence`),
|
|
564
|
-
new Promise(
|
|
565
|
-
(resolve) => setTimeout(() => {
|
|
566
|
-
resolve(new Response("Timeout", { status: 500 }));
|
|
567
|
-
}, 500)
|
|
568
|
-
)
|
|
569
|
-
]);
|
|
570
|
-
if (response.statusText === "Timeout") {
|
|
571
|
-
throw new Error(`Timeout fetching partykit presence`);
|
|
572
|
-
}
|
|
573
|
-
if (!response.ok) {
|
|
574
|
-
throw new Error(
|
|
575
|
-
`Unexpected response from partykit: ${response.status} ${response.statusText}`
|
|
576
|
-
);
|
|
577
|
-
}
|
|
578
|
-
const presence = PresenceSchema.parse(await response.json());
|
|
579
|
-
const preferences = await getPreferences();
|
|
580
|
-
const users = presence.users;
|
|
581
|
-
if ((preferences == null ? void 0 : preferences.presence.optOut) ?? !user) {
|
|
582
|
-
return uniqueUsers(users.filter((u) => u.id !== (user == null ? void 0 : user.id)));
|
|
583
|
-
} else {
|
|
584
|
-
return uniqueUsers([...users, user]);
|
|
585
|
-
}
|
|
586
|
-
} catch {
|
|
587
|
-
context.metadata.ttl = 300;
|
|
588
|
-
return [];
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
});
|
|
592
|
-
}
|
|
593
|
-
function uniqueUsers(users) {
|
|
594
|
-
const seen = /* @__PURE__ */ new Set();
|
|
595
|
-
return users.filter(Boolean).filter((user) => {
|
|
596
|
-
if (seen.has(user.id)) {
|
|
597
|
-
return false;
|
|
598
|
-
}
|
|
599
|
-
seen.add(user.id);
|
|
600
|
-
return true;
|
|
601
|
-
});
|
|
602
|
-
}
|
|
603
|
-
function trimCodeBlocks() {
|
|
604
|
-
return async function transformer(tree) {
|
|
605
|
-
visit(tree, "element", (preNode) => {
|
|
606
|
-
if (preNode.tagName !== "pre" || !preNode.children.length) {
|
|
607
|
-
return;
|
|
608
|
-
}
|
|
609
|
-
const codeNode = preNode.children[0];
|
|
610
|
-
if (!codeNode || codeNode.type !== "element" || codeNode.tagName !== "code") {
|
|
611
|
-
return;
|
|
612
|
-
}
|
|
613
|
-
const [codeStringNode] = codeNode.children;
|
|
614
|
-
if (!codeStringNode) return;
|
|
615
|
-
if (codeStringNode.type !== "text") {
|
|
616
|
-
console.warn(
|
|
617
|
-
`trimCodeBlocks: Unexpected: codeStringNode type is not "text": ${codeStringNode.type}`
|
|
618
|
-
);
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
codeStringNode.value = codeStringNode.value.trimEnd();
|
|
622
|
-
});
|
|
623
|
-
};
|
|
624
|
-
}
|
|
625
|
-
function removePreContainerDivs() {
|
|
626
|
-
return async function preContainerDivsTransformer(tree) {
|
|
627
|
-
visit(
|
|
628
|
-
tree,
|
|
629
|
-
{ type: "element", tagName: "pre" },
|
|
630
|
-
function visitor(node, index, parent) {
|
|
631
|
-
if ((parent == null ? void 0 : parent.type) !== "element") return;
|
|
632
|
-
if (parent.tagName !== "div") return;
|
|
633
|
-
if (parent.children.length !== 1 && index === 0) return;
|
|
634
|
-
Object.assign(parent, node);
|
|
635
|
-
}
|
|
636
|
-
);
|
|
637
|
-
};
|
|
638
|
-
}
|
|
639
|
-
const rehypePlugins = [
|
|
640
|
-
trimCodeBlocks,
|
|
641
|
-
remarkCodeBlocksShiki,
|
|
642
|
-
removePreContainerDivs
|
|
643
|
-
];
|
|
644
|
-
const verboseLog = process.env.EPICSHOP_VERBOSE_LOG === "true" ? console.log : () => {
|
|
645
|
-
};
|
|
646
|
-
async function compileMdx(file, {
|
|
647
|
-
request,
|
|
648
|
-
timings,
|
|
649
|
-
forceFresh
|
|
650
|
-
} = {}) {
|
|
651
|
-
const stat = await fs.promises.stat(file).catch((error) => ({ error }));
|
|
652
|
-
if ("error" in stat) {
|
|
653
|
-
throw new Error(`File stat cannot be read: ${stat.error}`);
|
|
654
|
-
}
|
|
655
|
-
const key = `file:${file}`;
|
|
656
|
-
forceFresh = await shouldForceFresh({ forceFresh, request, key });
|
|
657
|
-
const existingCacheEntry = await compiledInstructionMarkdownCache.get(key);
|
|
658
|
-
if (!forceFresh && existingCacheEntry) {
|
|
659
|
-
forceFresh = stat.mtimeMs > existingCacheEntry.metadata.createdTime;
|
|
660
|
-
}
|
|
661
|
-
return cachified({
|
|
662
|
-
key,
|
|
663
|
-
cache: compiledInstructionMarkdownCache,
|
|
664
|
-
request,
|
|
665
|
-
timings,
|
|
666
|
-
forceFresh,
|
|
667
|
-
getFreshValue: () => compileMdxImpl(file)
|
|
668
|
-
});
|
|
669
|
-
}
|
|
670
|
-
async function compileMdxImpl(file) {
|
|
671
|
-
let title = null;
|
|
672
|
-
const epicVideoEmbeds = [];
|
|
673
|
-
try {
|
|
674
|
-
verboseLog(`Compiling ${file}`);
|
|
675
|
-
const bundleResult = await queuedBundleMDX({
|
|
676
|
-
file,
|
|
677
|
-
cwd: path.dirname(file),
|
|
678
|
-
mdxOptions(options) {
|
|
679
|
-
options.remarkPlugins = [
|
|
680
|
-
...options.remarkPlugins ?? [],
|
|
681
|
-
[remarkAutolinkHeadings, { behavior: "wrap" }],
|
|
682
|
-
gfm,
|
|
683
|
-
() => (tree) => {
|
|
684
|
-
visit(tree, "heading", (node) => {
|
|
685
|
-
if (title) return;
|
|
686
|
-
if (node.depth === 1) {
|
|
687
|
-
visit(node, "text", (textNode) => {
|
|
688
|
-
title = textNode.value.trim();
|
|
689
|
-
});
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
title = title ? title.replace(/^\d+\. /, "").trim() : null;
|
|
693
|
-
},
|
|
694
|
-
() => (tree) => {
|
|
695
|
-
visit(tree, "mdxJsxFlowElement", (jsxEl) => {
|
|
696
|
-
if (jsxEl.name !== "EpicVideo") return;
|
|
697
|
-
const urlAttr = jsxEl.attributes.find(
|
|
698
|
-
// @ts-expect-error no idea why this started being an issue suddenly 🤷♂️
|
|
699
|
-
(a) => a.type === "mdxJsxAttribute" && a.name === "url"
|
|
700
|
-
);
|
|
701
|
-
if (!urlAttr) return;
|
|
702
|
-
let url = urlAttr.value;
|
|
703
|
-
if (typeof url !== "string") return;
|
|
704
|
-
if (url.endsWith("/")) url = url.slice(0, -1);
|
|
705
|
-
epicVideoEmbeds.push(url);
|
|
706
|
-
});
|
|
707
|
-
},
|
|
708
|
-
emoji
|
|
709
|
-
];
|
|
710
|
-
options.rehypePlugins = [
|
|
711
|
-
...options.rehypePlugins ?? [],
|
|
712
|
-
...rehypePlugins
|
|
713
|
-
];
|
|
714
|
-
options.mdxExtensions = [".mdx", ".md"];
|
|
715
|
-
options.format = "mdx";
|
|
716
|
-
options.development = false;
|
|
717
|
-
return options;
|
|
718
|
-
}
|
|
719
|
-
});
|
|
720
|
-
if (!bundleResult) throw new Error(`Timeout for file: ${file}`);
|
|
721
|
-
const result = { code: bundleResult.code, title, epicVideoEmbeds };
|
|
722
|
-
return result;
|
|
723
|
-
} catch (error) {
|
|
724
|
-
console.error(`Compilation error for file: `, file, error);
|
|
725
|
-
throw error;
|
|
726
|
-
} finally {
|
|
727
|
-
verboseLog(`Successfully compiled ${file}`);
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
async function compileMarkdownString(markdownString) {
|
|
731
|
-
return cachified({
|
|
732
|
-
key: markdownString,
|
|
733
|
-
cache: compiledMarkdownCache,
|
|
734
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
735
|
-
getFreshValue: async () => {
|
|
736
|
-
try {
|
|
737
|
-
verboseLog(`Compiling string`, markdownString);
|
|
738
|
-
const result = await queuedBundleMDX({
|
|
739
|
-
source: markdownString,
|
|
740
|
-
mdxOptions(options) {
|
|
741
|
-
options.rehypePlugins = [
|
|
742
|
-
...options.rehypePlugins ?? [],
|
|
743
|
-
...rehypePlugins
|
|
744
|
-
];
|
|
745
|
-
options.development = false;
|
|
746
|
-
return options;
|
|
747
|
-
}
|
|
748
|
-
});
|
|
749
|
-
if (!result) throw new Error(`Timed out compiling markdown string`);
|
|
750
|
-
return result.code;
|
|
751
|
-
} catch (error) {
|
|
752
|
-
console.error(`Compilation error for code: `, markdownString, error);
|
|
753
|
-
throw error;
|
|
754
|
-
} finally {
|
|
755
|
-
verboseLog(`Successfully compiled string`, markdownString);
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
});
|
|
759
|
-
}
|
|
760
|
-
let _queue$1 = null;
|
|
761
|
-
async function getQueue$1() {
|
|
762
|
-
if (_queue$1) return _queue$1;
|
|
763
|
-
_queue$1 = new PQueue({
|
|
764
|
-
concurrency: 1,
|
|
765
|
-
throwOnTimeout: true,
|
|
766
|
-
timeout: 1e3 * 60
|
|
767
|
-
});
|
|
768
|
-
return _queue$1;
|
|
769
|
-
}
|
|
770
|
-
async function queuedBundleMDX(...args) {
|
|
771
|
-
const queue = await getQueue$1();
|
|
772
|
-
const result = await queue.add(() => bundleMDX(...args));
|
|
773
|
-
return result;
|
|
774
|
-
}
|
|
775
|
-
const workshopRoot$1 = process.env.EPICSHOP_CONTEXT_CWD ?? process.cwd();
|
|
776
|
-
const rootPkgJson = path$1.join(workshopRoot$1, "package.json");
|
|
777
|
-
const StackBlitzConfigSchema = z.object({
|
|
778
|
-
// we default this to `${exerciseTitle} (${type})`
|
|
779
|
-
title: z.string().optional(),
|
|
780
|
-
// stackblitz defaults this to dev automatically
|
|
781
|
-
startScript: z.string().optional(),
|
|
782
|
-
// if no value is provided, then stackblitz defaults this to whatever
|
|
783
|
-
// looks best based on the width of the screen
|
|
784
|
-
view: z.union([z.literal("editor"), z.literal("preview"), z.literal("both")]).optional(),
|
|
785
|
-
file: z.string().optional()
|
|
786
|
-
});
|
|
787
|
-
const InstructorSchema = z.object({
|
|
788
|
-
name: z.string().optional(),
|
|
789
|
-
avatar: z.string().optional(),
|
|
790
|
-
"𝕏": z.string().optional(),
|
|
791
|
-
xHandle: z.string().optional()
|
|
792
|
-
});
|
|
793
|
-
const WorkshopConfigSchema = z.object({
|
|
794
|
-
title: z.string(),
|
|
795
|
-
subtitle: z.string().optional(),
|
|
796
|
-
instructor: InstructorSchema.optional(),
|
|
797
|
-
epicWorkshopHost: z.string().optional(),
|
|
798
|
-
epicWorkshopSlug: z.string().optional(),
|
|
799
|
-
product: z.object({
|
|
800
|
-
host: z.string().default("www.epicweb.dev"),
|
|
801
|
-
displayName: z.string().default("EpicWeb.dev"),
|
|
802
|
-
displayNameShort: z.string().default("Epic Web"),
|
|
803
|
-
logo: z.string().default("/logo.svg"),
|
|
804
|
-
slug: z.string().optional(),
|
|
805
|
-
discordChannelId: z.string().default("1161045224907341972"),
|
|
806
|
-
discordTags: z.array(z.string()).optional()
|
|
807
|
-
}).default({}),
|
|
808
|
-
onboardingVideo: z.string().default(
|
|
809
|
-
"https://www.epicweb.dev/tips/get-started-with-the-epic-workshop-app"
|
|
810
|
-
),
|
|
811
|
-
githubRepo: z.string(),
|
|
812
|
-
githubRoot: z.string(),
|
|
813
|
-
stackBlitzConfig: StackBlitzConfigSchema.optional(),
|
|
814
|
-
forms: z.object({
|
|
815
|
-
workshop: z.string().default(
|
|
816
|
-
"https://docs.google.com/forms/d/e/1FAIpQLSdRmj9p8-5zyoqRzxp3UpqSbC3aFkweXvvJIKes0a5s894gzg/viewform?hl=en&embedded=true&entry.2123647600={workshopTitle}"
|
|
817
|
-
),
|
|
818
|
-
exercise: z.string().default(
|
|
819
|
-
"https://docs.google.com/forms/d/e/1FAIpQLSf3o9xyjQepTlOTH5Z7ZwkeSTdXh6YWI_RGc9KiyD3oUN0p6w/viewform?hl=en&embedded=true&entry.1836176234={workshopTitle}&entry.428900931={exerciseTitle}"
|
|
820
|
-
)
|
|
821
|
-
}).default({}),
|
|
822
|
-
testTab: z.object({
|
|
823
|
-
enabled: z.boolean().default(true)
|
|
824
|
-
}).default({}),
|
|
825
|
-
scripts: z.object({
|
|
826
|
-
postupdate: z.string().optional()
|
|
827
|
-
}).optional(),
|
|
828
|
-
initialRoute: z.string().optional().default("/")
|
|
829
|
-
}).transform((data) => {
|
|
830
|
-
return {
|
|
831
|
-
...data,
|
|
832
|
-
product: {
|
|
833
|
-
...data.product,
|
|
834
|
-
displayNameShort: data.product.displayNameShort ?? data.product.displayName,
|
|
835
|
-
// for backwards compatibility
|
|
836
|
-
host: data.product.host ?? data.epicWorkshopHost,
|
|
837
|
-
slug: data.product.slug ?? data.epicWorkshopSlug
|
|
838
|
-
}
|
|
839
|
-
};
|
|
840
|
-
});
|
|
841
|
-
const configCache = {
|
|
842
|
-
config: null,
|
|
843
|
-
modified: 0
|
|
844
|
-
};
|
|
845
|
-
function getWorkshopConfig() {
|
|
846
|
-
if (configCache.config && configCache.modified > fs$1.statSync(rootPkgJson).mtimeMs) {
|
|
847
|
-
return configCache.config;
|
|
848
|
-
}
|
|
849
|
-
const packageJsonPath = path$1.join(workshopRoot$1, "package.json");
|
|
850
|
-
let packageJson;
|
|
851
|
-
try {
|
|
852
|
-
const packageJsonContent = fs$1.readFileSync(packageJsonPath, "utf8");
|
|
853
|
-
packageJson = JSON.parse(packageJsonContent);
|
|
854
|
-
} catch (error) {
|
|
855
|
-
console.error(`Error reading or parsing package.json:`, error);
|
|
856
|
-
if (error instanceof Error && error.message.includes("ENOENT")) {
|
|
857
|
-
throw new Error(
|
|
858
|
-
`package.json not found at ${packageJsonPath}. Please ensure you're running the command from the correct directory.`
|
|
859
|
-
);
|
|
860
|
-
} else if (error instanceof SyntaxError) {
|
|
861
|
-
throw new Error(
|
|
862
|
-
`Invalid JSON in package.json at ${packageJsonPath}. Please check the file for syntax errors.`
|
|
863
|
-
);
|
|
864
|
-
}
|
|
865
|
-
throw new Error(
|
|
866
|
-
`Could not find and parse package.json at ${packageJsonPath}`
|
|
867
|
-
);
|
|
868
|
-
}
|
|
869
|
-
const epicshopConfig = packageJson.epicshop || {};
|
|
870
|
-
if (epicshopConfig.githubRepo) {
|
|
871
|
-
epicshopConfig.githubRoot = `${epicshopConfig.githubRepo.replace(/\/$/, "")}/tree/main`;
|
|
872
|
-
} else if (epicshopConfig.githubRoot) {
|
|
873
|
-
epicshopConfig.githubRepo = epicshopConfig.githubRoot.replace(
|
|
874
|
-
/\/(blob|tree)\/.*$/,
|
|
875
|
-
""
|
|
876
|
-
);
|
|
877
|
-
epicshopConfig.githubRoot = `${epicshopConfig.githubRepo}/tree/main`;
|
|
878
|
-
} else {
|
|
879
|
-
throw new Error(
|
|
880
|
-
"Either githubRepo or githubRoot is required in the epicshop configuration"
|
|
881
|
-
);
|
|
882
|
-
}
|
|
883
|
-
try {
|
|
884
|
-
const parsedConfig = WorkshopConfigSchema.parse(epicshopConfig);
|
|
885
|
-
configCache.config = parsedConfig;
|
|
886
|
-
configCache.modified = fs$1.statSync(rootPkgJson).mtimeMs;
|
|
887
|
-
return parsedConfig;
|
|
888
|
-
} catch (error) {
|
|
889
|
-
if (error instanceof z.ZodError) {
|
|
890
|
-
const flattenedErrors = error.flatten();
|
|
891
|
-
const errorMessages = Object.entries(flattenedErrors.fieldErrors).map(([field, errors]) => `${field}: ${errors == null ? void 0 : errors.join(", ")}`).concat(flattenedErrors.formErrors);
|
|
892
|
-
throw new Error(
|
|
893
|
-
`Invalid epicshop configuration in ${packageJsonPath}:
|
|
894
|
-
${errorMessages.join("\n")}`
|
|
895
|
-
);
|
|
896
|
-
}
|
|
897
|
-
throw error;
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
async function getStackBlitzUrl({
|
|
901
|
-
fullPath,
|
|
902
|
-
title,
|
|
903
|
-
type
|
|
904
|
-
}) {
|
|
905
|
-
var _a;
|
|
906
|
-
const workshopConfig = getWorkshopConfig();
|
|
907
|
-
const appConfig = await getAppConfig(fullPath);
|
|
908
|
-
if (appConfig.stackBlitzConfig === null) return null;
|
|
909
|
-
let githubRootUrlString = workshopConfig.githubRoot;
|
|
910
|
-
const githubRootUrl = new URL(
|
|
911
|
-
githubRootUrlString.replace(/\/blob\//, "/tree/")
|
|
912
|
-
);
|
|
913
|
-
const githubPart = githubRootUrl.pathname;
|
|
914
|
-
const stackBlitzConfig = {
|
|
915
|
-
...appConfig.stackBlitzConfig,
|
|
916
|
-
title: ((_a = appConfig.stackBlitzConfig) == null ? void 0 : _a.title) ?? `${title} (${type})`
|
|
917
|
-
};
|
|
918
|
-
const params = new URLSearchParams(stackBlitzConfig);
|
|
919
|
-
const relativePath = fullPath.replace(`${workshopRoot$1}${path$1.sep}`, "");
|
|
920
|
-
const stackBlitzUrl = new URL(
|
|
921
|
-
`/github${githubPart}/${relativePath}?${params}`,
|
|
922
|
-
"https://stackblitz.com"
|
|
923
|
-
);
|
|
924
|
-
return stackBlitzUrl.toString();
|
|
925
|
-
}
|
|
926
|
-
async function getAppConfig(fullPath) {
|
|
927
|
-
var _a, _b;
|
|
928
|
-
const workshopConfig = getWorkshopConfig();
|
|
929
|
-
let epicshopConfig = {};
|
|
930
|
-
let scripts = {};
|
|
931
|
-
const packageJsonPath = path$1.join(fullPath, "package.json");
|
|
932
|
-
const packageJsonExists = await fs$1.promises.access(packageJsonPath, fs$1.constants.F_OK).then(() => true).catch(() => false);
|
|
933
|
-
if (packageJsonExists) {
|
|
934
|
-
const pkg = JSON.parse(
|
|
935
|
-
await fs$1.promises.readFile(path$1.join(fullPath, "package.json"), "utf8")
|
|
936
|
-
);
|
|
937
|
-
epicshopConfig = pkg.epicshop ?? {};
|
|
938
|
-
scripts = pkg.scripts ?? {};
|
|
939
|
-
}
|
|
940
|
-
const AppConfigSchema = z.object({
|
|
941
|
-
stackBlitzConfig: StackBlitzConfigSchema.nullable().optional().transform((appStackBlitzConfig) => {
|
|
942
|
-
if (appStackBlitzConfig === null) return null;
|
|
943
|
-
return {
|
|
944
|
-
...workshopConfig.stackBlitzConfig,
|
|
945
|
-
...appStackBlitzConfig
|
|
946
|
-
};
|
|
947
|
-
}),
|
|
948
|
-
testTab: z.object({
|
|
949
|
-
enabled: z.boolean().optional().default(((_a = workshopConfig.testTab) == null ? void 0 : _a.enabled) ?? true)
|
|
950
|
-
}).default({}),
|
|
951
|
-
scripts: z.object({
|
|
952
|
-
test: z.string().optional(),
|
|
953
|
-
dev: z.string().optional()
|
|
954
|
-
}).default({}),
|
|
955
|
-
initialRoute: z.string().optional().default(workshopConfig.initialRoute)
|
|
956
|
-
});
|
|
957
|
-
const appConfig = {
|
|
958
|
-
stackBlitzConfig: epicshopConfig.stackBlitzConfig,
|
|
959
|
-
testTab: {
|
|
960
|
-
enabled: (_b = epicshopConfig.testTab) == null ? void 0 : _b.enabled
|
|
961
|
-
},
|
|
962
|
-
scripts: {
|
|
963
|
-
test: scripts.test,
|
|
964
|
-
dev: scripts.dev
|
|
965
|
-
},
|
|
966
|
-
initialRoute: epicshopConfig.initialRoute
|
|
967
|
-
};
|
|
968
|
-
try {
|
|
969
|
-
return AppConfigSchema.parse(appConfig);
|
|
970
|
-
} catch (error) {
|
|
971
|
-
if (error instanceof z.ZodError) {
|
|
972
|
-
const flattenedErrors = error.flatten();
|
|
973
|
-
const errorMessages = Object.entries(flattenedErrors.fieldErrors).map(([field, errors]) => `${field}: ${errors == null ? void 0 : errors.join(", ")}`).concat(flattenedErrors.formErrors);
|
|
974
|
-
throw new Error(
|
|
975
|
-
`Invalid app configuration for ${fullPath}:
|
|
976
|
-
${errorMessages.join("\n")}`
|
|
977
|
-
);
|
|
978
|
-
}
|
|
979
|
-
throw error;
|
|
980
|
-
}
|
|
981
|
-
}
|
|
982
|
-
const schema = z.object({
|
|
983
|
-
NODE_ENV: z.enum(["production", "development", "test"]).default("development"),
|
|
984
|
-
EPICSHOP_GITHUB_REPO: z.string(),
|
|
985
|
-
EPICSHOP_GITHUB_ROOT: z.string(),
|
|
986
|
-
EPICSHOP_CONTEXT_CWD: z.string()
|
|
987
|
-
});
|
|
988
|
-
function init$1() {
|
|
989
|
-
const parsed = schema.safeParse(process.env);
|
|
990
|
-
if (!parsed.success) {
|
|
991
|
-
console.error(
|
|
992
|
-
"❌ Invalid environment variables:",
|
|
993
|
-
parsed.error.flatten().fieldErrors
|
|
994
|
-
);
|
|
995
|
-
throw new Error("Invalid environment variables");
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
function getEnv() {
|
|
999
|
-
return {
|
|
1000
|
-
MODE: process.env.NODE_ENV,
|
|
1001
|
-
EPICSHOP_CONTEXT_CWD: process.env.EPICSHOP_CONTEXT_CWD,
|
|
1002
|
-
EPICSHOP_GITHUB_REPO: process.env.EPICSHOP_GITHUB_REPO,
|
|
1003
|
-
EPICSHOP_GITHUB_ROOT: process.env.EPICSHOP_GITHUB_ROOT,
|
|
1004
|
-
EPICSHOP_DEPLOYED: process.env.EPICSHOP_DEPLOYED === "true" || process.env.EPICSHOP_DEPLOYED === "1"
|
|
1005
|
-
};
|
|
1006
|
-
}
|
|
1007
|
-
async function getDirModifiedTime(dir, { forceFresh = false } = {}) {
|
|
1008
|
-
const result = await cachified({
|
|
1009
|
-
key: dir,
|
|
1010
|
-
cache: dirModifiedTimeCache,
|
|
1011
|
-
ttl: 200,
|
|
1012
|
-
forceFresh,
|
|
1013
|
-
getFreshValue: () => getDirModifiedTimeImpl(dir)
|
|
1014
|
-
});
|
|
1015
|
-
return result;
|
|
1016
|
-
}
|
|
1017
|
-
async function getDirModifiedTimeImpl(dir) {
|
|
1018
|
-
const isIgnored = await isGitIgnored({ cwd: dir });
|
|
1019
|
-
const files = await fs$1.promises.readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
1020
|
-
const modifiedTimes2 = [];
|
|
1021
|
-
for (const file of files) {
|
|
1022
|
-
if (isIgnored(file.name)) continue;
|
|
1023
|
-
const filePath = path$1.join(dir, file.name);
|
|
1024
|
-
if (file.isDirectory()) {
|
|
1025
|
-
modifiedTimes2.push(await getDirModifiedTime(filePath));
|
|
1026
|
-
} else {
|
|
1027
|
-
try {
|
|
1028
|
-
const { mtimeMs } = await fs$1.promises.stat(filePath);
|
|
1029
|
-
modifiedTimes2.push(mtimeMs);
|
|
1030
|
-
} catch {
|
|
1031
|
-
}
|
|
1032
|
-
}
|
|
1033
|
-
}
|
|
1034
|
-
try {
|
|
1035
|
-
const { mtimeMs } = await fs$1.promises.stat(dir);
|
|
1036
|
-
modifiedTimes2.push(mtimeMs);
|
|
1037
|
-
} catch {
|
|
1038
|
-
}
|
|
1039
|
-
return Math.max(-1, ...modifiedTimes2);
|
|
1040
|
-
}
|
|
1041
|
-
async function modifiedMoreRecentlyThan(time2, ...dirs) {
|
|
1042
|
-
const modifiedTimePromises = dirs.map((dir) => getDirModifiedTime(dir));
|
|
1043
|
-
const allFinishedPromise = Promise.all(modifiedTimePromises);
|
|
1044
|
-
const firstMoreRecentPromise = modifiedTimePromises.map(
|
|
1045
|
-
(p) => p.then((t) => t > time2 ? true : allFinishedPromise.then(() => false))
|
|
1046
|
-
);
|
|
1047
|
-
const firstMoreRecent = await Promise.race(firstMoreRecentPromise);
|
|
1048
|
-
return firstMoreRecent;
|
|
1049
|
-
}
|
|
1050
|
-
let _queue = null;
|
|
1051
|
-
function getQueue() {
|
|
1052
|
-
if (_queue) return _queue;
|
|
1053
|
-
_queue = new PQueue({
|
|
1054
|
-
concurrency: 10,
|
|
1055
|
-
throwOnTimeout: true,
|
|
1056
|
-
timeout: 1e3 * 60
|
|
1057
|
-
});
|
|
1058
|
-
return _queue;
|
|
1059
|
-
}
|
|
1060
|
-
async function queuedGetDirModifiedTime(...args) {
|
|
1061
|
-
const queue = getQueue();
|
|
1062
|
-
const result = await queue.add(() => getDirModifiedTime(...args));
|
|
1063
|
-
return result || -1;
|
|
1064
|
-
}
|
|
1065
|
-
function getErrorMessage$1(error) {
|
|
1066
|
-
if (typeof error === "string") return error;
|
|
1067
|
-
if (error && typeof error === "object" && "message" in error && typeof error.message === "string") {
|
|
1068
|
-
return error.message;
|
|
1069
|
-
}
|
|
1070
|
-
console.error("Unable to get error message for error", error);
|
|
1071
|
-
return "Unknown Error";
|
|
1072
|
-
}
|
|
1073
|
-
const isDeployed$1 = process.env.EPICSHOP_DEPLOYED === "true" || process.env.EPICSHOP_DEPLOYED === "1";
|
|
1074
|
-
const devProcesses = remember("dev_processes", getDevProcessesMap);
|
|
1075
|
-
const testProcesses = remember("test_processes", getTestProcessesMap);
|
|
1076
|
-
function getDevProcessesMap() {
|
|
1077
|
-
var _a;
|
|
1078
|
-
const procs = /* @__PURE__ */ new Map();
|
|
1079
|
-
(_a = global.__process_dev_close_with_grace_return__) == null ? void 0 : _a.uninstall();
|
|
1080
|
-
global.__process_dev_close_with_grace_return__ = closeWithGrace(async () => {
|
|
1081
|
-
for (const [name, proc] of procs.entries()) {
|
|
1082
|
-
console.log("closing", name);
|
|
1083
|
-
proc.process.kill();
|
|
1084
|
-
}
|
|
1085
|
-
});
|
|
1086
|
-
return procs;
|
|
1087
|
-
}
|
|
1088
|
-
function getTestProcessesMap() {
|
|
1089
|
-
var _a;
|
|
1090
|
-
const procs = /* @__PURE__ */ new Map();
|
|
1091
|
-
(_a = global.__process_test_close_with_grace_return__) == null ? void 0 : _a.uninstall();
|
|
1092
|
-
global.__process_test_close_with_grace_return__ = closeWithGrace(async () => {
|
|
1093
|
-
for (const [id, proc] of procs.entries()) {
|
|
1094
|
-
if (proc.process) {
|
|
1095
|
-
console.log("closing", id);
|
|
1096
|
-
proc.process.kill();
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
});
|
|
1100
|
-
return procs;
|
|
1101
|
-
}
|
|
1102
|
-
const colors = [
|
|
1103
|
-
"blue",
|
|
1104
|
-
"green",
|
|
1105
|
-
"yellow",
|
|
1106
|
-
"red",
|
|
1107
|
-
"magenta",
|
|
1108
|
-
"redBright",
|
|
1109
|
-
"greenBright",
|
|
1110
|
-
"yellowBright",
|
|
1111
|
-
"blueBright",
|
|
1112
|
-
"magentaBright"
|
|
1113
|
-
];
|
|
1114
|
-
async function runAppDev(app) {
|
|
1115
|
-
if (isDeployed$1) throw new Error("cannot run apps in deployed mode");
|
|
1116
|
-
const key = app.name;
|
|
1117
|
-
if (devProcesses.has(key)) {
|
|
1118
|
-
return { status: "process-running", running: true };
|
|
1119
|
-
}
|
|
1120
|
-
if (app.dev.type !== "script") {
|
|
1121
|
-
return { status: "error", error: "no-server" };
|
|
1122
|
-
}
|
|
1123
|
-
const { portNumber } = app.dev;
|
|
1124
|
-
if (!await isPortAvailable(portNumber)) {
|
|
1125
|
-
return { status: "port-unavailable", running: false, portNumber };
|
|
1126
|
-
}
|
|
1127
|
-
const availableColors = colors.filter(
|
|
1128
|
-
(color2) => Array.from(devProcesses.values()).every((p) => p.color !== color2)
|
|
1129
|
-
);
|
|
1130
|
-
const color = availableColors[devProcesses.size % availableColors.length] ?? "blue";
|
|
1131
|
-
const appProcess = spawn("npm", ["run", "dev", "--silent"], {
|
|
1132
|
-
cwd: app.fullPath,
|
|
1133
|
-
shell: true,
|
|
1134
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
1135
|
-
env: {
|
|
1136
|
-
...process.env,
|
|
1137
|
-
// TODO: support specifying the env
|
|
1138
|
-
NODE_ENV: "development",
|
|
1139
|
-
// TODO: support specifying the port
|
|
1140
|
-
PORT: String(portNumber),
|
|
1141
|
-
APP_SERVER_PORT: String(portNumber),
|
|
1142
|
-
// let it pick a random port...
|
|
1143
|
-
REMIX_DEV_SERVER_WS_PORT: ""
|
|
1144
|
-
}
|
|
1145
|
-
});
|
|
1146
|
-
const prefix = chalk[color](
|
|
1147
|
-
`[${app.name.replace(/^exercises\./, "")}:${portNumber}]`
|
|
1148
|
-
);
|
|
1149
|
-
function handleStdOutData(data) {
|
|
1150
|
-
console.log(
|
|
1151
|
-
data.toString("utf-8").split("\n").map((line) => `${prefix} ${line}`).join("\n")
|
|
1152
|
-
);
|
|
1153
|
-
}
|
|
1154
|
-
appProcess.stdout.on("data", handleStdOutData);
|
|
1155
|
-
function handleStdErrData(data) {
|
|
1156
|
-
console.error(
|
|
1157
|
-
data.toString("utf-8").split("\n").map((line) => `${prefix} ${line}`).join("\n")
|
|
1158
|
-
);
|
|
1159
|
-
}
|
|
1160
|
-
appProcess.stderr.on("data", handleStdErrData);
|
|
1161
|
-
devProcesses.set(key, { color, process: appProcess, port: portNumber });
|
|
1162
|
-
appProcess.on("exit", (code) => {
|
|
1163
|
-
appProcess.stdout.off("data", handleStdOutData);
|
|
1164
|
-
appProcess.stderr.off("data", handleStdErrData);
|
|
1165
|
-
console.log(`${prefix} exited (${code})`);
|
|
1166
|
-
devProcesses.delete(key);
|
|
1167
|
-
});
|
|
1168
|
-
return { status: "process-started", running: true };
|
|
1169
|
-
}
|
|
1170
|
-
async function runAppTests(app) {
|
|
1171
|
-
if (isDeployed$1) throw new Error("cannot run tests in deployed mode");
|
|
1172
|
-
const key = app.name;
|
|
1173
|
-
if (app.test.type !== "script") {
|
|
1174
|
-
return { status: "error", error: "no-test" };
|
|
1175
|
-
}
|
|
1176
|
-
const testProcess = spawn("npm", ["run", "test", "--silent"], {
|
|
1177
|
-
cwd: app.fullPath,
|
|
1178
|
-
shell: true,
|
|
1179
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
1180
|
-
env: {
|
|
1181
|
-
...process.env,
|
|
1182
|
-
// TODO: support specifying the env
|
|
1183
|
-
NODE_ENV: "development",
|
|
1184
|
-
// TODO: support specifying the port
|
|
1185
|
-
PORT: app.dev.type === "script" ? String(app.dev.portNumber) : void 0,
|
|
1186
|
-
APP_SERVER_PORT: app.dev.type === "script" ? String(app.dev.portNumber) : void 0,
|
|
1187
|
-
// let it pick a random port...
|
|
1188
|
-
REMIX_DEV_SERVER_WS_PORT: ""
|
|
1189
|
-
}
|
|
1190
|
-
});
|
|
1191
|
-
const output = [];
|
|
1192
|
-
const entry2 = { process: testProcess, output };
|
|
1193
|
-
function handleStdOutData(data) {
|
|
1194
|
-
output.push({
|
|
1195
|
-
type: "stdout",
|
|
1196
|
-
content: data.toString("utf-8"),
|
|
1197
|
-
timestamp: Date.now()
|
|
1198
|
-
});
|
|
1199
|
-
}
|
|
1200
|
-
testProcess.stdout.on("data", handleStdOutData);
|
|
1201
|
-
function handleStdErrData(data) {
|
|
1202
|
-
output.push({
|
|
1203
|
-
type: "stderr",
|
|
1204
|
-
content: data.toString("utf-8"),
|
|
1205
|
-
timestamp: Date.now()
|
|
1206
|
-
});
|
|
1207
|
-
}
|
|
1208
|
-
testProcess.stderr.on("data", handleStdErrData);
|
|
1209
|
-
testProcess.on("exit", (code) => {
|
|
1210
|
-
testProcess.stdout.off("data", handleStdOutData);
|
|
1211
|
-
testProcess.stderr.off("data", handleStdErrData);
|
|
1212
|
-
entry2.process = null;
|
|
1213
|
-
entry2.exitCode = code;
|
|
1214
|
-
});
|
|
1215
|
-
testProcesses.set(key, entry2);
|
|
1216
|
-
return testProcess;
|
|
1217
|
-
}
|
|
1218
|
-
async function waitOnApp(app) {
|
|
1219
|
-
if (app.dev.type === "script") {
|
|
1220
|
-
const startTime = Date.now();
|
|
1221
|
-
const retryInterval = 100;
|
|
1222
|
-
const timeout = 2e4;
|
|
1223
|
-
let lastError;
|
|
1224
|
-
while (Date.now() - startTime < timeout) {
|
|
1225
|
-
try {
|
|
1226
|
-
await fetch(`http://localhost:${app.dev.portNumber}`, {
|
|
1227
|
-
method: "HEAD",
|
|
1228
|
-
headers: { Accept: "*/*" }
|
|
1229
|
-
});
|
|
1230
|
-
return { status: "success" };
|
|
1231
|
-
} catch (error) {
|
|
1232
|
-
lastError = error;
|
|
1233
|
-
await new Promise((resolve) => setTimeout(resolve, retryInterval));
|
|
1234
|
-
}
|
|
1235
|
-
}
|
|
1236
|
-
return { status: "error", error: getErrorMessage$1(lastError) };
|
|
1237
|
-
}
|
|
1238
|
-
return null;
|
|
1239
|
-
}
|
|
1240
|
-
function isPortAvailable(port2) {
|
|
1241
|
-
return new Promise((resolve) => {
|
|
1242
|
-
const server = net.createServer();
|
|
1243
|
-
server.unref();
|
|
1244
|
-
server.on("error", () => resolve(false));
|
|
1245
|
-
server.listen(Number(port2), () => {
|
|
1246
|
-
server.close(() => {
|
|
1247
|
-
resolve(true);
|
|
1248
|
-
});
|
|
1249
|
-
});
|
|
1250
|
-
});
|
|
1251
|
-
}
|
|
1252
|
-
function isAppRunning(app) {
|
|
1253
|
-
try {
|
|
1254
|
-
const devProcess = devProcesses.get(app.name);
|
|
1255
|
-
if (!devProcess) return false;
|
|
1256
|
-
devProcess.process.kill(0);
|
|
1257
|
-
return true;
|
|
1258
|
-
} catch {
|
|
1259
|
-
return false;
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
function isTestRunning(app) {
|
|
1263
|
-
try {
|
|
1264
|
-
const testProcess = testProcesses.get(app.name);
|
|
1265
|
-
if (!testProcess) return false;
|
|
1266
|
-
if (testProcess.process === null) return false;
|
|
1267
|
-
testProcess.process.kill(0);
|
|
1268
|
-
return true;
|
|
1269
|
-
} catch {
|
|
1270
|
-
return false;
|
|
1271
|
-
}
|
|
1272
|
-
}
|
|
1273
|
-
function getTestProcessEntry(app) {
|
|
1274
|
-
return testProcesses.get(app.name);
|
|
1275
|
-
}
|
|
1276
|
-
function clearTestProcessEntry(app) {
|
|
1277
|
-
return testProcesses.delete(app.name);
|
|
1278
|
-
}
|
|
1279
|
-
function getProcesses() {
|
|
1280
|
-
return { devProcesses, testProcesses };
|
|
1281
|
-
}
|
|
1282
|
-
async function closeProcess(key) {
|
|
1283
|
-
if (isDeployed$1) throw new Error("cannot close processes in deployed mode");
|
|
1284
|
-
const proc = devProcesses.get(key);
|
|
1285
|
-
if (proc) {
|
|
1286
|
-
const exitedPromise = new Promise(
|
|
1287
|
-
(resolve) => proc.process.on("exit", resolve)
|
|
1288
|
-
);
|
|
1289
|
-
if (process.platform === "win32") {
|
|
1290
|
-
const { execa: execa2 } = await import("execa");
|
|
1291
|
-
await execa2("taskkill", ["/pid", String(proc.process.pid), "/f", "/t"]);
|
|
1292
|
-
} else {
|
|
1293
|
-
proc.process.kill();
|
|
1294
|
-
}
|
|
1295
|
-
await Promise.race([
|
|
1296
|
-
new Promise((resolve) => setTimeout(resolve, 500)),
|
|
1297
|
-
exitedPromise
|
|
1298
|
-
]);
|
|
1299
|
-
await stopPort(proc.port);
|
|
1300
|
-
devProcesses.delete(key);
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
const sleep = (t) => new Promise((resolve) => setTimeout(resolve, t));
|
|
1304
|
-
async function stopPort(port2) {
|
|
1305
|
-
if (isDeployed$1) throw new Error("cannot stop ports in deployed mode");
|
|
1306
|
-
await fkill(`:${port2}`, { force: true, silent: true });
|
|
1307
|
-
await waitForPortToBeAvailable(port2);
|
|
1308
|
-
}
|
|
1309
|
-
async function waitForPortToBeAvailable(port2) {
|
|
1310
|
-
const timeout = Date.now() + 1e4;
|
|
1311
|
-
let portAvailable = false;
|
|
1312
|
-
do {
|
|
1313
|
-
portAvailable = await isPortAvailable(port2);
|
|
1314
|
-
await sleep(100);
|
|
1315
|
-
} while (!portAvailable && Date.now() < timeout);
|
|
1316
|
-
if (!portAvailable) {
|
|
1317
|
-
console.error("Timed out waiting for the port to become available");
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
|
-
global.__epicshop_apps_initialized__ ?? (global.__epicshop_apps_initialized__ = false);
|
|
1321
|
-
const workshopRoot = process.env.EPICSHOP_CONTEXT_CWD = process.env.EPICSHOP_CONTEXT_CWD ?? process.cwd();
|
|
1322
|
-
const playgroundAppNameInfoPath = path$1.join(
|
|
1323
|
-
workshopRoot,
|
|
1324
|
-
"node_modules",
|
|
1325
|
-
".cache",
|
|
1326
|
-
"epicshop",
|
|
1327
|
-
"playground.json"
|
|
1328
|
-
);
|
|
1329
|
-
const BaseAppSchema = z.object({
|
|
1330
|
-
/** a unique identifier for the app */
|
|
1331
|
-
name: z.string(),
|
|
1332
|
-
/** the title of the app used for display (comes from the package.json title prop) */
|
|
1333
|
-
title: z.string(),
|
|
1334
|
-
/** used when displaying the list of files to match the list of apps in the file system (comes the name of the directory of the app) */
|
|
1335
|
-
dirName: z.string(),
|
|
1336
|
-
fullPath: z.string(),
|
|
1337
|
-
relativePath: z.string(),
|
|
1338
|
-
instructionsCode: z.string().optional(),
|
|
1339
|
-
epicVideoEmbeds: z.array(z.string()).optional(),
|
|
1340
|
-
test: z.union([
|
|
1341
|
-
z.object({
|
|
1342
|
-
type: z.literal("browser"),
|
|
1343
|
-
pathname: z.string(),
|
|
1344
|
-
testFiles: z.array(z.string())
|
|
1345
|
-
}),
|
|
1346
|
-
z.object({ type: z.literal("script"), script: z.string() }),
|
|
1347
|
-
z.object({ type: z.literal("none") })
|
|
1348
|
-
]),
|
|
1349
|
-
dev: z.union([
|
|
1350
|
-
z.object({ type: z.literal("browser"), pathname: z.string() }),
|
|
1351
|
-
z.object({
|
|
1352
|
-
type: z.literal("script"),
|
|
1353
|
-
portNumber: z.number(),
|
|
1354
|
-
initialRoute: z.string()
|
|
1355
|
-
}),
|
|
1356
|
-
z.object({ type: z.literal("none") })
|
|
1357
|
-
]),
|
|
1358
|
-
stackBlitzUrl: z.string().nullable()
|
|
1359
|
-
});
|
|
1360
|
-
const BaseExerciseStepAppSchema = BaseAppSchema.extend({
|
|
1361
|
-
exerciseNumber: z.number(),
|
|
1362
|
-
stepNumber: z.number()
|
|
1363
|
-
});
|
|
1364
|
-
const ProblemAppSchema = BaseExerciseStepAppSchema.extend({
|
|
1365
|
-
type: z.literal("problem"),
|
|
1366
|
-
solutionName: z.string().nullable()
|
|
1367
|
-
});
|
|
1368
|
-
const SolutionAppSchema = BaseExerciseStepAppSchema.extend({
|
|
1369
|
-
type: z.literal("solution"),
|
|
1370
|
-
problemName: z.string().nullable()
|
|
1371
|
-
});
|
|
1372
|
-
const ExampleAppSchema = BaseAppSchema.extend({
|
|
1373
|
-
type: z.literal("example")
|
|
1374
|
-
});
|
|
1375
|
-
const PlaygroundAppSchema = BaseAppSchema.extend({
|
|
1376
|
-
type: z.literal("playground"),
|
|
1377
|
-
appName: z.string(),
|
|
1378
|
-
isUpToDate: z.boolean()
|
|
1379
|
-
});
|
|
1380
|
-
z.object({
|
|
1381
|
-
/** a unique identifier for the exercise */
|
|
1382
|
-
exerciseNumber: z.number(),
|
|
1383
|
-
/** used when displaying the list of files to match the list of apps in the file system (comes the name of the directory of the app) */
|
|
1384
|
-
dirName: z.string(),
|
|
1385
|
-
/** the title of the app used for display (comes from the first h1 in the README) */
|
|
1386
|
-
title: z.string(),
|
|
1387
|
-
instructionsCode: z.string().optional(),
|
|
1388
|
-
finishedCode: z.string().optional(),
|
|
1389
|
-
instructionsEpicVideoEmbeds: z.array(z.string()).optional(),
|
|
1390
|
-
finishedEpicVideoEmbeds: z.array(z.string()).optional(),
|
|
1391
|
-
steps: z.array(
|
|
1392
|
-
z.union([
|
|
1393
|
-
z.object({
|
|
1394
|
-
stepNumber: z.number(),
|
|
1395
|
-
problem: ProblemAppSchema,
|
|
1396
|
-
solution: SolutionAppSchema
|
|
1397
|
-
}),
|
|
1398
|
-
z.object({
|
|
1399
|
-
stepNumber: z.number(),
|
|
1400
|
-
problem: ProblemAppSchema,
|
|
1401
|
-
solution: z.never().optional()
|
|
1402
|
-
}),
|
|
1403
|
-
z.object({
|
|
1404
|
-
stepNumber: z.number(),
|
|
1405
|
-
problem: z.never().optional(),
|
|
1406
|
-
solution: SolutionAppSchema
|
|
1407
|
-
})
|
|
1408
|
-
])
|
|
1409
|
-
),
|
|
1410
|
-
problems: z.array(ProblemAppSchema),
|
|
1411
|
-
solutions: z.array(SolutionAppSchema)
|
|
1412
|
-
});
|
|
1413
|
-
const ExerciseStepAppSchema = z.union([ProblemAppSchema, SolutionAppSchema]);
|
|
1414
|
-
const AppSchema = z.union([
|
|
1415
|
-
ExerciseStepAppSchema,
|
|
1416
|
-
PlaygroundAppSchema,
|
|
1417
|
-
ExampleAppSchema
|
|
1418
|
-
]);
|
|
1419
|
-
function isApp(app) {
|
|
1420
|
-
return AppSchema.safeParse(app).success;
|
|
1421
|
-
}
|
|
1422
|
-
function isProblemApp(app) {
|
|
1423
|
-
return ProblemAppSchema.safeParse(app).success;
|
|
1424
|
-
}
|
|
1425
|
-
function isSolutionApp(app) {
|
|
1426
|
-
return SolutionAppSchema.safeParse(app).success;
|
|
1427
|
-
}
|
|
1428
|
-
function isPlaygroundApp(app) {
|
|
1429
|
-
return isApp(app) && app.type === "playground";
|
|
1430
|
-
}
|
|
1431
|
-
function isExampleApp(app) {
|
|
1432
|
-
return isApp(app) && app.type === "example";
|
|
1433
|
-
}
|
|
1434
|
-
function isExerciseStepApp(app) {
|
|
1435
|
-
return isProblemApp(app) || isSolutionApp(app);
|
|
1436
|
-
}
|
|
1437
|
-
function exists(file) {
|
|
1438
|
-
return fs$1.promises.access(file, fs$1.constants.F_OK).then(
|
|
1439
|
-
() => true,
|
|
1440
|
-
() => false
|
|
1441
|
-
);
|
|
1442
|
-
}
|
|
1443
|
-
async function firstToExist(...files) {
|
|
1444
|
-
const results = await Promise.all(files.map(exists));
|
|
1445
|
-
const index = results.findIndex(Boolean);
|
|
1446
|
-
return index === -1 ? null : files[index];
|
|
1447
|
-
}
|
|
1448
|
-
const modifiedTimes = remember(
|
|
1449
|
-
"modified_times",
|
|
1450
|
-
() => /* @__PURE__ */ new Map()
|
|
1451
|
-
);
|
|
1452
|
-
async function init() {
|
|
1453
|
-
if (global.__epicshop_apps_initialized__) return;
|
|
1454
|
-
global.__epicshop_apps_initialized__ = true;
|
|
1455
|
-
const config = getWorkshopConfig();
|
|
1456
|
-
process.env.EPICSHOP_GITHUB_REPO = config.githubRepo;
|
|
1457
|
-
process.env.EPICSHOP_GITHUB_ROOT = config.githubRoot;
|
|
1458
|
-
init$1();
|
|
1459
|
-
global.ENV = getEnv();
|
|
1460
|
-
if (!ENV.EPICSHOP_DEPLOYED && process.env.EPICSHOP_ENABLE_WATCHER === "true") {
|
|
1461
|
-
const isIgnored = await isGitIgnored({ cwd: workshopRoot });
|
|
1462
|
-
const filesToWatch = ["README.mdx", "FINISHED.mdx", "package.json"];
|
|
1463
|
-
const chok = chokidar.watch(["examples", "playground", "exercises"], {
|
|
1464
|
-
cwd: workshopRoot,
|
|
1465
|
-
ignoreInitial: true,
|
|
1466
|
-
ignored(filePath, stats) {
|
|
1467
|
-
if (isIgnored(filePath)) return true;
|
|
1468
|
-
if (filePath.includes(".git")) return true;
|
|
1469
|
-
if (stats == null ? void 0 : stats.isDirectory()) {
|
|
1470
|
-
if (filePath.endsWith("playground")) return false;
|
|
1471
|
-
const pathParts = filePath.split(path$1.sep);
|
|
1472
|
-
if (pathParts.at(-2) === "examples") return false;
|
|
1473
|
-
if (pathParts.at(-3) === "exercises") return false;
|
|
1474
|
-
if (pathParts.at(-2) === "exercises") return false;
|
|
1475
|
-
if (pathParts.at(-1) === "exercises") return false;
|
|
1476
|
-
return true;
|
|
1477
|
-
}
|
|
1478
|
-
return (stats == null ? void 0 : stats.isFile()) ? !filesToWatch.some((file) => filePath.endsWith(file)) : false;
|
|
1479
|
-
}
|
|
1480
|
-
});
|
|
1481
|
-
chok.on("all", (_event, filePath) => {
|
|
1482
|
-
setModifiedTimesForAppDirs(path$1.join(workshopRoot, filePath));
|
|
1483
|
-
});
|
|
1484
|
-
closeWithGrace(() => chok.close());
|
|
1485
|
-
}
|
|
1486
|
-
}
|
|
1487
|
-
function getForceFresh$1(cacheEntry) {
|
|
1488
|
-
if (!cacheEntry) return true;
|
|
1489
|
-
const latestModifiedTime = Math.max(...Array.from(modifiedTimes.values()));
|
|
1490
|
-
if (!latestModifiedTime) return void 0;
|
|
1491
|
-
return latestModifiedTime > cacheEntry.metadata.createdTime ? true : void 0;
|
|
1492
|
-
}
|
|
1493
|
-
function setModifiedTimesForAppDirs(...filePaths) {
|
|
1494
|
-
const now = Date.now();
|
|
1495
|
-
for (const filePath of filePaths) {
|
|
1496
|
-
const appDir2 = getAppPathFromFilePath(filePath);
|
|
1497
|
-
if (appDir2) {
|
|
1498
|
-
modifiedTimes.set(appDir2, now);
|
|
1499
|
-
} else {
|
|
1500
|
-
console.warn(`filePath ${filePath} does not match any app dir`);
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
}
|
|
1504
|
-
function getForceFreshForDir(cacheEntry, ...dirs) {
|
|
1505
|
-
const truthyDirs = dirs.filter(Boolean);
|
|
1506
|
-
for (const d of truthyDirs) {
|
|
1507
|
-
if (!path$1.isAbsolute(d)) {
|
|
1508
|
-
throw new Error(`Trying to get force fresh for non-absolute path: ${d}`);
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
|
-
if (!cacheEntry) return true;
|
|
1512
|
-
const latestModifiedTime = truthyDirs.reduce((latest, dir) => {
|
|
1513
|
-
const modifiedTime = modifiedTimes.get(dir);
|
|
1514
|
-
return modifiedTime && modifiedTime > latest ? modifiedTime : latest;
|
|
1515
|
-
}, 0);
|
|
1516
|
-
if (!latestModifiedTime) return void 0;
|
|
1517
|
-
return latestModifiedTime > cacheEntry.metadata.createdTime ? true : void 0;
|
|
1518
|
-
}
|
|
1519
|
-
async function readDir(dir) {
|
|
1520
|
-
if (await exists(dir)) {
|
|
1521
|
-
return fs$1.promises.readdir(dir);
|
|
1522
|
-
}
|
|
1523
|
-
return [];
|
|
1524
|
-
}
|
|
1525
|
-
async function compileMdxIfExists(filepath, { request } = {}) {
|
|
1526
|
-
filepath = filepath.replace(/\\/g, "/");
|
|
1527
|
-
if (await exists(filepath)) {
|
|
1528
|
-
const compiled = await compileMdx(filepath, { request }).catch((error) => {
|
|
1529
|
-
console.error(`Error compiling ${filepath}:`, error);
|
|
1530
|
-
return null;
|
|
1531
|
-
});
|
|
1532
|
-
return compiled;
|
|
1533
|
-
}
|
|
1534
|
-
return null;
|
|
1535
|
-
}
|
|
1536
|
-
function getAppDirInfo(appDir2) {
|
|
1537
|
-
const regex = /^(?<stepNumber>\d+)\.(problem|solution)(\.(?<subtitle>.*))?$/;
|
|
1538
|
-
const match = regex.exec(appDir2);
|
|
1539
|
-
if (!(match == null ? void 0 : match.groups)) {
|
|
1540
|
-
console.info(
|
|
1541
|
-
`Ignoring directory "${appDir2}" which does not match regex "${regex}"`,
|
|
1542
|
-
new Error().stack
|
|
1543
|
-
);
|
|
1544
|
-
return null;
|
|
1545
|
-
}
|
|
1546
|
-
const { stepNumber: stepNumberString, subtitle } = match.groups;
|
|
1547
|
-
const stepNumber = Number(stepNumberString);
|
|
1548
|
-
if (!stepNumber || !Number.isFinite(stepNumber)) {
|
|
1549
|
-
throw new Error(
|
|
1550
|
-
`Cannot identify the stepNumber for app directory "${appDir2}" with regex "${regex}"`
|
|
1551
|
-
);
|
|
1552
|
-
}
|
|
1553
|
-
const type = match[2];
|
|
1554
|
-
return { stepNumber, type, subtitle };
|
|
1555
|
-
}
|
|
1556
|
-
function extractExerciseNumber(dir) {
|
|
1557
|
-
var _a, _b;
|
|
1558
|
-
const regex = /^(?<number>\d+)\./;
|
|
1559
|
-
const number = (_b = (_a = regex.exec(dir)) == null ? void 0 : _a.groups) == null ? void 0 : _b.number;
|
|
1560
|
-
if (!number) {
|
|
1561
|
-
return null;
|
|
1562
|
-
}
|
|
1563
|
-
return Number(number);
|
|
1564
|
-
}
|
|
1565
|
-
async function getExercises({
|
|
1566
|
-
timings,
|
|
1567
|
-
request
|
|
1568
|
-
} = {}) {
|
|
1569
|
-
const apps = await getApps({ request, timings });
|
|
1570
|
-
const exerciseDirs = await readDir(path$1.join(workshopRoot, "exercises"));
|
|
1571
|
-
const exercises = [];
|
|
1572
|
-
for (const dirName of exerciseDirs) {
|
|
1573
|
-
const exerciseNumber = extractExerciseNumber(dirName);
|
|
1574
|
-
if (!exerciseNumber) continue;
|
|
1575
|
-
const compiledReadme = await compileMdxIfExists(
|
|
1576
|
-
path$1.join(workshopRoot, "exercises", dirName, "README.mdx"),
|
|
1577
|
-
{ request }
|
|
1578
|
-
);
|
|
1579
|
-
const compiledFinished = await compileMdxIfExists(
|
|
1580
|
-
path$1.join(workshopRoot, "exercises", dirName, "FINISHED.mdx"),
|
|
1581
|
-
{ request }
|
|
1582
|
-
);
|
|
1583
|
-
const steps = [];
|
|
1584
|
-
const exerciseApps = apps.filter(isExerciseStepApp).filter((app) => app.exerciseNumber === exerciseNumber);
|
|
1585
|
-
for (const app of exerciseApps) {
|
|
1586
|
-
steps[app.stepNumber - 1] = {
|
|
1587
|
-
...steps[app.stepNumber - 1],
|
|
1588
|
-
[app.type]: app,
|
|
1589
|
-
stepNumber: app.stepNumber
|
|
1590
|
-
};
|
|
1591
|
-
}
|
|
1592
|
-
exercises.push({
|
|
1593
|
-
exerciseNumber,
|
|
1594
|
-
dirName,
|
|
1595
|
-
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
1596
|
-
finishedCode: compiledFinished == null ? void 0 : compiledFinished.code,
|
|
1597
|
-
title: (compiledReadme == null ? void 0 : compiledReadme.title) ?? dirName,
|
|
1598
|
-
instructionsEpicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
1599
|
-
finishedEpicVideoEmbeds: compiledFinished == null ? void 0 : compiledFinished.epicVideoEmbeds,
|
|
1600
|
-
steps,
|
|
1601
|
-
problems: apps.filter(isProblemApp).filter((app) => app.exerciseNumber === exerciseNumber),
|
|
1602
|
-
solutions: apps.filter(isSolutionApp).filter((app) => app.exerciseNumber === exerciseNumber)
|
|
1603
|
-
});
|
|
1604
|
-
}
|
|
1605
|
-
return exercises;
|
|
1606
|
-
}
|
|
1607
|
-
let appCallCount = 0;
|
|
1608
|
-
async function getApps({
|
|
1609
|
-
timings,
|
|
1610
|
-
request,
|
|
1611
|
-
forceFresh
|
|
1612
|
-
} = {}) {
|
|
1613
|
-
await init();
|
|
1614
|
-
const key = "apps";
|
|
1615
|
-
const apps = await cachified({
|
|
1616
|
-
key,
|
|
1617
|
-
cache: appsCache,
|
|
1618
|
-
timings,
|
|
1619
|
-
timingKey: `apps_${appCallCount++}`,
|
|
1620
|
-
request,
|
|
1621
|
-
// This entire cache is to avoid a single request getting a fresh value
|
|
1622
|
-
// multiple times unnecessarily (because getApps is called many times)
|
|
1623
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
1624
|
-
forceFresh: forceFresh ?? getForceFresh$1(appsCache.get(key)),
|
|
1625
|
-
getFreshValue: async () => {
|
|
1626
|
-
const [playgroundApp, problemApps, solutionApps, exampleApps] = await Promise.all([
|
|
1627
|
-
time(() => getPlaygroundApp({ request, timings }), {
|
|
1628
|
-
type: "getPlaygroundApp",
|
|
1629
|
-
timings
|
|
1630
|
-
}),
|
|
1631
|
-
time(() => getProblemApps({ request, timings }), {
|
|
1632
|
-
type: "getProblemApps",
|
|
1633
|
-
timings
|
|
1634
|
-
}),
|
|
1635
|
-
time(() => getSolutionApps({ request, timings }), {
|
|
1636
|
-
type: "getSolutionApps",
|
|
1637
|
-
timings
|
|
1638
|
-
}),
|
|
1639
|
-
time(() => getExampleApps({ request, timings }), {
|
|
1640
|
-
type: "getExampleApps",
|
|
1641
|
-
timings
|
|
1642
|
-
})
|
|
1643
|
-
]);
|
|
1644
|
-
const sortedApps = [
|
|
1645
|
-
playgroundApp,
|
|
1646
|
-
...problemApps,
|
|
1647
|
-
...solutionApps,
|
|
1648
|
-
...exampleApps
|
|
1649
|
-
].filter(Boolean).sort((a, b) => {
|
|
1650
|
-
if (isPlaygroundApp(a)) {
|
|
1651
|
-
if (isPlaygroundApp(b)) return a.name.localeCompare(b.name);
|
|
1652
|
-
else return 1;
|
|
1653
|
-
}
|
|
1654
|
-
if (isPlaygroundApp(b)) return 1;
|
|
1655
|
-
if (isExampleApp(a)) {
|
|
1656
|
-
if (isExampleApp(b)) return a.name.localeCompare(b.name);
|
|
1657
|
-
else return 1;
|
|
1658
|
-
}
|
|
1659
|
-
if (isExampleApp(b)) return -1;
|
|
1660
|
-
if (a.type === b.type) {
|
|
1661
|
-
if (a.exerciseNumber === b.exerciseNumber) {
|
|
1662
|
-
return a.stepNumber - b.stepNumber;
|
|
1663
|
-
} else {
|
|
1664
|
-
return a.exerciseNumber - b.exerciseNumber;
|
|
1665
|
-
}
|
|
1666
|
-
}
|
|
1667
|
-
if (isProblemApp(a)) {
|
|
1668
|
-
if (a.exerciseNumber === b.exerciseNumber) {
|
|
1669
|
-
return a.stepNumber <= b.stepNumber ? 1 : -1;
|
|
1670
|
-
} else {
|
|
1671
|
-
return a.exerciseNumber <= b.exerciseNumber ? 1 : -1;
|
|
1672
|
-
}
|
|
1673
|
-
}
|
|
1674
|
-
if (isSolutionApp(a)) {
|
|
1675
|
-
if (a.exerciseNumber === b.exerciseNumber) {
|
|
1676
|
-
return a.stepNumber < b.stepNumber ? -1 : 1;
|
|
1677
|
-
} else {
|
|
1678
|
-
return a.exerciseNumber < b.exerciseNumber ? -1 : 1;
|
|
1679
|
-
}
|
|
1680
|
-
}
|
|
1681
|
-
console.error("unhandled sorting case", a, b);
|
|
1682
|
-
return 0;
|
|
1683
|
-
});
|
|
1684
|
-
return sortedApps;
|
|
1685
|
-
}
|
|
1686
|
-
});
|
|
1687
|
-
return apps;
|
|
1688
|
-
}
|
|
1689
|
-
const AppIdInfoSchema = z.object({
|
|
1690
|
-
exerciseNumber: z.string(),
|
|
1691
|
-
stepNumber: z.string(),
|
|
1692
|
-
type: z.union([z.literal("problem"), z.literal("solution")])
|
|
1693
|
-
});
|
|
1694
|
-
function extractNumbersAndTypeFromAppNameOrPath(fullPathOrAppName) {
|
|
1695
|
-
var _a;
|
|
1696
|
-
const info = {};
|
|
1697
|
-
if (fullPathOrAppName.includes(path$1.sep)) {
|
|
1698
|
-
const relativePath = fullPathOrAppName.replace(
|
|
1699
|
-
path$1.join(workshopRoot, "exercises", path$1.sep),
|
|
1700
|
-
""
|
|
1701
|
-
);
|
|
1702
|
-
const [exerciseNumberPart, stepNumberPart] = relativePath.split(path$1.sep);
|
|
1703
|
-
if (!exerciseNumberPart || !stepNumberPart) return null;
|
|
1704
|
-
const exerciseNumber = exerciseNumberPart.split(".")[0];
|
|
1705
|
-
const stepNumber = stepNumberPart.split(".")[0];
|
|
1706
|
-
const type = (_a = stepNumberPart.split(".")[1]) == null ? void 0 : _a.split(".")[0];
|
|
1707
|
-
info.exerciseNumber = exerciseNumber;
|
|
1708
|
-
info.stepNumber = stepNumber;
|
|
1709
|
-
info.type = type;
|
|
1710
|
-
} else {
|
|
1711
|
-
const [exerciseNumber, stepNumber, type] = fullPathOrAppName.split(".");
|
|
1712
|
-
info.exerciseNumber = exerciseNumber;
|
|
1713
|
-
info.stepNumber = stepNumber;
|
|
1714
|
-
info.type = type;
|
|
1715
|
-
}
|
|
1716
|
-
const result = AppIdInfoSchema.safeParse(info);
|
|
1717
|
-
if (result.success) return result.data;
|
|
1718
|
-
return null;
|
|
1719
|
-
}
|
|
1720
|
-
async function getProblemDirs() {
|
|
1721
|
-
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1722
|
-
const problemDirs = [];
|
|
1723
|
-
const exerciseSubDirs = await readDir(exercisesDir);
|
|
1724
|
-
for (const subDir of exerciseSubDirs) {
|
|
1725
|
-
const fullSubDir = path$1.join(exercisesDir, subDir);
|
|
1726
|
-
const subDirContents = await readDir(fullSubDir).catch(() => null);
|
|
1727
|
-
if (!subDirContents) continue;
|
|
1728
|
-
const problemSubDirs = subDirContents.filter((dir) => dir.includes(".problem")).map((dir) => path$1.join(fullSubDir, dir));
|
|
1729
|
-
problemDirs.push(...problemSubDirs);
|
|
1730
|
-
}
|
|
1731
|
-
return problemDirs;
|
|
1732
|
-
}
|
|
1733
|
-
async function getSolutionDirs() {
|
|
1734
|
-
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
1735
|
-
const solutionDirs = [];
|
|
1736
|
-
const exerciseSubDirs = await readDir(exercisesDir);
|
|
1737
|
-
for (const subDir of exerciseSubDirs) {
|
|
1738
|
-
const fullSubDir = path$1.join(exercisesDir, subDir);
|
|
1739
|
-
const subDirContents = await readDir(fullSubDir).catch(() => null);
|
|
1740
|
-
if (!subDirContents) continue;
|
|
1741
|
-
const solutionSubDirs = subDirContents.filter((dir) => dir.includes(".solution")).map((dir) => path$1.join(fullSubDir, dir));
|
|
1742
|
-
solutionDirs.push(...solutionSubDirs);
|
|
1743
|
-
}
|
|
1744
|
-
return solutionDirs;
|
|
1745
|
-
}
|
|
1746
|
-
function getPathname(fullPath) {
|
|
1747
|
-
const appName = getAppName(fullPath);
|
|
1748
|
-
return `/app/${appName}/`;
|
|
1749
|
-
}
|
|
1750
|
-
function getAppName(fullPath) {
|
|
1751
|
-
if (/playground\/?$/.test(fullPath)) return "playground";
|
|
1752
|
-
if (/examples\/.+\/?$/.test(fullPath)) {
|
|
1753
|
-
const restOfPath = fullPath.replace(
|
|
1754
|
-
`${workshopRoot}${path$1.sep}examples${path$1.sep}`,
|
|
1755
|
-
""
|
|
1756
|
-
);
|
|
1757
|
-
return `example.${restOfPath.split(path$1.sep).join("__sep__")}`;
|
|
1758
|
-
}
|
|
1759
|
-
const appIdInfo = extractNumbersAndTypeFromAppNameOrPath(fullPath);
|
|
1760
|
-
if (appIdInfo) {
|
|
1761
|
-
const { exerciseNumber, stepNumber, type } = appIdInfo;
|
|
1762
|
-
return `${exerciseNumber}.${stepNumber}.${type}`;
|
|
1763
|
-
} else {
|
|
1764
|
-
const relativePath = fullPath.replace(`${workshopRoot}${path$1.sep}`, "");
|
|
1765
|
-
return relativePath.split(path$1.sep).join("__sep__");
|
|
1766
|
-
}
|
|
1767
|
-
}
|
|
1768
|
-
async function getFullPathFromAppName(appName) {
|
|
1769
|
-
if (appName === "playground") return path$1.join(workshopRoot, "playground");
|
|
1770
|
-
if (appName.startsWith(".example")) {
|
|
1771
|
-
const relativePath = appName.replace(".example", "").split("__sep__").join(path$1.sep);
|
|
1772
|
-
return path$1.join(workshopRoot, "examples", relativePath);
|
|
1773
|
-
}
|
|
1774
|
-
if (appName.includes("__sep__")) {
|
|
1775
|
-
const relativePath = appName.replaceAll("__sep__", path$1.sep);
|
|
1776
|
-
return path$1.join(workshopRoot, relativePath);
|
|
1777
|
-
}
|
|
1778
|
-
const [exerciseNumber, stepNumber, type] = appName.split(".");
|
|
1779
|
-
const appDirs = type === "problem" ? await getProblemDirs() : type === "solution" ? await getSolutionDirs() : [];
|
|
1780
|
-
const dir = appDirs.find((dir2) => {
|
|
1781
|
-
const info = extractNumbersAndTypeFromAppNameOrPath(dir2);
|
|
1782
|
-
if (!info) return false;
|
|
1783
|
-
return info.exerciseNumber === exerciseNumber && info.stepNumber === stepNumber;
|
|
1784
|
-
});
|
|
1785
|
-
return dir ?? appName;
|
|
1786
|
-
}
|
|
1787
|
-
async function findSolutionDir({
|
|
1788
|
-
fullPath
|
|
1789
|
-
}) {
|
|
1790
|
-
const dirName = path$1.basename(fullPath);
|
|
1791
|
-
if (dirName.includes(".problem")) {
|
|
1792
|
-
const info = getAppDirInfo(dirName);
|
|
1793
|
-
if (!info) return null;
|
|
1794
|
-
const { stepNumber } = info;
|
|
1795
|
-
const paddedStepNumber = stepNumber.toString().padStart(2, "0");
|
|
1796
|
-
const parentDir = path$1.dirname(fullPath);
|
|
1797
|
-
const siblingDirs = await fs$1.promises.readdir(parentDir);
|
|
1798
|
-
const solutionDir = siblingDirs.find(
|
|
1799
|
-
(dir) => dir.startsWith(`${paddedStepNumber}.solution`)
|
|
1800
|
-
);
|
|
1801
|
-
if (solutionDir) {
|
|
1802
|
-
return path$1.join(parentDir, solutionDir);
|
|
1803
|
-
}
|
|
1804
|
-
} else if (fullPath.endsWith("playground")) {
|
|
1805
|
-
const appName = await getPlaygroundAppName();
|
|
1806
|
-
if (appName) {
|
|
1807
|
-
return findSolutionDir({
|
|
1808
|
-
fullPath: await getFullPathFromAppName(appName)
|
|
1809
|
-
});
|
|
1810
|
-
}
|
|
1811
|
-
}
|
|
1812
|
-
return null;
|
|
1813
|
-
}
|
|
1814
|
-
async function findProblemDir({
|
|
1815
|
-
fullPath
|
|
1816
|
-
}) {
|
|
1817
|
-
const dirName = path$1.basename(fullPath);
|
|
1818
|
-
if (dirName.includes(".solution")) {
|
|
1819
|
-
const info = getAppDirInfo(dirName);
|
|
1820
|
-
if (!info) return null;
|
|
1821
|
-
const { stepNumber } = info;
|
|
1822
|
-
const paddedStepNumber = stepNumber.toString().padStart(2, "0");
|
|
1823
|
-
const parentDir = path$1.dirname(fullPath);
|
|
1824
|
-
const siblingDirs = await fs$1.promises.readdir(parentDir);
|
|
1825
|
-
const problemDir = siblingDirs.find(
|
|
1826
|
-
(dir) => dir.endsWith("problem") && dir.includes(paddedStepNumber)
|
|
1827
|
-
);
|
|
1828
|
-
if (problemDir) {
|
|
1829
|
-
return path$1.join(parentDir, problemDir);
|
|
1830
|
-
}
|
|
1831
|
-
} else if (fullPath.endsWith("playground")) {
|
|
1832
|
-
const appName = await getPlaygroundAppName();
|
|
1833
|
-
if (appName) {
|
|
1834
|
-
return findProblemDir({ fullPath: await getFullPathFromAppName(appName) });
|
|
1835
|
-
}
|
|
1836
|
-
}
|
|
1837
|
-
return null;
|
|
1838
|
-
}
|
|
1839
|
-
async function getTestInfo({
|
|
1840
|
-
fullPath
|
|
1841
|
-
}) {
|
|
1842
|
-
const {
|
|
1843
|
-
testTab: { enabled },
|
|
1844
|
-
scripts: { test: testScript }
|
|
1845
|
-
} = await getAppConfig(fullPath);
|
|
1846
|
-
if (enabled === false) return { type: "none" };
|
|
1847
|
-
if (testScript) {
|
|
1848
|
-
return { type: "script", script: testScript };
|
|
1849
|
-
}
|
|
1850
|
-
const testAppFullPath = await findSolutionDir({ fullPath }) ?? fullPath;
|
|
1851
|
-
const dirList = await fs$1.promises.readdir(testAppFullPath);
|
|
1852
|
-
const testFiles = dirList.filter((item) => item.includes(".test."));
|
|
1853
|
-
if (testFiles.length) {
|
|
1854
|
-
return {
|
|
1855
|
-
type: "browser",
|
|
1856
|
-
pathname: `${getPathname(fullPath)}test/`,
|
|
1857
|
-
testFiles
|
|
1858
|
-
};
|
|
1859
|
-
}
|
|
1860
|
-
return { type: "none" };
|
|
1861
|
-
}
|
|
1862
|
-
async function getDevInfo({
|
|
1863
|
-
fullPath,
|
|
1864
|
-
portNumber
|
|
1865
|
-
}) {
|
|
1866
|
-
const {
|
|
1867
|
-
scripts: { dev: devScript },
|
|
1868
|
-
initialRoute
|
|
1869
|
-
} = await getAppConfig(fullPath);
|
|
1870
|
-
const hasDevScript = Boolean(devScript);
|
|
1871
|
-
if (hasDevScript) {
|
|
1872
|
-
return { type: "script", portNumber, initialRoute };
|
|
1873
|
-
}
|
|
1874
|
-
const indexFiles = (await fsExtra.readdir(fullPath)).filter(
|
|
1875
|
-
(file) => file.startsWith("index.")
|
|
1876
|
-
);
|
|
1877
|
-
if (indexFiles.length) {
|
|
1878
|
-
return { type: "browser", pathname: getPathname(fullPath) };
|
|
1879
|
-
} else {
|
|
1880
|
-
return { type: "none" };
|
|
1881
|
-
}
|
|
1882
|
-
}
|
|
1883
|
-
async function getPlaygroundApp({
|
|
1884
|
-
timings,
|
|
1885
|
-
request
|
|
1886
|
-
} = {}) {
|
|
1887
|
-
const playgroundDir = path$1.join(workshopRoot, "playground");
|
|
1888
|
-
const baseAppName = await getPlaygroundAppName();
|
|
1889
|
-
const key = `playground-${baseAppName}`;
|
|
1890
|
-
const baseAppFullPath = baseAppName ? await getFullPathFromAppName(baseAppName) : null;
|
|
1891
|
-
const playgroundCacheEntry = playgroundAppCache.get(key);
|
|
1892
|
-
return cachified({
|
|
1893
|
-
key,
|
|
1894
|
-
cache: playgroundAppCache,
|
|
1895
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
1896
|
-
timings,
|
|
1897
|
-
timingKey: playgroundDir.replace(`${playgroundDir}${path$1.sep}`, ""),
|
|
1898
|
-
request,
|
|
1899
|
-
forceFresh: getForceFreshForDir(
|
|
1900
|
-
playgroundCacheEntry,
|
|
1901
|
-
playgroundDir,
|
|
1902
|
-
baseAppFullPath
|
|
1903
|
-
),
|
|
1904
|
-
getFreshValue: async () => {
|
|
1905
|
-
if (!await exists(playgroundDir)) return null;
|
|
1906
|
-
if (!baseAppName) return null;
|
|
1907
|
-
const dirName = path$1.basename(playgroundDir);
|
|
1908
|
-
const name = getAppName(playgroundDir);
|
|
1909
|
-
const portNumber = 4e3;
|
|
1910
|
-
const [compiledReadme, test, dev] = await Promise.all([
|
|
1911
|
-
compileMdxIfExists(path$1.join(playgroundDir, "README.mdx"), { request }),
|
|
1912
|
-
getTestInfo({ fullPath: playgroundDir }),
|
|
1913
|
-
getDevInfo({ fullPath: playgroundDir, portNumber })
|
|
1914
|
-
]);
|
|
1915
|
-
const appModifiedTime = await queuedGetDirModifiedTime(
|
|
1916
|
-
await getFullPathFromAppName(baseAppName)
|
|
1917
|
-
);
|
|
1918
|
-
const playgroundAppModifiedTime = await queuedGetDirModifiedTime(playgroundDir);
|
|
1919
|
-
const type = "playground";
|
|
1920
|
-
const title = (compiledReadme == null ? void 0 : compiledReadme.title) ?? name;
|
|
1921
|
-
return {
|
|
1922
|
-
name,
|
|
1923
|
-
appName: baseAppName,
|
|
1924
|
-
type,
|
|
1925
|
-
isUpToDate: appModifiedTime <= playgroundAppModifiedTime,
|
|
1926
|
-
fullPath: playgroundDir,
|
|
1927
|
-
relativePath: playgroundDir.replace(`${workshopRoot}${path$1.sep}`, ""),
|
|
1928
|
-
title,
|
|
1929
|
-
epicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
1930
|
-
dirName,
|
|
1931
|
-
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
1932
|
-
test,
|
|
1933
|
-
dev,
|
|
1934
|
-
stackBlitzUrl: await getStackBlitzUrl({
|
|
1935
|
-
fullPath: playgroundDir,
|
|
1936
|
-
title,
|
|
1937
|
-
type
|
|
1938
|
-
})
|
|
1939
|
-
};
|
|
1940
|
-
}
|
|
1941
|
-
}).catch((error) => {
|
|
1942
|
-
console.error(error);
|
|
1943
|
-
return null;
|
|
1944
|
-
});
|
|
1945
|
-
}
|
|
1946
|
-
async function getExampleAppFromPath(fullPath, index, request) {
|
|
1947
|
-
const dirName = path$1.basename(fullPath);
|
|
1948
|
-
const compiledReadme = await compileMdxIfExists(
|
|
1949
|
-
path$1.join(fullPath, "README.mdx"),
|
|
1950
|
-
{ request }
|
|
1951
|
-
);
|
|
1952
|
-
const name = getAppName(fullPath);
|
|
1953
|
-
const portNumber = 8e3 + index;
|
|
1954
|
-
const type = "example";
|
|
1955
|
-
const title = (compiledReadme == null ? void 0 : compiledReadme.title) ?? name;
|
|
1956
|
-
return {
|
|
1957
|
-
name,
|
|
1958
|
-
type,
|
|
1959
|
-
fullPath,
|
|
1960
|
-
relativePath: fullPath.replace(`${workshopRoot}${path$1.sep}`, ""),
|
|
1961
|
-
title,
|
|
1962
|
-
epicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
1963
|
-
dirName,
|
|
1964
|
-
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
1965
|
-
test: await getTestInfo({ fullPath }),
|
|
1966
|
-
dev: await getDevInfo({ fullPath, portNumber }),
|
|
1967
|
-
stackBlitzUrl: await getStackBlitzUrl({
|
|
1968
|
-
fullPath,
|
|
1969
|
-
title,
|
|
1970
|
-
type
|
|
1971
|
-
})
|
|
1972
|
-
};
|
|
1973
|
-
}
|
|
1974
|
-
async function getExampleApps({
|
|
1975
|
-
timings,
|
|
1976
|
-
request
|
|
1977
|
-
} = {}) {
|
|
1978
|
-
const examplesDir = path$1.join(workshopRoot, "examples");
|
|
1979
|
-
const exampleDirs = (await readDir(examplesDir)).map(
|
|
1980
|
-
(p) => path$1.join(examplesDir, p)
|
|
1981
|
-
);
|
|
1982
|
-
const exampleApps = [];
|
|
1983
|
-
for (const exampleDir of exampleDirs) {
|
|
1984
|
-
const index = exampleDirs.indexOf(exampleDir);
|
|
1985
|
-
const key = `${exampleDir}-${index}`;
|
|
1986
|
-
const exampleApp = await cachified({
|
|
1987
|
-
key,
|
|
1988
|
-
cache: exampleAppCache,
|
|
1989
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
1990
|
-
timings,
|
|
1991
|
-
timingKey: exampleDir.replace(`${examplesDir}${path$1.sep}`, ""),
|
|
1992
|
-
request,
|
|
1993
|
-
forceFresh: getForceFreshForDir(exampleAppCache.get(key), exampleDir),
|
|
1994
|
-
getFreshValue: async () => {
|
|
1995
|
-
return getExampleAppFromPath(exampleDir, index, request).catch(
|
|
1996
|
-
(error) => {
|
|
1997
|
-
console.error(error);
|
|
1998
|
-
return null;
|
|
1999
|
-
}
|
|
2000
|
-
);
|
|
2001
|
-
}
|
|
2002
|
-
});
|
|
2003
|
-
if (exampleApp) exampleApps.push(exampleApp);
|
|
2004
|
-
}
|
|
2005
|
-
return exampleApps;
|
|
2006
|
-
}
|
|
2007
|
-
async function getSolutionAppFromPath(fullPath, request) {
|
|
2008
|
-
const dirName = path$1.basename(fullPath);
|
|
2009
|
-
const parentDirName = path$1.basename(path$1.dirname(fullPath));
|
|
2010
|
-
const exerciseNumber = extractExerciseNumber(parentDirName);
|
|
2011
|
-
if (!exerciseNumber) return null;
|
|
2012
|
-
const name = getAppName(fullPath);
|
|
2013
|
-
const info = getAppDirInfo(dirName);
|
|
2014
|
-
if (!info) return null;
|
|
2015
|
-
const { stepNumber } = info;
|
|
2016
|
-
const portNumber = 7e3 + (exerciseNumber - 1) * 10 + stepNumber;
|
|
2017
|
-
const compiledReadme = await compileMdxIfExists(
|
|
2018
|
-
path$1.join(fullPath, "README.mdx"),
|
|
2019
|
-
{ request }
|
|
2020
|
-
);
|
|
2021
|
-
const problemDir = await findProblemDir({
|
|
2022
|
-
fullPath
|
|
2023
|
-
});
|
|
2024
|
-
const problemName = problemDir ? getAppName(problemDir) : null;
|
|
2025
|
-
const [test, dev] = await Promise.all([
|
|
2026
|
-
getTestInfo({ fullPath }),
|
|
2027
|
-
getDevInfo({ fullPath, portNumber })
|
|
2028
|
-
]);
|
|
2029
|
-
const title = (compiledReadme == null ? void 0 : compiledReadme.title) ?? name;
|
|
2030
|
-
return {
|
|
2031
|
-
name,
|
|
2032
|
-
title,
|
|
2033
|
-
epicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
2034
|
-
type: "solution",
|
|
2035
|
-
problemName,
|
|
2036
|
-
exerciseNumber,
|
|
2037
|
-
stepNumber,
|
|
2038
|
-
dirName,
|
|
2039
|
-
fullPath,
|
|
2040
|
-
relativePath: fullPath.replace(`${workshopRoot}${path$1.sep}`, ""),
|
|
2041
|
-
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
2042
|
-
test,
|
|
2043
|
-
dev,
|
|
2044
|
-
stackBlitzUrl: await getStackBlitzUrl({
|
|
2045
|
-
fullPath,
|
|
2046
|
-
title,
|
|
2047
|
-
type: "solution"
|
|
2048
|
-
})
|
|
2049
|
-
};
|
|
2050
|
-
}
|
|
2051
|
-
async function getSolutionApps({
|
|
2052
|
-
timings,
|
|
2053
|
-
request
|
|
2054
|
-
} = {}) {
|
|
2055
|
-
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
2056
|
-
const solutionDirs = await getSolutionDirs();
|
|
2057
|
-
const solutionApps = [];
|
|
2058
|
-
for (const solutionDir of solutionDirs) {
|
|
2059
|
-
const solutionApp = await cachified({
|
|
2060
|
-
key: solutionDir,
|
|
2061
|
-
cache: solutionAppCache,
|
|
2062
|
-
timings,
|
|
2063
|
-
timingKey: solutionDir.replace(`${exercisesDir}${path$1.sep}`, ""),
|
|
2064
|
-
request,
|
|
2065
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
2066
|
-
forceFresh: getForceFreshForDir(
|
|
2067
|
-
solutionAppCache.get(solutionDir),
|
|
2068
|
-
solutionDir
|
|
2069
|
-
),
|
|
2070
|
-
getFreshValue: async () => {
|
|
2071
|
-
return getSolutionAppFromPath(solutionDir, request).catch((error) => {
|
|
2072
|
-
console.error(error);
|
|
2073
|
-
return null;
|
|
2074
|
-
});
|
|
2075
|
-
}
|
|
2076
|
-
});
|
|
2077
|
-
if (solutionApp) solutionApps.push(solutionApp);
|
|
2078
|
-
}
|
|
2079
|
-
return solutionApps;
|
|
2080
|
-
}
|
|
2081
|
-
async function getProblemAppFromPath(fullPath, request) {
|
|
2082
|
-
const dirName = path$1.basename(fullPath);
|
|
2083
|
-
const parentDirName = path$1.basename(path$1.dirname(fullPath));
|
|
2084
|
-
const exerciseNumber = extractExerciseNumber(parentDirName);
|
|
2085
|
-
if (!exerciseNumber) return null;
|
|
2086
|
-
const name = getAppName(fullPath);
|
|
2087
|
-
const info = getAppDirInfo(dirName);
|
|
2088
|
-
if (!info) return null;
|
|
2089
|
-
const { stepNumber } = info;
|
|
2090
|
-
const portNumber = 6e3 + (exerciseNumber - 1) * 10 + stepNumber;
|
|
2091
|
-
const compiledReadme = await compileMdxIfExists(
|
|
2092
|
-
path$1.join(fullPath, "README.mdx"),
|
|
2093
|
-
{ request }
|
|
2094
|
-
);
|
|
2095
|
-
const solutionDir = await findSolutionDir({
|
|
2096
|
-
fullPath
|
|
2097
|
-
});
|
|
2098
|
-
const solutionName = solutionDir ? getAppName(solutionDir) : null;
|
|
2099
|
-
const [test, dev] = await Promise.all([
|
|
2100
|
-
getTestInfo({ fullPath }),
|
|
2101
|
-
getDevInfo({ fullPath, portNumber })
|
|
2102
|
-
]);
|
|
2103
|
-
const title = (compiledReadme == null ? void 0 : compiledReadme.title) ?? name;
|
|
2104
|
-
return {
|
|
2105
|
-
solutionName,
|
|
2106
|
-
name,
|
|
2107
|
-
title,
|
|
2108
|
-
epicVideoEmbeds: compiledReadme == null ? void 0 : compiledReadme.epicVideoEmbeds,
|
|
2109
|
-
type: "problem",
|
|
2110
|
-
exerciseNumber,
|
|
2111
|
-
stepNumber,
|
|
2112
|
-
dirName,
|
|
2113
|
-
fullPath,
|
|
2114
|
-
relativePath: fullPath.replace(`${workshopRoot}${path$1.sep}`, ""),
|
|
2115
|
-
instructionsCode: compiledReadme == null ? void 0 : compiledReadme.code,
|
|
2116
|
-
test,
|
|
2117
|
-
dev,
|
|
2118
|
-
stackBlitzUrl: await getStackBlitzUrl({
|
|
2119
|
-
fullPath,
|
|
2120
|
-
title,
|
|
2121
|
-
type: "problem"
|
|
2122
|
-
})
|
|
2123
|
-
};
|
|
2124
|
-
}
|
|
2125
|
-
async function getProblemApps({
|
|
2126
|
-
timings,
|
|
2127
|
-
request
|
|
2128
|
-
} = {}) {
|
|
2129
|
-
const exercisesDir = path$1.join(workshopRoot, "exercises");
|
|
2130
|
-
const problemDirs = await getProblemDirs();
|
|
2131
|
-
const problemApps = [];
|
|
2132
|
-
for (const problemDir of problemDirs) {
|
|
2133
|
-
const solutionDir = await findSolutionDir({ fullPath: problemDir });
|
|
2134
|
-
const problemApp = await cachified({
|
|
2135
|
-
key: problemDir,
|
|
2136
|
-
cache: problemAppCache,
|
|
2137
|
-
timings,
|
|
2138
|
-
timingKey: problemDir.replace(`${exercisesDir}${path$1.sep}`, ""),
|
|
2139
|
-
request,
|
|
2140
|
-
ttl: 1e3 * 60 * 60 * 24,
|
|
2141
|
-
forceFresh: getForceFreshForDir(
|
|
2142
|
-
problemAppCache.get(problemDir),
|
|
2143
|
-
problemDir,
|
|
2144
|
-
solutionDir
|
|
2145
|
-
),
|
|
2146
|
-
getFreshValue: async () => {
|
|
2147
|
-
return getProblemAppFromPath(problemDir).catch((error) => {
|
|
2148
|
-
console.error(error);
|
|
2149
|
-
return null;
|
|
2150
|
-
});
|
|
2151
|
-
}
|
|
2152
|
-
});
|
|
2153
|
-
if (problemApp) problemApps.push(problemApp);
|
|
2154
|
-
}
|
|
2155
|
-
return problemApps;
|
|
2156
|
-
}
|
|
2157
|
-
async function getExercise(exerciseNumber, { request, timings } = {}) {
|
|
2158
|
-
const exercises = await getExercises({ request, timings });
|
|
2159
|
-
return exercises.find((s) => s.exerciseNumber === Number(exerciseNumber));
|
|
2160
|
-
}
|
|
2161
|
-
async function requireExercise(exerciseNumber, { request, timings } = {}) {
|
|
2162
|
-
const exercise = await getExercise(exerciseNumber, { request, timings });
|
|
2163
|
-
if (!exercise) {
|
|
2164
|
-
throw new Response("Not found", {
|
|
2165
|
-
status: 404,
|
|
2166
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
2167
|
-
});
|
|
2168
|
-
}
|
|
2169
|
-
return exercise;
|
|
2170
|
-
}
|
|
2171
|
-
async function requireExerciseApp(params, { request, timings } = {}) {
|
|
2172
|
-
const app = await getExerciseApp(params, { request, timings });
|
|
2173
|
-
if (!app) {
|
|
2174
|
-
throw new Response("Not found", { status: 404 });
|
|
2175
|
-
}
|
|
2176
|
-
return app;
|
|
2177
|
-
}
|
|
2178
|
-
const ExerciseAppParamsSchema$1 = z.object({
|
|
2179
|
-
type: z.union([z.literal("problem"), z.literal("solution")]),
|
|
2180
|
-
exerciseNumber: z.coerce.number().finite(),
|
|
2181
|
-
stepNumber: z.coerce.number().finite()
|
|
2182
|
-
});
|
|
2183
|
-
async function getExerciseApp(params, { request, timings } = {}) {
|
|
2184
|
-
const result = ExerciseAppParamsSchema$1.safeParse(params);
|
|
2185
|
-
if (!result.success) {
|
|
2186
|
-
return null;
|
|
2187
|
-
}
|
|
2188
|
-
const { type, exerciseNumber, stepNumber } = result.data;
|
|
2189
|
-
const apps = (await getApps({ request, timings })).filter(isExerciseStepApp);
|
|
2190
|
-
const exerciseApp = apps.find((app) => {
|
|
2191
|
-
if (isExampleApp(app)) return false;
|
|
2192
|
-
return app.exerciseNumber === exerciseNumber && app.stepNumber === stepNumber && app.type === type;
|
|
2193
|
-
});
|
|
2194
|
-
if (!exerciseApp) {
|
|
2195
|
-
return null;
|
|
2196
|
-
}
|
|
2197
|
-
return exerciseApp;
|
|
2198
|
-
}
|
|
2199
|
-
async function getAppByName(name, { request, timings } = {}) {
|
|
2200
|
-
const apps = await getApps({ request, timings });
|
|
2201
|
-
return apps.find((a) => a.name === name);
|
|
2202
|
-
}
|
|
2203
|
-
async function getNextExerciseApp(app, { request, timings } = {}) {
|
|
2204
|
-
const apps = (await getApps({ request, timings })).filter(isExerciseStepApp);
|
|
2205
|
-
const index = apps.findIndex((a) => a.name === app.name);
|
|
2206
|
-
if (index === -1) {
|
|
2207
|
-
throw new Error(`Could not find app ${app.name}`);
|
|
2208
|
-
}
|
|
2209
|
-
const nextApp = apps[index + 1];
|
|
2210
|
-
return nextApp ? nextApp : null;
|
|
2211
|
-
}
|
|
2212
|
-
async function getPrevExerciseApp(app, { request, timings } = {}) {
|
|
2213
|
-
const apps = (await getApps({ request, timings })).filter(isExerciseStepApp);
|
|
2214
|
-
const index = apps.findIndex((a) => a.name === app.name);
|
|
2215
|
-
if (index === -1) {
|
|
2216
|
-
throw new Error(`Could not find app ${app.name}`);
|
|
2217
|
-
}
|
|
2218
|
-
const prevApp = apps[index - 1];
|
|
2219
|
-
return prevApp ? prevApp : null;
|
|
2220
|
-
}
|
|
2221
|
-
function getAppPageRoute(app, {
|
|
2222
|
-
subroute,
|
|
2223
|
-
searchParams
|
|
2224
|
-
} = {}) {
|
|
2225
|
-
const exerciseNumber = app.exerciseNumber.toString().padStart(2, "0");
|
|
2226
|
-
const stepNumber = app.stepNumber.toString().padStart(2, "0");
|
|
2227
|
-
const baseUrl = `/exercise/${exerciseNumber}/${stepNumber}/${app.type}`;
|
|
2228
|
-
const subrouteUrl = subroute ? `/${subroute}` : "";
|
|
2229
|
-
if (searchParams) {
|
|
2230
|
-
searchParams.delete("app1");
|
|
2231
|
-
searchParams.delete("app2");
|
|
2232
|
-
}
|
|
2233
|
-
const searchString = searchParams == null ? void 0 : searchParams.toString();
|
|
2234
|
-
return `${baseUrl}${subrouteUrl}${searchString ? `?${searchString}` : ""}`;
|
|
2235
|
-
}
|
|
2236
|
-
async function getAppFromFile(filePath) {
|
|
2237
|
-
const apps = await getApps();
|
|
2238
|
-
return apps.find((app) => filePath.startsWith(app.fullPath));
|
|
2239
|
-
}
|
|
2240
|
-
async function setPlayground(srcDir, { reset } = {}) {
|
|
2241
|
-
const destDir = path$1.join(workshopRoot, "playground");
|
|
2242
|
-
const isIgnored = await isGitIgnored({ cwd: srcDir });
|
|
2243
|
-
const playgroundApp = await getAppByName("playground");
|
|
2244
|
-
const playgroundWasRunning = playgroundApp ? isAppRunning(playgroundApp) : false;
|
|
2245
|
-
if (playgroundApp && reset) {
|
|
2246
|
-
await closeProcess(playgroundApp.name);
|
|
2247
|
-
await fsExtra.remove(destDir);
|
|
2248
|
-
}
|
|
2249
|
-
const setPlaygroundTimestamp = Date.now();
|
|
2250
|
-
const preSetPlaygroundPath = await firstToExist(
|
|
2251
|
-
path$1.join(srcDir, "epicshop", "pre-set-playground.js"),
|
|
2252
|
-
path$1.join(workshopRoot, "epicshop", "pre-set-playground.js")
|
|
2253
|
-
);
|
|
2254
|
-
if (preSetPlaygroundPath) {
|
|
2255
|
-
await execa("node", [preSetPlaygroundPath], {
|
|
2256
|
-
cwd: workshopRoot,
|
|
2257
|
-
stdio: "inherit",
|
|
2258
|
-
env: {
|
|
2259
|
-
EPICSHOP_PLAYGROUND_TIMESTAMP: setPlaygroundTimestamp.toString(),
|
|
2260
|
-
EPICSHOP_PLAYGROUND_DEST_DIR: destDir,
|
|
2261
|
-
EPICSHOP_PLAYGROUND_SRC_DIR: srcDir,
|
|
2262
|
-
EPICSHOP_PLAYGROUND_WAS_RUNNING: playgroundWasRunning.toString()
|
|
2263
|
-
}
|
|
2264
|
-
});
|
|
2265
|
-
}
|
|
2266
|
-
const basename2 = path$1.basename(srcDir);
|
|
2267
|
-
await fsExtra.remove(path$1.join(destDir, "node_modules"));
|
|
2268
|
-
await fsExtra.copy(srcDir, destDir, {
|
|
2269
|
-
filter: async (srcFile, destFile) => {
|
|
2270
|
-
if (srcFile.includes(`${basename2}${path$1.sep}build`) || srcFile.includes(`${basename2}${path$1.sep}public${path$1.sep}build`)) {
|
|
2271
|
-
return false;
|
|
2272
|
-
}
|
|
2273
|
-
if (srcFile === srcDir) return true;
|
|
2274
|
-
if (srcFile.includes("node_modules")) return true;
|
|
2275
|
-
if (srcFile.endsWith(".env")) return true;
|
|
2276
|
-
if (isIgnored(srcFile)) return false;
|
|
117
|
+
const partykitRoom = "epic-web-presence";
|
|
118
|
+
const partykitBaseUrl = `https://epic-web-presence.kentcdodds.partykit.dev/parties/main/${partykitRoom}`;
|
|
119
|
+
const UserSchema = z.object({
|
|
120
|
+
id: z.string(),
|
|
121
|
+
avatarUrl: z.string().nullable().optional(),
|
|
122
|
+
name: z.string().nullable().optional(),
|
|
123
|
+
location: z.object({
|
|
124
|
+
workshopTitle: z.string().nullable().optional(),
|
|
125
|
+
origin: z.string().nullable().optional(),
|
|
126
|
+
exercise: z.object({
|
|
127
|
+
type: z.union([z.literal("problem"), z.literal("solution")]).nullable().optional(),
|
|
128
|
+
exerciseNumber: z.number().nullable().optional(),
|
|
129
|
+
stepNumber: z.number().nullable().optional()
|
|
130
|
+
}).nullable().optional()
|
|
131
|
+
}).nullable().optional()
|
|
132
|
+
});
|
|
133
|
+
const MessageSchema = z.object({
|
|
134
|
+
type: z.literal("remove-user"),
|
|
135
|
+
payload: z.object({ id: z.string() })
|
|
136
|
+
}).or(z.object({ type: z.literal("add-user"), payload: UserSchema })).or(
|
|
137
|
+
z.object({
|
|
138
|
+
type: z.literal("presence"),
|
|
139
|
+
payload: z.object({ users: z.array(UserSchema) })
|
|
140
|
+
})
|
|
141
|
+
);
|
|
142
|
+
const PresenceSchema = z.object({ users: z.array(UserSchema) });
|
|
143
|
+
const presenceCache = makeSingletonCache("PresenceCache");
|
|
144
|
+
async function getPresentUsers(user, { timings, request } = {}) {
|
|
145
|
+
return cachified({
|
|
146
|
+
key: "presence",
|
|
147
|
+
cache: presenceCache,
|
|
148
|
+
timings,
|
|
149
|
+
request,
|
|
150
|
+
ttl: 1e3 * 60 * 5,
|
|
151
|
+
swr: 1e3 * 60 * 60 * 24,
|
|
152
|
+
checkValue: z.array(UserSchema),
|
|
153
|
+
async getFreshValue(context) {
|
|
2277
154
|
try {
|
|
2278
|
-
const
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
155
|
+
const response = await Promise.race([
|
|
156
|
+
fetch(`${partykitBaseUrl}/presence`),
|
|
157
|
+
new Promise(
|
|
158
|
+
(resolve) => setTimeout(() => {
|
|
159
|
+
resolve(new Response("Timeout", { status: 500 }));
|
|
160
|
+
}, 500)
|
|
161
|
+
)
|
|
162
|
+
]);
|
|
163
|
+
if (response.statusText === "Timeout") {
|
|
164
|
+
throw new Error(`Timeout fetching partykit presence`);
|
|
165
|
+
}
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
throw new Error(
|
|
168
|
+
`Unexpected response from partykit: ${response.status} ${response.statusText}`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
const presence = PresenceSchema.parse(await response.json());
|
|
172
|
+
const preferences = await getPreferences();
|
|
173
|
+
const users = presence.users;
|
|
174
|
+
if ((preferences == null ? void 0 : preferences.presence.optOut) ?? !user) {
|
|
175
|
+
return uniqueUsers(users.filter((u) => u.id !== (user == null ? void 0 : user.id)));
|
|
176
|
+
} else {
|
|
177
|
+
return uniqueUsers([...users, user]);
|
|
178
|
+
}
|
|
2286
179
|
} catch {
|
|
2287
|
-
|
|
180
|
+
context.metadata.ttl = 300;
|
|
181
|
+
return [];
|
|
2288
182
|
}
|
|
2289
183
|
}
|
|
2290
184
|
});
|
|
2291
|
-
async function getFiles(dir) {
|
|
2292
|
-
const dirPath = dir.replace(/\\/g, "/");
|
|
2293
|
-
const files = await globby([`${dirPath}/**/*`, "!**/build/**/*"], {
|
|
2294
|
-
onlyFiles: false,
|
|
2295
|
-
dot: true
|
|
2296
|
-
});
|
|
2297
|
-
return files.map((f) => f.replace(dirPath, ""));
|
|
2298
|
-
}
|
|
2299
|
-
const srcFiles = await getFiles(srcDir);
|
|
2300
|
-
const destFiles = await getFiles(destDir);
|
|
2301
|
-
const filesToDelete = destFiles.filter(
|
|
2302
|
-
(fileName) => !srcFiles.includes(fileName)
|
|
2303
|
-
);
|
|
2304
|
-
for (const fileToDelete of filesToDelete) {
|
|
2305
|
-
await fsExtra.remove(path$1.join(destDir, fileToDelete));
|
|
2306
|
-
}
|
|
2307
|
-
const appName = getAppName(srcDir);
|
|
2308
|
-
await fsExtra.ensureDir(path$1.dirname(playgroundAppNameInfoPath));
|
|
2309
|
-
await fsExtra.writeJSON(playgroundAppNameInfoPath, { appName });
|
|
2310
|
-
const playgroundIsStillRunning = playgroundApp ? isAppRunning(playgroundApp) : false;
|
|
2311
|
-
const restartPlayground = playgroundWasRunning && !playgroundIsStillRunning;
|
|
2312
|
-
const postSetPlaygroundPath = await firstToExist(
|
|
2313
|
-
path$1.join(srcDir, "epicshop", "post-set-playground.js"),
|
|
2314
|
-
path$1.join(workshopRoot, "epicshop", "post-set-playground.js")
|
|
2315
|
-
);
|
|
2316
|
-
if (postSetPlaygroundPath) {
|
|
2317
|
-
await execa("node", [postSetPlaygroundPath], {
|
|
2318
|
-
cwd: workshopRoot,
|
|
2319
|
-
stdio: "inherit",
|
|
2320
|
-
env: {
|
|
2321
|
-
EPICSHOP_PLAYGROUND_TIMESTAMP: setPlaygroundTimestamp.toString(),
|
|
2322
|
-
EPICSHOP_PLAYGROUND_SRC_DIR: srcDir,
|
|
2323
|
-
EPICSHOP_PLAYGROUND_DEST_DIR: destDir,
|
|
2324
|
-
EPICSHOP_PLAYGROUND_WAS_RUNNING: playgroundWasRunning.toString(),
|
|
2325
|
-
EPICSHOP_PLAYGROUND_IS_STILL_RUNNING: playgroundIsStillRunning.toString(),
|
|
2326
|
-
EPICSHOP_PLAYGROUND_RESTART_PLAYGROUND: restartPlayground.toString()
|
|
2327
|
-
}
|
|
2328
|
-
});
|
|
2329
|
-
}
|
|
2330
|
-
modifiedTimes.set(destDir, Date.now());
|
|
2331
|
-
if (playgroundApp && restartPlayground) {
|
|
2332
|
-
await runAppDev(playgroundApp);
|
|
2333
|
-
await waitOnApp(playgroundApp);
|
|
2334
|
-
}
|
|
2335
|
-
}
|
|
2336
|
-
async function getPlaygroundAppName() {
|
|
2337
|
-
if (!await exists(playgroundAppNameInfoPath)) {
|
|
2338
|
-
return null;
|
|
2339
|
-
}
|
|
2340
|
-
try {
|
|
2341
|
-
const jsonString = await fs$1.promises.readFile(
|
|
2342
|
-
playgroundAppNameInfoPath,
|
|
2343
|
-
"utf8"
|
|
2344
|
-
);
|
|
2345
|
-
const { appName } = JSON.parse(jsonString);
|
|
2346
|
-
if (typeof appName !== "string") return null;
|
|
2347
|
-
return appName;
|
|
2348
|
-
} catch {
|
|
2349
|
-
return null;
|
|
2350
|
-
}
|
|
2351
|
-
}
|
|
2352
|
-
function getAppDisplayName(a, allApps) {
|
|
2353
|
-
let displayName = `${a.title} (${a.type})`;
|
|
2354
|
-
if (isExerciseStepApp(a)) {
|
|
2355
|
-
const typeLabel = { problem: "💪", solution: "🏁" }[a.type];
|
|
2356
|
-
displayName = `${a.exerciseNumber}.${a.stepNumber} ${a.title} (${typeLabel} ${a.type})`;
|
|
2357
|
-
} else if (isPlaygroundApp(a)) {
|
|
2358
|
-
const playgroundAppBasis = allApps.find(
|
|
2359
|
-
(otherApp) => a.appName === otherApp.name
|
|
2360
|
-
);
|
|
2361
|
-
if (playgroundAppBasis) {
|
|
2362
|
-
const basisDisplayName = getAppDisplayName(playgroundAppBasis, allApps);
|
|
2363
|
-
displayName = `🛝 ${basisDisplayName}`;
|
|
2364
|
-
} else {
|
|
2365
|
-
displayName = `🛝 ${a.appName}`;
|
|
2366
|
-
}
|
|
2367
|
-
} else if (isExampleApp(a)) {
|
|
2368
|
-
displayName = `📚 ${a.title} (example)`;
|
|
2369
|
-
}
|
|
2370
|
-
return displayName;
|
|
2371
|
-
}
|
|
2372
|
-
async function getWorkshopInstructions({
|
|
2373
|
-
request
|
|
2374
|
-
} = {}) {
|
|
2375
|
-
const readmeFilepath = path$1.join(workshopRoot, "exercises", "README.mdx");
|
|
2376
|
-
const compiled = await compileMdx(readmeFilepath, { request }).then(
|
|
2377
|
-
(r) => ({ ...r, status: "success" }),
|
|
2378
|
-
(e) => {
|
|
2379
|
-
console.error(
|
|
2380
|
-
`There was an error compiling the workshop readme`,
|
|
2381
|
-
readmeFilepath,
|
|
2382
|
-
e
|
|
2383
|
-
);
|
|
2384
|
-
return { status: "error", error: getErrorMessage$1(e) };
|
|
2385
|
-
}
|
|
2386
|
-
);
|
|
2387
|
-
return { compiled, file: readmeFilepath, relativePath: "exercises" };
|
|
2388
185
|
}
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
(r) => ({ ...r, status: "success" }),
|
|
2395
|
-
(e) => {
|
|
2396
|
-
console.error(
|
|
2397
|
-
`There was an error compiling the workshop finished.mdx`,
|
|
2398
|
-
finishedFilepath,
|
|
2399
|
-
e
|
|
2400
|
-
);
|
|
2401
|
-
return { status: "error", error: getErrorMessage$1(e) };
|
|
186
|
+
function uniqueUsers(users) {
|
|
187
|
+
const seen = /* @__PURE__ */ new Set();
|
|
188
|
+
return users.filter(Boolean).filter((user) => {
|
|
189
|
+
if (seen.has(user.id)) {
|
|
190
|
+
return false;
|
|
2402
191
|
}
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
file: finishedFilepath,
|
|
2407
|
-
relativePath: "exercises/finished.mdx"
|
|
2408
|
-
};
|
|
2409
|
-
}
|
|
2410
|
-
const exercisesPath = path$1.join(workshopRoot, "exercises/");
|
|
2411
|
-
const playgroundPath = path$1.join(workshopRoot, "playground/");
|
|
2412
|
-
function getRelativePath$1(filePath) {
|
|
2413
|
-
return path$1.normalize(filePath).replace(playgroundPath, `playground${path$1.sep}`).replace(exercisesPath, "");
|
|
2414
|
-
}
|
|
2415
|
-
function getAppPathFromFilePath(filePath) {
|
|
2416
|
-
const [, withinWorkshopRootHalf] = filePath.split(workshopRoot);
|
|
2417
|
-
if (!withinWorkshopRootHalf) {
|
|
2418
|
-
return null;
|
|
2419
|
-
}
|
|
2420
|
-
const [part1, part2, part3] = withinWorkshopRootHalf.split(path$1.sep).filter(Boolean);
|
|
2421
|
-
if (part1 === "playground") {
|
|
2422
|
-
return path$1.join(workshopRoot, "playground");
|
|
2423
|
-
}
|
|
2424
|
-
if (part1 === "examples" && part2) {
|
|
2425
|
-
return path$1.join(workshopRoot, "examples", part2);
|
|
2426
|
-
}
|
|
2427
|
-
if (part1 === "exercises" && part2 && part3) {
|
|
2428
|
-
return path$1.join(workshopRoot, "exercises", part2, part3);
|
|
2429
|
-
}
|
|
2430
|
-
return null;
|
|
192
|
+
seen.add(user.id);
|
|
193
|
+
return true;
|
|
194
|
+
});
|
|
2431
195
|
}
|
|
2432
196
|
function Confetti({ id }) {
|
|
2433
197
|
if (!id) return null;
|
|
@@ -2750,18 +514,18 @@ function getErrorMessage(error, defaultMessage = "Unknown Error") {
|
|
|
2750
514
|
return defaultMessage;
|
|
2751
515
|
}
|
|
2752
516
|
function formatColors() {
|
|
2753
|
-
const
|
|
517
|
+
const colors = [];
|
|
2754
518
|
for (const [key, color] of Object.entries(extendedTheme.colors)) {
|
|
2755
519
|
if (typeof color === "string") {
|
|
2756
|
-
|
|
520
|
+
colors.push(key);
|
|
2757
521
|
} else {
|
|
2758
522
|
const colorGroup = Object.keys(color).map(
|
|
2759
523
|
(subKey) => subKey === "DEFAULT" ? "" : subKey
|
|
2760
524
|
);
|
|
2761
|
-
|
|
525
|
+
colors.push({ [key]: colorGroup });
|
|
2762
526
|
}
|
|
2763
527
|
}
|
|
2764
|
-
return
|
|
528
|
+
return colors;
|
|
2765
529
|
}
|
|
2766
530
|
const customTwMerge = extendTailwindMerge({
|
|
2767
531
|
extend: {
|
|
@@ -3010,7 +774,7 @@ function usePERedirectInput() {
|
|
|
3010
774
|
function ensureProgressiveEnhancement(formData, responseInit) {
|
|
3011
775
|
const redirectTo = formData.get(PE_REDIRECT_INPUT_NAME);
|
|
3012
776
|
if (typeof redirectTo === "string") {
|
|
3013
|
-
throw redirect
|
|
777
|
+
throw redirect(safeRedirect(redirectTo), responseInit == null ? void 0 : responseInit());
|
|
3014
778
|
}
|
|
3015
779
|
}
|
|
3016
780
|
function jsonWithPE(formData, ...args) {
|
|
@@ -3107,7 +871,7 @@ function useTheme() {
|
|
|
3107
871
|
}
|
|
3108
872
|
return requestInfo.session.theme ?? hints.theme;
|
|
3109
873
|
}
|
|
3110
|
-
const
|
|
874
|
+
const route43 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3111
875
|
__proto__: null,
|
|
3112
876
|
ThemeSwitch,
|
|
3113
877
|
action: action$b,
|
|
@@ -3704,10 +1468,10 @@ const toastSessionStorage = createCookieSessionStorage({
|
|
|
3704
1468
|
secure: process.env.NODE_ENV === "production"
|
|
3705
1469
|
}
|
|
3706
1470
|
});
|
|
3707
|
-
async function redirectWithToast(url, toast2,
|
|
3708
|
-
return redirect(url, {
|
|
3709
|
-
...
|
|
3710
|
-
headers: combineHeaders(
|
|
1471
|
+
async function redirectWithToast(url, toast2, init) {
|
|
1472
|
+
return redirect$1(url, {
|
|
1473
|
+
...init,
|
|
1474
|
+
headers: combineHeaders(init == null ? void 0 : init.headers, await createToastHeaders(toast2))
|
|
3711
1475
|
});
|
|
3712
1476
|
}
|
|
3713
1477
|
async function createToastHeaders(optionalToast) {
|
|
@@ -3769,7 +1533,7 @@ async function loader$y({ request }) {
|
|
|
3769
1533
|
const onboarding = await readOnboardingData();
|
|
3770
1534
|
if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.tourVideosWatched.includes(onboardingVideo))) {
|
|
3771
1535
|
if (new URL(request.url).pathname !== "/onboarding") {
|
|
3772
|
-
throw redirect("/onboarding");
|
|
1536
|
+
throw redirect$1("/onboarding");
|
|
3773
1537
|
}
|
|
3774
1538
|
}
|
|
3775
1539
|
const theme = getTheme(request);
|
|
@@ -3813,7 +1577,7 @@ async function loader$y({ request }) {
|
|
|
3813
1577
|
hints: getHints(request),
|
|
3814
1578
|
path: new URL(request.url).pathname,
|
|
3815
1579
|
session: { theme },
|
|
3816
|
-
separator: path
|
|
1580
|
+
separator: path.sep
|
|
3817
1581
|
},
|
|
3818
1582
|
toast: toast2,
|
|
3819
1583
|
confettiId,
|
|
@@ -4479,7 +2243,7 @@ function ProgressToggle({
|
|
|
4479
2243
|
)
|
|
4480
2244
|
] });
|
|
4481
2245
|
}
|
|
4482
|
-
const
|
|
2246
|
+
const route37 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4483
2247
|
__proto__: null,
|
|
4484
2248
|
ProgressToggle,
|
|
4485
2249
|
action: action$a,
|
|
@@ -5702,7 +3466,7 @@ async function loader$v({ request }) {
|
|
|
5702
3466
|
if (parseResult.data.status === "error") {
|
|
5703
3467
|
console.error(`There was an error connecting Discord`);
|
|
5704
3468
|
console.error(parseResult.data.error);
|
|
5705
|
-
return redirect("/account?error");
|
|
3469
|
+
return redirect$1("/account?error");
|
|
5706
3470
|
}
|
|
5707
3471
|
const member = parseResult.data.member;
|
|
5708
3472
|
await setDiscordMember(member);
|
|
@@ -5712,7 +3476,7 @@ async function loader$v({ request }) {
|
|
|
5712
3476
|
description: `Your Discord account "${member.displayName}" has been connected!`
|
|
5713
3477
|
});
|
|
5714
3478
|
}
|
|
5715
|
-
const
|
|
3479
|
+
const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5716
3480
|
__proto__: null,
|
|
5717
3481
|
getDiscordAuthURL,
|
|
5718
3482
|
loader: loader$v
|
|
@@ -5753,7 +3517,7 @@ async function action$9({ request }) {
|
|
|
5753
3517
|
type: "success"
|
|
5754
3518
|
});
|
|
5755
3519
|
}
|
|
5756
|
-
return redirect("/account");
|
|
3520
|
+
return redirect$1("/account");
|
|
5757
3521
|
}
|
|
5758
3522
|
function Account() {
|
|
5759
3523
|
const data = useLoaderData();
|
|
@@ -5858,7 +3622,7 @@ async function getForceFresh(filePath, cacheEntry) {
|
|
|
5858
3622
|
if (!cacheEntry) return true;
|
|
5859
3623
|
const app = await getAppFromFile(filePath);
|
|
5860
3624
|
if (!app) return true;
|
|
5861
|
-
const appModified = await
|
|
3625
|
+
const appModified = await getDirModifiedTime(app.fullPath);
|
|
5862
3626
|
const cacheModified = cacheEntry.metadata.createdTime;
|
|
5863
3627
|
return !cacheModified || appModified > cacheModified || void 0;
|
|
5864
3628
|
}
|
|
@@ -5883,7 +3647,7 @@ async function compileTs(filePath, fullPath, {
|
|
|
5883
3647
|
// app than the one we're serving the file from. We do this so the tests
|
|
5884
3648
|
// can live in the solution directory, but be run against the problem
|
|
5885
3649
|
resolveDir: fullPath,
|
|
5886
|
-
sourcefile: path.basename(filePath),
|
|
3650
|
+
sourcefile: path$1.basename(filePath),
|
|
5887
3651
|
loader: "tsx"
|
|
5888
3652
|
},
|
|
5889
3653
|
define: {
|
|
@@ -5902,12 +3666,17 @@ async function compileTs(filePath, fullPath, {
|
|
|
5902
3666
|
}
|
|
5903
3667
|
});
|
|
5904
3668
|
}
|
|
3669
|
+
function parseAppNameFromReferer(request) {
|
|
3670
|
+
const url = new URL(request.headers.get("referer") ?? "");
|
|
3671
|
+
const appName = url.pathname.split("/").pop();
|
|
3672
|
+
return appName;
|
|
3673
|
+
}
|
|
5905
3674
|
async function resolveApps({
|
|
5906
3675
|
request,
|
|
5907
3676
|
params,
|
|
5908
3677
|
timings
|
|
5909
3678
|
}) {
|
|
5910
|
-
const
|
|
3679
|
+
const appName = params.appName ?? parseAppNameFromReferer(request);
|
|
5911
3680
|
invariantResponse(appName, "appName param required");
|
|
5912
3681
|
const app = await getAppByName(appName, { request, timings });
|
|
5913
3682
|
let fileAppName = (app == null ? void 0 : app.name) ?? null;
|
|
@@ -5944,13 +3713,13 @@ async function loader$t({ request, params }) {
|
|
|
5944
3713
|
throw new Response(`Apps not found`, { status: 404 });
|
|
5945
3714
|
}
|
|
5946
3715
|
if (app.dev.type === "script") {
|
|
5947
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
3716
|
+
return redirect$1(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
5948
3717
|
}
|
|
5949
3718
|
const splat = params["*"];
|
|
5950
3719
|
invariantResponse(splat, "splat required");
|
|
5951
3720
|
const filePath = await firstExisting(
|
|
5952
|
-
path.join(app.fullPath, splat),
|
|
5953
|
-
path.join(fileApp.fullPath, splat)
|
|
3721
|
+
path$1.join(app.fullPath, splat),
|
|
3722
|
+
path$1.join(fileApp.fullPath, splat)
|
|
5954
3723
|
);
|
|
5955
3724
|
if (!filePath) {
|
|
5956
3725
|
throw new Response("File not found", { status: 404 });
|
|
@@ -6036,9 +3805,9 @@ async function getApiModule({ request, params }) {
|
|
|
6036
3805
|
throw new Response(`Apps not found`, { status: 404 });
|
|
6037
3806
|
}
|
|
6038
3807
|
if (app.dev.type === "script") {
|
|
6039
|
-
throw redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
3808
|
+
throw redirect$1(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
6040
3809
|
}
|
|
6041
|
-
const apiFiles = (await fsExtra.readdir(app.fullPath)).filter((file) => /^api\.server\.(ts|tsx|js|jsx)$/.test(file)).map((f) => path
|
|
3810
|
+
const apiFiles = (await fsExtra.readdir(app.fullPath)).filter((file) => /^api\.server\.(ts|tsx|js|jsx)$/.test(file)).map((f) => path.join(app.fullPath, f));
|
|
6042
3811
|
const apiFile = apiFiles[0];
|
|
6043
3812
|
if (!apiFile) {
|
|
6044
3813
|
throw new Response(
|
|
@@ -6109,7 +3878,7 @@ async function loader$r({ request, params }) {
|
|
|
6109
3878
|
throw new Response(`Apps not found`, { status: 404 });
|
|
6110
3879
|
}
|
|
6111
3880
|
if (app.dev.type === "script") {
|
|
6112
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
3881
|
+
return redirect$1(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
6113
3882
|
}
|
|
6114
3883
|
const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
|
|
6115
3884
|
const watchParams = new URLSearchParams();
|
|
@@ -6182,7 +3951,7 @@ async function loader$q({ request, params }) {
|
|
|
6182
3951
|
throw new Response(`Apps not found`, { status: 404 });
|
|
6183
3952
|
}
|
|
6184
3953
|
if (app.dev.type === "script") {
|
|
6185
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }), {
|
|
3954
|
+
return redirect$1(getBaseUrl({ request, port: app.dev.portNumber }), {
|
|
6186
3955
|
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
6187
3956
|
});
|
|
6188
3957
|
}
|
|
@@ -6192,7 +3961,7 @@ async function loader$q({ request, params }) {
|
|
|
6192
3961
|
{ status: 400 }
|
|
6193
3962
|
);
|
|
6194
3963
|
}
|
|
6195
|
-
const htmlFile = path.join(app.fullPath, "index.html");
|
|
3964
|
+
const htmlFile = path$1.join(app.fullPath, "index.html");
|
|
6196
3965
|
const hasHtml = await fsExtra.pathExists(htmlFile);
|
|
6197
3966
|
if (hasHtml) {
|
|
6198
3967
|
const html2 = await fsExtra.readFile(htmlFile);
|
|
@@ -6340,7 +4109,7 @@ import(${JSON.stringify(testScriptPath)}).then(
|
|
|
6340
4109
|
`
|
|
6341
4110
|
);
|
|
6342
4111
|
const testScriptTag = userHasAccess ? `<script type="module">${testScriptSrc}<\/script>` : `<h1>Access Denied</h1><p>You must login or register for the workshop to run the tests</p>`;
|
|
6343
|
-
const htmlFile = path.join(app.fullPath, "index.html");
|
|
4112
|
+
const htmlFile = path$1.join(app.fullPath, "index.html");
|
|
6344
4113
|
const hasHtml = await fsExtra.pathExists(htmlFile);
|
|
6345
4114
|
if (hasHtml) {
|
|
6346
4115
|
const html2 = (await fsExtra.readFile(htmlFile)).toString();
|
|
@@ -6404,6 +4173,10 @@ const route9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
6404
4173
|
__proto__: null,
|
|
6405
4174
|
loader: loader$r
|
|
6406
4175
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4176
|
+
const route10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4177
|
+
__proto__: null,
|
|
4178
|
+
loader: loader$r
|
|
4179
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
6407
4180
|
const handle$6 = {
|
|
6408
4181
|
getSitemapEntries: () => null
|
|
6409
4182
|
};
|
|
@@ -6506,7 +4279,7 @@ function DiscordRoute() {
|
|
|
6506
4279
|
] }) })
|
|
6507
4280
|
] });
|
|
6508
4281
|
}
|
|
6509
|
-
const
|
|
4282
|
+
const route11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6510
4283
|
__proto__: null,
|
|
6511
4284
|
DiscordCTA,
|
|
6512
4285
|
default: DiscordRoute,
|
|
@@ -6534,7 +4307,7 @@ function ExercisesLayout() {
|
|
|
6534
4307
|
children: /* @__PURE__ */ jsx(Outlet, {})
|
|
6535
4308
|
});
|
|
6536
4309
|
}
|
|
6537
|
-
const
|
|
4310
|
+
const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6538
4311
|
__proto__: null,
|
|
6539
4312
|
default: ExercisesLayout,
|
|
6540
4313
|
handle: handle$5
|
|
@@ -6737,7 +4510,7 @@ function isDeepEqual(obj1, obj2) {
|
|
|
6737
4510
|
}
|
|
6738
4511
|
return true;
|
|
6739
4512
|
}
|
|
6740
|
-
const
|
|
4513
|
+
const route44 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6741
4514
|
__proto__: null,
|
|
6742
4515
|
MuxPlayer,
|
|
6743
4516
|
action: action$7,
|
|
@@ -7246,8 +5019,8 @@ function useApps() {
|
|
|
7246
5019
|
}
|
|
7247
5020
|
function readablePath(filePath = "") {
|
|
7248
5021
|
const relative = getRelativePath$1(filePath);
|
|
7249
|
-
const name = path.basename(relative);
|
|
7250
|
-
const dir = path.dirname(relative);
|
|
5022
|
+
const name = path$1.basename(relative);
|
|
5023
|
+
const dir = path$1.dirname(relative);
|
|
7251
5024
|
return `'${name}' from:
|
|
7252
5025
|
'${dir}'`;
|
|
7253
5026
|
}
|
|
@@ -7336,7 +5109,7 @@ function addWorkspaceToArgumentsIfExists(args, workspace) {
|
|
|
7336
5109
|
return args;
|
|
7337
5110
|
}
|
|
7338
5111
|
function getArgumentsForLineNumber(editor, fileName, lineNumber, colNumber, workspace) {
|
|
7339
|
-
const editorBasename = path.basename(editor).replace(/\.(exe|cmd|bat)$/i, "");
|
|
5112
|
+
const editorBasename = path$1.basename(editor).replace(/\.(exe|cmd|bat)$/i, "");
|
|
7340
5113
|
switch (editorBasename) {
|
|
7341
5114
|
case "atom":
|
|
7342
5115
|
case "Atom":
|
|
@@ -7419,7 +5192,7 @@ function guessEditor() {
|
|
|
7419
5192
|
for (let i = 0; i < runningProcesses.length; i++) {
|
|
7420
5193
|
const processPath = (_a = runningProcesses[i]) == null ? void 0 : _a.trim();
|
|
7421
5194
|
if (!processPath) continue;
|
|
7422
|
-
const processName = path.basename(processPath);
|
|
5195
|
+
const processName = path$1.basename(processPath);
|
|
7423
5196
|
if (COMMON_EDITORS_WIN.includes(processName)) {
|
|
7424
5197
|
return [processPath];
|
|
7425
5198
|
}
|
|
@@ -7468,7 +5241,7 @@ async function launchEditor(pathList, lineNumber = 1, colNumber = 1) {
|
|
|
7468
5241
|
const { fileList, errorsList } = pathList.reduce(
|
|
7469
5242
|
(acc, fileName) => {
|
|
7470
5243
|
if (process.platform === "linux" && fileName.startsWith("/mnt/") && /Microsoft/i.test(os.release())) {
|
|
7471
|
-
fileName = path.relative("", fileName);
|
|
5244
|
+
fileName = path$1.relative("", fileName);
|
|
7472
5245
|
}
|
|
7473
5246
|
if (process.platform === "win32" && !WINDOWS_FILE_NAME_WHITELIST.test(
|
|
7474
5247
|
// replacing characters we know are fine (because heck if I'm going to edit that regex above 🙃)
|
|
@@ -7477,7 +5250,7 @@ async function launchEditor(pathList, lineNumber = 1, colNumber = 1) {
|
|
|
7477
5250
|
acc.errorsList.push(fileName);
|
|
7478
5251
|
} else {
|
|
7479
5252
|
if (!fs.existsSync(fileName)) {
|
|
7480
|
-
fsExtra.ensureDirSync(path.dirname(fileName));
|
|
5253
|
+
fsExtra.ensureDirSync(path$1.dirname(fileName));
|
|
7481
5254
|
fsExtra.writeFileSync(fileName, "", "utf8");
|
|
7482
5255
|
}
|
|
7483
5256
|
acc.fileList.push(fileName.trim());
|
|
@@ -7642,7 +5415,7 @@ async function action$6({ request }) {
|
|
|
7642
5415
|
);
|
|
7643
5416
|
}
|
|
7644
5417
|
return {
|
|
7645
|
-
filepath: path.join(fileDescriptorApp.fullPath, filePath),
|
|
5418
|
+
filepath: path$1.join(fileDescriptorApp.fullPath, filePath),
|
|
7646
5419
|
line: Number(line),
|
|
7647
5420
|
column: Number(column)
|
|
7648
5421
|
};
|
|
@@ -7661,7 +5434,7 @@ async function action$6({ request }) {
|
|
|
7661
5434
|
`Trying to sync to a file that does not appear at index ${index}`
|
|
7662
5435
|
);
|
|
7663
5436
|
}
|
|
7664
|
-
await fsExtra.ensureDir(path.dirname(destFile.filepath));
|
|
5437
|
+
await fsExtra.ensureDir(path$1.dirname(destFile.filepath));
|
|
7665
5438
|
await fsExtra.promises.copyFile(originFile.filepath, destFile.filepath);
|
|
7666
5439
|
}
|
|
7667
5440
|
}
|
|
@@ -7833,7 +5606,7 @@ function EditFileOnGitHub({
|
|
|
7833
5606
|
);
|
|
7834
5607
|
}
|
|
7835
5608
|
const LaunchEditor = ENV.EPICSHOP_DEPLOYED ? LaunchGitHub : LaunchEditorImpl;
|
|
7836
|
-
const
|
|
5609
|
+
const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7837
5610
|
__proto__: null,
|
|
7838
5611
|
EditFileOnGitHub,
|
|
7839
5612
|
LaunchEditor,
|
|
@@ -8049,7 +5822,7 @@ async function loader$n({ request, params }) {
|
|
|
8049
5822
|
if (!exercise) {
|
|
8050
5823
|
throw new Response("Not found", { status: 404 });
|
|
8051
5824
|
}
|
|
8052
|
-
const readmeFilepath = path.join(
|
|
5825
|
+
const readmeFilepath = path$1.join(
|
|
8053
5826
|
workshopRoot,
|
|
8054
5827
|
"exercises",
|
|
8055
5828
|
exercise.dirName,
|
|
@@ -8172,7 +5945,7 @@ function ErrorBoundary$4() {
|
|
|
8172
5945
|
error.data
|
|
8173
5946
|
] }) : /* @__PURE__ */ jsx("p", { children: getErrorMessage(error) });
|
|
8174
5947
|
}
|
|
8175
|
-
const
|
|
5948
|
+
const route13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8176
5949
|
__proto__: null,
|
|
8177
5950
|
ErrorBoundary: ErrorBoundary$4,
|
|
8178
5951
|
default: ExerciseNumberRoute,
|
|
@@ -8230,7 +6003,7 @@ function ErrorBoundary$3() {
|
|
|
8230
6003
|
error.data
|
|
8231
6004
|
] }) : /* @__PURE__ */ jsx("p", { children: getErrorMessage(error) });
|
|
8232
6005
|
}
|
|
8233
|
-
const
|
|
6006
|
+
const route14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8234
6007
|
__proto__: null,
|
|
8235
6008
|
ErrorBoundary: ErrorBoundary$3,
|
|
8236
6009
|
default: StepRoute,
|
|
@@ -8292,19 +6065,19 @@ function NavChevrons({
|
|
|
8292
6065
|
) : null
|
|
8293
6066
|
] });
|
|
8294
6067
|
}
|
|
8295
|
-
const epicshopTempDir = path.join(os.tmpdir(), "epicshop");
|
|
6068
|
+
const epicshopTempDir = path$1.join(os.tmpdir(), "epicshop");
|
|
8296
6069
|
const isDeployed = ENV.EPICSHOP_DEPLOYED;
|
|
8297
|
-
const diffTmpDir = path.join(epicshopTempDir, "diff");
|
|
6070
|
+
const diffTmpDir = path$1.join(epicshopTempDir, "diff");
|
|
8298
6071
|
function diffPathToRelative(filePath) {
|
|
8299
|
-
let normalizedPath = path.normalize(filePath).replace(/^("|')|("|')$/g, "");
|
|
6072
|
+
let normalizedPath = path$1.normalize(filePath).replace(/^("|')|("|')$/g, "");
|
|
8300
6073
|
if (normalizedPath.startsWith("a\\") || normalizedPath.startsWith("b\\") || normalizedPath.startsWith("a/") || normalizedPath.startsWith("b/")) {
|
|
8301
6074
|
normalizedPath = normalizedPath.slice(2);
|
|
8302
6075
|
}
|
|
8303
6076
|
const [workshopRootDirname, appId, id, ...relativePath] = normalizedPath.replace(
|
|
8304
|
-
process.platform === "win32" || normalizedPath.startsWith(path.sep) ? `${diffTmpDir}${path.sep}` : `${diffTmpDir.slice(1)}${path.sep}`,
|
|
6077
|
+
process.platform === "win32" || normalizedPath.startsWith(path$1.sep) ? `${diffTmpDir}${path$1.sep}` : `${diffTmpDir.slice(1)}${path$1.sep}`,
|
|
8305
6078
|
""
|
|
8306
|
-
).split(path.sep);
|
|
8307
|
-
return relativePath.join(path.sep);
|
|
6079
|
+
).split(path$1.sep);
|
|
6080
|
+
return relativePath.join(path$1.sep);
|
|
8308
6081
|
}
|
|
8309
6082
|
function getLanguage(ext) {
|
|
8310
6083
|
var _a;
|
|
@@ -8322,7 +6095,7 @@ function getFileCodeblocks(file, filePathApp1, filePathApp2, type) {
|
|
|
8322
6095
|
const filepath = diffPathToRelative(
|
|
8323
6096
|
file.type === "RenamedFile" ? file.pathAfter : file.path
|
|
8324
6097
|
);
|
|
8325
|
-
const extension = path.extname(filepath).slice(1);
|
|
6098
|
+
const extension = path$1.extname(filepath).slice(1);
|
|
8326
6099
|
const lang = getLanguage(extension);
|
|
8327
6100
|
const pathToCopy = file.type === "RenamedFile" ? file.pathBefore : file.path;
|
|
8328
6101
|
const relativePath = diffPathToRelative(pathToCopy);
|
|
@@ -8431,7 +6204,7 @@ async function copyUnignoredFiles(srcDir, destDir, ignoreList) {
|
|
|
8431
6204
|
await fsExtra.copy(srcDir, destDir, {
|
|
8432
6205
|
filter: async (file) => {
|
|
8433
6206
|
if (file === srcDir) return true;
|
|
8434
|
-
return !ig.ignores(path.relative(srcDir, file));
|
|
6207
|
+
return !ig.ignores(path$1.relative(srcDir, file));
|
|
8435
6208
|
}
|
|
8436
6209
|
});
|
|
8437
6210
|
}
|
|
@@ -8439,15 +6212,15 @@ async function copyUnignoredFiles(srcDir, destDir, ignoreList) {
|
|
|
8439
6212
|
}
|
|
8440
6213
|
async function prepareForDiff(app1, app2) {
|
|
8441
6214
|
const id = Math.random().toString(36).slice(2);
|
|
8442
|
-
const app1CopyPath = path.join(
|
|
6215
|
+
const app1CopyPath = path$1.join(
|
|
8443
6216
|
diffTmpDir,
|
|
8444
|
-
path.basename(workshopRoot),
|
|
6217
|
+
path$1.basename(workshopRoot),
|
|
8445
6218
|
app1.name,
|
|
8446
6219
|
id
|
|
8447
6220
|
);
|
|
8448
|
-
const app2CopyPath = path.join(
|
|
6221
|
+
const app2CopyPath = path$1.join(
|
|
8449
6222
|
diffTmpDir,
|
|
8450
|
-
path.basename(workshopRoot),
|
|
6223
|
+
path$1.basename(workshopRoot),
|
|
8451
6224
|
app2.name,
|
|
8452
6225
|
id
|
|
8453
6226
|
);
|
|
@@ -8456,13 +6229,13 @@ async function prepareForDiff(app1, app2) {
|
|
|
8456
6229
|
const { name: name2, ...rest2 } = pkg2;
|
|
8457
6230
|
return JSON.stringify(rest1) === JSON.stringify(rest2);
|
|
8458
6231
|
};
|
|
8459
|
-
const app1PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path.join(app1.fullPath, "package.json")) : {};
|
|
8460
|
-
const app2PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path.join(app2.fullPath, "package.json")) : {};
|
|
6232
|
+
const app1PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app1.fullPath, "package.json")) : {};
|
|
6233
|
+
const app2PkgJson = app1.dev.type === "script" ? await fsExtra.readJSON(path$1.join(app2.fullPath, "package.json")) : {};
|
|
8461
6234
|
const pkgJsonIgnore = comparePkgJson(app1PkgJson, app2PkgJson) ? ["package.json"] : [];
|
|
8462
6235
|
const workshopIgnore = [
|
|
8463
|
-
...await getDiffIgnore(path.join(workshopRoot, ".gitignore")),
|
|
6236
|
+
...await getDiffIgnore(path$1.join(workshopRoot, ".gitignore")),
|
|
8464
6237
|
...await getDiffIgnore(
|
|
8465
|
-
path.join(workshopRoot, "epicshop", ".diffignore")
|
|
6238
|
+
path$1.join(workshopRoot, "epicshop", ".diffignore")
|
|
8466
6239
|
)
|
|
8467
6240
|
];
|
|
8468
6241
|
await Promise.all([
|
|
@@ -8470,18 +6243,18 @@ async function prepareForDiff(app1, app2) {
|
|
|
8470
6243
|
...DEFAULT_IGNORE_PATTERNS,
|
|
8471
6244
|
...pkgJsonIgnore,
|
|
8472
6245
|
...workshopIgnore,
|
|
8473
|
-
...await getDiffIgnore(path.join(app1.fullPath, ".gitignore")),
|
|
6246
|
+
...await getDiffIgnore(path$1.join(app1.fullPath, ".gitignore")),
|
|
8474
6247
|
...await getDiffIgnore(
|
|
8475
|
-
path.join(app1.fullPath, "epicshop", ".diffignore")
|
|
6248
|
+
path$1.join(app1.fullPath, "epicshop", ".diffignore")
|
|
8476
6249
|
)
|
|
8477
6250
|
]),
|
|
8478
6251
|
copyUnignoredFiles(app2.fullPath, app2CopyPath, [
|
|
8479
6252
|
...DEFAULT_IGNORE_PATTERNS,
|
|
8480
6253
|
...pkgJsonIgnore,
|
|
8481
6254
|
...workshopIgnore,
|
|
8482
|
-
...await getDiffIgnore(path.join(app2.fullPath, ".gitignore")),
|
|
6255
|
+
...await getDiffIgnore(path$1.join(app2.fullPath, ".gitignore")),
|
|
8483
6256
|
...await getDiffIgnore(
|
|
8484
|
-
path.join(app2.fullPath, "epicshop", ".diffignore")
|
|
6257
|
+
path$1.join(app2.fullPath, "epicshop", ".diffignore")
|
|
8485
6258
|
)
|
|
8486
6259
|
])
|
|
8487
6260
|
]);
|
|
@@ -8622,11 +6395,11 @@ async function getDiffCodeImpl(app1, app2) {
|
|
|
8622
6395
|
const pathToCopy = file.type === "RenamedFile" ? file.pathBefore : file.path;
|
|
8623
6396
|
const relativePath = diffPathToRelative(pathToCopy);
|
|
8624
6397
|
if (app1TestFiles.includes(relativePath)) continue;
|
|
8625
|
-
const filePathApp1 = path.join(app1.fullPath, relativePath);
|
|
6398
|
+
const filePathApp1 = path$1.join(app1.fullPath, relativePath);
|
|
8626
6399
|
const pathToApp2 = file.type === "RenamedFile" ? file.pathAfter : file.path;
|
|
8627
6400
|
const relativePathApp2 = diffPathToRelative(pathToApp2);
|
|
8628
6401
|
if (app2TestFiles.includes(relativePathApp2)) continue;
|
|
8629
|
-
const filePathApp2 = path.join(app2.fullPath, relativePathApp2);
|
|
6402
|
+
const filePathApp2 = path$1.join(app2.fullPath, relativePathApp2);
|
|
8630
6403
|
switch (file.type) {
|
|
8631
6404
|
case "ChangedFile": {
|
|
8632
6405
|
markdownLines.push(`
|
|
@@ -8861,7 +6634,7 @@ function SetAppToPlayground({ appName }) {
|
|
|
8861
6634
|
}
|
|
8862
6635
|
);
|
|
8863
6636
|
}
|
|
8864
|
-
const
|
|
6637
|
+
const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8865
6638
|
__proto__: null,
|
|
8866
6639
|
PlaygroundChooser,
|
|
8867
6640
|
SetAppToPlayground,
|
|
@@ -8939,7 +6712,7 @@ function DiffLink({
|
|
|
8939
6712
|
/* @__PURE__ */ jsx("callout-danger", { className: "notification", children: /* @__PURE__ */ jsx("div", { className: "title", children: "DiffLink Error: invalid input" }) })
|
|
8940
6713
|
);
|
|
8941
6714
|
}
|
|
8942
|
-
function
|
|
6715
|
+
function getAppName(input) {
|
|
8943
6716
|
var _a;
|
|
8944
6717
|
if (typeof input === "number") {
|
|
8945
6718
|
const stepIndex = data.exerciseIndex + input;
|
|
@@ -8958,8 +6731,8 @@ function DiffLink({
|
|
|
8958
6731
|
app1 = params.get("app1");
|
|
8959
6732
|
app2 = params.get("app2");
|
|
8960
6733
|
}
|
|
8961
|
-
const app1Name =
|
|
8962
|
-
const app2Name =
|
|
6734
|
+
const app1Name = getAppName(app1);
|
|
6735
|
+
const app2Name = getAppName(app2);
|
|
8963
6736
|
if (!app1Name || !app2Name) {
|
|
8964
6737
|
return (
|
|
8965
6738
|
// @ts-expect-error 🤷♂️
|
|
@@ -9174,13 +6947,13 @@ function pageTitle(data, workshopTitle) {
|
|
|
9174
6947
|
var _a;
|
|
9175
6948
|
const exerciseNumber = (data == null ? void 0 : data.exerciseStepApp.exerciseNumber.toString().padStart(2, "0")) ?? "00";
|
|
9176
6949
|
const stepNumber = (data == null ? void 0 : data.exerciseStepApp.stepNumber.toString().padStart(2, "0")) ?? "00";
|
|
9177
|
-
const
|
|
6950
|
+
const emoji = {
|
|
9178
6951
|
problem: "💪",
|
|
9179
6952
|
solution: "🏁"
|
|
9180
6953
|
}[(data == null ? void 0 : data.type) ?? "problem"];
|
|
9181
6954
|
const title = ((_a = data == null ? void 0 : data[data.type]) == null ? void 0 : _a.title) ?? "N/A";
|
|
9182
6955
|
return {
|
|
9183
|
-
emoji
|
|
6956
|
+
emoji,
|
|
9184
6957
|
stepNumber,
|
|
9185
6958
|
title,
|
|
9186
6959
|
exerciseNumber,
|
|
@@ -9197,9 +6970,9 @@ const meta$3 = ({
|
|
|
9197
6970
|
var _a;
|
|
9198
6971
|
const rootData = (_a = matches.find((m) => m.id === "root")) == null ? void 0 : _a.data;
|
|
9199
6972
|
if (!data || !rootData) return [{ title: "🦉 | Error" }];
|
|
9200
|
-
const { emoji
|
|
6973
|
+
const { emoji, stepNumber, title, exerciseNumber, exerciseTitle } = pageTitle(data);
|
|
9201
6974
|
return getSeoMetaTags({
|
|
9202
|
-
title: `${
|
|
6975
|
+
title: `${emoji} | ${stepNumber}. ${title} | ${exerciseNumber}. ${exerciseTitle} | ${rootData.workshopTitle}`,
|
|
9203
6976
|
description: `${params.type} step for exercise ${exerciseNumber}. ${exerciseTitle}`,
|
|
9204
6977
|
ogTitle: title,
|
|
9205
6978
|
ogDescription: `${exerciseTitle} step ${Number(stepNumber)} ${params.type}`,
|
|
@@ -9222,7 +6995,7 @@ async function loader$l({ request, params }) {
|
|
|
9222
6995
|
const pathnameParam = reqUrl.searchParams.get("pathname");
|
|
9223
6996
|
if (pathnameParam === "" || pathnameParam === "/") {
|
|
9224
6997
|
reqUrl.searchParams.delete("pathname");
|
|
9225
|
-
throw redirect(reqUrl.toString());
|
|
6998
|
+
throw redirect$1(reqUrl.toString());
|
|
9226
6999
|
}
|
|
9227
7000
|
const problemApp = await getExerciseApp(
|
|
9228
7001
|
{ ...params, type: "problem" },
|
|
@@ -9464,7 +7237,7 @@ function ErrorBoundary$2() {
|
|
|
9464
7237
|
}
|
|
9465
7238
|
);
|
|
9466
7239
|
}
|
|
9467
|
-
const
|
|
7240
|
+
const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9468
7241
|
__proto__: null,
|
|
9469
7242
|
ErrorBoundary: ErrorBoundary$2,
|
|
9470
7243
|
default: ExercisePartRoute$1,
|
|
@@ -9609,7 +7382,7 @@ function AppStarter({ name }) {
|
|
|
9609
7382
|
fetcher.state === "idle" ? /* @__PURE__ */ jsx(Button, { type: "submit", name: "intent", value: "start", varient: "mono", children: "Start App" }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Loading, { children: "Starting App" }) })
|
|
9610
7383
|
] });
|
|
9611
7384
|
}
|
|
9612
|
-
const
|
|
7385
|
+
const route41 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9613
7386
|
__proto__: null,
|
|
9614
7387
|
AppStarter,
|
|
9615
7388
|
AppStopper,
|
|
@@ -10102,7 +7875,7 @@ function TestsList$1() {
|
|
|
10102
7875
|
const ref = useRef(null);
|
|
10103
7876
|
return /* @__PURE__ */ jsx(Preview, { appInfo, inBrowserBrowserRef: ref });
|
|
10104
7877
|
}
|
|
10105
|
-
const
|
|
7878
|
+
const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10106
7879
|
__proto__: null,
|
|
10107
7880
|
default: TestsList$1,
|
|
10108
7881
|
headers: headers$6,
|
|
@@ -11332,7 +9105,7 @@ function StopTest({
|
|
|
11332
9105
|
)
|
|
11333
9106
|
] });
|
|
11334
9107
|
}
|
|
11335
|
-
const
|
|
9108
|
+
const route42 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11336
9109
|
__proto__: null,
|
|
11337
9110
|
ClearTest,
|
|
11338
9111
|
StopTest,
|
|
@@ -11419,7 +9192,7 @@ async function loader$i({ request, params }) {
|
|
|
11419
9192
|
const pathnameParam = reqUrl.searchParams.get("pathname");
|
|
11420
9193
|
if (pathnameParam === "" || pathnameParam === "/") {
|
|
11421
9194
|
reqUrl.searchParams.delete("pathname");
|
|
11422
|
-
throw redirect(reqUrl.toString());
|
|
9195
|
+
throw redirect$1(reqUrl.toString());
|
|
11423
9196
|
}
|
|
11424
9197
|
const problemApp = await getExerciseApp(
|
|
11425
9198
|
{ ...params, type: "problem" },
|
|
@@ -11722,7 +9495,7 @@ function ErrorBoundary$1() {
|
|
|
11722
9495
|
}
|
|
11723
9496
|
);
|
|
11724
9497
|
}
|
|
11725
|
-
const
|
|
9498
|
+
const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11726
9499
|
__proto__: null,
|
|
11727
9500
|
ErrorBoundary: ErrorBoundary$1,
|
|
11728
9501
|
default: ExercisePartRoute,
|
|
@@ -11750,7 +9523,7 @@ function TestsList() {
|
|
|
11750
9523
|
const { appInfo } = useLoaderData();
|
|
11751
9524
|
return /* @__PURE__ */ jsx(TestUI, { playgroundAppInfo: appInfo });
|
|
11752
9525
|
}
|
|
11753
|
-
const
|
|
9526
|
+
const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11754
9527
|
__proto__: null,
|
|
11755
9528
|
default: TestsList,
|
|
11756
9529
|
headers: headers$4,
|
|
@@ -11761,7 +9534,7 @@ async function loader$g({ params }) {
|
|
|
11761
9534
|
(a) => isProblemApp(a) ? a : null
|
|
11762
9535
|
);
|
|
11763
9536
|
if (problemApp) {
|
|
11764
|
-
return redirect(
|
|
9537
|
+
return redirect$1(
|
|
11765
9538
|
`/exercise/${params.exerciseNumber}/${params.stepNumber}/problem`
|
|
11766
9539
|
);
|
|
11767
9540
|
}
|
|
@@ -11770,13 +9543,13 @@ async function loader$g({ params }) {
|
|
|
11770
9543
|
type: "solution"
|
|
11771
9544
|
}).then((a) => isSolutionApp(a) ? a : null);
|
|
11772
9545
|
if (solutionApp) {
|
|
11773
|
-
return redirect(
|
|
9546
|
+
return redirect$1(
|
|
11774
9547
|
`/exercise/${params.exerciseNumber}/${params.stepNumber}/solution`
|
|
11775
9548
|
);
|
|
11776
9549
|
}
|
|
11777
9550
|
throw new Response("Not found", { status: 404 });
|
|
11778
9551
|
}
|
|
11779
|
-
const
|
|
9552
|
+
const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11780
9553
|
__proto__: null,
|
|
11781
9554
|
loader: loader$g
|
|
11782
9555
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -11814,7 +9587,7 @@ async function loader$f({ request, params }) {
|
|
|
11814
9587
|
timings,
|
|
11815
9588
|
request
|
|
11816
9589
|
});
|
|
11817
|
-
const finishedFilepath = path.join(
|
|
9590
|
+
const finishedFilepath = path$1.join(
|
|
11818
9591
|
workshopRoot,
|
|
11819
9592
|
"exercises",
|
|
11820
9593
|
exercise.dirName,
|
|
@@ -11957,7 +9730,7 @@ function Survey$1({
|
|
|
11957
9730
|
)
|
|
11958
9731
|
] });
|
|
11959
9732
|
}
|
|
11960
|
-
const
|
|
9733
|
+
const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11961
9734
|
__proto__: null,
|
|
11962
9735
|
default: ExerciseFinished$1,
|
|
11963
9736
|
headers: headers$3,
|
|
@@ -12113,7 +9886,7 @@ function Survey({
|
|
|
12113
9886
|
)
|
|
12114
9887
|
] });
|
|
12115
9888
|
}
|
|
12116
|
-
const
|
|
9889
|
+
const route21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12117
9890
|
__proto__: null,
|
|
12118
9891
|
default: ExerciseFinished,
|
|
12119
9892
|
handle: handle$4,
|
|
@@ -12242,7 +10015,7 @@ function Index() {
|
|
|
12242
10015
|
function ErrorBoundary() {
|
|
12243
10016
|
return /* @__PURE__ */ jsx(GeneralErrorBoundary, {});
|
|
12244
10017
|
}
|
|
12245
|
-
const
|
|
10018
|
+
const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12246
10019
|
__proto__: null,
|
|
12247
10020
|
ErrorBoundary,
|
|
12248
10021
|
default: Index,
|
|
@@ -12346,7 +10119,7 @@ async function loader$c({ request }) {
|
|
|
12346
10119
|
};
|
|
12347
10120
|
});
|
|
12348
10121
|
}
|
|
12349
|
-
const
|
|
10122
|
+
const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12350
10123
|
__proto__: null,
|
|
12351
10124
|
EventSchema,
|
|
12352
10125
|
loader: loader$c
|
|
@@ -12357,7 +10130,7 @@ const handle$3 = {
|
|
|
12357
10130
|
async function loader$b() {
|
|
12358
10131
|
ensureUndeployed();
|
|
12359
10132
|
const isAuthenticated = Boolean(await getAuthInfo());
|
|
12360
|
-
if (isAuthenticated) throw redirect("/account");
|
|
10133
|
+
if (isAuthenticated) throw redirect$1("/account");
|
|
12361
10134
|
return json$1({});
|
|
12362
10135
|
}
|
|
12363
10136
|
async function action$2() {
|
|
@@ -12469,7 +10242,7 @@ function Login() {
|
|
|
12469
10242
|
] })
|
|
12470
10243
|
] }) });
|
|
12471
10244
|
}
|
|
12472
|
-
const
|
|
10245
|
+
const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12473
10246
|
__proto__: null,
|
|
12474
10247
|
action: action$2,
|
|
12475
10248
|
default: Login,
|
|
@@ -12532,7 +10305,7 @@ function Support() {
|
|
|
12532
10305
|
] })
|
|
12533
10306
|
] });
|
|
12534
10307
|
}
|
|
12535
|
-
const
|
|
10308
|
+
const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12536
10309
|
__proto__: null,
|
|
12537
10310
|
default: Support,
|
|
12538
10311
|
handle: handle$2
|
|
@@ -12543,7 +10316,7 @@ async function clearData() {
|
|
|
12543
10316
|
}
|
|
12544
10317
|
async function clearCaches() {
|
|
12545
10318
|
if (ENV.EPICSHOP_DEPLOYED) return;
|
|
12546
|
-
await fsExtra.remove(path
|
|
10319
|
+
await fsExtra.remove(path.join(workshopRoot, "node_modules", ".cache"));
|
|
12547
10320
|
await deleteCache();
|
|
12548
10321
|
}
|
|
12549
10322
|
async function startInspector() {
|
|
@@ -12579,7 +10352,7 @@ async function loader$a({ request }) {
|
|
|
12579
10352
|
(a, i, ar) => ar.findIndex((b) => a.name === b.name) === i
|
|
12580
10353
|
);
|
|
12581
10354
|
const processes = {};
|
|
12582
|
-
const
|
|
10355
|
+
const testProcesses = {};
|
|
12583
10356
|
for (const [
|
|
12584
10357
|
name,
|
|
12585
10358
|
{ port: port2, process: process2, color }
|
|
@@ -12590,13 +10363,13 @@ async function loader$a({ request }) {
|
|
|
12590
10363
|
name,
|
|
12591
10364
|
{ process: process2, exitCode }
|
|
12592
10365
|
] of getProcesses().testProcesses.entries()) {
|
|
12593
|
-
|
|
10366
|
+
testProcesses[name] = { pid: process2 == null ? void 0 : process2.pid, exitCode };
|
|
12594
10367
|
}
|
|
12595
10368
|
return json$1(
|
|
12596
10369
|
{
|
|
12597
10370
|
apps,
|
|
12598
10371
|
processes,
|
|
12599
|
-
testProcesses
|
|
10372
|
+
testProcesses,
|
|
12600
10373
|
inspectorRunning: global.__inspector_open__
|
|
12601
10374
|
},
|
|
12602
10375
|
{
|
|
@@ -12744,7 +10517,7 @@ function AdminLayout() {
|
|
|
12744
10517
|
function Pinger({
|
|
12745
10518
|
status
|
|
12746
10519
|
}) {
|
|
12747
|
-
const
|
|
10520
|
+
const colors = {
|
|
12748
10521
|
running: {
|
|
12749
10522
|
pinger: "bg-green-400",
|
|
12750
10523
|
circle: "bg-green-500"
|
|
@@ -12762,21 +10535,21 @@ function Pinger({
|
|
|
12762
10535
|
}
|
|
12763
10536
|
}[status];
|
|
12764
10537
|
return /* @__PURE__ */ jsxs("span", { className: "relative flex h-3 w-3", children: [
|
|
12765
|
-
|
|
10538
|
+
colors.pinger ? /* @__PURE__ */ jsx(
|
|
12766
10539
|
"span",
|
|
12767
10540
|
{
|
|
12768
|
-
className: `absolute inline-flex h-full w-full animate-ping rounded-full ${
|
|
10541
|
+
className: `absolute inline-flex h-full w-full animate-ping rounded-full ${colors.pinger} opacity-75`
|
|
12769
10542
|
}
|
|
12770
10543
|
) : null,
|
|
12771
10544
|
/* @__PURE__ */ jsx(
|
|
12772
10545
|
"span",
|
|
12773
10546
|
{
|
|
12774
|
-
className: `relative inline-flex h-3 w-3 rounded-full ${
|
|
10547
|
+
className: `relative inline-flex h-3 w-3 rounded-full ${colors.circle}`
|
|
12775
10548
|
}
|
|
12776
10549
|
)
|
|
12777
10550
|
] });
|
|
12778
10551
|
}
|
|
12779
|
-
const
|
|
10552
|
+
const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12780
10553
|
__proto__: null,
|
|
12781
10554
|
action: action$1,
|
|
12782
10555
|
default: AdminLayout,
|
|
@@ -12789,7 +10562,7 @@ async function loader$9() {
|
|
|
12789
10562
|
const apps = await getApps();
|
|
12790
10563
|
return json$1({ apps });
|
|
12791
10564
|
}
|
|
12792
|
-
const
|
|
10565
|
+
const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12793
10566
|
__proto__: null,
|
|
12794
10567
|
loader: loader$9
|
|
12795
10568
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12798,7 +10571,7 @@ async function loader$8() {
|
|
|
12798
10571
|
const entries = await getAllFileCacheEntries();
|
|
12799
10572
|
return json$1({ entries });
|
|
12800
10573
|
}
|
|
12801
|
-
const
|
|
10574
|
+
const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12802
10575
|
__proto__: null,
|
|
12803
10576
|
loader: loader$8
|
|
12804
10577
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12810,7 +10583,7 @@ async function loader$7({ request }) {
|
|
|
12810
10583
|
{ headers: { "Server-Timing": getServerTimeHeader(timings) } }
|
|
12811
10584
|
);
|
|
12812
10585
|
}
|
|
12813
|
-
const
|
|
10586
|
+
const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12814
10587
|
__proto__: null,
|
|
12815
10588
|
loader: loader$7
|
|
12816
10589
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12899,7 +10672,7 @@ function DiffViewer() {
|
|
|
12899
10672
|
}
|
|
12900
10673
|
);
|
|
12901
10674
|
}
|
|
12902
|
-
const
|
|
10675
|
+
const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12903
10676
|
__proto__: null,
|
|
12904
10677
|
default: DiffViewer,
|
|
12905
10678
|
loader: loader$6
|
|
@@ -12912,7 +10685,7 @@ async function loader$5({ request }) {
|
|
|
12912
10685
|
{ headers: { "Server-Timing": getServerTimeHeader(timings) } }
|
|
12913
10686
|
);
|
|
12914
10687
|
}
|
|
12915
|
-
const
|
|
10688
|
+
const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12916
10689
|
__proto__: null,
|
|
12917
10690
|
loader: loader$5
|
|
12918
10691
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -13045,8 +10818,8 @@ async function getOgImg(jsx2, { request, timings }) {
|
|
|
13045
10818
|
const data = pngData.asPng();
|
|
13046
10819
|
return data;
|
|
13047
10820
|
}
|
|
13048
|
-
async function getEmoji(
|
|
13049
|
-
const emojiCode = emojiToCodePoints(
|
|
10821
|
+
async function getEmoji(emoji, { request, timings }) {
|
|
10822
|
+
const emojiCode = emojiToCodePoints(emoji);
|
|
13050
10823
|
if (!emojiCode) return null;
|
|
13051
10824
|
const emojiUrl = `https://cdn.jsdelivr.net/gh/jdecked/twemoji@15/assets/svg/${emojiCode}.svg`;
|
|
13052
10825
|
return cachified({
|
|
@@ -13061,10 +10834,10 @@ async function getEmoji(emoji2, { request, timings }) {
|
|
|
13061
10834
|
}
|
|
13062
10835
|
});
|
|
13063
10836
|
}
|
|
13064
|
-
function emojiToCodePoints(
|
|
10837
|
+
function emojiToCodePoints(emoji) {
|
|
13065
10838
|
const codePoints = [];
|
|
13066
|
-
for (let i = 0; i <
|
|
13067
|
-
const codePoint =
|
|
10839
|
+
for (let i = 0; i < emoji.length; i++) {
|
|
10840
|
+
const codePoint = emoji.codePointAt(i);
|
|
13068
10841
|
if (!codePoint) continue;
|
|
13069
10842
|
codePoints.push(codePoint.toString(16));
|
|
13070
10843
|
if (codePoint > 65535) {
|
|
@@ -13243,7 +11016,7 @@ function OgLayout({
|
|
|
13243
11016
|
}
|
|
13244
11017
|
);
|
|
13245
11018
|
}
|
|
13246
|
-
const
|
|
11019
|
+
const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13247
11020
|
__proto__: null,
|
|
13248
11021
|
loader: loader$4
|
|
13249
11022
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -13272,8 +11045,8 @@ async function action({ request }) {
|
|
|
13272
11045
|
invariantResponse(intent === "complete", "Invalid intent");
|
|
13273
11046
|
const { onboardingVideo } = getWorkshopConfig();
|
|
13274
11047
|
await markOnboardingVideoWatched(onboardingVideo);
|
|
13275
|
-
if (authInfo) throw redirect("/");
|
|
13276
|
-
else throw redirect("/login");
|
|
11048
|
+
if (authInfo) throw redirect$1("/");
|
|
11049
|
+
else throw redirect$1("/login");
|
|
13277
11050
|
}
|
|
13278
11051
|
function Onboarding() {
|
|
13279
11052
|
const data = useLoaderData();
|
|
@@ -13291,7 +11064,7 @@ function Onboarding() {
|
|
|
13291
11064
|
/* @__PURE__ */ jsx(Form, { method: "post", className: "pb-4", children: /* @__PURE__ */ jsx(Button, { name: "intent", value: "complete", varient: "primary", children: "I've watched it. Let's go!" }) })
|
|
13292
11065
|
] });
|
|
13293
11066
|
}
|
|
13294
|
-
const
|
|
11067
|
+
const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13295
11068
|
__proto__: null,
|
|
13296
11069
|
action,
|
|
13297
11070
|
default: Onboarding,
|
|
@@ -13308,16 +11081,16 @@ async function loader$2() {
|
|
|
13308
11081
|
] of getProcesses().devProcesses.entries()) {
|
|
13309
11082
|
processes[name] = { port: port2, pid: process2.pid, color };
|
|
13310
11083
|
}
|
|
13311
|
-
const
|
|
11084
|
+
const testProcesses = {};
|
|
13312
11085
|
for (const [
|
|
13313
11086
|
name,
|
|
13314
11087
|
{ process: process2, exitCode, output }
|
|
13315
11088
|
] of getProcesses().testProcesses.entries()) {
|
|
13316
|
-
|
|
11089
|
+
testProcesses[name] = { pid: process2 == null ? void 0 : process2.pid, exitCode, output };
|
|
13317
11090
|
}
|
|
13318
|
-
return json$1({ processes, testProcesses
|
|
11091
|
+
return json$1({ processes, testProcesses });
|
|
13319
11092
|
}
|
|
13320
|
-
const
|
|
11093
|
+
const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13321
11094
|
__proto__: null,
|
|
13322
11095
|
loader: loader$2
|
|
13323
11096
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -13326,7 +11099,7 @@ function loader$1({ request }) {
|
|
|
13326
11099
|
{ type: "sitemap", value: `${getDomainUrl(request)}/sitemap.xml` }
|
|
13327
11100
|
]);
|
|
13328
11101
|
}
|
|
13329
|
-
const
|
|
11102
|
+
const route38 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13330
11103
|
__proto__: null,
|
|
13331
11104
|
loader: loader$1
|
|
13332
11105
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -13339,11 +11112,11 @@ async function loader({ request, context }) {
|
|
|
13339
11112
|
}
|
|
13340
11113
|
});
|
|
13341
11114
|
}
|
|
13342
|
-
const
|
|
11115
|
+
const route40 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
13343
11116
|
__proto__: null,
|
|
13344
11117
|
loader
|
|
13345
11118
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
13346
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-CW5CUf_W.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-Cl86OUog.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/error-boundary-BcGxKpte.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-YtpQLUzj.js", "/assets/index-BvihEwfB.js", "/assets/presence-Dd98AJ_5.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-ZHCWB__B.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/error-boundary-BcGxKpte.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-frPHZWgR.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/product-mjsTrqXs.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/index-BjNhezSK.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DDuV9rZX.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/button-CMkJ8p0a.js", "/assets/tooltip-6-WS-Xux.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DYeU0QX6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/user-Boua6jiU.js", "/assets/discord-C9bVfiZ6.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Cfbi6StB.js", "imports": ["/assets/index-DF_XBInP.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-BFTlBdr4.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-_687iGFh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BriOqd2R.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/set-playground-pMKmtPtz.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-wbMCZEiv.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/preview-DZcdG4kw.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-C2yr7Uiu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/button-CMkJ8p0a.js", "/assets/diff-B6thd_Sf.js", "/assets/error-boundary-BcGxKpte.js", "/assets/discord-C9bVfiZ6.js", "/assets/index-YtpQLUzj.js", "/assets/tests-BeAEgPAw.js", "/assets/preview-DZcdG4kw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-B6zIK2V6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/epic-video-bs7WmhbC.js", "/assets/accordion-DuE9VejZ.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/tests-BeAEgPAw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BEfn-nJi.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-C2dgX1d-.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-Co-59mG2.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CuV1bRbu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-kjV7hrVt.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/use-event-source-CCGBLG92.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/product-mjsTrqXs.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-B0E_F4Zh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-BLJr2x2F.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/pe-CvPIToj6.js", "/assets/tooltip-6-WS-Xux.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-BEk79KPK.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/diff-B6thd_Sf.js", "/assets/nav-chevrons-DYiI8EMU.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-B4Z_yevk.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/button-CMkJ8p0a.js", "/assets/epic-video-bs7WmhbC.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] } }, "url": "/assets/manifest-d7c89645.js", "version": "d7c89645" };
|
|
11119
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-CW5CUf_W.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/root-Cl86OUog.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/error-boundary-BcGxKpte.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-YtpQLUzj.js", "/assets/index-BvihEwfB.js", "/assets/presence-Dd98AJ_5.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-ZHCWB__B.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/error-boundary-BcGxKpte.js"], "css": [] }, "routes/_app+/_layout": { "id": "routes/_app+/_layout", "parentId": "root", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-frPHZWgR.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/product-mjsTrqXs.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/index-BjNhezSK.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-DDuV9rZX.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/button-CMkJ8p0a.js", "/assets/tooltip-6-WS-Xux.js", "/assets/user-Boua6jiU.js", "/assets/presence-Dd98AJ_5.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.epic_ws[.js]": { "id": "routes/_app+/app.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DYeU0QX6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/user-Boua6jiU.js", "/assets/discord-C9bVfiZ6.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Cfbi6StB.js", "imports": ["/assets/index-DF_XBInP.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-BFTlBdr4.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-_687iGFh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BriOqd2R.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/set-playground-pMKmtPtz.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-wbMCZEiv.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/preview-DZcdG4kw.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-C2yr7Uiu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/button-CMkJ8p0a.js", "/assets/diff-B6thd_Sf.js", "/assets/error-boundary-BcGxKpte.js", "/assets/discord-C9bVfiZ6.js", "/assets/index-YtpQLUzj.js", "/assets/tests-BeAEgPAw.js", "/assets/preview-DZcdG4kw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-B6zIK2V6.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/epic-video-bs7WmhbC.js", "/assets/accordion-DuE9VejZ.js", "/assets/use-event-source-CCGBLG92.js", "/assets/set-playground-pMKmtPtz.js", "/assets/tests-BeAEgPAw.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-BEfn-nJi.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-C2dgX1d-.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/nav-chevrons-DYiI8EMU.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/mdx-CRxPouxB.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-Co-59mG2.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/index": { "id": "routes/_app+/index", "parentId": "routes/_app+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-CuV1bRbu.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/index-DBrRQJxF.js", "/assets/error-boundary-BcGxKpte.js", "/assets/mdx-CRxPouxB.js", "/assets/progress-Co-59mG2.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/login": { "id": "routes/_app+/login", "parentId": "routes/_app+/_layout", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-kjV7hrVt.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/use-event-source-CCGBLG92.js", "/assets/button-CMkJ8p0a.js", "/assets/loading-Br41_Pbf.js", "/assets/product-mjsTrqXs.js"], "css": [] }, "routes/_app+/support": { "id": "routes/_app+/support", "parentId": "routes/_app+/_layout", "path": "support", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/support-B0E_F4Zh.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js"], "css": [] }, "routes/admin+/_layout": { "id": "routes/admin+/_layout", "parentId": "root", "path": "admin", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-BLJr2x2F.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/pe-CvPIToj6.js", "/assets/tooltip-6-WS-Xux.js", "/assets/progress-Co-59mG2.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-BEk79KPK.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/tooltip-6-WS-Xux.js", "/assets/index-BjNhezSK.js", "/assets/index-BczhSZ3e.js", "/assets/request-info-DGnmXtfj.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/epic-video-bs7WmhbC.js", "/assets/progress-bar-F8_2mvYp.js", "/assets/accordion-DuE9VejZ.js", "/assets/mdx-CRxPouxB.js", "/assets/revalidation-ws-DcvYvzyj.js", "/assets/diff-B6thd_Sf.js", "/assets/nav-chevrons-DYiI8EMU.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-B4Z_yevk.js", "imports": ["/assets/index-DF_XBInP.js", "/assets/components-DZ8XIeZ3.js", "/assets/misc-BE75ioh8.js", "/assets/request-info-DGnmXtfj.js", "/assets/tooltip-6-WS-Xux.js", "/assets/pe-CvPIToj6.js", "/assets/index-BvihEwfB.js", "/assets/loading-Br41_Pbf.js", "/assets/user-Boua6jiU.js", "/assets/workshop-config-Ce9sSc3I.js", "/assets/button-CMkJ8p0a.js", "/assets/epic-video-bs7WmhbC.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] } }, "url": "/assets/manifest-b22910a7.js", "version": "b22910a7" };
|
|
13347
11120
|
const mode = "production";
|
|
13348
11121
|
const assetsBuildDirectory = "build/client";
|
|
13349
11122
|
const basename = "/";
|
|
@@ -13432,13 +11205,21 @@ const routes = {
|
|
|
13432
11205
|
caseSensitive: void 0,
|
|
13433
11206
|
module: route9
|
|
13434
11207
|
},
|
|
11208
|
+
"routes/_app+/app.epic_ws[.js]": {
|
|
11209
|
+
id: "routes/_app+/app.epic_ws[.js]",
|
|
11210
|
+
parentId: "routes/_app+/_layout",
|
|
11211
|
+
path: "app/epic_ws.js",
|
|
11212
|
+
index: void 0,
|
|
11213
|
+
caseSensitive: void 0,
|
|
11214
|
+
module: route10
|
|
11215
|
+
},
|
|
13435
11216
|
"routes/_app+/discord": {
|
|
13436
11217
|
id: "routes/_app+/discord",
|
|
13437
11218
|
parentId: "routes/_app+/_layout",
|
|
13438
11219
|
path: "discord",
|
|
13439
11220
|
index: void 0,
|
|
13440
11221
|
caseSensitive: void 0,
|
|
13441
|
-
module:
|
|
11222
|
+
module: route11
|
|
13442
11223
|
},
|
|
13443
11224
|
"routes/_app+/exercise+/_layout": {
|
|
13444
11225
|
id: "routes/_app+/exercise+/_layout",
|
|
@@ -13446,7 +11227,7 @@ const routes = {
|
|
|
13446
11227
|
path: "exercise",
|
|
13447
11228
|
index: void 0,
|
|
13448
11229
|
caseSensitive: void 0,
|
|
13449
|
-
module:
|
|
11230
|
+
module: route12
|
|
13450
11231
|
},
|
|
13451
11232
|
"routes/_app+/exercise+/$exerciseNumber": {
|
|
13452
11233
|
id: "routes/_app+/exercise+/$exerciseNumber",
|
|
@@ -13454,7 +11235,7 @@ const routes = {
|
|
|
13454
11235
|
path: ":exerciseNumber",
|
|
13455
11236
|
index: void 0,
|
|
13456
11237
|
caseSensitive: void 0,
|
|
13457
|
-
module:
|
|
11238
|
+
module: route13
|
|
13458
11239
|
},
|
|
13459
11240
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber": {
|
|
13460
11241
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber",
|
|
@@ -13462,7 +11243,7 @@ const routes = {
|
|
|
13462
11243
|
path: ":exerciseNumber/:stepNumber",
|
|
13463
11244
|
index: void 0,
|
|
13464
11245
|
caseSensitive: void 0,
|
|
13465
|
-
module:
|
|
11246
|
+
module: route14
|
|
13466
11247
|
},
|
|
13467
11248
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": {
|
|
13468
11249
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout",
|
|
@@ -13470,7 +11251,7 @@ const routes = {
|
|
|
13470
11251
|
path: ":type",
|
|
13471
11252
|
index: void 0,
|
|
13472
11253
|
caseSensitive: void 0,
|
|
13473
|
-
module:
|
|
11254
|
+
module: route15
|
|
13474
11255
|
},
|
|
13475
11256
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": {
|
|
13476
11257
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app",
|
|
@@ -13478,7 +11259,7 @@ const routes = {
|
|
|
13478
11259
|
path: "app",
|
|
13479
11260
|
index: void 0,
|
|
13480
11261
|
caseSensitive: void 0,
|
|
13481
|
-
module:
|
|
11262
|
+
module: route16
|
|
13482
11263
|
},
|
|
13483
11264
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": {
|
|
13484
11265
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index",
|
|
@@ -13486,7 +11267,7 @@ const routes = {
|
|
|
13486
11267
|
path: void 0,
|
|
13487
11268
|
index: true,
|
|
13488
11269
|
caseSensitive: void 0,
|
|
13489
|
-
module:
|
|
11270
|
+
module: route17
|
|
13490
11271
|
},
|
|
13491
11272
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": {
|
|
13492
11273
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test",
|
|
@@ -13494,7 +11275,7 @@ const routes = {
|
|
|
13494
11275
|
path: "test",
|
|
13495
11276
|
index: void 0,
|
|
13496
11277
|
caseSensitive: void 0,
|
|
13497
|
-
module:
|
|
11278
|
+
module: route18
|
|
13498
11279
|
},
|
|
13499
11280
|
"routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": {
|
|
13500
11281
|
id: "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index",
|
|
@@ -13502,7 +11283,7 @@ const routes = {
|
|
|
13502
11283
|
path: void 0,
|
|
13503
11284
|
index: true,
|
|
13504
11285
|
caseSensitive: void 0,
|
|
13505
|
-
module:
|
|
11286
|
+
module: route19
|
|
13506
11287
|
},
|
|
13507
11288
|
"routes/_app+/exercise+/$exerciseNumber_.finished": {
|
|
13508
11289
|
id: "routes/_app+/exercise+/$exerciseNumber_.finished",
|
|
@@ -13510,7 +11291,7 @@ const routes = {
|
|
|
13510
11291
|
path: ":exerciseNumber/finished",
|
|
13511
11292
|
index: void 0,
|
|
13512
11293
|
caseSensitive: void 0,
|
|
13513
|
-
module:
|
|
11294
|
+
module: route20
|
|
13514
11295
|
},
|
|
13515
11296
|
"routes/_app+/finished": {
|
|
13516
11297
|
id: "routes/_app+/finished",
|
|
@@ -13518,7 +11299,7 @@ const routes = {
|
|
|
13518
11299
|
path: "finished",
|
|
13519
11300
|
index: void 0,
|
|
13520
11301
|
caseSensitive: void 0,
|
|
13521
|
-
module:
|
|
11302
|
+
module: route21
|
|
13522
11303
|
},
|
|
13523
11304
|
"routes/_app+/index": {
|
|
13524
11305
|
id: "routes/_app+/index",
|
|
@@ -13526,7 +11307,7 @@ const routes = {
|
|
|
13526
11307
|
path: void 0,
|
|
13527
11308
|
index: true,
|
|
13528
11309
|
caseSensitive: void 0,
|
|
13529
|
-
module:
|
|
11310
|
+
module: route22
|
|
13530
11311
|
},
|
|
13531
11312
|
"routes/_app+/login": {
|
|
13532
11313
|
id: "routes/_app+/login",
|
|
@@ -13534,7 +11315,7 @@ const routes = {
|
|
|
13534
11315
|
path: "login",
|
|
13535
11316
|
index: void 0,
|
|
13536
11317
|
caseSensitive: void 0,
|
|
13537
|
-
module:
|
|
11318
|
+
module: route23
|
|
13538
11319
|
},
|
|
13539
11320
|
"routes/_app+/support": {
|
|
13540
11321
|
id: "routes/_app+/support",
|
|
@@ -13542,7 +11323,7 @@ const routes = {
|
|
|
13542
11323
|
path: "support",
|
|
13543
11324
|
index: void 0,
|
|
13544
11325
|
caseSensitive: void 0,
|
|
13545
|
-
module:
|
|
11326
|
+
module: route24
|
|
13546
11327
|
},
|
|
13547
11328
|
"routes/admin+/_layout": {
|
|
13548
11329
|
id: "routes/admin+/_layout",
|
|
@@ -13550,7 +11331,7 @@ const routes = {
|
|
|
13550
11331
|
path: "admin",
|
|
13551
11332
|
index: void 0,
|
|
13552
11333
|
caseSensitive: void 0,
|
|
13553
|
-
module:
|
|
11334
|
+
module: route25
|
|
13554
11335
|
},
|
|
13555
11336
|
"routes/admin+/apps": {
|
|
13556
11337
|
id: "routes/admin+/apps",
|
|
@@ -13558,7 +11339,7 @@ const routes = {
|
|
|
13558
11339
|
path: "apps",
|
|
13559
11340
|
index: void 0,
|
|
13560
11341
|
caseSensitive: void 0,
|
|
13561
|
-
module:
|
|
11342
|
+
module: route26
|
|
13562
11343
|
},
|
|
13563
11344
|
"routes/admin+/cache": {
|
|
13564
11345
|
id: "routes/admin+/cache",
|
|
@@ -13566,7 +11347,7 @@ const routes = {
|
|
|
13566
11347
|
path: "cache",
|
|
13567
11348
|
index: void 0,
|
|
13568
11349
|
caseSensitive: void 0,
|
|
13569
|
-
module:
|
|
11350
|
+
module: route27
|
|
13570
11351
|
},
|
|
13571
11352
|
"routes/apps": {
|
|
13572
11353
|
id: "routes/apps",
|
|
@@ -13574,7 +11355,7 @@ const routes = {
|
|
|
13574
11355
|
path: "apps",
|
|
13575
11356
|
index: void 0,
|
|
13576
11357
|
caseSensitive: void 0,
|
|
13577
|
-
module:
|
|
11358
|
+
module: route28
|
|
13578
11359
|
},
|
|
13579
11360
|
"routes/diff": {
|
|
13580
11361
|
id: "routes/diff",
|
|
@@ -13582,7 +11363,7 @@ const routes = {
|
|
|
13582
11363
|
path: "diff",
|
|
13583
11364
|
index: void 0,
|
|
13584
11365
|
caseSensitive: void 0,
|
|
13585
|
-
module:
|
|
11366
|
+
module: route29
|
|
13586
11367
|
},
|
|
13587
11368
|
"routes/discord.callback": {
|
|
13588
11369
|
id: "routes/discord.callback",
|
|
@@ -13590,7 +11371,7 @@ const routes = {
|
|
|
13590
11371
|
path: "discord/callback",
|
|
13591
11372
|
index: void 0,
|
|
13592
11373
|
caseSensitive: void 0,
|
|
13593
|
-
module:
|
|
11374
|
+
module: route30
|
|
13594
11375
|
},
|
|
13595
11376
|
"routes/exercises": {
|
|
13596
11377
|
id: "routes/exercises",
|
|
@@ -13598,7 +11379,7 @@ const routes = {
|
|
|
13598
11379
|
path: "exercises",
|
|
13599
11380
|
index: void 0,
|
|
13600
11381
|
caseSensitive: void 0,
|
|
13601
|
-
module:
|
|
11382
|
+
module: route31
|
|
13602
11383
|
},
|
|
13603
11384
|
"routes/launch-editor": {
|
|
13604
11385
|
id: "routes/launch-editor",
|
|
@@ -13606,7 +11387,7 @@ const routes = {
|
|
|
13606
11387
|
path: "launch-editor",
|
|
13607
11388
|
index: void 0,
|
|
13608
11389
|
caseSensitive: void 0,
|
|
13609
|
-
module:
|
|
11390
|
+
module: route32
|
|
13610
11391
|
},
|
|
13611
11392
|
"routes/login-sse": {
|
|
13612
11393
|
id: "routes/login-sse",
|
|
@@ -13614,7 +11395,7 @@ const routes = {
|
|
|
13614
11395
|
path: "login-sse",
|
|
13615
11396
|
index: void 0,
|
|
13616
11397
|
caseSensitive: void 0,
|
|
13617
|
-
module:
|
|
11398
|
+
module: route33
|
|
13618
11399
|
},
|
|
13619
11400
|
"routes/og": {
|
|
13620
11401
|
id: "routes/og",
|
|
@@ -13622,7 +11403,7 @@ const routes = {
|
|
|
13622
11403
|
path: "og",
|
|
13623
11404
|
index: void 0,
|
|
13624
11405
|
caseSensitive: void 0,
|
|
13625
|
-
module:
|
|
11406
|
+
module: route34
|
|
13626
11407
|
},
|
|
13627
11408
|
"routes/onboarding": {
|
|
13628
11409
|
id: "routes/onboarding",
|
|
@@ -13630,7 +11411,7 @@ const routes = {
|
|
|
13630
11411
|
path: "onboarding",
|
|
13631
11412
|
index: void 0,
|
|
13632
11413
|
caseSensitive: void 0,
|
|
13633
|
-
module:
|
|
11414
|
+
module: route35
|
|
13634
11415
|
},
|
|
13635
11416
|
"routes/processes": {
|
|
13636
11417
|
id: "routes/processes",
|
|
@@ -13638,7 +11419,7 @@ const routes = {
|
|
|
13638
11419
|
path: "processes",
|
|
13639
11420
|
index: void 0,
|
|
13640
11421
|
caseSensitive: void 0,
|
|
13641
|
-
module:
|
|
11422
|
+
module: route36
|
|
13642
11423
|
},
|
|
13643
11424
|
"routes/progress": {
|
|
13644
11425
|
id: "routes/progress",
|
|
@@ -13646,7 +11427,7 @@ const routes = {
|
|
|
13646
11427
|
path: "progress",
|
|
13647
11428
|
index: void 0,
|
|
13648
11429
|
caseSensitive: void 0,
|
|
13649
|
-
module:
|
|
11430
|
+
module: route37
|
|
13650
11431
|
},
|
|
13651
11432
|
"routes/robots[.]txt": {
|
|
13652
11433
|
id: "routes/robots[.]txt",
|
|
@@ -13654,7 +11435,7 @@ const routes = {
|
|
|
13654
11435
|
path: "robots.txt",
|
|
13655
11436
|
index: void 0,
|
|
13656
11437
|
caseSensitive: void 0,
|
|
13657
|
-
module:
|
|
11438
|
+
module: route38
|
|
13658
11439
|
},
|
|
13659
11440
|
"routes/set-playground": {
|
|
13660
11441
|
id: "routes/set-playground",
|
|
@@ -13662,7 +11443,7 @@ const routes = {
|
|
|
13662
11443
|
path: "set-playground",
|
|
13663
11444
|
index: void 0,
|
|
13664
11445
|
caseSensitive: void 0,
|
|
13665
|
-
module:
|
|
11446
|
+
module: route39
|
|
13666
11447
|
},
|
|
13667
11448
|
"routes/sitemap[.]xml": {
|
|
13668
11449
|
id: "routes/sitemap[.]xml",
|
|
@@ -13670,7 +11451,7 @@ const routes = {
|
|
|
13670
11451
|
path: "sitemap.xml",
|
|
13671
11452
|
index: void 0,
|
|
13672
11453
|
caseSensitive: void 0,
|
|
13673
|
-
module:
|
|
11454
|
+
module: route40
|
|
13674
11455
|
},
|
|
13675
11456
|
"routes/start": {
|
|
13676
11457
|
id: "routes/start",
|
|
@@ -13678,7 +11459,7 @@ const routes = {
|
|
|
13678
11459
|
path: "start",
|
|
13679
11460
|
index: void 0,
|
|
13680
11461
|
caseSensitive: void 0,
|
|
13681
|
-
module:
|
|
11462
|
+
module: route41
|
|
13682
11463
|
},
|
|
13683
11464
|
"routes/test": {
|
|
13684
11465
|
id: "routes/test",
|
|
@@ -13686,7 +11467,7 @@ const routes = {
|
|
|
13686
11467
|
path: "test",
|
|
13687
11468
|
index: void 0,
|
|
13688
11469
|
caseSensitive: void 0,
|
|
13689
|
-
module:
|
|
11470
|
+
module: route42
|
|
13690
11471
|
},
|
|
13691
11472
|
"routes/theme/index": {
|
|
13692
11473
|
id: "routes/theme/index",
|
|
@@ -13694,7 +11475,7 @@ const routes = {
|
|
|
13694
11475
|
path: "theme",
|
|
13695
11476
|
index: void 0,
|
|
13696
11477
|
caseSensitive: void 0,
|
|
13697
|
-
module:
|
|
11478
|
+
module: route43
|
|
13698
11479
|
},
|
|
13699
11480
|
"routes/video-player/index": {
|
|
13700
11481
|
id: "routes/video-player/index",
|
|
@@ -13702,7 +11483,7 @@ const routes = {
|
|
|
13702
11483
|
path: "video-player",
|
|
13703
11484
|
index: void 0,
|
|
13704
11485
|
caseSensitive: void 0,
|
|
13705
|
-
module:
|
|
11486
|
+
module: route44
|
|
13706
11487
|
}
|
|
13707
11488
|
};
|
|
13708
11489
|
export {
|