@epic-web/workshop-app 4.21.1 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/assets/_exerciseNumber-Cq0nozYz.js.map +1 -1
- package/build/client/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js.map +1 -1
- package/build/client/assets/_exerciseNumber_.finished-Q9qnPuZX.js.map +1 -1
- package/build/client/assets/_layout-AgYGL72C.js.map +1 -1
- package/build/client/assets/_layout-BocZ2xWF.js.map +1 -1
- package/build/client/assets/_layout-C8uU4Hwj.js.map +1 -1
- package/build/client/assets/finished-Bm-bCUU2.js.map +1 -1
- package/build/client/assets/index-Tfdnz1AB.js.map +1 -1
- package/build/client/assets/{manifest-4bde8719.js → manifest-4a3cf2ec.js} +1 -1
- package/build/client/assets/mdx-M0kcP-mP.js.map +1 -1
- package/build/client/assets/{onboarding-Bib-wh6d.js → onboarding-CnmE4HLR.js} +2 -2
- package/build/client/assets/onboarding-CnmE4HLR.js.map +1 -0
- package/build/client/assets/root-Tcnfz99O.js.map +1 -1
- package/build/client/assets/seo-pBpFCWsy.js.map +1 -1
- package/build/server/index.js +261 -243
- package/build/server/index.js.map +1 -1
- package/package.json +3 -3
- package/build/client/assets/onboarding-Bib-wh6d.js.map +0 -1
package/build/server/index.js
CHANGED
|
@@ -360,7 +360,9 @@ const AuthInfoSchema = z$1.object({
|
|
|
360
360
|
name: z$1.string().nullable().optional()
|
|
361
361
|
}).transform((d) => ({ ...d, id: md5(d.email) }));
|
|
362
362
|
const DataSchema = z$1.object({
|
|
363
|
-
onboarding: z$1.object({
|
|
363
|
+
onboarding: z$1.object({
|
|
364
|
+
tourVideosWatched: z$1.array(z$1.string()).default([])
|
|
365
|
+
}).passthrough().optional().default({ tourVideosWatched: [] }),
|
|
364
366
|
preferences: z$1.object({
|
|
365
367
|
player: PlayerPreferencesSchema,
|
|
366
368
|
presence: PresencePreferencesSchema
|
|
@@ -495,11 +497,17 @@ async function readOnboardingData() {
|
|
|
495
497
|
const data = await readDb();
|
|
496
498
|
return (data == null ? void 0 : data.onboarding) ?? null;
|
|
497
499
|
}
|
|
498
|
-
async function
|
|
500
|
+
async function markOnboardingVideoWatched(videoUrl) {
|
|
499
501
|
const data = await readDb();
|
|
500
502
|
const updatedData = {
|
|
501
503
|
...data,
|
|
502
|
-
onboarding: {
|
|
504
|
+
onboarding: {
|
|
505
|
+
...data == null ? void 0 : data.onboarding,
|
|
506
|
+
tourVideosWatched: [
|
|
507
|
+
...(data == null ? void 0 : data.onboarding.tourVideosWatched) ?? [],
|
|
508
|
+
videoUrl
|
|
509
|
+
].filter(Boolean)
|
|
510
|
+
}
|
|
503
511
|
};
|
|
504
512
|
await fsExtra.ensureDir(appDir);
|
|
505
513
|
await fsExtra.writeJSON(dbPath, updatedData);
|
|
@@ -1155,6 +1163,191 @@ async function queuedBundleMDX(...args) {
|
|
|
1155
1163
|
const result = await queue.add(() => bundleMDX(...args));
|
|
1156
1164
|
return result;
|
|
1157
1165
|
}
|
|
1166
|
+
const workshopRoot$1 = process.env.EPICSHOP_CONTEXT_CWD ?? process.cwd();
|
|
1167
|
+
const StackBlitzConfigSchema = z$1.object({
|
|
1168
|
+
// we default this to `${exerciseTitle} (${type})`
|
|
1169
|
+
title: z$1.string().optional(),
|
|
1170
|
+
// stackblitz defaults this to dev automatically
|
|
1171
|
+
startScript: z$1.string().optional(),
|
|
1172
|
+
// if no value is provided, then stackblitz defaults this to whatever
|
|
1173
|
+
// looks best based on the width of the screen
|
|
1174
|
+
view: z$1.union([z$1.literal("editor"), z$1.literal("preview"), z$1.literal("both")]).optional(),
|
|
1175
|
+
file: z$1.string().optional()
|
|
1176
|
+
});
|
|
1177
|
+
const InstructorSchema = z$1.object({
|
|
1178
|
+
name: z$1.string().optional(),
|
|
1179
|
+
avatar: z$1.string().optional(),
|
|
1180
|
+
"𝕏": z$1.string().optional(),
|
|
1181
|
+
xHandle: z$1.string().optional()
|
|
1182
|
+
});
|
|
1183
|
+
const WorkshopConfigSchema = z$1.object({
|
|
1184
|
+
title: z$1.string(),
|
|
1185
|
+
subtitle: z$1.string().optional(),
|
|
1186
|
+
instructor: InstructorSchema.optional(),
|
|
1187
|
+
epicWorkshopHost: z$1.string().default("www.epicweb.dev"),
|
|
1188
|
+
epicWorkshopSlug: z$1.string().optional(),
|
|
1189
|
+
onboardingVideo: z$1.string().default(
|
|
1190
|
+
"https://www.epicweb.dev/tips/get-started-with-the-epic-workshop-app"
|
|
1191
|
+
),
|
|
1192
|
+
githubRepo: z$1.string(),
|
|
1193
|
+
githubRoot: z$1.string(),
|
|
1194
|
+
stackBlitzConfig: StackBlitzConfigSchema.optional(),
|
|
1195
|
+
forms: z$1.object({
|
|
1196
|
+
workshop: z$1.string().default(
|
|
1197
|
+
"https://docs.google.com/forms/d/e/1FAIpQLSdRmj9p8-5zyoqRzxp3UpqSbC3aFkweXvvJIKes0a5s894gzg/viewform?hl=en&embedded=true&entry.2123647600={workshopTitle}"
|
|
1198
|
+
),
|
|
1199
|
+
exercise: z$1.string().default(
|
|
1200
|
+
"https://docs.google.com/forms/d/e/1FAIpQLSf3o9xyjQepTlOTH5Z7ZwkeSTdXh6YWI_RGc9KiyD3oUN0p6w/viewform?hl=en&embedded=true&entry.1836176234={workshopTitle}&entry.428900931={exerciseTitle}"
|
|
1201
|
+
)
|
|
1202
|
+
}).default({}),
|
|
1203
|
+
testTab: z$1.object({
|
|
1204
|
+
enabled: z$1.boolean().default(true)
|
|
1205
|
+
}).default({}),
|
|
1206
|
+
scripts: z$1.object({
|
|
1207
|
+
postupdate: z$1.string().optional()
|
|
1208
|
+
}).optional(),
|
|
1209
|
+
initialRoute: z$1.string().optional().default("/")
|
|
1210
|
+
// Add this line
|
|
1211
|
+
});
|
|
1212
|
+
let cachedConfig = null;
|
|
1213
|
+
function bustWorkshopConfigCache() {
|
|
1214
|
+
cachedConfig = null;
|
|
1215
|
+
}
|
|
1216
|
+
function getWorkshopConfig() {
|
|
1217
|
+
if (cachedConfig) return cachedConfig;
|
|
1218
|
+
const packageJsonPath = path$1.join(workshopRoot$1, "package.json");
|
|
1219
|
+
let packageJson;
|
|
1220
|
+
try {
|
|
1221
|
+
const packageJsonContent = fs.readFileSync(packageJsonPath, "utf8");
|
|
1222
|
+
packageJson = JSON.parse(packageJsonContent);
|
|
1223
|
+
} catch (error) {
|
|
1224
|
+
console.error(`Error reading or parsing package.json:`, error);
|
|
1225
|
+
if (error instanceof Error && error.message.includes("ENOENT")) {
|
|
1226
|
+
throw new Error(
|
|
1227
|
+
`package.json not found at ${packageJsonPath}. Please ensure you're running the command from the correct directory.`
|
|
1228
|
+
);
|
|
1229
|
+
} else if (error instanceof SyntaxError) {
|
|
1230
|
+
throw new Error(
|
|
1231
|
+
`Invalid JSON in package.json at ${packageJsonPath}. Please check the file for syntax errors.`
|
|
1232
|
+
);
|
|
1233
|
+
}
|
|
1234
|
+
throw new Error(
|
|
1235
|
+
`Could not find and parse package.json at ${packageJsonPath}`
|
|
1236
|
+
);
|
|
1237
|
+
}
|
|
1238
|
+
const epicshopConfig = packageJson.epicshop || {};
|
|
1239
|
+
if (epicshopConfig.githubRepo) {
|
|
1240
|
+
epicshopConfig.githubRoot = `${epicshopConfig.githubRepo.replace(/\/$/, "")}/tree/main`;
|
|
1241
|
+
} else if (epicshopConfig.githubRoot) {
|
|
1242
|
+
epicshopConfig.githubRepo = epicshopConfig.githubRoot.replace(
|
|
1243
|
+
/\/(blob|tree)\/.*$/,
|
|
1244
|
+
""
|
|
1245
|
+
);
|
|
1246
|
+
epicshopConfig.githubRoot = `${epicshopConfig.githubRepo}/tree/main`;
|
|
1247
|
+
} else {
|
|
1248
|
+
throw new Error(
|
|
1249
|
+
"Either githubRepo or githubRoot is required in the epicshop configuration"
|
|
1250
|
+
);
|
|
1251
|
+
}
|
|
1252
|
+
try {
|
|
1253
|
+
const parsedConfig = WorkshopConfigSchema.parse(epicshopConfig);
|
|
1254
|
+
cachedConfig = parsedConfig;
|
|
1255
|
+
return parsedConfig;
|
|
1256
|
+
} catch (error) {
|
|
1257
|
+
if (error instanceof z$1.ZodError) {
|
|
1258
|
+
const flattenedErrors = error.flatten();
|
|
1259
|
+
const errorMessages = Object.entries(flattenedErrors.fieldErrors).map(([field, errors]) => `${field}: ${errors == null ? void 0 : errors.join(", ")}`).concat(flattenedErrors.formErrors);
|
|
1260
|
+
throw new Error(
|
|
1261
|
+
`Invalid epicshop configuration in ${packageJsonPath}:
|
|
1262
|
+
${errorMessages.join("\n")}`
|
|
1263
|
+
);
|
|
1264
|
+
}
|
|
1265
|
+
throw error;
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
async function getStackBlitzUrl({
|
|
1269
|
+
fullPath,
|
|
1270
|
+
title,
|
|
1271
|
+
type
|
|
1272
|
+
}) {
|
|
1273
|
+
var _a2;
|
|
1274
|
+
const workshopConfig = getWorkshopConfig();
|
|
1275
|
+
const appConfig = await getAppConfig(fullPath);
|
|
1276
|
+
if (appConfig.stackBlitzConfig === null) return null;
|
|
1277
|
+
let githubRootUrlString = workshopConfig.githubRepo;
|
|
1278
|
+
const githubRootUrl = new URL(
|
|
1279
|
+
githubRootUrlString.replace(/\/blob\//, "/tree/")
|
|
1280
|
+
);
|
|
1281
|
+
const githubPart = githubRootUrl.pathname;
|
|
1282
|
+
const stackBlitzConfig = {
|
|
1283
|
+
...appConfig.stackBlitzConfig,
|
|
1284
|
+
title: ((_a2 = appConfig.stackBlitzConfig) == null ? void 0 : _a2.title) ?? `${title} (${type})`
|
|
1285
|
+
};
|
|
1286
|
+
const params = new URLSearchParams(stackBlitzConfig);
|
|
1287
|
+
const relativePath = fullPath.replace(`${workshopRoot$1}${path$1.sep}`, "");
|
|
1288
|
+
const stackBlitzUrl = new URL(
|
|
1289
|
+
`/github${githubPart}/${relativePath}?${params}`,
|
|
1290
|
+
"https://stackblitz.com"
|
|
1291
|
+
);
|
|
1292
|
+
return stackBlitzUrl.toString();
|
|
1293
|
+
}
|
|
1294
|
+
async function getAppConfig(fullPath) {
|
|
1295
|
+
var _a2, _b;
|
|
1296
|
+
const workshopConfig = getWorkshopConfig();
|
|
1297
|
+
let epicshopConfig = {};
|
|
1298
|
+
let scripts = {};
|
|
1299
|
+
const packageJsonPath = path$1.join(fullPath, "package.json");
|
|
1300
|
+
const packageJsonExists = await fs.promises.access(packageJsonPath, fs.constants.F_OK).then(() => true).catch(() => false);
|
|
1301
|
+
if (packageJsonExists) {
|
|
1302
|
+
const pkg = JSON.parse(
|
|
1303
|
+
await fs.promises.readFile(path$1.join(fullPath, "package.json"), "utf8")
|
|
1304
|
+
);
|
|
1305
|
+
epicshopConfig = pkg.epicshop ?? {};
|
|
1306
|
+
scripts = pkg.scripts ?? {};
|
|
1307
|
+
}
|
|
1308
|
+
const AppConfigSchema = z$1.object({
|
|
1309
|
+
stackBlitzConfig: StackBlitzConfigSchema.nullable().optional().transform((appStackBlitzConfig) => {
|
|
1310
|
+
if (!appStackBlitzConfig) return workshopConfig.stackBlitzConfig ?? null;
|
|
1311
|
+
if (!workshopConfig.stackBlitzConfig) return appStackBlitzConfig;
|
|
1312
|
+
return {
|
|
1313
|
+
...workshopConfig.stackBlitzConfig,
|
|
1314
|
+
...appStackBlitzConfig
|
|
1315
|
+
};
|
|
1316
|
+
}),
|
|
1317
|
+
testTab: z$1.object({
|
|
1318
|
+
enabled: z$1.boolean().optional().default(((_a2 = workshopConfig.testTab) == null ? void 0 : _a2.enabled) ?? true)
|
|
1319
|
+
}).default({}),
|
|
1320
|
+
scripts: z$1.object({
|
|
1321
|
+
test: z$1.string().optional(),
|
|
1322
|
+
dev: z$1.string().optional()
|
|
1323
|
+
}).default({}),
|
|
1324
|
+
initialRoute: z$1.string().optional().default(workshopConfig.initialRoute)
|
|
1325
|
+
});
|
|
1326
|
+
const appConfig = {
|
|
1327
|
+
stackBlitzConfig: epicshopConfig.stackBlitzConfig,
|
|
1328
|
+
testTab: {
|
|
1329
|
+
enabled: (_b = epicshopConfig.testTab) == null ? void 0 : _b.enabled
|
|
1330
|
+
},
|
|
1331
|
+
scripts: {
|
|
1332
|
+
test: scripts.test,
|
|
1333
|
+
dev: scripts.dev
|
|
1334
|
+
},
|
|
1335
|
+
initialRoute: epicshopConfig.initialRoute
|
|
1336
|
+
};
|
|
1337
|
+
try {
|
|
1338
|
+
return AppConfigSchema.parse(appConfig);
|
|
1339
|
+
} catch (error) {
|
|
1340
|
+
if (error instanceof z$1.ZodError) {
|
|
1341
|
+
const flattenedErrors = error.flatten();
|
|
1342
|
+
const errorMessages = Object.entries(flattenedErrors.fieldErrors).map(([field, errors]) => `${field}: ${errors == null ? void 0 : errors.join(", ")}`).concat(flattenedErrors.formErrors);
|
|
1343
|
+
throw new Error(
|
|
1344
|
+
`Invalid app configuration for ${fullPath}:
|
|
1345
|
+
${errorMessages.join("\n")}`
|
|
1346
|
+
);
|
|
1347
|
+
}
|
|
1348
|
+
throw error;
|
|
1349
|
+
}
|
|
1350
|
+
}
|
|
1158
1351
|
const schema = z$1.object({
|
|
1159
1352
|
NODE_ENV: z$1.enum(["production", "development", "test"]).default("development"),
|
|
1160
1353
|
EPICSHOP_GITHUB_REPO: z$1.string(),
|
|
@@ -1437,43 +1630,8 @@ async function waitForPortToBeAvailable(port2) {
|
|
|
1437
1630
|
console.error("Timed out waiting for the port to become available");
|
|
1438
1631
|
}
|
|
1439
1632
|
}
|
|
1440
|
-
const PkgSchema = z$1.object({}).passthrough();
|
|
1441
|
-
async function getPkgProp(fullPath, prop, defaultValue) {
|
|
1442
|
-
let pkg;
|
|
1443
|
-
try {
|
|
1444
|
-
pkg = PkgSchema.parse(
|
|
1445
|
-
JSON.parse(
|
|
1446
|
-
fs.readFileSync(path$1.join(fullPath, "package.json")).toString()
|
|
1447
|
-
)
|
|
1448
|
-
);
|
|
1449
|
-
} catch (error) {
|
|
1450
|
-
throw new Error(`Could not parse package.json of ${fullPath}`, {
|
|
1451
|
-
cause: error
|
|
1452
|
-
});
|
|
1453
|
-
}
|
|
1454
|
-
const propPath = prop.split(".");
|
|
1455
|
-
let value = pkg;
|
|
1456
|
-
for (const p of propPath) {
|
|
1457
|
-
value = value[p];
|
|
1458
|
-
if (value === void 0) break;
|
|
1459
|
-
}
|
|
1460
|
-
if (value === void 0 && defaultValue === void 0) {
|
|
1461
|
-
throw new Error(
|
|
1462
|
-
`Could not find required property ${prop} in package.json of ${fullPath}`
|
|
1463
|
-
);
|
|
1464
|
-
}
|
|
1465
|
-
return value ?? defaultValue;
|
|
1466
|
-
}
|
|
1467
1633
|
let initialized = false;
|
|
1468
1634
|
const workshopRoot = process.env.EPICSHOP_CONTEXT_CWD = process.env.EPICSHOP_CONTEXT_CWD ?? process.cwd();
|
|
1469
|
-
let packageJson;
|
|
1470
|
-
try {
|
|
1471
|
-
packageJson = JSON.parse(
|
|
1472
|
-
fs.readFileSync(path$1.join(workshopRoot, "package.json"), "utf8")
|
|
1473
|
-
);
|
|
1474
|
-
} catch {
|
|
1475
|
-
throw new Error(`Could not find and parse package.json at ${workshopRoot}`);
|
|
1476
|
-
}
|
|
1477
1635
|
const playgroundAppNameInfoPath = path$1.join(
|
|
1478
1636
|
workshopRoot,
|
|
1479
1637
|
"node_modules",
|
|
@@ -1481,16 +1639,6 @@ const playgroundAppNameInfoPath = path$1.join(
|
|
|
1481
1639
|
"epicshop",
|
|
1482
1640
|
"playground.json"
|
|
1483
1641
|
);
|
|
1484
|
-
const StackBlitzConfigSchema = z$1.object({
|
|
1485
|
-
// we default this to `${exerciseTitle} (${type})`
|
|
1486
|
-
title: z$1.string().optional(),
|
|
1487
|
-
// stackblitz defaults this to dev automatically
|
|
1488
|
-
startScript: z$1.string().optional(),
|
|
1489
|
-
// if no value is provided, then stackblitz defaults this to whatever
|
|
1490
|
-
// looks best based on the width of the screen
|
|
1491
|
-
view: z$1.union([z$1.literal("editor"), z$1.literal("preview"), z$1.literal("both")]).optional(),
|
|
1492
|
-
file: z$1.string().optional()
|
|
1493
|
-
});
|
|
1494
1642
|
const BaseAppSchema = z$1.object({
|
|
1495
1643
|
/** a unique identifier for the app */
|
|
1496
1644
|
name: z$1.string(),
|
|
@@ -1618,34 +1766,15 @@ function init() {
|
|
|
1618
1766
|
var _a2;
|
|
1619
1767
|
if (initialized) return;
|
|
1620
1768
|
initialized = true;
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
if (epicshop.githubRepo) {
|
|
1625
|
-
repo = epicshop.githubRepo;
|
|
1626
|
-
root = `${repo.replace(/\/$/, "")}/tree/main`;
|
|
1627
|
-
} else if (epicshop.githubRoot) {
|
|
1628
|
-
root = epicshop.githubRoot.replace(/\/$/, "");
|
|
1629
|
-
repo = root.replace(/\/(blob|tree)\/.*$/, "");
|
|
1630
|
-
} else {
|
|
1631
|
-
throw new Error(
|
|
1632
|
-
`Please set the URL of your GitHub repo in the "epicshop.githubRepo" property of the package.json.`
|
|
1633
|
-
);
|
|
1634
|
-
}
|
|
1635
|
-
if (!root.includes("/blob/") && !root.includes("/tree/")) {
|
|
1636
|
-
root = `${root.replace(/\/$/, "")}/tree/main`;
|
|
1637
|
-
}
|
|
1638
|
-
process.env.EPICSHOP_GITHUB_REPO = repo;
|
|
1639
|
-
process.env.EPICSHOP_GITHUB_ROOT = root;
|
|
1640
|
-
} catch (error) {
|
|
1641
|
-
throw new Error(
|
|
1642
|
-
`Could not set the EPICSHOP_GITHUB_ROOT environment variable. Please set it to the URL of your GitHub repo in the "epicshop.githubRoot" property of the package.json.`,
|
|
1643
|
-
{ cause: error }
|
|
1644
|
-
);
|
|
1645
|
-
}
|
|
1769
|
+
const config = getWorkshopConfig();
|
|
1770
|
+
process.env.EPICSHOP_GITHUB_REPO = config.githubRepo;
|
|
1771
|
+
process.env.EPICSHOP_GITHUB_ROOT = config.githubRoot;
|
|
1646
1772
|
init$1();
|
|
1647
1773
|
global.ENV = getEnv();
|
|
1648
1774
|
async function handleFileChanges(event, filePath) {
|
|
1775
|
+
if (filePath === path$1.join(workshopRoot, "package.json")) {
|
|
1776
|
+
bustWorkshopConfigCache();
|
|
1777
|
+
}
|
|
1649
1778
|
const apps = await getApps();
|
|
1650
1779
|
for (const app of apps) {
|
|
1651
1780
|
if (filePath.startsWith(app.fullPath)) {
|
|
@@ -1979,16 +2108,11 @@ async function findProblemDir({
|
|
|
1979
2108
|
async function getTestInfo({
|
|
1980
2109
|
fullPath
|
|
1981
2110
|
}) {
|
|
1982
|
-
const
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
"epicshop.testTab.enabled",
|
|
1988
|
-
true
|
|
1989
|
-
);
|
|
1990
|
-
if (testsEnabledGlobally === false) return { type: "none" };
|
|
1991
|
-
const testScript = hasPkgJson ? await getPkgProp(fullPath, "epicshop.scripts.test", "") : null;
|
|
2111
|
+
const {
|
|
2112
|
+
testTab: { enabled },
|
|
2113
|
+
scripts: { test: testScript }
|
|
2114
|
+
} = await getAppConfig(fullPath);
|
|
2115
|
+
if (enabled === false) return { type: "none" };
|
|
1992
2116
|
if (testScript) {
|
|
1993
2117
|
return { type: "script", script: testScript };
|
|
1994
2118
|
}
|
|
@@ -2008,10 +2132,12 @@ async function getDevInfo({
|
|
|
2008
2132
|
fullPath,
|
|
2009
2133
|
portNumber
|
|
2010
2134
|
}) {
|
|
2011
|
-
const
|
|
2012
|
-
|
|
2135
|
+
const {
|
|
2136
|
+
scripts: { dev: devScript },
|
|
2137
|
+
initialRoute
|
|
2138
|
+
} = await getAppConfig(fullPath);
|
|
2139
|
+
const hasDevScript = Boolean(devScript);
|
|
2013
2140
|
if (hasDevScript) {
|
|
2014
|
-
const initialRoute = (hasPkgJson ? await getPkgProp(fullPath, "epicshop.initialRoute", "") : "") || await getPkgProp(workshopRoot, "epicshop.initialRoute", "/");
|
|
2015
2141
|
return { type: "script", portNumber, initialRoute };
|
|
2016
2142
|
}
|
|
2017
2143
|
const indexFiles = (await fsExtra.readdir(fullPath)).filter(
|
|
@@ -2023,46 +2149,6 @@ async function getDevInfo({
|
|
|
2023
2149
|
return { type: "none" };
|
|
2024
2150
|
}
|
|
2025
2151
|
}
|
|
2026
|
-
async function getStackBlitzUrl({
|
|
2027
|
-
fullPath,
|
|
2028
|
-
title,
|
|
2029
|
-
type
|
|
2030
|
-
}) {
|
|
2031
|
-
const Schema = StackBlitzConfigSchema.nullable().optional();
|
|
2032
|
-
const appStackBlitzConfig = Schema.parse(
|
|
2033
|
-
// if there's no package.json this will throw. If that's the case, we can't use stackblitz
|
|
2034
|
-
// https://discord.com/channels/364486390102097930/1260979618240790578
|
|
2035
|
-
await getPkgProp(fullPath, "epicshop.stackBlitzConfig", {}).catch(
|
|
2036
|
-
() => null
|
|
2037
|
-
)
|
|
2038
|
-
);
|
|
2039
|
-
if (appStackBlitzConfig === null) return null;
|
|
2040
|
-
const workshopStackBlitzConfig = Schema.parse(
|
|
2041
|
-
await getPkgProp(workshopRoot, "epicshop.stackBlitzConfig", {})
|
|
2042
|
-
);
|
|
2043
|
-
if (workshopStackBlitzConfig === null) return null;
|
|
2044
|
-
let githubRootUrlString = ENV.EPICSHOP_GITHUB_REPO;
|
|
2045
|
-
if (!githubRootUrlString) return null;
|
|
2046
|
-
if (!githubRootUrlString.includes("/blob/") || !githubRootUrlString.includes("/tree/")) {
|
|
2047
|
-
githubRootUrlString = `${githubRootUrlString.replace(/\/$/, "")}/blob/main`;
|
|
2048
|
-
}
|
|
2049
|
-
const githubRootUrl = new URL(
|
|
2050
|
-
githubRootUrlString.replace(/\/blob\//, "/tree/")
|
|
2051
|
-
);
|
|
2052
|
-
const githubPart = githubRootUrl.pathname;
|
|
2053
|
-
const config = {
|
|
2054
|
-
...workshopStackBlitzConfig,
|
|
2055
|
-
...appStackBlitzConfig,
|
|
2056
|
-
title: (appStackBlitzConfig == null ? void 0 : appStackBlitzConfig.title) ?? `${title} (${type})`
|
|
2057
|
-
};
|
|
2058
|
-
const params = new URLSearchParams(config);
|
|
2059
|
-
const relativePath = fullPath.replace(`${workshopRoot}${path$1.sep}`, "");
|
|
2060
|
-
const stackBlitzUrl = new URL(
|
|
2061
|
-
`/github${githubPart}/${relativePath}?${params}`,
|
|
2062
|
-
"https://stackblitz.com"
|
|
2063
|
-
);
|
|
2064
|
-
return stackBlitzUrl.toString();
|
|
2065
|
-
}
|
|
2066
2152
|
async function getPlaygroundApp({
|
|
2067
2153
|
timings,
|
|
2068
2154
|
request
|
|
@@ -2560,47 +2646,6 @@ function getAppDisplayName(a, allApps) {
|
|
|
2560
2646
|
}
|
|
2561
2647
|
return displayName;
|
|
2562
2648
|
}
|
|
2563
|
-
async function getWorkshopTitle() {
|
|
2564
|
-
const title = await getPkgProp(workshopRoot, "epicshop.title");
|
|
2565
|
-
if (!title) {
|
|
2566
|
-
throw new Error(
|
|
2567
|
-
`Workshop title not found. Make sure the root of the workshop has "epicshop" with a "title" property in the package.json. ${workshopRoot}`
|
|
2568
|
-
);
|
|
2569
|
-
}
|
|
2570
|
-
return title;
|
|
2571
|
-
}
|
|
2572
|
-
async function getWorkshopSubtitle() {
|
|
2573
|
-
return await getPkgProp(workshopRoot, "epicshop.subtitle", "");
|
|
2574
|
-
}
|
|
2575
|
-
async function getWorkshopInstructor() {
|
|
2576
|
-
const InstructorSchema = z$1.object({
|
|
2577
|
-
name: z$1.string().optional(),
|
|
2578
|
-
avatar: z$1.string().optional(),
|
|
2579
|
-
"𝕏": z$1.string().optional(),
|
|
2580
|
-
// alias because 𝕏 is hard to type 😅
|
|
2581
|
-
xHandle: z$1.string().optional()
|
|
2582
|
-
}).optional();
|
|
2583
|
-
const instructor = InstructorSchema.parse(
|
|
2584
|
-
await getPkgProp(workshopRoot, "epicshop.instructor")
|
|
2585
|
-
);
|
|
2586
|
-
return instructor ? { ...instructor, "𝕏": instructor.xHandle } : void 0;
|
|
2587
|
-
}
|
|
2588
|
-
async function getEpicWorkshopHost() {
|
|
2589
|
-
const epicWorkshopHost = await getPkgProp(
|
|
2590
|
-
workshopRoot,
|
|
2591
|
-
"epicshop.epicWorkshopHost",
|
|
2592
|
-
"www.epicweb.dev"
|
|
2593
|
-
);
|
|
2594
|
-
return epicWorkshopHost;
|
|
2595
|
-
}
|
|
2596
|
-
async function getEpicWorkshopSlug() {
|
|
2597
|
-
const epicWorkshopSlug = await getPkgProp(
|
|
2598
|
-
workshopRoot,
|
|
2599
|
-
"epicshop.epicWorkshopSlug",
|
|
2600
|
-
""
|
|
2601
|
-
);
|
|
2602
|
-
return epicWorkshopSlug || null;
|
|
2603
|
-
}
|
|
2604
2649
|
async function getWorkshopInstructions({
|
|
2605
2650
|
request
|
|
2606
2651
|
} = {}) {
|
|
@@ -3471,7 +3516,7 @@ async function getEpicProgress({
|
|
|
3471
3516
|
} = {}) {
|
|
3472
3517
|
if (ENV.EPICSHOP_DEPLOYED) return [];
|
|
3473
3518
|
const authInfo = await getAuthInfo();
|
|
3474
|
-
const epicWorkshopHost =
|
|
3519
|
+
const { epicWorkshopHost } = getWorkshopConfig();
|
|
3475
3520
|
if (!authInfo) return [];
|
|
3476
3521
|
const tokenPart = md5(authInfo.tokenSet.access_token);
|
|
3477
3522
|
const EpicProgressSchema = z$1.array(
|
|
@@ -3514,7 +3559,7 @@ async function getProgress({
|
|
|
3514
3559
|
if (ENV.EPICSHOP_DEPLOYED) return [];
|
|
3515
3560
|
const authInfo = await getAuthInfo();
|
|
3516
3561
|
if (!authInfo) return [];
|
|
3517
|
-
const epicWorkshopSlug =
|
|
3562
|
+
const { epicWorkshopSlug } = getWorkshopConfig();
|
|
3518
3563
|
if (!epicWorkshopSlug) return [];
|
|
3519
3564
|
const [
|
|
3520
3565
|
workshopData,
|
|
@@ -3613,7 +3658,7 @@ async function updateProgress({ lessonSlug, complete }, {
|
|
|
3613
3658
|
if (!authInfo) {
|
|
3614
3659
|
return { status: "error", error: "not authenticated" };
|
|
3615
3660
|
}
|
|
3616
|
-
const epicWorkshopHost =
|
|
3661
|
+
const { epicWorkshopHost } = getWorkshopConfig();
|
|
3617
3662
|
const response = await fetch(`https://${epicWorkshopHost}/api/progress`, {
|
|
3618
3663
|
method: "POST",
|
|
3619
3664
|
headers: {
|
|
@@ -3651,7 +3696,7 @@ async function getWorkshopData(epicWorkshopSlug, {
|
|
|
3651
3696
|
if (ENV.EPICSHOP_DEPLOYED) return { sections: [] };
|
|
3652
3697
|
const authInfo = await getAuthInfo();
|
|
3653
3698
|
if (!authInfo) return { sections: [] };
|
|
3654
|
-
const epicWorkshopHost =
|
|
3699
|
+
const { epicWorkshopHost } = getWorkshopConfig();
|
|
3655
3700
|
return cachified({
|
|
3656
3701
|
key: `epic-workshop-data:${epicWorkshopHost}:${epicWorkshopSlug}`,
|
|
3657
3702
|
cache: fsCache,
|
|
@@ -3901,27 +3946,18 @@ const meta$5 = ({ data }) => {
|
|
|
3901
3946
|
};
|
|
3902
3947
|
async function loader$y({ request }) {
|
|
3903
3948
|
const timings = makeTimings("rootLoader");
|
|
3949
|
+
const {
|
|
3950
|
+
title: workshopTitle,
|
|
3951
|
+
subtitle: workshopSubtitle,
|
|
3952
|
+
instructor,
|
|
3953
|
+
onboardingVideo
|
|
3954
|
+
} = getWorkshopConfig();
|
|
3904
3955
|
const onboarding = await readOnboardingData();
|
|
3905
|
-
if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.
|
|
3956
|
+
if (!ENV.EPICSHOP_DEPLOYED && !(onboarding == null ? void 0 : onboarding.tourVideosWatched.includes(onboardingVideo))) {
|
|
3906
3957
|
if (new URL(request.url).pathname !== "/onboarding") {
|
|
3907
3958
|
throw redirect("/onboarding");
|
|
3908
3959
|
}
|
|
3909
3960
|
}
|
|
3910
|
-
const workshopTitle = await time(() => getWorkshopTitle(), {
|
|
3911
|
-
type: "getWorkshopTitle",
|
|
3912
|
-
desc: "getWorkshopTitle in root",
|
|
3913
|
-
timings
|
|
3914
|
-
});
|
|
3915
|
-
const workshopSubtitle = await time(() => getWorkshopSubtitle(), {
|
|
3916
|
-
type: "getWorkshopSubtitle",
|
|
3917
|
-
desc: "getWorkshopSubtitle in root",
|
|
3918
|
-
timings
|
|
3919
|
-
});
|
|
3920
|
-
const instructor = await time(() => getWorkshopInstructor(), {
|
|
3921
|
-
type: "getInstructor",
|
|
3922
|
-
desc: "getInstructor in root",
|
|
3923
|
-
timings
|
|
3924
|
-
});
|
|
3925
3961
|
const preferences = await getPreferences();
|
|
3926
3962
|
const progress = await getProgress({ timings }).catch((e) => {
|
|
3927
3963
|
console.error("Failed to get progress", e);
|
|
@@ -4555,9 +4591,9 @@ const route36 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
4555
4591
|
async function loader$w({ request }) {
|
|
4556
4592
|
var _a2;
|
|
4557
4593
|
const timings = makeTimings("appLayoutLoader");
|
|
4558
|
-
const
|
|
4594
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
4595
|
+
const [exercises, playgroundAppName] = await Promise.all([
|
|
4559
4596
|
getExercises({ request, timings }),
|
|
4560
|
-
getWorkshopTitle(),
|
|
4561
4597
|
getPlaygroundAppName()
|
|
4562
4598
|
]);
|
|
4563
4599
|
const playground = {
|
|
@@ -6235,7 +6271,7 @@ async function loader$q({ request, params }) {
|
|
|
6235
6271
|
);
|
|
6236
6272
|
}
|
|
6237
6273
|
const appTitle = app.title;
|
|
6238
|
-
const workshopTitle =
|
|
6274
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
6239
6275
|
const baseAppTitle = isExerciseStepApp(baseApp) ? [
|
|
6240
6276
|
`${baseApp.stepNumber.toString().padStart(2, "0")}. ${baseApp.title}`,
|
|
6241
6277
|
`${baseApp.exerciseNumber.toString().padStart(2, "0")}. ${((_a2 = await getExercise(baseApp.exerciseNumber, { request, timings })) == null ? void 0 : _a2.title) ?? "Unknown"}`,
|
|
@@ -6374,7 +6410,7 @@ ${testScriptTag}`;
|
|
|
6374
6410
|
);
|
|
6375
6411
|
const indexCss = indexFiles.find((file) => file.endsWith("index.css"));
|
|
6376
6412
|
const appTitle = app.title;
|
|
6377
|
-
const workshopTitle =
|
|
6413
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
6378
6414
|
const title = (isExerciseStepApp(app) ? [
|
|
6379
6415
|
isProblemApp(app) ? "🧪💪" : isSolutionApp(app) ? "🧪🏁" : null,
|
|
6380
6416
|
`${app.stepNumber.toString().padStart(2, "0")}. ${app.title}`,
|
|
@@ -8023,18 +8059,12 @@ const meta$4 = ({
|
|
|
8023
8059
|
async function loader$n({ request, params }) {
|
|
8024
8060
|
const timings = makeTimings("exerciseNumberLoader");
|
|
8025
8061
|
invariantResponse(params.exerciseNumber, "exerciseNumber is required");
|
|
8026
|
-
const
|
|
8027
|
-
|
|
8028
|
-
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8032
|
-
time(() => getWorkshopTitle(), {
|
|
8033
|
-
timings,
|
|
8034
|
-
type: "getWorkshopTitle",
|
|
8035
|
-
desc: "getWorkshopTitle in $exerciseNumber.tsx"
|
|
8036
|
-
})
|
|
8037
|
-
]);
|
|
8062
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
8063
|
+
const exercises = await time(() => getExercises({ request, timings }), {
|
|
8064
|
+
timings,
|
|
8065
|
+
type: "getExercises",
|
|
8066
|
+
desc: "getExercises in $exerciseNumber.tsx"
|
|
8067
|
+
});
|
|
8038
8068
|
const exercise = exercises.find(
|
|
8039
8069
|
(e) => e.exerciseNumber === Number(params.exerciseNumber)
|
|
8040
8070
|
);
|
|
@@ -8172,10 +8202,8 @@ const route12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
8172
8202
|
async function loader$m({ request, params }) {
|
|
8173
8203
|
const timings = makeTimings("stepLoader");
|
|
8174
8204
|
invariantResponse(params.exerciseNumber, "exerciseNumber is required");
|
|
8175
|
-
const
|
|
8176
|
-
|
|
8177
|
-
getWorkshopTitle()
|
|
8178
|
-
]);
|
|
8205
|
+
const exercises = await getExercises({ request, timings });
|
|
8206
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
8179
8207
|
const exercise = exercises.find(
|
|
8180
8208
|
(e) => e.exerciseNumber === Number(params.exerciseNumber)
|
|
8181
8209
|
);
|
|
@@ -8415,7 +8443,7 @@ async function copyUnignoredFiles(srcDir, destDir, ignoreList) {
|
|
|
8415
8443
|
await cachified({
|
|
8416
8444
|
key,
|
|
8417
8445
|
cache: diffCodeCache,
|
|
8418
|
-
forceFresh: getForceFreshForDir(
|
|
8446
|
+
forceFresh: getForceFreshForDir(diffCodeCache.get(key), srcDir),
|
|
8419
8447
|
async getFreshValue() {
|
|
8420
8448
|
const ig = ignore().add(ignoreList);
|
|
8421
8449
|
await fsExtra.remove(destDir);
|
|
@@ -9335,7 +9363,7 @@ async function loader$l({ request, params }) {
|
|
|
9335
9363
|
var _a2, _b;
|
|
9336
9364
|
const timings = makeTimings("exerciseStepTypeLoader");
|
|
9337
9365
|
const url = new URL(request.url);
|
|
9338
|
-
const workshopTitle =
|
|
9366
|
+
const { title: workshopTitle } = getWorkshopConfig();
|
|
9339
9367
|
const cacheOptions = { request, timings };
|
|
9340
9368
|
const exerciseStepApp = await requireExerciseApp(params, cacheOptions);
|
|
9341
9369
|
const exercise = await requireExercise(
|
|
@@ -11816,13 +11844,9 @@ async function loader$f({ request, params }) {
|
|
|
11816
11844
|
if (!exercise) {
|
|
11817
11845
|
throw new Response("Not found", { status: 404 });
|
|
11818
11846
|
}
|
|
11819
|
-
const
|
|
11820
|
-
const exerciseFormTemplate =
|
|
11821
|
-
|
|
11822
|
-
"epicshop.forms.exercise",
|
|
11823
|
-
`https://docs.google.com/forms/d/e/1FAIpQLSf3o9xyjQepTlOTH5Z7ZwkeSTdXh6YWI_RGc9KiyD3oUN0p6w/viewform?hl=en&embedded=true&entry.1836176234={workshopTitle}&entry.428900931={exerciseTitle}`
|
|
11824
|
-
);
|
|
11825
|
-
const exerciseFormEmbedUrl = exerciseFormTemplate.replace("{workshopTitle}", encodeURIComponent(workshopTitle)).replace("{exerciseTitle}", encodeURIComponent(exercise.title));
|
|
11847
|
+
const workshopConfig = getWorkshopConfig();
|
|
11848
|
+
const exerciseFormTemplate = workshopConfig.forms.exercise;
|
|
11849
|
+
const exerciseFormEmbedUrl = exerciseFormTemplate.replace("{workshopTitle}", encodeURIComponent(workshopConfig.title)).replace("{exerciseTitle}", encodeURIComponent(exercise.title));
|
|
11826
11850
|
const nextExercise = await getExercise(exercise.exerciseNumber + 1, {
|
|
11827
11851
|
timings,
|
|
11828
11852
|
request
|
|
@@ -11836,11 +11860,11 @@ async function loader$f({ request, params }) {
|
|
|
11836
11860
|
const apps = await getApps({ request, timings });
|
|
11837
11861
|
const exerciseApps = apps.filter(isExerciseStepApp).filter((app) => app.exerciseNumber === exercise.exerciseNumber);
|
|
11838
11862
|
const prevApp = exerciseApps[exerciseApps.length - 1];
|
|
11839
|
-
const articleId = `workshop-${slugify(
|
|
11863
|
+
const articleId = `workshop-${slugify(workshopConfig.title)}-${exercise.exerciseNumber}-finished`;
|
|
11840
11864
|
return defer(
|
|
11841
11865
|
{
|
|
11842
11866
|
articleId,
|
|
11843
|
-
workshopTitle,
|
|
11867
|
+
workshopTitle: workshopConfig.title,
|
|
11844
11868
|
exercise,
|
|
11845
11869
|
exerciseFormEmbedUrl,
|
|
11846
11870
|
epicVideoInfosPromise: getEpicVideoInfos(
|
|
@@ -12001,12 +12025,9 @@ async function loader$e({ request }) {
|
|
|
12001
12025
|
desc: "compileMdx in finished"
|
|
12002
12026
|
});
|
|
12003
12027
|
const lastExercises = exercises[exercises.length - 1];
|
|
12004
|
-
const
|
|
12005
|
-
const
|
|
12006
|
-
|
|
12007
|
-
"epicshop.forms.workshop",
|
|
12008
|
-
"https://docs.google.com/forms/d/e/1FAIpQLSdRmj9p8-5zyoqRzxp3UpqSbC3aFkweXvvJIKes0a5s894gzg/viewform?hl=en&embedded=true&entry.2123647600={workshopTitle}"
|
|
12009
|
-
);
|
|
12028
|
+
const workshopConfig = getWorkshopConfig();
|
|
12029
|
+
const workshopTitle = workshopConfig.title;
|
|
12030
|
+
const workshopFormTemplate = workshopConfig.forms.workshop;
|
|
12010
12031
|
const workshopFormEmbedUrl = workshopFormTemplate.replace(
|
|
12011
12032
|
"{workshopTitle}",
|
|
12012
12033
|
encodeURIComponent(workshopTitle)
|
|
@@ -12135,12 +12156,8 @@ const route20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
12135
12156
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
12136
12157
|
async function loader$d({ request }) {
|
|
12137
12158
|
const timings = makeTimings("indexLoader");
|
|
12138
|
-
const
|
|
12139
|
-
|
|
12140
|
-
timings,
|
|
12141
|
-
type: "getWorkshopTitle",
|
|
12142
|
-
desc: "getWorkshopTitle in index"
|
|
12143
|
-
}),
|
|
12159
|
+
const { title } = getWorkshopConfig();
|
|
12160
|
+
const [exercises, workshopReadme] = await Promise.all([
|
|
12144
12161
|
time(() => getExercises({ request, timings }), {
|
|
12145
12162
|
timings,
|
|
12146
12163
|
type: "getExercises",
|
|
@@ -12273,7 +12290,7 @@ const EVENTS = {
|
|
|
12273
12290
|
const authEmitter = remember("authEmitter", () => new EventEmitter());
|
|
12274
12291
|
authEmitter.removeAllListeners();
|
|
12275
12292
|
async function registerDevice() {
|
|
12276
|
-
const epicWorkshopHost =
|
|
12293
|
+
const { epicWorkshopHost } = getWorkshopConfig();
|
|
12277
12294
|
const { ISSUER = `https://${epicWorkshopHost}/oauth` } = process.env;
|
|
12278
12295
|
const GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
12279
12296
|
try {
|
|
@@ -12591,7 +12608,7 @@ const meta = ({
|
|
|
12591
12608
|
async function loader$a({ request }) {
|
|
12592
12609
|
ensureUndeployed();
|
|
12593
12610
|
const timings = makeTimings("adminLoader");
|
|
12594
|
-
const workshopSlug =
|
|
12611
|
+
const workshopSlug = getWorkshopConfig().epicWorkshopSlug ?? "Unkown";
|
|
12595
12612
|
const apps = (await getApps({ request, timings })).filter(
|
|
12596
12613
|
(a, i, ar) => ar.findIndex((b) => a.name === b.name) === i
|
|
12597
12614
|
);
|
|
@@ -12940,17 +12957,17 @@ const HEIGHT = 630;
|
|
|
12940
12957
|
async function loader$4({ request }) {
|
|
12941
12958
|
const timings = makeTimings("og", "og image loader");
|
|
12942
12959
|
const url = new URL(request.url);
|
|
12943
|
-
const
|
|
12944
|
-
const title = url.searchParams.get("title") ||
|
|
12945
|
-
const subtitle = url.searchParams.get("subtitle") ||
|
|
12960
|
+
const workshopConfig = getWorkshopConfig();
|
|
12961
|
+
const title = url.searchParams.get("title") || workshopConfig.title;
|
|
12962
|
+
const subtitle = url.searchParams.get("subtitle") || workshopConfig.subtitle;
|
|
12946
12963
|
const urlPathname = url.searchParams.get("urlPathname") || "";
|
|
12947
12964
|
const element = /* @__PURE__ */ jsx(
|
|
12948
12965
|
OgLayout,
|
|
12949
12966
|
{
|
|
12950
12967
|
request,
|
|
12951
|
-
instructor:
|
|
12968
|
+
instructor: workshopConfig.instructor,
|
|
12952
12969
|
urlPathname,
|
|
12953
|
-
workshopTitle:
|
|
12970
|
+
workshopTitle: workshopConfig.title === title ? null : workshopConfig.title,
|
|
12954
12971
|
children: /* @__PURE__ */ jsxs(
|
|
12955
12972
|
"div",
|
|
12956
12973
|
{
|
|
@@ -13339,10 +13356,10 @@ const handle = {
|
|
|
13339
13356
|
};
|
|
13340
13357
|
async function loader$3({ request }) {
|
|
13341
13358
|
const timings = makeTimings("onboarding");
|
|
13342
|
-
const
|
|
13343
|
-
const videoInfos = getEpicVideoInfos([
|
|
13359
|
+
const { onboardingVideo } = getWorkshopConfig();
|
|
13360
|
+
const videoInfos = getEpicVideoInfos([onboardingVideo], { request, timings });
|
|
13344
13361
|
return defer(
|
|
13345
|
-
{
|
|
13362
|
+
{ onboardingVideo, videoInfos },
|
|
13346
13363
|
{ headers: { "Server-Timing": timings.toString() } }
|
|
13347
13364
|
);
|
|
13348
13365
|
}
|
|
@@ -13356,7 +13373,8 @@ async function action({ request }) {
|
|
|
13356
13373
|
const data = await request.formData();
|
|
13357
13374
|
const intent = data.get("intent");
|
|
13358
13375
|
invariantResponse(intent === "complete", "Invalid intent");
|
|
13359
|
-
|
|
13376
|
+
const { onboardingVideo } = getWorkshopConfig();
|
|
13377
|
+
await markOnboardingVideoWatched(onboardingVideo);
|
|
13360
13378
|
throw redirect("/account");
|
|
13361
13379
|
}
|
|
13362
13380
|
function Onboarding() {
|
|
@@ -13370,7 +13388,7 @@ function Onboarding() {
|
|
|
13370
13388
|
/* @__PURE__ */ jsx("strong", { children: "you must watch the tour video" }),
|
|
13371
13389
|
"! You're going to be spending a lot of time in here, so it's important you understand how to work effectively in this workshop"
|
|
13372
13390
|
] }),
|
|
13373
|
-
/* @__PURE__ */ jsx("div", { className: "w-[780px] max-w-full", children: /* @__PURE__ */ jsx(EpicVideoInfoProvider, { epicVideoInfosPromise: data.videoInfos, children: /* @__PURE__ */ jsx(DeferredEpicVideo, { url: data.
|
|
13391
|
+
/* @__PURE__ */ jsx("div", { className: "w-[780px] max-w-full", children: /* @__PURE__ */ jsx(EpicVideoInfoProvider, { epicVideoInfosPromise: data.videoInfos, children: /* @__PURE__ */ jsx(DeferredEpicVideo, { url: data.onboardingVideo }) }) })
|
|
13374
13392
|
] }),
|
|
13375
13393
|
/* @__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!" }) })
|
|
13376
13394
|
] });
|
|
@@ -13427,7 +13445,7 @@ const route39 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
13427
13445
|
__proto__: null,
|
|
13428
13446
|
loader
|
|
13429
13447
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
13430
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-3M2p-8I3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-Tcnfz99O.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-hydrated-Citou692.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-B-hHvmeV.js", "/assets/index-BATSX33w.js", "/assets/presence-Cr--lRCr.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-DbrWZazo.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/error-boundary-DDTvdkB4.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-AgYGL72C.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-hydrated-Citou692.js", "/assets/index-BXWoOGxB.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-BsY6hGPp.js", "/assets/index-BATSX33w.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-7o6O4ruO.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/button-BklqyTPS.js", "/assets/tooltip-BiHTe_7F.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/discord": { "id": "routes/_app+/discord", "parentId": "routes/_app+/_layout", "path": "discord", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord-CHP4_JLJ.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/user-D6tTg1yS.js", "/assets/discord-Dq4e30wV.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-BUs3av-e.js", "imports": ["/assets/index-1cKOJFpX.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-Cq0nozYz.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BocZ2xWF.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-BiWJY58g.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-BATSX33w.js", "/assets/preview-CqrRe2BV.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-Dm1ll1kT.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-M0kcP-mP.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/button-BklqyTPS.js", "/assets/diff-CpFxuKA2.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/discord-Dq4e30wV.js", "/assets/index-B-hHvmeV.js", "/assets/tests-CmNNBElK.js", "/assets/preview-CqrRe2BV.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-D9HsTvpe.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/index-BATSX33w.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/tests-CmNNBElK.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-Q9qnPuZX.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-Bm-bCUU2.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BsY6hGPp.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-Tfdnz1AB.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.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-4cvVFzF8.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.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-hcqGIpir.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-C8uU4Hwj.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/progress-BsY6hGPp.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-Cw8ktQ1-.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-M0kcP-mP.js", "/assets/diff-CpFxuKA2.js", "/assets/nav-chevrons-B82nbdyj.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-Bib-wh6d.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/button-BklqyTPS.js", "/assets/epic-video-iluUs1-s.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/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-4bde8719.js", "version": "4bde8719" };
|
|
13448
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-3M2p-8I3.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-Tcnfz99O.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-hydrated-Citou692.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-B-hHvmeV.js", "/assets/index-BATSX33w.js", "/assets/presence-Cr--lRCr.js", "/assets/seo-pBpFCWsy.js"], "css": [] }, "routes/$": { "id": "routes/$", "parentId": "root", "path": "*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_-DbrWZazo.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/error-boundary-DDTvdkB4.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-AgYGL72C.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-hydrated-Citou692.js", "/assets/index-BXWoOGxB.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js", "/assets/progress-BsY6hGPp.js", "/assets/index-BATSX33w.js"], "css": [] }, "routes/_app+/account": { "id": "routes/_app+/account", "parentId": "routes/_app+/_layout", "path": "account", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/account-7o6O4ruO.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/button-BklqyTPS.js", "/assets/tooltip-BiHTe_7F.js", "/assets/user-D6tTg1yS.js", "/assets/presence-Cr--lRCr.js"], "css": [] }, "routes/_app+/app.$appName+/$": { "id": "routes/_app+/app.$appName+/$", "parentId": "routes/_app+/_layout", "path": "app/:appName/*", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/api.$": { "id": "routes/_app+/app.$appName+/api.$", "parentId": "routes/_app+/_layout", "path": "app/:appName/api/*", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/api._-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/epic_ws[.js]": { "id": "routes/_app+/app.$appName+/epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/index": { "id": "routes/_app+/app.$appName+/index", "parentId": "routes/_app+/_layout", "path": "app/:appName/", "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.$testName": { "id": "routes/_app+/app.$appName+/test.$testName", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/:testName", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test._testName-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/app.$appName+/test.epic_ws[.js]": { "id": "routes/_app+/app.$appName+/test.epic_ws[.js]", "parentId": "routes/_app+/_layout", "path": "app/:appName/test/epic_ws.js", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test.epic_ws_.js_-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/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-CHP4_JLJ.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/user-D6tTg1yS.js", "/assets/discord-Dq4e30wV.js"], "css": [] }, "routes/_app+/exercise+/_layout": { "id": "routes/_app+/exercise+/_layout", "parentId": "routes/_app+/_layout", "path": "exercise", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_layout-BUs3av-e.js", "imports": ["/assets/index-1cKOJFpX.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber": { "id": "routes/_app+/exercise+/$exerciseNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber-Cq0nozYz.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/:stepNumber", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_exerciseNumber_._stepNumber-B5pmJ29o.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": ":type", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/_layout-BocZ2xWF.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/app", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "app", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/app-BiWJY58g.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-BATSX33w.js", "/assets/preview-CqrRe2BV.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": true, "module": "/assets/index-Dm1ll1kT.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-M0kcP-mP.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/button-BklqyTPS.js", "/assets/diff-CpFxuKA2.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/discord-Dq4e30wV.js", "/assets/index-B-hHvmeV.js", "/assets/tests-CmNNBElK.js", "/assets/preview-CqrRe2BV.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/test", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.$type+/_layout", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-D9HsTvpe.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/index-BATSX33w.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/set-playground-Cdy8VlVD.js", "/assets/tests-CmNNBElK.js"], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index": { "id": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber.index", "parentId": "routes/_app+/exercise+/$exerciseNumber_.$stepNumber", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_._stepNumber.index-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/_app+/exercise+/$exerciseNumber_.finished": { "id": "routes/_app+/exercise+/$exerciseNumber_.finished", "parentId": "routes/_app+/exercise+/_layout", "path": ":exerciseNumber/finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/_exerciseNumber_.finished-Q9qnPuZX.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.js", "/assets/seo-pBpFCWsy.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/_app+/finished": { "id": "routes/_app+/finished", "parentId": "routes/_app+/_layout", "path": "finished", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/finished-Bm-bCUU2.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/nav-chevrons-B82nbdyj.js", "/assets/mdx-M0kcP-mP.js", "/assets/seo-pBpFCWsy.js", "/assets/progress-BsY6hGPp.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-Tfdnz1AB.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.js", "/assets/clsx-B-dksMZM.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/index-Dx5GmdYq.js", "/assets/error-boundary-DDTvdkB4.js", "/assets/mdx-M0kcP-mP.js", "/assets/progress-BsY6hGPp.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-4cvVFzF8.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/use-event-source-A_0lEOPX.js", "/assets/button-BklqyTPS.js", "/assets/loading-C5uX0jJw.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-hcqGIpir.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/components-CME-nGId.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-C8uU4Hwj.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/progress-BsY6hGPp.js"], "css": [] }, "routes/admin+/apps": { "id": "routes/admin+/apps", "parentId": "routes/admin+/_layout", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-DP2rzg_V.js", "imports": [], "css": [] }, "routes/admin+/cache": { "id": "routes/admin+/cache", "parentId": "routes/admin+/_layout", "path": "cache", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/apps": { "id": "routes/apps", "parentId": "root", "path": "apps", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/apps-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/diff": { "id": "routes/diff", "parentId": "root", "path": "diff", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/diff-Cw8ktQ1-.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/tooltip-BiHTe_7F.js", "/assets/index-BXWoOGxB.js", "/assets/index-hogig2HK.js", "/assets/request-info-CEhUGODY.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/epic-video-iluUs1-s.js", "/assets/progress-bar-CSvo1ZXP.js", "/assets/accordion-BroSqIct.js", "/assets/mdx-M0kcP-mP.js", "/assets/diff-CpFxuKA2.js", "/assets/nav-chevrons-B82nbdyj.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/discord.callback": { "id": "routes/discord.callback", "parentId": "root", "path": "discord/callback", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/discord.callback-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/exercises": { "id": "routes/exercises", "parentId": "root", "path": "exercises", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/exercises-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/launch-editor": { "id": "routes/launch-editor", "parentId": "root", "path": "launch-editor", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/launch-editor-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/login-sse": { "id": "routes/login-sse", "parentId": "root", "path": "login-sse", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/login-sse-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/og": { "id": "routes/og", "parentId": "root", "path": "og", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/og-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/onboarding": { "id": "routes/onboarding", "parentId": "root", "path": "onboarding", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/onboarding-CnmE4HLR.js", "imports": ["/assets/index-1cKOJFpX.js", "/assets/clsx-B-dksMZM.js", "/assets/components-CME-nGId.js", "/assets/misc-ENVX3CWf.js", "/assets/request-info-CEhUGODY.js", "/assets/tooltip-BiHTe_7F.js", "/assets/client-hints-DNUUFGmB.js", "/assets/index-BATSX33w.js", "/assets/loading-C5uX0jJw.js", "/assets/user-D6tTg1yS.js", "/assets/button-BklqyTPS.js", "/assets/epic-video-iluUs1-s.js"], "css": ["/assets/epic-video-DUnRvy1A.css"] }, "routes/processes": { "id": "routes/processes", "parentId": "root", "path": "processes", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/processes-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/progress": { "id": "routes/progress", "parentId": "root", "path": "progress", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/progress-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/robots[.]txt": { "id": "routes/robots[.]txt", "parentId": "root", "path": "robots.txt", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/robots_._txt-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/set-playground": { "id": "routes/set-playground", "parentId": "root", "path": "set-playground", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/set-playground-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/sitemap[.]xml": { "id": "routes/sitemap[.]xml", "parentId": "root", "path": "sitemap.xml", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/sitemap_._xml-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/start": { "id": "routes/start", "parentId": "root", "path": "start", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/start-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/test": { "id": "routes/test", "parentId": "root", "path": "test", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/test-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/theme/index": { "id": "routes/theme/index", "parentId": "root", "path": "theme", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-DP2rzg_V.js", "imports": [], "css": [] }, "routes/update-mdx-cache": { "id": "routes/update-mdx-cache", "parentId": "root", "path": "update-mdx-cache", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/update-mdx-cache-l0sNRNKZ.js", "imports": [], "css": [] }, "routes/video-player/index": { "id": "routes/video-player/index", "parentId": "root", "path": "video-player", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasErrorBoundary": false, "module": "/assets/index-K6Dvbx-E.js", "imports": [], "css": [] } }, "url": "/assets/manifest-4a3cf2ec.js", "version": "4a3cf2ec" };
|
|
13431
13449
|
const mode = "production";
|
|
13432
13450
|
const assetsBuildDirectory = "build/client";
|
|
13433
13451
|
const basename = "/";
|