@epic-web/workshop-app 4.2.6 → 4.2.8
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/{_-ByTWgb53.js → _-CsdFvUbA.js} +2 -2
- package/build/client/assets/{_-ByTWgb53.js.map → _-CsdFvUbA.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber-s_qbmGEJ.js → _exerciseNumber-DWZNkWZM.js} +2 -2
- package/build/client/assets/{_exerciseNumber-s_qbmGEJ.js.map → _exerciseNumber-DWZNkWZM.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_._stepNumber-D1wwEMQx.js → _exerciseNumber_._stepNumber-P76hDsE6.js} +2 -2
- package/build/client/assets/{_exerciseNumber_._stepNumber-D1wwEMQx.js.map → _exerciseNumber_._stepNumber-P76hDsE6.js.map} +1 -1
- package/build/client/assets/{_exerciseNumber_.finished-DJgT9oaU.js → _exerciseNumber_.finished-CpC-flTW.js} +2 -2
- package/build/client/assets/{_exerciseNumber_.finished-DJgT9oaU.js.map → _exerciseNumber_.finished-CpC-flTW.js.map} +1 -1
- package/build/client/assets/{_layout-49l6Rvwp.js → _layout-BSoUgboG.js} +2 -2
- package/build/client/assets/{_layout-49l6Rvwp.js.map → _layout-BSoUgboG.js.map} +1 -1
- package/build/client/assets/{_layout-D7Qo_r0X.js → _layout-C8fK4Z98.js} +2 -2
- package/build/client/assets/{_layout-D7Qo_r0X.js.map → _layout-C8fK4Z98.js.map} +1 -1
- package/build/client/assets/_layout-D1A2zp9y.js +2 -0
- package/build/client/assets/{_layout-Bj9PyQQD.js.map → _layout-D1A2zp9y.js.map} +1 -1
- package/build/client/assets/{_layout-BaPtC79F.js → _layout-DEZ-aTmx.js} +2 -2
- package/build/client/assets/{_layout-BaPtC79F.js.map → _layout-DEZ-aTmx.js.map} +1 -1
- package/build/client/assets/{account-Bk4o4AzZ.js → account-BeKnQB9r.js} +2 -2
- package/build/client/assets/{account-Bk4o4AzZ.js.map → account-BeKnQB9r.js.map} +1 -1
- package/build/client/assets/{button-DnQOyJAN.js → button-Da1iG51o.js} +2 -2
- package/build/client/assets/{button-DnQOyJAN.js.map → button-Da1iG51o.js.map} +1 -1
- package/build/client/assets/{client-hints-KnbHFIgn.js → client-hints-B2pbEa_9.js} +2 -2
- package/build/client/assets/{client-hints-KnbHFIgn.js.map → client-hints-B2pbEa_9.js.map} +1 -1
- package/build/client/assets/{components-Dj3sm47B.js → components-BM_XUa9h.js} +15 -15
- package/build/client/assets/{components-Dj3sm47B.js.map → components-BM_XUa9h.js.map} +1 -1
- package/build/client/assets/diff-BDeBUdSw.js +2 -0
- package/build/client/assets/{diff-CLRdJhCn.js.map → diff-BDeBUdSw.js.map} +1 -1
- package/build/client/assets/{diff-CT3-9rtW.js → diff-BQhWtDyS.js} +2 -2
- package/build/client/assets/{diff-CT3-9rtW.js.map → diff-BQhWtDyS.js.map} +1 -1
- package/build/client/assets/{discord-CsluX01E.js → discord-BMNnObT9.js} +2 -2
- package/build/client/assets/{discord-CsluX01E.js.map → discord-BMNnObT9.js.map} +1 -1
- package/build/client/assets/discord-DdAReDkL.js +2 -0
- package/build/client/assets/discord-DdAReDkL.js.map +1 -0
- package/build/client/assets/{entry.client-DBBrAxtJ.js → entry.client-XC5tKTFs.js} +2 -2
- package/build/client/assets/{entry.client-DBBrAxtJ.js.map → entry.client-XC5tKTFs.js.map} +1 -1
- package/build/client/assets/{epic-video-Df7qGSN7.js → epic-video-CxRPT-8l.js} +2 -2
- package/build/client/assets/{epic-video-Df7qGSN7.js.map → epic-video-CxRPT-8l.js.map} +1 -1
- package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js +2 -0
- package/build/client/assets/epic_ws_.js_-l0sNRNKZ.js.map +1 -0
- package/build/client/assets/{error-boundary-Bg54_knF.js → error-boundary-tJSWbP6w.js} +2 -2
- package/build/client/assets/{error-boundary-Bg54_knF.js.map → error-boundary-tJSWbP6w.js.map} +1 -1
- package/build/client/assets/{finished-Dw3SJA8A.js → finished-CMGRmsnb.js} +2 -2
- package/build/client/assets/{finished-Dw3SJA8A.js.map → finished-CMGRmsnb.js.map} +1 -1
- package/build/client/assets/{index-BL4aE6WC.js → index-B8G3eD8F.js} +2 -2
- package/build/client/assets/{index-BL4aE6WC.js.map → index-B8G3eD8F.js.map} +1 -1
- package/build/client/assets/index-BDqSZ0-h.js +36 -0
- package/build/client/assets/{index-D1WEsmVZ.js.map → index-BDqSZ0-h.js.map} +1 -1
- package/build/client/assets/{index-BfoHqrT5.js → index-BymJEf3X.js} +2 -2
- package/build/client/assets/{index-BfoHqrT5.js.map → index-BymJEf3X.js.map} +1 -1
- package/build/client/assets/{index-YgRENgjt.js → index-CQZ5FyEE.js} +2 -2
- package/build/client/assets/{index-YgRENgjt.js.map → index-CQZ5FyEE.js.map} +1 -1
- package/build/client/assets/{index-CLnz0tXz.js → index-Dc59VwXx.js} +2 -2
- package/build/client/assets/{index-CLnz0tXz.js.map → index-Dc59VwXx.js.map} +1 -1
- package/build/client/assets/{loading-D-DClzm1.js → loading-DsjO-T0W.js} +2 -2
- package/build/client/assets/{loading-D-DClzm1.js.map → loading-DsjO-T0W.js.map} +1 -1
- package/build/client/assets/{login-CjvZj820.js → login-CcuvIoiW.js} +2 -2
- package/build/client/assets/{login-CjvZj820.js.map → login-CcuvIoiW.js.map} +1 -1
- package/build/client/assets/manifest-1656ae4d.js +1 -0
- package/build/client/assets/mdx-CZ_BPVoS.js +2 -0
- package/build/client/assets/{mdx-ytg-y2nh.js.map → mdx-CZ_BPVoS.js.map} +1 -1
- package/build/client/assets/misc-C1rq7sPa.js +2 -0
- package/build/client/assets/{misc-CXGQ7VS9.js.map → misc-C1rq7sPa.js.map} +1 -1
- package/build/client/assets/{nav-chevrons-D8c9lJW6.js → nav-chevrons-C-dN3WfT.js} +2 -2
- package/build/client/assets/{nav-chevrons-D8c9lJW6.js.map → nav-chevrons-C-dN3WfT.js.map} +1 -1
- package/build/client/assets/{onboarding-BxcIdiGj.js → onboarding-CfXLKsN3.js} +2 -2
- package/build/client/assets/{onboarding-BxcIdiGj.js.map → onboarding-CfXLKsN3.js.map} +1 -1
- package/build/client/assets/{presence-u-05JV3Z.js → presence-BF7lWuVd.js} +2 -2
- package/build/client/assets/{presence-u-05JV3Z.js.map → presence-BF7lWuVd.js.map} +1 -1
- package/build/client/assets/{progress-bar-DX6yYES2.js → progress-bar-BmszwN_j.js} +2 -2
- package/build/client/assets/{progress-bar-DX6yYES2.js.map → progress-bar-BmszwN_j.js.map} +1 -1
- package/build/client/assets/{progress-CBZt2pmu.js → progress-mfa_5CZx.js} +2 -2
- package/build/client/assets/{progress-CBZt2pmu.js.map → progress-mfa_5CZx.js.map} +1 -1
- package/build/client/assets/{root-B02acrJe.js → root-1Cc21xa6.js} +2 -2
- package/build/client/assets/{root-B02acrJe.js.map → root-1Cc21xa6.js.map} +1 -1
- package/build/client/assets/{support-QTdmLyE7.js → support--jou3sWH.js} +2 -2
- package/build/client/assets/{support-QTdmLyE7.js.map → support--jou3sWH.js.map} +1 -1
- package/build/client/assets/{tooltip-CVFWPOu0.js → tooltip-BlVFw-is.js} +2 -2
- package/build/client/assets/{tooltip-CVFWPOu0.js.map → tooltip-BlVFw-is.js.map} +1 -1
- package/build/client/assets/{use-event-source-DXlRuRq2.js → use-event-source-DPLyo0Bh.js} +2 -2
- package/build/client/assets/{use-event-source-DXlRuRq2.js.map → use-event-source-DPLyo0Bh.js.map} +1 -1
- package/build/client/assets/{user-DiGtbaa7.js → user-p2QVtDZI.js} +2 -2
- package/build/client/assets/{user-DiGtbaa7.js.map → user-p2QVtDZI.js.map} +1 -1
- package/build/server/index.js +189 -706
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/_layout-Bj9PyQQD.js +0 -2
- package/build/client/assets/app._id-l0sNRNKZ.js +0 -2
- package/build/client/assets/app._id-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/app._id._-l0sNRNKZ.js +0 -2
- package/build/client/assets/app._id._-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/app._id.api._-l0sNRNKZ.js +0 -2
- package/build/client/assets/app._id.api._-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/app._id.epic_ws_.js_-l0sNRNKZ.js +0 -2
- package/build/client/assets/app._id.epic_ws_.js_-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/app._id.test._testName-l0sNRNKZ.js +0 -2
- package/build/client/assets/app._id.test._testName-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/diff-CLRdJhCn.js +0 -2
- package/build/client/assets/discord-CK7yz4w6.js +0 -2
- package/build/client/assets/discord-CK7yz4w6.js.map +0 -1
- package/build/client/assets/index-D1WEsmVZ.js +0 -36
- package/build/client/assets/kcd_ws_.js_-l0sNRNKZ.js +0 -2
- package/build/client/assets/kcd_ws_.js_-l0sNRNKZ.js.map +0 -1
- package/build/client/assets/manifest-9027f7b6.js +0 -1
- package/build/client/assets/mdx-ytg-y2nh.js +0 -2
- package/build/client/assets/misc-CXGQ7VS9.js +0 -2
package/build/server/index.js
CHANGED
|
@@ -3163,7 +3163,7 @@ const ThemeFormSchema = z$1.object({
|
|
|
3163
3163
|
redirectTo: z$1.string().optional(),
|
|
3164
3164
|
theme: z$1.enum(["system", "light", "dark"])
|
|
3165
3165
|
});
|
|
3166
|
-
async function action$
|
|
3166
|
+
async function action$c({ request }) {
|
|
3167
3167
|
const formData = await request.formData();
|
|
3168
3168
|
const submission = parseWithZod(formData, {
|
|
3169
3169
|
schema: ThemeFormSchema
|
|
@@ -3242,10 +3242,10 @@ function useTheme() {
|
|
|
3242
3242
|
}
|
|
3243
3243
|
return requestInfo.session.theme ?? hints.theme;
|
|
3244
3244
|
}
|
|
3245
|
-
const
|
|
3245
|
+
const route34 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
3246
3246
|
__proto__: null,
|
|
3247
3247
|
ThemeSwitch,
|
|
3248
|
-
action: action$
|
|
3248
|
+
action: action$c,
|
|
3249
3249
|
useTheme
|
|
3250
3250
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
3251
3251
|
const appStylesheetUrl = "/assets/app-B0HiIPBO.css";
|
|
@@ -3799,7 +3799,7 @@ const links = () => {
|
|
|
3799
3799
|
const meta$5 = ({ data }) => {
|
|
3800
3800
|
return [{ title: data == null ? void 0 : data.workshopTitle }];
|
|
3801
3801
|
};
|
|
3802
|
-
async function loader$
|
|
3802
|
+
async function loader$r({ request }) {
|
|
3803
3803
|
const timings = makeTimings("rootLoader");
|
|
3804
3804
|
const onboarding = await readOnboardingData();
|
|
3805
3805
|
if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.finishedTourVideo)) {
|
|
@@ -4004,10 +4004,10 @@ const route0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
4004
4004
|
default: AppWithProviders,
|
|
4005
4005
|
headers: headers$8,
|
|
4006
4006
|
links,
|
|
4007
|
-
loader: loader$
|
|
4007
|
+
loader: loader$r,
|
|
4008
4008
|
meta: meta$5
|
|
4009
4009
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4010
|
-
async function loader$
|
|
4010
|
+
async function loader$q() {
|
|
4011
4011
|
throw new Response("Not found", { status: 404 });
|
|
4012
4012
|
}
|
|
4013
4013
|
function NotFound() {
|
|
@@ -4034,7 +4034,7 @@ const route1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
4034
4034
|
__proto__: null,
|
|
4035
4035
|
ErrorBoundary: ErrorBoundary$4,
|
|
4036
4036
|
default: NotFound,
|
|
4037
|
-
loader: loader$
|
|
4037
|
+
loader: loader$q
|
|
4038
4038
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4039
4039
|
function useEpicProgress() {
|
|
4040
4040
|
const data = useRouteLoaderData("root");
|
|
@@ -4165,7 +4165,7 @@ function useProgressItem({
|
|
|
4165
4165
|
}
|
|
4166
4166
|
return null;
|
|
4167
4167
|
}
|
|
4168
|
-
async function action$
|
|
4168
|
+
async function action$b({ request }) {
|
|
4169
4169
|
ensureUndeployed();
|
|
4170
4170
|
await requireAuthInfo({ request });
|
|
4171
4171
|
const formData = await request.formData();
|
|
@@ -4327,10 +4327,10 @@ function ProgressToggle({
|
|
|
4327
4327
|
)
|
|
4328
4328
|
] });
|
|
4329
4329
|
}
|
|
4330
|
-
const
|
|
4330
|
+
const route30 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4331
4331
|
__proto__: null,
|
|
4332
4332
|
ProgressToggle,
|
|
4333
|
-
action: action$
|
|
4333
|
+
action: action$b,
|
|
4334
4334
|
useEpicProgress,
|
|
4335
4335
|
useExerciseProgressClassName,
|
|
4336
4336
|
useNextExerciseRoute,
|
|
@@ -4355,7 +4355,7 @@ function useOptionalDiscordMember() {
|
|
|
4355
4355
|
const data = useRouteLoaderData("root");
|
|
4356
4356
|
return data == null ? void 0 : data.discordMember;
|
|
4357
4357
|
}
|
|
4358
|
-
async function loader$
|
|
4358
|
+
async function loader$p({ request }) {
|
|
4359
4359
|
var _a2;
|
|
4360
4360
|
const timings = makeTimings("stepLoader");
|
|
4361
4361
|
const [exercises, workshopTitle, playgroundAppName] = await Promise.all([
|
|
@@ -5052,7 +5052,7 @@ const route2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
5052
5052
|
__proto__: null,
|
|
5053
5053
|
default: App,
|
|
5054
5054
|
headers: headers$7,
|
|
5055
|
-
loader: loader$
|
|
5055
|
+
loader: loader$p
|
|
5056
5056
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5057
5057
|
function ExercisesLayout() {
|
|
5058
5058
|
return /* @__PURE__ */ jsx("div", { className: "flex h-full flex-grow", children: /* @__PURE__ */ jsx(Outlet, {}) });
|
|
@@ -5130,7 +5130,7 @@ const ignoredInputs = [
|
|
|
5130
5130
|
"mux-player",
|
|
5131
5131
|
"summary"
|
|
5132
5132
|
];
|
|
5133
|
-
async function action$
|
|
5133
|
+
async function action$a({ request }) {
|
|
5134
5134
|
const result = PlayerPreferencesSchema.safeParse(await request.json());
|
|
5135
5135
|
if (!result.success) {
|
|
5136
5136
|
return json({ status: "error", error: result.error.flatten() }, {
|
|
@@ -5316,10 +5316,10 @@ function isDeepEqual(obj1, obj2) {
|
|
|
5316
5316
|
}
|
|
5317
5317
|
return true;
|
|
5318
5318
|
}
|
|
5319
|
-
const
|
|
5319
|
+
const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5320
5320
|
__proto__: null,
|
|
5321
5321
|
MuxPlayer,
|
|
5322
|
-
action: action$
|
|
5322
|
+
action: action$a,
|
|
5323
5323
|
usePlayerPreferences
|
|
5324
5324
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5325
5325
|
const EpicVideoInfoContext = React.createContext(null);
|
|
@@ -6106,7 +6106,7 @@ const LaunchSchema = z$1.intersection(
|
|
|
6106
6106
|
}),
|
|
6107
6107
|
getFileDescriptorSchema(z$1.array(z$1.string()))
|
|
6108
6108
|
);
|
|
6109
|
-
async function action$
|
|
6109
|
+
async function action$9({ request }) {
|
|
6110
6110
|
ensureUndeployed();
|
|
6111
6111
|
const formData = await request.formData();
|
|
6112
6112
|
const syncTo = {
|
|
@@ -6349,11 +6349,11 @@ function EditFileOnGitHub({
|
|
|
6349
6349
|
);
|
|
6350
6350
|
}
|
|
6351
6351
|
const LaunchEditor = ENV.EPICSHOP_DEPLOYED ? ENV.EPICSHOP_GITHUB_ROOT ? LaunchGitHub : ({ children }) => /* @__PURE__ */ jsx(SimpleTooltip, { content: "Cannot open files in deployed app", children: /* @__PURE__ */ jsx("button", { className: "launch_button cursor-not-allowed", children }) }) : LaunchEditorImpl;
|
|
6352
|
-
const
|
|
6352
|
+
const route26 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6353
6353
|
__proto__: null,
|
|
6354
6354
|
EditFileOnGitHub,
|
|
6355
6355
|
LaunchEditor,
|
|
6356
|
-
action: action$
|
|
6356
|
+
action: action$9
|
|
6357
6357
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6358
6358
|
const safePath = (s) => s.replace(/\\/g, "/");
|
|
6359
6359
|
function getRelativePath(file, separator, type) {
|
|
@@ -6552,7 +6552,7 @@ const meta$4 = ({
|
|
|
6552
6552
|
}
|
|
6553
6553
|
];
|
|
6554
6554
|
};
|
|
6555
|
-
async function loader$
|
|
6555
|
+
async function loader$o({ request, params }) {
|
|
6556
6556
|
const timings = makeTimings("exerciseNumberLoader");
|
|
6557
6557
|
invariantResponse(params.exerciseNumber, "exerciseNumber is required");
|
|
6558
6558
|
const [exercises, workshopTitle] = await Promise.all([
|
|
@@ -6696,10 +6696,10 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
6696
6696
|
ErrorBoundary: ErrorBoundary$3,
|
|
6697
6697
|
default: ExerciseNumberRoute,
|
|
6698
6698
|
headers: headers$6,
|
|
6699
|
-
loader: loader$
|
|
6699
|
+
loader: loader$o,
|
|
6700
6700
|
meta: meta$4
|
|
6701
6701
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6702
|
-
async function loader$
|
|
6702
|
+
async function loader$n({ request, params }) {
|
|
6703
6703
|
const timings = makeTimings("stepLoader");
|
|
6704
6704
|
invariantResponse(params.exerciseNumber, "exerciseNumber is required");
|
|
6705
6705
|
const [exercises, workshopTitle] = await Promise.all([
|
|
@@ -6756,7 +6756,7 @@ const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
6756
6756
|
ErrorBoundary: ErrorBoundary$2,
|
|
6757
6757
|
default: StepRoute,
|
|
6758
6758
|
headers: headers$5,
|
|
6759
|
-
loader: loader$
|
|
6759
|
+
loader: loader$n
|
|
6760
6760
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6761
6761
|
const EmojiDataSchema = z$1.union([
|
|
6762
6762
|
z$1.object({
|
|
@@ -6873,7 +6873,7 @@ function getDiscordAuthURL() {
|
|
|
6873
6873
|
discordAuthUrl.searchParams.append("scope", scope);
|
|
6874
6874
|
return discordAuthUrl.toString();
|
|
6875
6875
|
}
|
|
6876
|
-
async function loader$
|
|
6876
|
+
async function loader$m({ request }) {
|
|
6877
6877
|
const authInfo = await requireAuthInfo({ request });
|
|
6878
6878
|
const discordCode = new URL(request.url).searchParams.get("code");
|
|
6879
6879
|
invariantResponse(discordCode, "Missing code");
|
|
@@ -6926,12 +6926,12 @@ async function loader$r({ request }) {
|
|
|
6926
6926
|
description: `Your Discord account "${member.displayName}" has been connected!`
|
|
6927
6927
|
});
|
|
6928
6928
|
}
|
|
6929
|
-
const
|
|
6929
|
+
const route24 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6930
6930
|
__proto__: null,
|
|
6931
6931
|
getDiscordAuthURL,
|
|
6932
|
-
loader: loader$
|
|
6932
|
+
loader: loader$m
|
|
6933
6933
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6934
|
-
async function loader$
|
|
6934
|
+
async function loader$l() {
|
|
6935
6935
|
return json({ discordAuthUrl: getDiscordAuthURL() });
|
|
6936
6936
|
}
|
|
6937
6937
|
function useDiscordCTALink({
|
|
@@ -7030,11 +7030,11 @@ function DiscordRoute() {
|
|
|
7030
7030
|
] }) })
|
|
7031
7031
|
] });
|
|
7032
7032
|
}
|
|
7033
|
-
const
|
|
7033
|
+
const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7034
7034
|
__proto__: null,
|
|
7035
7035
|
DiscordCTA,
|
|
7036
7036
|
default: DiscordRoute,
|
|
7037
|
-
loader: loader$
|
|
7037
|
+
loader: loader$l,
|
|
7038
7038
|
useDiscordCTALink
|
|
7039
7039
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
7040
7040
|
function DiscordChat() {
|
|
@@ -7574,7 +7574,7 @@ const SetPlaygroundSchema = z$1.object({
|
|
|
7574
7574
|
appName: z$1.string(),
|
|
7575
7575
|
reset: z$1.string().nullable().optional().transform((v) => v === "true")
|
|
7576
7576
|
});
|
|
7577
|
-
async function action$
|
|
7577
|
+
async function action$8({ request }) {
|
|
7578
7578
|
ensureUndeployed();
|
|
7579
7579
|
const formData = await request.formData();
|
|
7580
7580
|
const rawData = {
|
|
@@ -7744,12 +7744,12 @@ function SetAppToPlayground({ appName }) {
|
|
|
7744
7744
|
}
|
|
7745
7745
|
);
|
|
7746
7746
|
}
|
|
7747
|
-
const
|
|
7747
|
+
const route31 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7748
7748
|
__proto__: null,
|
|
7749
7749
|
PlaygroundChooser,
|
|
7750
7750
|
SetAppToPlayground,
|
|
7751
7751
|
SetPlayground,
|
|
7752
|
-
action: action$
|
|
7752
|
+
action: action$8
|
|
7753
7753
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
7754
7754
|
function PlaygroundWindow({
|
|
7755
7755
|
playgroundAppName,
|
|
@@ -7868,7 +7868,7 @@ function ButtonLink({
|
|
|
7868
7868
|
}
|
|
7869
7869
|
) });
|
|
7870
7870
|
}
|
|
7871
|
-
async function action$
|
|
7871
|
+
async function action$7({ request }) {
|
|
7872
7872
|
ensureUndeployed();
|
|
7873
7873
|
const formData = await request.formData();
|
|
7874
7874
|
const intent = formData.get("intent");
|
|
@@ -7997,12 +7997,12 @@ function AppStarter({ name }) {
|
|
|
7997
7997
|
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" }) })
|
|
7998
7998
|
] });
|
|
7999
7999
|
}
|
|
8000
|
-
const
|
|
8000
|
+
const route32 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8001
8001
|
__proto__: null,
|
|
8002
8002
|
AppStarter,
|
|
8003
8003
|
AppStopper,
|
|
8004
8004
|
PortStopper,
|
|
8005
|
-
action: action$
|
|
8005
|
+
action: action$7
|
|
8006
8006
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
8007
8007
|
const historyCallDataSchema = z$1.intersection(
|
|
8008
8008
|
z$1.object({
|
|
@@ -8474,7 +8474,7 @@ function checkFileExists(file) {
|
|
|
8474
8474
|
() => false
|
|
8475
8475
|
);
|
|
8476
8476
|
}
|
|
8477
|
-
async function action$
|
|
8477
|
+
async function action$6({ request }) {
|
|
8478
8478
|
var _a2, _b2;
|
|
8479
8479
|
ensureUndeployed();
|
|
8480
8480
|
const formData = await request.formData();
|
|
@@ -8537,10 +8537,10 @@ function UpdateMdxCache({
|
|
|
8537
8537
|
)
|
|
8538
8538
|
] });
|
|
8539
8539
|
}
|
|
8540
|
-
const
|
|
8540
|
+
const route35 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
8541
8541
|
__proto__: null,
|
|
8542
8542
|
UpdateMdxCache,
|
|
8543
|
-
action: action$
|
|
8543
|
+
action: action$6
|
|
8544
8544
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
8545
8545
|
const StepContext = React.createContext(null);
|
|
8546
8546
|
function useStepContext() {
|
|
@@ -9125,7 +9125,7 @@ const testEventSchema = z$1.union([
|
|
|
9125
9125
|
})
|
|
9126
9126
|
]);
|
|
9127
9127
|
const testEventQueueSchema = z$1.array(testEventSchema);
|
|
9128
|
-
async function loader$
|
|
9128
|
+
async function loader$k({ request }) {
|
|
9129
9129
|
ensureUndeployed();
|
|
9130
9130
|
const url = new URL(request.url);
|
|
9131
9131
|
const name = url.searchParams.get("name");
|
|
@@ -9202,7 +9202,7 @@ async function loader$p({ request }) {
|
|
|
9202
9202
|
};
|
|
9203
9203
|
});
|
|
9204
9204
|
}
|
|
9205
|
-
async function action$
|
|
9205
|
+
async function action$5({ request }) {
|
|
9206
9206
|
var _a2;
|
|
9207
9207
|
ensureUndeployed();
|
|
9208
9208
|
const formData = await request.formData();
|
|
@@ -9445,14 +9445,14 @@ function StopTest({
|
|
|
9445
9445
|
)
|
|
9446
9446
|
] });
|
|
9447
9447
|
}
|
|
9448
|
-
const
|
|
9448
|
+
const route33 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9449
9449
|
__proto__: null,
|
|
9450
9450
|
ClearTest,
|
|
9451
9451
|
StopTest,
|
|
9452
9452
|
TestOutput,
|
|
9453
9453
|
TestRunner,
|
|
9454
|
-
action: action$
|
|
9455
|
-
loader: loader$
|
|
9454
|
+
action: action$5,
|
|
9455
|
+
loader: loader$k
|
|
9456
9456
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
9457
9457
|
function Tests({
|
|
9458
9458
|
appInfo: playgroundAppInfo,
|
|
@@ -9849,7 +9849,7 @@ const meta$3 = ({
|
|
|
9849
9849
|
}
|
|
9850
9850
|
];
|
|
9851
9851
|
};
|
|
9852
|
-
async function loader$
|
|
9852
|
+
async function loader$j({ request, params }) {
|
|
9853
9853
|
var _a2, _b2;
|
|
9854
9854
|
const timings = makeTimings("exerciseStepTypeLoader");
|
|
9855
9855
|
const workshopTitle = await getWorkshopTitle();
|
|
@@ -10283,10 +10283,10 @@ const route6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
10283
10283
|
ErrorBoundary: ErrorBoundary$1,
|
|
10284
10284
|
default: ExercisePartRoute,
|
|
10285
10285
|
headers: headers$4,
|
|
10286
|
-
loader: loader$
|
|
10286
|
+
loader: loader$j,
|
|
10287
10287
|
meta: meta$3
|
|
10288
10288
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10289
|
-
async function loader$
|
|
10289
|
+
async function loader$i({ params }) {
|
|
10290
10290
|
const problemApp = await getExerciseApp({ ...params, type: "problem" }).then(
|
|
10291
10291
|
(a) => isProblemApp(a) ? a : null
|
|
10292
10292
|
);
|
|
@@ -10304,7 +10304,7 @@ async function loader$n({ params }) {
|
|
|
10304
10304
|
}
|
|
10305
10305
|
const route7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10306
10306
|
__proto__: null,
|
|
10307
|
-
loader: loader$
|
|
10307
|
+
loader: loader$i
|
|
10308
10308
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10309
10309
|
const meta$2 = ({
|
|
10310
10310
|
data,
|
|
@@ -10322,7 +10322,7 @@ const meta$2 = ({
|
|
|
10322
10322
|
}
|
|
10323
10323
|
];
|
|
10324
10324
|
};
|
|
10325
|
-
async function loader$
|
|
10325
|
+
async function loader$h({ request, params }) {
|
|
10326
10326
|
const timings = makeTimings("exerciseFinishedLoader");
|
|
10327
10327
|
invariantResponse(params.exerciseNumber, "exerciseNumber is required");
|
|
10328
10328
|
const exercise = await getExercise(params.exerciseNumber, {
|
|
@@ -10487,15 +10487,15 @@ const route8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
10487
10487
|
__proto__: null,
|
|
10488
10488
|
default: ExerciseFinished$1,
|
|
10489
10489
|
headers: headers$3,
|
|
10490
|
-
loader: loader$
|
|
10490
|
+
loader: loader$h,
|
|
10491
10491
|
meta: meta$2
|
|
10492
10492
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10493
|
-
async function loader$
|
|
10493
|
+
async function loader$g({ request }) {
|
|
10494
10494
|
ensureUndeployed();
|
|
10495
10495
|
await requireAuthInfo({ request });
|
|
10496
10496
|
return json({ discordAuthUrl: getDiscordAuthURL() });
|
|
10497
10497
|
}
|
|
10498
|
-
async function action$
|
|
10498
|
+
async function action$4({ request }) {
|
|
10499
10499
|
ensureUndeployed();
|
|
10500
10500
|
const formData = await request.formData();
|
|
10501
10501
|
const intent = formData.get("intent");
|
|
@@ -10600,9 +10600,9 @@ function Account() {
|
|
|
10600
10600
|
}
|
|
10601
10601
|
const route9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10602
10602
|
__proto__: null,
|
|
10603
|
-
action: action$
|
|
10603
|
+
action: action$4,
|
|
10604
10604
|
default: Account,
|
|
10605
|
-
loader: loader$
|
|
10605
|
+
loader: loader$g
|
|
10606
10606
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10607
10607
|
async function resolveApps({
|
|
10608
10608
|
request,
|
|
@@ -10672,7 +10672,7 @@ async function compileTs(filePath, fullPath, {
|
|
|
10672
10672
|
}
|
|
10673
10673
|
});
|
|
10674
10674
|
}
|
|
10675
|
-
async function loader$
|
|
10675
|
+
async function loader$f({ request, params }) {
|
|
10676
10676
|
const timings = makeTimings("app-file");
|
|
10677
10677
|
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
10678
10678
|
if (!fileApp || !app) {
|
|
@@ -10728,10 +10728,10 @@ async function loader$k({ request, params }) {
|
|
|
10728
10728
|
}
|
|
10729
10729
|
const route10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10730
10730
|
__proto__: null,
|
|
10731
|
-
loader: loader$
|
|
10731
|
+
loader: loader$f
|
|
10732
10732
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10733
|
-
async function loader$
|
|
10734
|
-
const api = await getApiModule
|
|
10733
|
+
async function loader$e(args) {
|
|
10734
|
+
const api = await getApiModule(args);
|
|
10735
10735
|
invariantResponse(
|
|
10736
10736
|
api.mod.loader,
|
|
10737
10737
|
"Attempted to make a GET request to the api endpoint but the api module does not export a loader function",
|
|
@@ -10744,8 +10744,8 @@ async function loader$j(args) {
|
|
|
10744
10744
|
api.cleanupError(error);
|
|
10745
10745
|
}
|
|
10746
10746
|
}
|
|
10747
|
-
async function action$
|
|
10748
|
-
const api = await getApiModule
|
|
10747
|
+
async function action$3(args) {
|
|
10748
|
+
const api = await getApiModule(args);
|
|
10749
10749
|
invariantResponse(
|
|
10750
10750
|
api.mod.action,
|
|
10751
10751
|
"Attempted to make a non-GET request to the api endpoint but the api module does not export an action function",
|
|
@@ -10758,11 +10758,11 @@ async function action$4(args) {
|
|
|
10758
10758
|
api.cleanupError(error);
|
|
10759
10759
|
}
|
|
10760
10760
|
}
|
|
10761
|
-
const ApiModuleSchema
|
|
10761
|
+
const ApiModuleSchema = z$1.object({
|
|
10762
10762
|
loader: z$1.function().optional(),
|
|
10763
10763
|
action: z$1.function().optional()
|
|
10764
10764
|
});
|
|
10765
|
-
async function getApiModule
|
|
10765
|
+
async function getApiModule({ request, params }) {
|
|
10766
10766
|
const timings = makeTimings("app-api");
|
|
10767
10767
|
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
10768
10768
|
if (!fileApp || !app) {
|
|
@@ -10786,7 +10786,14 @@ async function getApiModule$1({ request, params }) {
|
|
|
10786
10786
|
);
|
|
10787
10787
|
}
|
|
10788
10788
|
const { outputFiles, errors } = await compileTs(apiFile, app.fullPath, {
|
|
10789
|
-
esbuildOptions: {
|
|
10789
|
+
esbuildOptions: {
|
|
10790
|
+
platform: "node",
|
|
10791
|
+
packages: "external",
|
|
10792
|
+
// just adds noise to errors and doesn't appear to help with debugging
|
|
10793
|
+
sourcemap: false,
|
|
10794
|
+
// remove the process.env define
|
|
10795
|
+
define: {}
|
|
10796
|
+
},
|
|
10790
10797
|
request,
|
|
10791
10798
|
timings
|
|
10792
10799
|
});
|
|
@@ -10804,7 +10811,7 @@ async function getApiModule$1({ request, params }) {
|
|
|
10804
10811
|
/* @vite-ignore */
|
|
10805
10812
|
dataUrl
|
|
10806
10813
|
).catch(cleanupError);
|
|
10807
|
-
const apiModule = ApiModuleSchema
|
|
10814
|
+
const apiModule = ApiModuleSchema.safeParse(mod);
|
|
10808
10815
|
if (!apiModule.success) {
|
|
10809
10816
|
throw new Response(
|
|
10810
10817
|
`Invalid api module. It should export a loader and/or action: ${apiModule.error.message}`,
|
|
@@ -10824,10 +10831,78 @@ async function getApiModule$1({ request, params }) {
|
|
|
10824
10831
|
}
|
|
10825
10832
|
const route11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10826
10833
|
__proto__: null,
|
|
10827
|
-
action: action$
|
|
10828
|
-
loader: loader$
|
|
10834
|
+
action: action$3,
|
|
10835
|
+
loader: loader$e
|
|
10836
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
10837
|
+
async function loader$d({ request, params }) {
|
|
10838
|
+
const timings = makeTimings("epic_ws script");
|
|
10839
|
+
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
10840
|
+
if (!fileApp || !app) {
|
|
10841
|
+
throw new Response(`Apps not found`, { status: 404 });
|
|
10842
|
+
}
|
|
10843
|
+
if (app.dev.type === "script") {
|
|
10844
|
+
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
10845
|
+
}
|
|
10846
|
+
const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
|
|
10847
|
+
const js = (
|
|
10848
|
+
/* javascript */
|
|
10849
|
+
`
|
|
10850
|
+
function epicLiveReloadConnect(config) {
|
|
10851
|
+
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
10852
|
+
const host = location.hostname;
|
|
10853
|
+
const port = location.port;
|
|
10854
|
+
const socketPath = protocol + "//" + host + ":" + port + "/__ws";
|
|
10855
|
+
const ws = new WebSocket(socketPath);
|
|
10856
|
+
ws.onmessage = (message) => {
|
|
10857
|
+
const event = JSON.parse(message.data);
|
|
10858
|
+
if (event.type !== 'epicshop:file-change') return;
|
|
10859
|
+
const { filePaths } = event.data;
|
|
10860
|
+
if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
|
|
10861
|
+
console.log(
|
|
10862
|
+
['🐨 Reloading', window.frameElement?.getAttribute('title')]
|
|
10863
|
+
.filter(Boolean)
|
|
10864
|
+
.join(' '),
|
|
10865
|
+
);
|
|
10866
|
+
window.location.reload();
|
|
10867
|
+
}
|
|
10868
|
+
};
|
|
10869
|
+
ws.onopen = () => {
|
|
10870
|
+
if (config && typeof config.onOpen === "function") {
|
|
10871
|
+
config.onOpen();
|
|
10872
|
+
}
|
|
10873
|
+
};
|
|
10874
|
+
ws.onclose = (event) => {
|
|
10875
|
+
if (event.code === 1006) {
|
|
10876
|
+
console.log("Epic Web dev server web socket closed. Reconnecting...");
|
|
10877
|
+
setTimeout(
|
|
10878
|
+
() =>
|
|
10879
|
+
epicLiveReloadConnect({
|
|
10880
|
+
onOpen: () => window.location.reload(),
|
|
10881
|
+
}),
|
|
10882
|
+
1000
|
|
10883
|
+
);
|
|
10884
|
+
}
|
|
10885
|
+
};
|
|
10886
|
+
ws.onerror = (error) => {
|
|
10887
|
+
console.log("Epic Web dev server web socket error:");
|
|
10888
|
+
console.error(error);
|
|
10889
|
+
};
|
|
10890
|
+
}
|
|
10891
|
+
epicLiveReloadConnect();
|
|
10892
|
+
`
|
|
10893
|
+
);
|
|
10894
|
+
return new Response(js, {
|
|
10895
|
+
headers: {
|
|
10896
|
+
"Content-Length": Buffer.byteLength(js).toString(),
|
|
10897
|
+
"Content-Type": "text/javascript"
|
|
10898
|
+
}
|
|
10899
|
+
});
|
|
10900
|
+
}
|
|
10901
|
+
const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10902
|
+
__proto__: null,
|
|
10903
|
+
loader: loader$d
|
|
10829
10904
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10830
|
-
async function loader$
|
|
10905
|
+
async function loader$c({ request, params }) {
|
|
10831
10906
|
var _a2;
|
|
10832
10907
|
const timings = makeTimings("app");
|
|
10833
10908
|
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
@@ -10911,79 +10986,11 @@ async function loader$i({ request, params }) {
|
|
|
10911
10986
|
}
|
|
10912
10987
|
});
|
|
10913
10988
|
}
|
|
10914
|
-
const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10915
|
-
__proto__: null,
|
|
10916
|
-
loader: loader$i
|
|
10917
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
10918
|
-
async function loader$h({ request, params }) {
|
|
10919
|
-
const timings = makeTimings("epic_ws script");
|
|
10920
|
-
const { fileApp, app } = await resolveApps({ request, params, timings });
|
|
10921
|
-
if (!fileApp || !app) {
|
|
10922
|
-
throw new Response(`Apps not found`, { status: 404 });
|
|
10923
|
-
}
|
|
10924
|
-
if (app.dev.type === "script") {
|
|
10925
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
10926
|
-
}
|
|
10927
|
-
const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
|
|
10928
|
-
const js = (
|
|
10929
|
-
/* javascript */
|
|
10930
|
-
`
|
|
10931
|
-
function epicLiveReloadConnect(config) {
|
|
10932
|
-
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
10933
|
-
const host = location.hostname;
|
|
10934
|
-
const port = location.port;
|
|
10935
|
-
const socketPath = protocol + "//" + host + ":" + port + "/__ws";
|
|
10936
|
-
const ws = new WebSocket(socketPath);
|
|
10937
|
-
ws.onmessage = (message) => {
|
|
10938
|
-
const event = JSON.parse(message.data);
|
|
10939
|
-
if (event.type !== 'epicshop:file-change') return;
|
|
10940
|
-
const { filePaths } = event.data;
|
|
10941
|
-
if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
|
|
10942
|
-
console.log(
|
|
10943
|
-
['🐨 Reloading', window.frameElement?.getAttribute('title')]
|
|
10944
|
-
.filter(Boolean)
|
|
10945
|
-
.join(' '),
|
|
10946
|
-
);
|
|
10947
|
-
window.location.reload();
|
|
10948
|
-
}
|
|
10949
|
-
};
|
|
10950
|
-
ws.onopen = () => {
|
|
10951
|
-
if (config && typeof config.onOpen === "function") {
|
|
10952
|
-
config.onOpen();
|
|
10953
|
-
}
|
|
10954
|
-
};
|
|
10955
|
-
ws.onclose = (event) => {
|
|
10956
|
-
if (event.code === 1006) {
|
|
10957
|
-
console.log("Epic Web dev server web socket closed. Reconnecting...");
|
|
10958
|
-
setTimeout(
|
|
10959
|
-
() =>
|
|
10960
|
-
epicLiveReloadConnect({
|
|
10961
|
-
onOpen: () => window.location.reload(),
|
|
10962
|
-
}),
|
|
10963
|
-
1000
|
|
10964
|
-
);
|
|
10965
|
-
}
|
|
10966
|
-
};
|
|
10967
|
-
ws.onerror = (error) => {
|
|
10968
|
-
console.log("Epic Web dev server web socket error:");
|
|
10969
|
-
console.error(error);
|
|
10970
|
-
};
|
|
10971
|
-
}
|
|
10972
|
-
epicLiveReloadConnect();
|
|
10973
|
-
`
|
|
10974
|
-
);
|
|
10975
|
-
return new Response(js, {
|
|
10976
|
-
headers: {
|
|
10977
|
-
"Content-Length": Buffer.byteLength(js).toString(),
|
|
10978
|
-
"Content-Type": "text/javascript"
|
|
10979
|
-
}
|
|
10980
|
-
});
|
|
10981
|
-
}
|
|
10982
10989
|
const route13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
10983
10990
|
__proto__: null,
|
|
10984
|
-
loader: loader$
|
|
10991
|
+
loader: loader$c
|
|
10985
10992
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10986
|
-
async function loader$
|
|
10993
|
+
async function loader$b({ request, params }) {
|
|
10987
10994
|
var _a2;
|
|
10988
10995
|
const timings = makeTimings("app_test_loader");
|
|
10989
10996
|
const { testName } = params;
|
|
@@ -11123,495 +11130,11 @@ import(${JSON.stringify(testScriptPath)}).then(
|
|
|
11123
11130
|
}
|
|
11124
11131
|
const route14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11125
11132
|
__proto__: null,
|
|
11126
|
-
loader: loader$
|
|
11133
|
+
loader: loader$b
|
|
11127
11134
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
11128
|
-
|
|
11129
|
-
|
|
11130
|
-
|
|
11131
|
-
const { id: appId } = params;
|
|
11132
|
-
invariantResponse(appId, "App id is required");
|
|
11133
|
-
const app = await getAppByName(appId, { request, timings });
|
|
11134
|
-
const baseApp = isPlaygroundApp(app) ? await getAppByName(app.appName) : app;
|
|
11135
|
-
if (!app) {
|
|
11136
|
-
throw new Response(`App "${appId}" not found`, {
|
|
11137
|
-
status: 404,
|
|
11138
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
11139
|
-
});
|
|
11140
|
-
}
|
|
11141
|
-
if (app.dev.type === "script") {
|
|
11142
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }), {
|
|
11143
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
11144
|
-
});
|
|
11145
|
-
}
|
|
11146
|
-
if (app.dev.type !== "browser") {
|
|
11147
|
-
throw new Response(
|
|
11148
|
-
`App "${appId}" is not a browser app, its dev type is: "${app.dev.type}"`,
|
|
11149
|
-
{ status: 400 }
|
|
11150
|
-
);
|
|
11151
|
-
}
|
|
11152
|
-
const htmlFile = path.join(app.fullPath, "index.html");
|
|
11153
|
-
const hasHtml = await fsExtra.pathExists(htmlFile);
|
|
11154
|
-
if (hasHtml) {
|
|
11155
|
-
const html2 = await fsExtra.readFile(htmlFile);
|
|
11156
|
-
return new Response(html2, {
|
|
11157
|
-
headers: {
|
|
11158
|
-
"Content-Length": Buffer.byteLength(html2).toString(),
|
|
11159
|
-
"Content-Type": "text/html",
|
|
11160
|
-
"Server-Timing": getServerTimeHeader(timings)
|
|
11161
|
-
}
|
|
11162
|
-
});
|
|
11163
|
-
}
|
|
11164
|
-
const indexFiles = (await fsExtra.readdir(app.fullPath)).filter(
|
|
11165
|
-
(file) => file.startsWith("index.")
|
|
11166
|
-
);
|
|
11167
|
-
const indexCss = indexFiles.find((file) => file.endsWith("index.css"));
|
|
11168
|
-
const indexJs = indexFiles.find((file) => file.endsWith("index.js"));
|
|
11169
|
-
const indexTs = indexFiles.find((file) => file.endsWith("index.ts"));
|
|
11170
|
-
const indexTsx = indexFiles.find((file) => file.endsWith("index.tsx"));
|
|
11171
|
-
const scripts = [indexJs, indexTs, indexTsx].filter(Boolean);
|
|
11172
|
-
if (scripts.length > 1) {
|
|
11173
|
-
throw new Response(
|
|
11174
|
-
`Only one index.(js|ts|tsx) file is allowed, found ${scripts.join(", ")}`,
|
|
11175
|
-
{ status: 400 }
|
|
11176
|
-
);
|
|
11177
|
-
}
|
|
11178
|
-
const appTitle = app.title;
|
|
11179
|
-
const workshopTitle = await getWorkshopTitle();
|
|
11180
|
-
const baseAppTitle = isExerciseStepApp(baseApp) ? [
|
|
11181
|
-
`${baseApp.stepNumber.toString().padStart(2, "0")}. ${baseApp.title}`,
|
|
11182
|
-
`${baseApp.exerciseNumber.toString().padStart(2, "0")}. ${((_a2 = await getExercise(baseApp.exerciseNumber, { request, timings })) == null ? void 0 : _a2.title) ?? "Unknown"}`,
|
|
11183
|
-
workshopTitle
|
|
11184
|
-
] : [(baseApp == null ? void 0 : baseApp.title) ?? "N/A"];
|
|
11185
|
-
const title = (isExerciseStepApp(app) ? [
|
|
11186
|
-
isProblemApp(app) ? "💪" : isSolutionApp(app) ? "🏁" : null,
|
|
11187
|
-
...baseAppTitle
|
|
11188
|
-
] : isPlaygroundApp(app) ? ["🛝", ...baseAppTitle] : [appTitle]).filter(Boolean).join(" | ");
|
|
11189
|
-
const html = (
|
|
11190
|
-
/* html */
|
|
11191
|
-
`
|
|
11192
|
-
<!DOCTYPE html>
|
|
11193
|
-
<html>
|
|
11194
|
-
<head>
|
|
11195
|
-
<base href="${app.dev.pathname}" />
|
|
11196
|
-
<meta charset="utf-8">
|
|
11197
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
11198
|
-
<title>${title}</title>
|
|
11199
|
-
<link rel="stylesheet" href="/app-default.css">
|
|
11200
|
-
${indexCss ? `<link rel="stylesheet" href="${indexCss}">` : ""}
|
|
11201
|
-
</head>
|
|
11202
|
-
<body>
|
|
11203
|
-
${scripts.map((script) => `<script type="module" src="${script}"><\/script>`).join("\n")}
|
|
11204
|
-
<script type="module" src="epic_ws.js"><\/script>
|
|
11205
|
-
</body>
|
|
11206
|
-
</html>
|
|
11207
|
-
`
|
|
11208
|
-
);
|
|
11209
|
-
return new Response(html, {
|
|
11210
|
-
headers: {
|
|
11211
|
-
"Content-Length": Buffer.byteLength(html).toString(),
|
|
11212
|
-
"Content-Type": "text/html",
|
|
11213
|
-
"Server-Timing": getServerTimeHeader(timings)
|
|
11214
|
-
}
|
|
11215
|
-
});
|
|
11216
|
-
}
|
|
11217
|
-
const route15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11218
|
-
__proto__: null,
|
|
11219
|
-
loader: loader$f
|
|
11220
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
11221
|
-
async function loader$e({ request, params }) {
|
|
11222
|
-
const timings = makeTimings("app-file");
|
|
11223
|
-
const { id: appId, "*": splat } = params;
|
|
11224
|
-
const url = new URL(request.url);
|
|
11225
|
-
const fileAppName = url.searchParams.get("fileAppName");
|
|
11226
|
-
invariantResponse(appId, "App id is required");
|
|
11227
|
-
invariantResponse(splat, "Splat is required");
|
|
11228
|
-
const app = await getAppByName(appId);
|
|
11229
|
-
const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
|
|
11230
|
-
if (!fileApp || !app) {
|
|
11231
|
-
throw new Response(
|
|
11232
|
-
`Apps with ids "${fileAppName}" (resolveDir) and "${appId}" (app) for resource "${splat}" not found`,
|
|
11233
|
-
{ status: 404 }
|
|
11234
|
-
);
|
|
11235
|
-
}
|
|
11236
|
-
if (app.dev.type === "script") {
|
|
11237
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
11238
|
-
}
|
|
11239
|
-
const filePath = path.join(fileApp.fullPath, splat);
|
|
11240
|
-
const fileExists = await fsExtra.pathExists(filePath);
|
|
11241
|
-
if (!fileExists) {
|
|
11242
|
-
throw new Response("File not found", { status: 404 });
|
|
11243
|
-
}
|
|
11244
|
-
if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
|
|
11245
|
-
const { outputFiles, errors } = await compileTs(filePath, app.fullPath, {
|
|
11246
|
-
request,
|
|
11247
|
-
timings
|
|
11248
|
-
});
|
|
11249
|
-
if (errors.length) {
|
|
11250
|
-
console.error(`Failed to compile file "${filePath}"`);
|
|
11251
|
-
console.error(errors);
|
|
11252
|
-
throw new Response(errors.join("\n"), { status: 500 });
|
|
11253
|
-
}
|
|
11254
|
-
if (!(outputFiles == null ? void 0 : outputFiles[0])) {
|
|
11255
|
-
throw new Response("Failed to compile file", { status: 500 });
|
|
11256
|
-
}
|
|
11257
|
-
const file = outputFiles[0].text;
|
|
11258
|
-
return getFileResponse(file, { "Content-Type": "text/javascript" });
|
|
11259
|
-
} else {
|
|
11260
|
-
const file = await fsExtra.readFile(filePath);
|
|
11261
|
-
const mimeType = mimeTypes.lookup(filePath) || "text/plain";
|
|
11262
|
-
return getFileResponse(file, { "Content-Type": mimeType });
|
|
11263
|
-
}
|
|
11264
|
-
function getFileResponse(file, headers2 = {}) {
|
|
11265
|
-
const etagValue = etag(file);
|
|
11266
|
-
const ifNoneMatch = request.headers.get("if-none-match");
|
|
11267
|
-
if (ifNoneMatch === etagValue) {
|
|
11268
|
-
return new Response(null, { status: 304 });
|
|
11269
|
-
}
|
|
11270
|
-
return new Response(file, {
|
|
11271
|
-
headers: combineHeaders(
|
|
11272
|
-
{
|
|
11273
|
-
"Content-Length": Buffer.byteLength(file).toString(),
|
|
11274
|
-
"Server-Timing": timings.toString(),
|
|
11275
|
-
ETag: etagValue
|
|
11276
|
-
},
|
|
11277
|
-
headers2
|
|
11278
|
-
)
|
|
11279
|
-
});
|
|
11280
|
-
}
|
|
11281
|
-
}
|
|
11282
|
-
const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11283
|
-
__proto__: null,
|
|
11284
|
-
loader: loader$e
|
|
11285
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
11286
|
-
async function loader$d(args) {
|
|
11287
|
-
const api = await getApiModule(args);
|
|
11288
|
-
invariantResponse(
|
|
11289
|
-
api.mod.loader,
|
|
11290
|
-
"Attempted to make a GET request to the api endpoint but the api module does not export a loader function",
|
|
11291
|
-
{ status: 405 }
|
|
11292
|
-
);
|
|
11293
|
-
try {
|
|
11294
|
-
const result = await api.mod.loader(args);
|
|
11295
|
-
return result;
|
|
11296
|
-
} catch (error) {
|
|
11297
|
-
api.cleanupError(error);
|
|
11298
|
-
}
|
|
11299
|
-
}
|
|
11300
|
-
async function action$3(args) {
|
|
11301
|
-
const api = await getApiModule(args);
|
|
11302
|
-
invariantResponse(
|
|
11303
|
-
api.mod.action,
|
|
11304
|
-
"Attempted to make a non-GET request to the api endpoint but the api module does not export an action function",
|
|
11305
|
-
{ status: 405 }
|
|
11306
|
-
);
|
|
11307
|
-
try {
|
|
11308
|
-
const result = await api.mod.action(args);
|
|
11309
|
-
return result;
|
|
11310
|
-
} catch (error) {
|
|
11311
|
-
api.cleanupError(error);
|
|
11312
|
-
}
|
|
11313
|
-
}
|
|
11314
|
-
const ApiModuleSchema = z$1.object({
|
|
11315
|
-
loader: z$1.function().optional(),
|
|
11316
|
-
action: z$1.function().optional()
|
|
11317
|
-
});
|
|
11318
|
-
async function getApiModule({ request, params }) {
|
|
11319
|
-
const timings = makeTimings("app-api");
|
|
11320
|
-
const { id: appId } = params;
|
|
11321
|
-
const url = new URL(request.url);
|
|
11322
|
-
const fileAppName = url.searchParams.get("fileAppName");
|
|
11323
|
-
invariantResponse(appId, "App id is required");
|
|
11324
|
-
const app = await getAppByName(appId);
|
|
11325
|
-
const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
|
|
11326
|
-
if (!fileApp || !app) {
|
|
11327
|
-
throw new Response(
|
|
11328
|
-
`Apps with ids "${fileAppName}" (resolveDir) and "${appId}" (app) for api not found`,
|
|
11329
|
-
{ status: 404 }
|
|
11330
|
-
);
|
|
11331
|
-
}
|
|
11332
|
-
if (app.dev.type === "script") {
|
|
11333
|
-
throw redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
11334
|
-
}
|
|
11335
|
-
const apiFiles = (await fsExtra.readdir(app.fullPath)).filter((file) => /^api\.server\.(ts|tsx|js|jsx)$/.test(file)).map((f) => path$1.join(app.fullPath, f));
|
|
11336
|
-
const apiFile = apiFiles[0];
|
|
11337
|
-
if (!apiFile) {
|
|
11338
|
-
throw new Response(
|
|
11339
|
-
`No api.server.(ts|tsx|js|jsx) file found in "${app.fullPath}"`,
|
|
11340
|
-
{ status: 404 }
|
|
11341
|
-
);
|
|
11342
|
-
}
|
|
11343
|
-
if (apiFiles.length > 1) {
|
|
11344
|
-
throw new Response(
|
|
11345
|
-
`Only one api.server.(ts|tsx|js|jsx) file is allowed, found ${apiFiles.join(", ")}`,
|
|
11346
|
-
{ status: 400 }
|
|
11347
|
-
);
|
|
11348
|
-
}
|
|
11349
|
-
const { outputFiles, errors } = await compileTs(apiFile, app.fullPath, {
|
|
11350
|
-
esbuildOptions: { platform: "node" },
|
|
11351
|
-
request,
|
|
11352
|
-
timings
|
|
11353
|
-
});
|
|
11354
|
-
if (errors.length) {
|
|
11355
|
-
console.error(`Failed to compile file "${apiFile}"`);
|
|
11356
|
-
console.error(errors);
|
|
11357
|
-
throw new Response(errors.join("\n"), { status: 500 });
|
|
11358
|
-
}
|
|
11359
|
-
if (!(outputFiles == null ? void 0 : outputFiles[0])) {
|
|
11360
|
-
throw new Response(`Failed to compile file "${apiFile}"`, { status: 500 });
|
|
11361
|
-
}
|
|
11362
|
-
const apiCode = outputFiles[0].text;
|
|
11363
|
-
const dataUrl = `data:text/javascript;base64,${Buffer.from(apiCode).toString("base64")}`;
|
|
11364
|
-
const mod = await import(
|
|
11365
|
-
/* @vite-ignore */
|
|
11366
|
-
dataUrl
|
|
11367
|
-
).catch(cleanupError);
|
|
11368
|
-
const apiModule = ApiModuleSchema.safeParse(mod);
|
|
11369
|
-
if (!apiModule.success) {
|
|
11370
|
-
throw new Response(
|
|
11371
|
-
`Invalid api module. It should export a loader and/or action: ${apiModule.error.message}`,
|
|
11372
|
-
{ status: 500 }
|
|
11373
|
-
);
|
|
11374
|
-
}
|
|
11375
|
-
return {
|
|
11376
|
-
mod: apiModule.data,
|
|
11377
|
-
cleanupError
|
|
11378
|
-
};
|
|
11379
|
-
function cleanupError(error) {
|
|
11380
|
-
if (apiFile && error instanceof Error && error.stack) {
|
|
11381
|
-
error.stack = error.stack.replace(dataUrl, apiFile);
|
|
11382
|
-
}
|
|
11383
|
-
throw error;
|
|
11384
|
-
}
|
|
11385
|
-
}
|
|
11386
|
-
const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11387
|
-
__proto__: null,
|
|
11388
|
-
action: action$3,
|
|
11389
|
-
loader: loader$d
|
|
11390
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
11391
|
-
async function loader$c({ request, params }) {
|
|
11392
|
-
const { id: appId } = params;
|
|
11393
|
-
const url = new URL(request.url);
|
|
11394
|
-
const fileAppName = url.searchParams.get("fileAppName");
|
|
11395
|
-
invariantResponse(appId, "App id is required");
|
|
11396
|
-
const app = await getAppByName(appId);
|
|
11397
|
-
const fileApp = fileAppName ? await getAppByName(fileAppName) : app;
|
|
11398
|
-
if (!app || !fileApp) {
|
|
11399
|
-
throw new Response(
|
|
11400
|
-
`Apps with ids "${fileAppName}" (resolveDir) or "${appId}" (app) not found`,
|
|
11401
|
-
{ status: 404 }
|
|
11402
|
-
);
|
|
11403
|
-
}
|
|
11404
|
-
if (app.dev.type === "script") {
|
|
11405
|
-
return redirect(getBaseUrl({ request, port: app.dev.portNumber }));
|
|
11406
|
-
}
|
|
11407
|
-
const relevantPaths = Array.from(/* @__PURE__ */ new Set([app.fullPath, fileApp.fullPath]));
|
|
11408
|
-
const js = (
|
|
11409
|
-
/* javascript */
|
|
11410
|
-
`
|
|
11411
|
-
function epicLiveReloadConnect(config) {
|
|
11412
|
-
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
11413
|
-
const host = location.hostname;
|
|
11414
|
-
const port = location.port;
|
|
11415
|
-
const socketPath = protocol + "//" + host + ":" + port + "/__ws";
|
|
11416
|
-
const ws = new WebSocket(socketPath);
|
|
11417
|
-
ws.onmessage = (message) => {
|
|
11418
|
-
const event = JSON.parse(message.data);
|
|
11419
|
-
if (event.type !== 'epicshop:file-change') return;
|
|
11420
|
-
const { filePaths } = event.data;
|
|
11421
|
-
if (${JSON.stringify(relevantPaths)}.some(p => filePaths.some(filePath => filePath.startsWith(p)))) {
|
|
11422
|
-
console.log(
|
|
11423
|
-
['🐨 Reloading', window.frameElement?.getAttribute('title')]
|
|
11424
|
-
.filter(Boolean)
|
|
11425
|
-
.join(' '),
|
|
11426
|
-
);
|
|
11427
|
-
window.location.reload();
|
|
11428
|
-
}
|
|
11429
|
-
};
|
|
11430
|
-
ws.onopen = () => {
|
|
11431
|
-
if (config && typeof config.onOpen === "function") {
|
|
11432
|
-
config.onOpen();
|
|
11433
|
-
}
|
|
11434
|
-
};
|
|
11435
|
-
ws.onclose = (event) => {
|
|
11436
|
-
if (event.code === 1006) {
|
|
11437
|
-
console.log("Epic Web dev server web socket closed. Reconnecting...");
|
|
11438
|
-
setTimeout(
|
|
11439
|
-
() =>
|
|
11440
|
-
epicLiveReloadConnect({
|
|
11441
|
-
onOpen: () => window.location.reload(),
|
|
11442
|
-
}),
|
|
11443
|
-
1000
|
|
11444
|
-
);
|
|
11445
|
-
}
|
|
11446
|
-
};
|
|
11447
|
-
ws.onerror = (error) => {
|
|
11448
|
-
console.log("Epic Web dev server web socket error:");
|
|
11449
|
-
console.error(error);
|
|
11450
|
-
};
|
|
11451
|
-
}
|
|
11452
|
-
epicLiveReloadConnect();
|
|
11453
|
-
`
|
|
11454
|
-
);
|
|
11455
|
-
return new Response(js, {
|
|
11456
|
-
headers: {
|
|
11457
|
-
"Content-Length": Buffer.byteLength(js).toString(),
|
|
11458
|
-
"Content-Type": "text/javascript"
|
|
11459
|
-
}
|
|
11460
|
-
});
|
|
11461
|
-
}
|
|
11462
|
-
const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11463
|
-
__proto__: null,
|
|
11464
|
-
loader: loader$c
|
|
11465
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
11466
|
-
async function loader$b({ request, params }) {
|
|
11467
|
-
var _a2;
|
|
11468
|
-
const timings = makeTimings("app_test_loader");
|
|
11469
|
-
const { id: appId, testName } = params;
|
|
11470
|
-
invariantResponse(appId, "App id is required");
|
|
11471
|
-
invariantResponse(testName, "Test name is required");
|
|
11472
|
-
const app = await getAppByName(appId, { request, timings });
|
|
11473
|
-
if (!app) {
|
|
11474
|
-
throw new Response(`App "${appId}" not found`, {
|
|
11475
|
-
status: 404,
|
|
11476
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
11477
|
-
});
|
|
11478
|
-
}
|
|
11479
|
-
if (app.test.type !== "browser" || app.dev.type !== "browser") {
|
|
11480
|
-
return redirectWithToast(
|
|
11481
|
-
"/",
|
|
11482
|
-
{
|
|
11483
|
-
type: "error",
|
|
11484
|
-
title: "Unsupported",
|
|
11485
|
-
description: `Cannot load this app's tests in the browser`
|
|
11486
|
-
},
|
|
11487
|
-
{ headers: { "Server-Timing": getServerTimeHeader(timings) } }
|
|
11488
|
-
);
|
|
11489
|
-
}
|
|
11490
|
-
const testFile = app.test.testFiles.find((file) => file === testName);
|
|
11491
|
-
if (!testFile) {
|
|
11492
|
-
throw new Response(`Test "${testName}" not found`, {
|
|
11493
|
-
status: 404,
|
|
11494
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
11495
|
-
});
|
|
11496
|
-
}
|
|
11497
|
-
if (!/(js|ts|tsx)$/.test(testFile)) {
|
|
11498
|
-
throw new Response(`Test "${testName}" is not a script`, {
|
|
11499
|
-
status: 400,
|
|
11500
|
-
headers: { "Server-Timing": getServerTimeHeader(timings) }
|
|
11501
|
-
});
|
|
11502
|
-
}
|
|
11503
|
-
let testFileAppName = app.name;
|
|
11504
|
-
if (isProblemApp(app)) {
|
|
11505
|
-
testFileAppName = isProblemApp(app) ? app.solutionName : null;
|
|
11506
|
-
}
|
|
11507
|
-
if (isPlaygroundApp(app)) {
|
|
11508
|
-
const appBasis = await getAppByName(app.appName);
|
|
11509
|
-
testFileAppName = isProblemApp(appBasis) ? appBasis.solutionName : null;
|
|
11510
|
-
}
|
|
11511
|
-
const testFileQueryString = testFileAppName ? `?fileAppName=${encodeURIComponent(testFileAppName)}` : "";
|
|
11512
|
-
const testScriptPath = `${app.dev.pathname}${testFile}${testFileQueryString}`;
|
|
11513
|
-
const testScriptSrc = (
|
|
11514
|
-
/* javascript */
|
|
11515
|
-
`
|
|
11516
|
-
function logStatus(message) {
|
|
11517
|
-
if (window.parent !== window) {
|
|
11518
|
-
window.parent.postMessage(
|
|
11519
|
-
{ type: 'epicshop:test-status-update', ...message },
|
|
11520
|
-
'*',
|
|
11521
|
-
)
|
|
11522
|
-
} else {
|
|
11523
|
-
if (message.status === 'fail') {
|
|
11524
|
-
console.error(message)
|
|
11525
|
-
} else if (message.status === 'pending') {
|
|
11526
|
-
console.info(message)
|
|
11527
|
-
} else if (message.status === 'pass') {
|
|
11528
|
-
console.log(message)
|
|
11529
|
-
}
|
|
11530
|
-
}
|
|
11531
|
-
}
|
|
11532
|
-
const testFile = ${JSON.stringify(testFile)}
|
|
11533
|
-
logStatus({status: 'pending', timestamp: Date.now()})
|
|
11534
|
-
import(${JSON.stringify(testScriptPath)}).then(
|
|
11535
|
-
() => {
|
|
11536
|
-
logStatus({ status: 'pass', timestamp: Date.now() })
|
|
11537
|
-
},
|
|
11538
|
-
error => {
|
|
11539
|
-
logStatus({
|
|
11540
|
-
status: 'fail',
|
|
11541
|
-
error:
|
|
11542
|
-
typeof error === 'string'
|
|
11543
|
-
? error
|
|
11544
|
-
: typeof error === 'object' && error && 'message' in error
|
|
11545
|
-
? error.message
|
|
11546
|
-
: 'unknown error',
|
|
11547
|
-
timestamp: Date.now(),
|
|
11548
|
-
})
|
|
11549
|
-
throw error
|
|
11550
|
-
},
|
|
11551
|
-
)
|
|
11552
|
-
`
|
|
11553
|
-
);
|
|
11554
|
-
const testScriptTag = `<script type="module">${testScriptSrc}<\/script>`;
|
|
11555
|
-
const htmlFile = path.join(app.fullPath, "index.html");
|
|
11556
|
-
const hasHtml = await fsExtra.pathExists(htmlFile);
|
|
11557
|
-
if (hasHtml) {
|
|
11558
|
-
const html2 = await fsExtra.readFile(htmlFile);
|
|
11559
|
-
const testableHtml = html2.toString().replace(`</body>`, `${testScriptTag}</body>`);
|
|
11560
|
-
return new Response(testableHtml, {
|
|
11561
|
-
headers: {
|
|
11562
|
-
"Content-Length": Buffer.byteLength(testableHtml).toString(),
|
|
11563
|
-
"Content-Type": "text/html",
|
|
11564
|
-
"Server-Timing": getServerTimeHeader(timings)
|
|
11565
|
-
}
|
|
11566
|
-
});
|
|
11567
|
-
}
|
|
11568
|
-
const indexFiles = (await fsExtra.readdir(app.fullPath)).filter(
|
|
11569
|
-
(file) => file.startsWith("index.")
|
|
11570
|
-
);
|
|
11571
|
-
const indexCss = indexFiles.find((file) => file.endsWith("index.css"));
|
|
11572
|
-
const appTitle = app.title;
|
|
11573
|
-
const workshopTitle = await getWorkshopTitle();
|
|
11574
|
-
const title = (isExerciseStepApp(app) ? [
|
|
11575
|
-
isProblemApp(app) ? "🧪💪" : isSolutionApp(app) ? "🧪🏁" : null,
|
|
11576
|
-
`${app.stepNumber.toString().padStart(2, "0")}. ${app.title}`,
|
|
11577
|
-
`${app.exerciseNumber.toString().padStart(2, "0")}. ${((_a2 = await getExercise(app.exerciseNumber, { request, timings })) == null ? void 0 : _a2.title) ?? "Unknown"}`,
|
|
11578
|
-
workshopTitle
|
|
11579
|
-
] : ["🧪", appTitle]).filter(Boolean).join(" | ");
|
|
11580
|
-
const html = (
|
|
11581
|
-
/* html */
|
|
11582
|
-
`
|
|
11583
|
-
<!DOCTYPE html>
|
|
11584
|
-
<html>
|
|
11585
|
-
<head>
|
|
11586
|
-
<base href="${app.dev.pathname}" />
|
|
11587
|
-
<meta charset="utf-8">
|
|
11588
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
11589
|
-
<title>${title}</title>
|
|
11590
|
-
<link rel="stylesheet" href="/app-default.css">
|
|
11591
|
-
${indexCss ? `<link rel="stylesheet" href="${indexCss}">` : ""}
|
|
11592
|
-
</head>
|
|
11593
|
-
<body>
|
|
11594
|
-
${testScriptTag}
|
|
11595
|
-
<script type="module" src="epic_ws.js${testFileQueryString}"><\/script>
|
|
11596
|
-
</body>
|
|
11597
|
-
</html>
|
|
11598
|
-
`
|
|
11599
|
-
);
|
|
11600
|
-
return new Response(html, {
|
|
11601
|
-
headers: {
|
|
11602
|
-
"Content-Length": Buffer.byteLength(html).toString(),
|
|
11603
|
-
"Content-Type": "text/html",
|
|
11604
|
-
"Server-Timing": getServerTimeHeader(timings)
|
|
11605
|
-
}
|
|
11606
|
-
});
|
|
11607
|
-
}
|
|
11608
|
-
const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11609
|
-
__proto__: null,
|
|
11610
|
-
loader: loader$b
|
|
11611
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
11612
|
-
const meta$1 = ({
|
|
11613
|
-
matches
|
|
11614
|
-
}) => {
|
|
11135
|
+
const meta$1 = ({
|
|
11136
|
+
matches
|
|
11137
|
+
}) => {
|
|
11615
11138
|
var _a2;
|
|
11616
11139
|
const rootData = (_a2 = matches.find((m) => m.id === "root")) == null ? void 0 : _a2.data;
|
|
11617
11140
|
return [{ title: `🎉 ${rootData == null ? void 0 : rootData.workshopTitle}` }];
|
|
@@ -11749,7 +11272,7 @@ function Survey({
|
|
|
11749
11272
|
)
|
|
11750
11273
|
] });
|
|
11751
11274
|
}
|
|
11752
|
-
const
|
|
11275
|
+
const route16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11753
11276
|
__proto__: null,
|
|
11754
11277
|
default: ExerciseFinished,
|
|
11755
11278
|
headers: headers$2,
|
|
@@ -11881,7 +11404,7 @@ function Index() {
|
|
|
11881
11404
|
function ErrorBoundary() {
|
|
11882
11405
|
return /* @__PURE__ */ jsx(GeneralErrorBoundary, {});
|
|
11883
11406
|
}
|
|
11884
|
-
const
|
|
11407
|
+
const route17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11885
11408
|
__proto__: null,
|
|
11886
11409
|
ErrorBoundary,
|
|
11887
11410
|
default: Index,
|
|
@@ -11982,7 +11505,7 @@ async function loader$8({ request }) {
|
|
|
11982
11505
|
};
|
|
11983
11506
|
});
|
|
11984
11507
|
}
|
|
11985
|
-
const
|
|
11508
|
+
const route27 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11986
11509
|
__proto__: null,
|
|
11987
11510
|
EventSchema,
|
|
11988
11511
|
loader: loader$8
|
|
@@ -12106,7 +11629,7 @@ function Logo({ className = "" }) {
|
|
|
12106
11629
|
}
|
|
12107
11630
|
);
|
|
12108
11631
|
}
|
|
12109
|
-
const
|
|
11632
|
+
const route18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12110
11633
|
__proto__: null,
|
|
12111
11634
|
action: action$2,
|
|
12112
11635
|
default: Login,
|
|
@@ -12165,7 +11688,7 @@ function Support() {
|
|
|
12165
11688
|
] })
|
|
12166
11689
|
] });
|
|
12167
11690
|
}
|
|
12168
|
-
const
|
|
11691
|
+
const route19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12169
11692
|
__proto__: null,
|
|
12170
11693
|
default: Support
|
|
12171
11694
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12410,7 +11933,7 @@ function Pinger({
|
|
|
12410
11933
|
)
|
|
12411
11934
|
] });
|
|
12412
11935
|
}
|
|
12413
|
-
const
|
|
11936
|
+
const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12414
11937
|
__proto__: null,
|
|
12415
11938
|
action: action$1,
|
|
12416
11939
|
default: AdminLayout,
|
|
@@ -12421,7 +11944,7 @@ async function loader$5() {
|
|
|
12421
11944
|
const apps = await getApps();
|
|
12422
11945
|
return json({ apps });
|
|
12423
11946
|
}
|
|
12424
|
-
const
|
|
11947
|
+
const route21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12425
11948
|
__proto__: null,
|
|
12426
11949
|
loader: loader$5
|
|
12427
11950
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12433,7 +11956,7 @@ async function loader$4({ request }) {
|
|
|
12433
11956
|
{ headers: { "Server-Timing": getServerTimeHeader(timings) } }
|
|
12434
11957
|
);
|
|
12435
11958
|
}
|
|
12436
|
-
const
|
|
11959
|
+
const route22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12437
11960
|
__proto__: null,
|
|
12438
11961
|
loader: loader$4
|
|
12439
11962
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12522,7 +12045,7 @@ function DiffViewer() {
|
|
|
12522
12045
|
}
|
|
12523
12046
|
);
|
|
12524
12047
|
}
|
|
12525
|
-
const
|
|
12048
|
+
const route23 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12526
12049
|
__proto__: null,
|
|
12527
12050
|
default: DiffViewer,
|
|
12528
12051
|
loader: loader$3
|
|
@@ -12535,7 +12058,7 @@ async function loader$2({ request }) {
|
|
|
12535
12058
|
{ headers: { "Server-Timing": getServerTimeHeader(timings) } }
|
|
12536
12059
|
);
|
|
12537
12060
|
}
|
|
12538
|
-
const
|
|
12061
|
+
const route25 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12539
12062
|
__proto__: null,
|
|
12540
12063
|
loader: loader$2
|
|
12541
12064
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -12577,7 +12100,7 @@ function Onboarding() {
|
|
|
12577
12100
|
/* @__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!" }) })
|
|
12578
12101
|
] });
|
|
12579
12102
|
}
|
|
12580
|
-
const
|
|
12103
|
+
const route28 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12581
12104
|
__proto__: null,
|
|
12582
12105
|
action,
|
|
12583
12106
|
default: Onboarding,
|
|
@@ -12602,11 +12125,11 @@ async function loader() {
|
|
|
12602
12125
|
}
|
|
12603
12126
|
return json({ processes, testProcesses: testProcesses2 });
|
|
12604
12127
|
}
|
|
12605
|
-
const
|
|
12128
|
+
const route29 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
12606
12129
|
__proto__: null,
|
|
12607
12130
|
loader
|
|
12608
12131
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
12609
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-DBBrAxtJ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.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-B02acrJe.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/client-hints-KnbHFIgn.js", "/assets/error-boundary-Bg54_knF.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BL4aE6WC.js", "/assets/index-CLnz0tXz.js", "/assets/presence-u-05JV3Z.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/_-ByTWgb53.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/error-boundary-Bg54_knF.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-D7Qo_r0X.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/client-hints-KnbHFIgn.js", "/assets/progress-CBZt2pmu.js", "/assets/index-CLnz0tXz.js", "/assets/user-DiGtbaa7.js", "/assets/presence-u-05JV3Z.js"], "css": [] }, "routes/_app+/_exercises+/_layout": { "id": "routes/_app+/_exercises+/_layout", "parentId": "routes/_app+/_layout", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-Bj9PyQQD.js", "imports": ["/assets/index-D1WEsmVZ.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-s_qbmGEJ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-D1wwEMQx.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-49l6Rvwp.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-CXGQ7VS9.js", "/assets/client-hints-KnbHFIgn.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/mdx-ytg-y2nh.js", "/assets/user-DiGtbaa7.js", "/assets/index-BfoHqrT5.js", "/assets/diff-CT3-9rtW.js", "/assets/discord-CsluX01E.js", "/assets/index-BL4aE6WC.js", "/assets/button-DnQOyJAN.js", "/assets/use-event-source-DXlRuRq2.js", "/assets/error-boundary-Bg54_knF.js", "/assets/nav-chevrons-D8c9lJW6.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-DJgT9oaU.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/nav-chevrons-D8c9lJW6.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-Bk4o4AzZ.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/index-B8k-Gd1G.js", "/assets/button-DnQOyJAN.js", "/assets/misc-CXGQ7VS9.js", "/assets/user-DiGtbaa7.js", "/assets/presence-u-05JV3Z.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+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/kcd_ws[.js]": { "id": "routes/_app+/app.$appName+/kcd_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/kcd_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/kcd_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id": { "id": "routes/_app+/app.$id", "parentId": "routes/_app+/_layout", "path": "app/:id", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.$": { "id": "routes/_app+/app.$id.$", "parentId": "routes/_app+/app.$id", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.api.$": { "id": "routes/_app+/app.$id.api.$", "parentId": "routes/_app+/app.$id", "path": "api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.epic_ws[.js]": { "id": "routes/_app+/app.$id.epic_ws[.js]", "parentId": "routes/_app+/app.$id", "path": "epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$id.test.$testName": { "id": "routes/_app+/app.$id.test.$testName", "parentId": "routes/_app+/app.$id", "path": "test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app._id.test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-CK7yz4w6.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/user-DiGtbaa7.js", "/assets/discord-CsluX01E.js"], "css": [] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-Dw3SJA8A.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/mdx-ytg-y2nh.js", "/assets/progress-CBZt2pmu.js", "/assets/nav-chevrons-D8c9lJW6.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-YgRENgjt.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/index-BfoHqrT5.js", "/assets/progress-CBZt2pmu.js", "/assets/error-boundary-Bg54_knF.js", "/assets/mdx-ytg-y2nh.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-CjvZj820.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/client-hints-KnbHFIgn.js", "/assets/use-event-source-DXlRuRq2.js", "/assets/index-B8k-Gd1G.js", "/assets/button-DnQOyJAN.js", "/assets/loading-D-DClzm1.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-QTdmLyE7.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/components-Dj3sm47B.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-BaPtC79F.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/tooltip-CVFWPOu0.js", "/assets/progress-CBZt2pmu.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/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-CLRdJhCn.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/misc-CXGQ7VS9.js", "/assets/client-hints-KnbHFIgn.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/epic-video-Df7qGSN7.js", "/assets/progress-bar-DX6yYES2.js", "/assets/mdx-ytg-y2nh.js", "/assets/diff-CT3-9rtW.js", "/assets/nav-chevrons-D8c9lJW6.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-BxcIdiGj.js", "imports": ["/assets/index-D1WEsmVZ.js", "/assets/clsx-B-dksMZM.js", "/assets/components-Dj3sm47B.js", "/assets/client-hints-KnbHFIgn.js", "/assets/misc-CXGQ7VS9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-CVFWPOu0.js", "/assets/loading-D-DClzm1.js", "/assets/index-CLnz0tXz.js", "/assets/button-DnQOyJAN.js", "/assets/epic-video-Df7qGSN7.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] } }, "url": "/assets/manifest-9027f7b6.js", "version": "9027f7b6" };
|
|
12132
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-XC5tKTFs.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.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-1Cc21xa6.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/client-hints-B2pbEa_9.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-B8G3eD8F.js", "/assets/index-Dc59VwXx.js", "/assets/presence-BF7lWuVd.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/_-CsdFvUbA.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/error-boundary-tJSWbP6w.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-C8fK4Z98.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/client-hints-B2pbEa_9.js", "/assets/progress-mfa_5CZx.js", "/assets/index-Dc59VwXx.js", "/assets/user-p2QVtDZI.js", "/assets/presence-BF7lWuVd.js"], "css": [] }, "routes/_app+/_exercises+/_layout": { "id": "routes/_app+/_exercises+/_layout", "parentId": "routes/_app+/_layout", "path": void 0, "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-D1A2zp9y.js", "imports": ["/assets/index-BDqSZ0-h.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-DWZNkWZM.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-P76hDsE6.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js"], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BSoUgboG.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-C1rq7sPa.js", "/assets/client-hints-B2pbEa_9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/mdx-CZ_BPVoS.js", "/assets/user-p2QVtDZI.js", "/assets/index-BymJEf3X.js", "/assets/diff-BQhWtDyS.js", "/assets/discord-BMNnObT9.js", "/assets/index-B8G3eD8F.js", "/assets/button-Da1iG51o.js", "/assets/use-event-source-DPLyo0Bh.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/nav-chevrons-C-dN3WfT.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/_exercises+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/_exercises+/$exerciseNumber_.finished": { "id": "routes/_app+/_exercises+/$exerciseNumber_.finished", "parentId": "routes/_app+/_exercises+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-CpC-flTW.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/nav-chevrons-C-dN3WfT.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-BeKnQB9r.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/index-B8k-Gd1G.js", "/assets/button-Da1iG51o.js", "/assets/misc-C1rq7sPa.js", "/assets/user-p2QVtDZI.js", "/assets/presence-BF7lWuVd.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-DdAReDkL.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/user-p2QVtDZI.js", "/assets/discord-BMNnObT9.js"], "css": [] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-CMGRmsnb.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/mdx-CZ_BPVoS.js", "/assets/progress-mfa_5CZx.js", "/assets/nav-chevrons-C-dN3WfT.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-CQZ5FyEE.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.js", "/assets/clsx-B-dksMZM.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/index-BymJEf3X.js", "/assets/progress-mfa_5CZx.js", "/assets/error-boundary-tJSWbP6w.js", "/assets/mdx-CZ_BPVoS.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-CcuvIoiW.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/client-hints-B2pbEa_9.js", "/assets/use-event-source-DPLyo0Bh.js", "/assets/index-B8k-Gd1G.js", "/assets/button-Da1iG51o.js", "/assets/loading-DsjO-T0W.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--jou3sWH.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/components-BM_XUa9h.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-DEZ-aTmx.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/tooltip-BlVFw-is.js", "/assets/progress-mfa_5CZx.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/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-BDeBUdSw.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/misc-C1rq7sPa.js", "/assets/client-hints-B2pbEa_9.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/epic-video-CxRPT-8l.js", "/assets/progress-bar-BmszwN_j.js", "/assets/mdx-CZ_BPVoS.js", "/assets/diff-BQhWtDyS.js", "/assets/nav-chevrons-C-dN3WfT.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-CfXLKsN3.js", "imports": ["/assets/index-BDqSZ0-h.js", "/assets/clsx-B-dksMZM.js", "/assets/components-BM_XUa9h.js", "/assets/client-hints-B2pbEa_9.js", "/assets/misc-C1rq7sPa.js", "/assets/index-B8k-Gd1G.js", "/assets/tooltip-BlVFw-is.js", "/assets/loading-DsjO-T0W.js", "/assets/index-Dc59VwXx.js", "/assets/button-Da1iG51o.js", "/assets/epic-video-CxRPT-8l.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] } }, "url": "/assets/manifest-1656ae4d.js", "version": "1656ae4d" };
|
|
12610
12133
|
const mode = "production";
|
|
12611
12134
|
const assetsBuildDirectory = "build/client";
|
|
12612
12135
|
const basename = "/";
|
|
@@ -12711,19 +12234,19 @@ const routes = {
|
|
|
12711
12234
|
caseSensitive: void 0,
|
|
12712
12235
|
module: route11
|
|
12713
12236
|
},
|
|
12714
|
-
"routes/_app+/app.$appName+/
|
|
12715
|
-
id: "routes/_app+/app.$appName+/
|
|
12237
|
+
"routes/_app+/app.$appName+/epic_ws[.js]": {
|
|
12238
|
+
id: "routes/_app+/app.$appName+/epic_ws[.js]",
|
|
12716
12239
|
parentId: "routes/_app+/_layout",
|
|
12717
|
-
path: "app/:appName/",
|
|
12718
|
-
index:
|
|
12240
|
+
path: "app/:appName/epic_ws.js",
|
|
12241
|
+
index: void 0,
|
|
12719
12242
|
caseSensitive: void 0,
|
|
12720
12243
|
module: route12
|
|
12721
12244
|
},
|
|
12722
|
-
"routes/_app+/app.$appName+/
|
|
12723
|
-
id: "routes/_app+/app.$appName+/
|
|
12245
|
+
"routes/_app+/app.$appName+/index": {
|
|
12246
|
+
id: "routes/_app+/app.$appName+/index",
|
|
12724
12247
|
parentId: "routes/_app+/_layout",
|
|
12725
|
-
path: "app/:appName/
|
|
12726
|
-
index:
|
|
12248
|
+
path: "app/:appName/",
|
|
12249
|
+
index: true,
|
|
12727
12250
|
caseSensitive: void 0,
|
|
12728
12251
|
module: route13
|
|
12729
12252
|
},
|
|
@@ -12735,53 +12258,13 @@ const routes = {
|
|
|
12735
12258
|
caseSensitive: void 0,
|
|
12736
12259
|
module: route14
|
|
12737
12260
|
},
|
|
12738
|
-
"routes/_app+/app.$id": {
|
|
12739
|
-
id: "routes/_app+/app.$id",
|
|
12740
|
-
parentId: "routes/_app+/_layout",
|
|
12741
|
-
path: "app/:id",
|
|
12742
|
-
index: void 0,
|
|
12743
|
-
caseSensitive: void 0,
|
|
12744
|
-
module: route15
|
|
12745
|
-
},
|
|
12746
|
-
"routes/_app+/app.$id.$": {
|
|
12747
|
-
id: "routes/_app+/app.$id.$",
|
|
12748
|
-
parentId: "routes/_app+/app.$id",
|
|
12749
|
-
path: "*",
|
|
12750
|
-
index: void 0,
|
|
12751
|
-
caseSensitive: void 0,
|
|
12752
|
-
module: route16
|
|
12753
|
-
},
|
|
12754
|
-
"routes/_app+/app.$id.api.$": {
|
|
12755
|
-
id: "routes/_app+/app.$id.api.$",
|
|
12756
|
-
parentId: "routes/_app+/app.$id",
|
|
12757
|
-
path: "api/*",
|
|
12758
|
-
index: void 0,
|
|
12759
|
-
caseSensitive: void 0,
|
|
12760
|
-
module: route17
|
|
12761
|
-
},
|
|
12762
|
-
"routes/_app+/app.$id.epic_ws[.js]": {
|
|
12763
|
-
id: "routes/_app+/app.$id.epic_ws[.js]",
|
|
12764
|
-
parentId: "routes/_app+/app.$id",
|
|
12765
|
-
path: "epic_ws.js",
|
|
12766
|
-
index: void 0,
|
|
12767
|
-
caseSensitive: void 0,
|
|
12768
|
-
module: route18
|
|
12769
|
-
},
|
|
12770
|
-
"routes/_app+/app.$id.test.$testName": {
|
|
12771
|
-
id: "routes/_app+/app.$id.test.$testName",
|
|
12772
|
-
parentId: "routes/_app+/app.$id",
|
|
12773
|
-
path: "test/:testName",
|
|
12774
|
-
index: void 0,
|
|
12775
|
-
caseSensitive: void 0,
|
|
12776
|
-
module: route19
|
|
12777
|
-
},
|
|
12778
12261
|
"routes/_app+/discord": {
|
|
12779
12262
|
id: "routes/_app+/discord",
|
|
12780
12263
|
parentId: "routes/_app+/_layout",
|
|
12781
12264
|
path: "discord",
|
|
12782
12265
|
index: void 0,
|
|
12783
12266
|
caseSensitive: void 0,
|
|
12784
|
-
module:
|
|
12267
|
+
module: route15
|
|
12785
12268
|
},
|
|
12786
12269
|
"routes/_app+/finished": {
|
|
12787
12270
|
id: "routes/_app+/finished",
|
|
@@ -12789,7 +12272,7 @@ const routes = {
|
|
|
12789
12272
|
path: "finished",
|
|
12790
12273
|
index: void 0,
|
|
12791
12274
|
caseSensitive: void 0,
|
|
12792
|
-
module:
|
|
12275
|
+
module: route16
|
|
12793
12276
|
},
|
|
12794
12277
|
"routes/_app+/index": {
|
|
12795
12278
|
id: "routes/_app+/index",
|
|
@@ -12797,7 +12280,7 @@ const routes = {
|
|
|
12797
12280
|
path: void 0,
|
|
12798
12281
|
index: true,
|
|
12799
12282
|
caseSensitive: void 0,
|
|
12800
|
-
module:
|
|
12283
|
+
module: route17
|
|
12801
12284
|
},
|
|
12802
12285
|
"routes/_app+/login": {
|
|
12803
12286
|
id: "routes/_app+/login",
|
|
@@ -12805,7 +12288,7 @@ const routes = {
|
|
|
12805
12288
|
path: "login",
|
|
12806
12289
|
index: void 0,
|
|
12807
12290
|
caseSensitive: void 0,
|
|
12808
|
-
module:
|
|
12291
|
+
module: route18
|
|
12809
12292
|
},
|
|
12810
12293
|
"routes/_app+/support": {
|
|
12811
12294
|
id: "routes/_app+/support",
|
|
@@ -12813,7 +12296,7 @@ const routes = {
|
|
|
12813
12296
|
path: "support",
|
|
12814
12297
|
index: void 0,
|
|
12815
12298
|
caseSensitive: void 0,
|
|
12816
|
-
module:
|
|
12299
|
+
module: route19
|
|
12817
12300
|
},
|
|
12818
12301
|
"routes/admin+/_layout": {
|
|
12819
12302
|
id: "routes/admin+/_layout",
|
|
@@ -12821,7 +12304,7 @@ const routes = {
|
|
|
12821
12304
|
path: "admin",
|
|
12822
12305
|
index: void 0,
|
|
12823
12306
|
caseSensitive: void 0,
|
|
12824
|
-
module:
|
|
12307
|
+
module: route20
|
|
12825
12308
|
},
|
|
12826
12309
|
"routes/admin+/apps": {
|
|
12827
12310
|
id: "routes/admin+/apps",
|
|
@@ -12829,7 +12312,7 @@ const routes = {
|
|
|
12829
12312
|
path: "apps",
|
|
12830
12313
|
index: void 0,
|
|
12831
12314
|
caseSensitive: void 0,
|
|
12832
|
-
module:
|
|
12315
|
+
module: route21
|
|
12833
12316
|
},
|
|
12834
12317
|
"routes/apps": {
|
|
12835
12318
|
id: "routes/apps",
|
|
@@ -12837,7 +12320,7 @@ const routes = {
|
|
|
12837
12320
|
path: "apps",
|
|
12838
12321
|
index: void 0,
|
|
12839
12322
|
caseSensitive: void 0,
|
|
12840
|
-
module:
|
|
12323
|
+
module: route22
|
|
12841
12324
|
},
|
|
12842
12325
|
"routes/diff": {
|
|
12843
12326
|
id: "routes/diff",
|
|
@@ -12845,7 +12328,7 @@ const routes = {
|
|
|
12845
12328
|
path: "diff",
|
|
12846
12329
|
index: void 0,
|
|
12847
12330
|
caseSensitive: void 0,
|
|
12848
|
-
module:
|
|
12331
|
+
module: route23
|
|
12849
12332
|
},
|
|
12850
12333
|
"routes/discord.callback": {
|
|
12851
12334
|
id: "routes/discord.callback",
|
|
@@ -12853,7 +12336,7 @@ const routes = {
|
|
|
12853
12336
|
path: "discord/callback",
|
|
12854
12337
|
index: void 0,
|
|
12855
12338
|
caseSensitive: void 0,
|
|
12856
|
-
module:
|
|
12339
|
+
module: route24
|
|
12857
12340
|
},
|
|
12858
12341
|
"routes/exercises": {
|
|
12859
12342
|
id: "routes/exercises",
|
|
@@ -12861,7 +12344,7 @@ const routes = {
|
|
|
12861
12344
|
path: "exercises",
|
|
12862
12345
|
index: void 0,
|
|
12863
12346
|
caseSensitive: void 0,
|
|
12864
|
-
module:
|
|
12347
|
+
module: route25
|
|
12865
12348
|
},
|
|
12866
12349
|
"routes/launch-editor": {
|
|
12867
12350
|
id: "routes/launch-editor",
|
|
@@ -12869,7 +12352,7 @@ const routes = {
|
|
|
12869
12352
|
path: "launch-editor",
|
|
12870
12353
|
index: void 0,
|
|
12871
12354
|
caseSensitive: void 0,
|
|
12872
|
-
module:
|
|
12355
|
+
module: route26
|
|
12873
12356
|
},
|
|
12874
12357
|
"routes/login-sse": {
|
|
12875
12358
|
id: "routes/login-sse",
|
|
@@ -12877,7 +12360,7 @@ const routes = {
|
|
|
12877
12360
|
path: "login-sse",
|
|
12878
12361
|
index: void 0,
|
|
12879
12362
|
caseSensitive: void 0,
|
|
12880
|
-
module:
|
|
12363
|
+
module: route27
|
|
12881
12364
|
},
|
|
12882
12365
|
"routes/onboarding": {
|
|
12883
12366
|
id: "routes/onboarding",
|
|
@@ -12885,7 +12368,7 @@ const routes = {
|
|
|
12885
12368
|
path: "onboarding",
|
|
12886
12369
|
index: void 0,
|
|
12887
12370
|
caseSensitive: void 0,
|
|
12888
|
-
module:
|
|
12371
|
+
module: route28
|
|
12889
12372
|
},
|
|
12890
12373
|
"routes/processes": {
|
|
12891
12374
|
id: "routes/processes",
|
|
@@ -12893,7 +12376,7 @@ const routes = {
|
|
|
12893
12376
|
path: "processes",
|
|
12894
12377
|
index: void 0,
|
|
12895
12378
|
caseSensitive: void 0,
|
|
12896
|
-
module:
|
|
12379
|
+
module: route29
|
|
12897
12380
|
},
|
|
12898
12381
|
"routes/progress": {
|
|
12899
12382
|
id: "routes/progress",
|
|
@@ -12901,7 +12384,7 @@ const routes = {
|
|
|
12901
12384
|
path: "progress",
|
|
12902
12385
|
index: void 0,
|
|
12903
12386
|
caseSensitive: void 0,
|
|
12904
|
-
module:
|
|
12387
|
+
module: route30
|
|
12905
12388
|
},
|
|
12906
12389
|
"routes/set-playground": {
|
|
12907
12390
|
id: "routes/set-playground",
|
|
@@ -12909,7 +12392,7 @@ const routes = {
|
|
|
12909
12392
|
path: "set-playground",
|
|
12910
12393
|
index: void 0,
|
|
12911
12394
|
caseSensitive: void 0,
|
|
12912
|
-
module:
|
|
12395
|
+
module: route31
|
|
12913
12396
|
},
|
|
12914
12397
|
"routes/start": {
|
|
12915
12398
|
id: "routes/start",
|
|
@@ -12917,7 +12400,7 @@ const routes = {
|
|
|
12917
12400
|
path: "start",
|
|
12918
12401
|
index: void 0,
|
|
12919
12402
|
caseSensitive: void 0,
|
|
12920
|
-
module:
|
|
12403
|
+
module: route32
|
|
12921
12404
|
},
|
|
12922
12405
|
"routes/test": {
|
|
12923
12406
|
id: "routes/test",
|
|
@@ -12925,7 +12408,7 @@ const routes = {
|
|
|
12925
12408
|
path: "test",
|
|
12926
12409
|
index: void 0,
|
|
12927
12410
|
caseSensitive: void 0,
|
|
12928
|
-
module:
|
|
12411
|
+
module: route33
|
|
12929
12412
|
},
|
|
12930
12413
|
"routes/theme/index": {
|
|
12931
12414
|
id: "routes/theme/index",
|
|
@@ -12933,7 +12416,7 @@ const routes = {
|
|
|
12933
12416
|
path: "theme",
|
|
12934
12417
|
index: void 0,
|
|
12935
12418
|
caseSensitive: void 0,
|
|
12936
|
-
module:
|
|
12419
|
+
module: route34
|
|
12937
12420
|
},
|
|
12938
12421
|
"routes/update-mdx-cache": {
|
|
12939
12422
|
id: "routes/update-mdx-cache",
|
|
@@ -12941,7 +12424,7 @@ const routes = {
|
|
|
12941
12424
|
path: "update-mdx-cache",
|
|
12942
12425
|
index: void 0,
|
|
12943
12426
|
caseSensitive: void 0,
|
|
12944
|
-
module:
|
|
12427
|
+
module: route35
|
|
12945
12428
|
},
|
|
12946
12429
|
"routes/video-player/index": {
|
|
12947
12430
|
id: "routes/video-player/index",
|
|
@@ -12949,7 +12432,7 @@ const routes = {
|
|
|
12949
12432
|
path: "video-player",
|
|
12950
12433
|
index: void 0,
|
|
12951
12434
|
caseSensitive: void 0,
|
|
12952
|
-
module:
|
|
12435
|
+
module: route36
|
|
12953
12436
|
}
|
|
12954
12437
|
};
|
|
12955
12438
|
export {
|