@epic-web/workshop-utils 4.0.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.
Files changed (59) hide show
  1. package/README.md +3 -0
  2. package/dist/esm/apps.server.d.ts +3861 -0
  3. package/dist/esm/apps.server.d.ts.map +1 -0
  4. package/dist/esm/apps.server.js +1011 -0
  5. package/dist/esm/apps.server.js.map +1 -0
  6. package/dist/esm/cache.server.d.ts +798 -0
  7. package/dist/esm/cache.server.d.ts.map +1 -0
  8. package/dist/esm/cache.server.js +113 -0
  9. package/dist/esm/cache.server.js.map +1 -0
  10. package/dist/esm/change-tracker.server.d.ts +8 -0
  11. package/dist/esm/change-tracker.server.d.ts.map +1 -0
  12. package/dist/esm/change-tracker.server.js +32 -0
  13. package/dist/esm/change-tracker.server.js.map +1 -0
  14. package/dist/esm/codefile-mdx.server.d.ts +16 -0
  15. package/dist/esm/codefile-mdx.server.d.ts.map +1 -0
  16. package/dist/esm/codefile-mdx.server.js +275 -0
  17. package/dist/esm/codefile-mdx.server.js.map +1 -0
  18. package/dist/esm/compile-mdx.server.d.ts +11 -0
  19. package/dist/esm/compile-mdx.server.d.ts.map +1 -0
  20. package/dist/esm/compile-mdx.server.js +330 -0
  21. package/dist/esm/compile-mdx.server.js.map +1 -0
  22. package/dist/esm/db.server.d.ts +176 -0
  23. package/dist/esm/db.server.d.ts.map +1 -0
  24. package/dist/esm/db.server.js +203 -0
  25. package/dist/esm/db.server.js.map +1 -0
  26. package/dist/esm/git.server.d.ts +27 -0
  27. package/dist/esm/git.server.d.ts.map +1 -0
  28. package/dist/esm/git.server.js +93 -0
  29. package/dist/esm/git.server.js.map +1 -0
  30. package/dist/esm/iframe-sync.d.ts +10 -0
  31. package/dist/esm/iframe-sync.d.ts.map +1 -0
  32. package/dist/esm/iframe-sync.js +101 -0
  33. package/dist/esm/iframe-sync.js.map +1 -0
  34. package/dist/esm/package.json +3 -0
  35. package/dist/esm/playwright.server.d.ts +6 -0
  36. package/dist/esm/playwright.server.d.ts.map +1 -0
  37. package/dist/esm/playwright.server.js +94 -0
  38. package/dist/esm/playwright.server.js.map +1 -0
  39. package/dist/esm/process-manager.server.d.ts +78 -0
  40. package/dist/esm/process-manager.server.d.ts.map +1 -0
  41. package/dist/esm/process-manager.server.js +267 -0
  42. package/dist/esm/process-manager.server.js.map +1 -0
  43. package/dist/esm/test.d.ts +9 -0
  44. package/dist/esm/test.d.ts.map +1 -0
  45. package/dist/esm/test.js +45 -0
  46. package/dist/esm/test.js.map +1 -0
  47. package/dist/esm/timing.server.d.ts +20 -0
  48. package/dist/esm/timing.server.d.ts.map +1 -0
  49. package/dist/esm/timing.server.js +89 -0
  50. package/dist/esm/timing.server.js.map +1 -0
  51. package/dist/esm/utils.d.ts +2 -0
  52. package/dist/esm/utils.d.ts.map +1 -0
  53. package/dist/esm/utils.js +13 -0
  54. package/dist/esm/utils.js.map +1 -0
  55. package/dist/esm/utils.server.d.ts +3 -0
  56. package/dist/esm/utils.server.d.ts.map +1 -0
  57. package/dist/esm/utils.server.js +32 -0
  58. package/dist/esm/utils.server.js.map +1 -0
  59. package/package.json +171 -0
@@ -0,0 +1,3861 @@
1
+ import '@total-typescript/ts-reset';
2
+ import { type CacheEntry } from '@epic-web/cachified';
3
+ import { z } from 'zod';
4
+ import { type Timings } from './timing.server.js';
5
+ type CachifiedOptions = {
6
+ timings?: Timings;
7
+ request?: Request;
8
+ };
9
+ declare const BaseExerciseStepAppSchema: z.ZodObject<{
10
+ name: z.ZodString;
11
+ title: z.ZodString;
12
+ dirName: z.ZodString;
13
+ fullPath: z.ZodString;
14
+ relativePath: z.ZodString;
15
+ instructionsCode: z.ZodOptional<z.ZodString>;
16
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
+ test: z.ZodUnion<[z.ZodObject<{
18
+ type: z.ZodLiteral<"browser">;
19
+ pathname: z.ZodString;
20
+ testFiles: z.ZodArray<z.ZodString, "many">;
21
+ }, "strip", z.ZodTypeAny, {
22
+ type: "browser";
23
+ pathname: string;
24
+ testFiles: string[];
25
+ }, {
26
+ type: "browser";
27
+ pathname: string;
28
+ testFiles: string[];
29
+ }>, z.ZodObject<{
30
+ type: z.ZodLiteral<"script">;
31
+ script: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ type: "script";
34
+ script: string;
35
+ }, {
36
+ type: "script";
37
+ script: string;
38
+ }>, z.ZodObject<{
39
+ type: z.ZodLiteral<"none">;
40
+ }, "strip", z.ZodTypeAny, {
41
+ type: "none";
42
+ }, {
43
+ type: "none";
44
+ }>]>;
45
+ dev: z.ZodUnion<[z.ZodObject<{
46
+ type: z.ZodLiteral<"browser">;
47
+ pathname: z.ZodString;
48
+ }, "strip", z.ZodTypeAny, {
49
+ type: "browser";
50
+ pathname: string;
51
+ }, {
52
+ type: "browser";
53
+ pathname: string;
54
+ }>, z.ZodObject<{
55
+ type: z.ZodLiteral<"script">;
56
+ portNumber: z.ZodNumber;
57
+ }, "strip", z.ZodTypeAny, {
58
+ type: "script";
59
+ portNumber: number;
60
+ }, {
61
+ type: "script";
62
+ portNumber: number;
63
+ }>, z.ZodObject<{
64
+ type: z.ZodLiteral<"none">;
65
+ }, "strip", z.ZodTypeAny, {
66
+ type: "none";
67
+ }, {
68
+ type: "none";
69
+ }>]>;
70
+ exerciseNumber: z.ZodNumber;
71
+ stepNumber: z.ZodNumber;
72
+ }, "strip", z.ZodTypeAny, {
73
+ name: string;
74
+ title: string;
75
+ dirName: string;
76
+ fullPath: string;
77
+ relativePath: string;
78
+ test: {
79
+ type: "browser";
80
+ pathname: string;
81
+ testFiles: string[];
82
+ } | {
83
+ type: "script";
84
+ script: string;
85
+ } | {
86
+ type: "none";
87
+ };
88
+ dev: {
89
+ type: "browser";
90
+ pathname: string;
91
+ } | {
92
+ type: "script";
93
+ portNumber: number;
94
+ } | {
95
+ type: "none";
96
+ };
97
+ exerciseNumber: number;
98
+ stepNumber: number;
99
+ instructionsCode?: string | undefined;
100
+ epicVideoEmbeds?: string[] | undefined;
101
+ }, {
102
+ name: string;
103
+ title: string;
104
+ dirName: string;
105
+ fullPath: string;
106
+ relativePath: string;
107
+ test: {
108
+ type: "browser";
109
+ pathname: string;
110
+ testFiles: string[];
111
+ } | {
112
+ type: "script";
113
+ script: string;
114
+ } | {
115
+ type: "none";
116
+ };
117
+ dev: {
118
+ type: "browser";
119
+ pathname: string;
120
+ } | {
121
+ type: "script";
122
+ portNumber: number;
123
+ } | {
124
+ type: "none";
125
+ };
126
+ exerciseNumber: number;
127
+ stepNumber: number;
128
+ instructionsCode?: string | undefined;
129
+ epicVideoEmbeds?: string[] | undefined;
130
+ }>;
131
+ declare const ProblemAppSchema: z.ZodObject<{
132
+ name: z.ZodString;
133
+ title: z.ZodString;
134
+ dirName: z.ZodString;
135
+ fullPath: z.ZodString;
136
+ relativePath: z.ZodString;
137
+ instructionsCode: z.ZodOptional<z.ZodString>;
138
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
139
+ test: z.ZodUnion<[z.ZodObject<{
140
+ type: z.ZodLiteral<"browser">;
141
+ pathname: z.ZodString;
142
+ testFiles: z.ZodArray<z.ZodString, "many">;
143
+ }, "strip", z.ZodTypeAny, {
144
+ type: "browser";
145
+ pathname: string;
146
+ testFiles: string[];
147
+ }, {
148
+ type: "browser";
149
+ pathname: string;
150
+ testFiles: string[];
151
+ }>, z.ZodObject<{
152
+ type: z.ZodLiteral<"script">;
153
+ script: z.ZodString;
154
+ }, "strip", z.ZodTypeAny, {
155
+ type: "script";
156
+ script: string;
157
+ }, {
158
+ type: "script";
159
+ script: string;
160
+ }>, z.ZodObject<{
161
+ type: z.ZodLiteral<"none">;
162
+ }, "strip", z.ZodTypeAny, {
163
+ type: "none";
164
+ }, {
165
+ type: "none";
166
+ }>]>;
167
+ dev: z.ZodUnion<[z.ZodObject<{
168
+ type: z.ZodLiteral<"browser">;
169
+ pathname: z.ZodString;
170
+ }, "strip", z.ZodTypeAny, {
171
+ type: "browser";
172
+ pathname: string;
173
+ }, {
174
+ type: "browser";
175
+ pathname: string;
176
+ }>, z.ZodObject<{
177
+ type: z.ZodLiteral<"script">;
178
+ portNumber: z.ZodNumber;
179
+ }, "strip", z.ZodTypeAny, {
180
+ type: "script";
181
+ portNumber: number;
182
+ }, {
183
+ type: "script";
184
+ portNumber: number;
185
+ }>, z.ZodObject<{
186
+ type: z.ZodLiteral<"none">;
187
+ }, "strip", z.ZodTypeAny, {
188
+ type: "none";
189
+ }, {
190
+ type: "none";
191
+ }>]>;
192
+ exerciseNumber: z.ZodNumber;
193
+ stepNumber: z.ZodNumber;
194
+ type: z.ZodLiteral<"problem">;
195
+ solutionName: z.ZodNullable<z.ZodString>;
196
+ }, "strip", z.ZodTypeAny, {
197
+ type: "problem";
198
+ name: string;
199
+ title: string;
200
+ dirName: string;
201
+ fullPath: string;
202
+ relativePath: string;
203
+ test: {
204
+ type: "browser";
205
+ pathname: string;
206
+ testFiles: string[];
207
+ } | {
208
+ type: "script";
209
+ script: string;
210
+ } | {
211
+ type: "none";
212
+ };
213
+ dev: {
214
+ type: "browser";
215
+ pathname: string;
216
+ } | {
217
+ type: "script";
218
+ portNumber: number;
219
+ } | {
220
+ type: "none";
221
+ };
222
+ exerciseNumber: number;
223
+ stepNumber: number;
224
+ solutionName: string | null;
225
+ instructionsCode?: string | undefined;
226
+ epicVideoEmbeds?: string[] | undefined;
227
+ }, {
228
+ type: "problem";
229
+ name: string;
230
+ title: string;
231
+ dirName: string;
232
+ fullPath: string;
233
+ relativePath: string;
234
+ test: {
235
+ type: "browser";
236
+ pathname: string;
237
+ testFiles: string[];
238
+ } | {
239
+ type: "script";
240
+ script: string;
241
+ } | {
242
+ type: "none";
243
+ };
244
+ dev: {
245
+ type: "browser";
246
+ pathname: string;
247
+ } | {
248
+ type: "script";
249
+ portNumber: number;
250
+ } | {
251
+ type: "none";
252
+ };
253
+ exerciseNumber: number;
254
+ stepNumber: number;
255
+ solutionName: string | null;
256
+ instructionsCode?: string | undefined;
257
+ epicVideoEmbeds?: string[] | undefined;
258
+ }>;
259
+ declare const SolutionAppSchema: z.ZodObject<{
260
+ name: z.ZodString;
261
+ title: z.ZodString;
262
+ dirName: z.ZodString;
263
+ fullPath: z.ZodString;
264
+ relativePath: z.ZodString;
265
+ instructionsCode: z.ZodOptional<z.ZodString>;
266
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
267
+ test: z.ZodUnion<[z.ZodObject<{
268
+ type: z.ZodLiteral<"browser">;
269
+ pathname: z.ZodString;
270
+ testFiles: z.ZodArray<z.ZodString, "many">;
271
+ }, "strip", z.ZodTypeAny, {
272
+ type: "browser";
273
+ pathname: string;
274
+ testFiles: string[];
275
+ }, {
276
+ type: "browser";
277
+ pathname: string;
278
+ testFiles: string[];
279
+ }>, z.ZodObject<{
280
+ type: z.ZodLiteral<"script">;
281
+ script: z.ZodString;
282
+ }, "strip", z.ZodTypeAny, {
283
+ type: "script";
284
+ script: string;
285
+ }, {
286
+ type: "script";
287
+ script: string;
288
+ }>, z.ZodObject<{
289
+ type: z.ZodLiteral<"none">;
290
+ }, "strip", z.ZodTypeAny, {
291
+ type: "none";
292
+ }, {
293
+ type: "none";
294
+ }>]>;
295
+ dev: z.ZodUnion<[z.ZodObject<{
296
+ type: z.ZodLiteral<"browser">;
297
+ pathname: z.ZodString;
298
+ }, "strip", z.ZodTypeAny, {
299
+ type: "browser";
300
+ pathname: string;
301
+ }, {
302
+ type: "browser";
303
+ pathname: string;
304
+ }>, z.ZodObject<{
305
+ type: z.ZodLiteral<"script">;
306
+ portNumber: z.ZodNumber;
307
+ }, "strip", z.ZodTypeAny, {
308
+ type: "script";
309
+ portNumber: number;
310
+ }, {
311
+ type: "script";
312
+ portNumber: number;
313
+ }>, z.ZodObject<{
314
+ type: z.ZodLiteral<"none">;
315
+ }, "strip", z.ZodTypeAny, {
316
+ type: "none";
317
+ }, {
318
+ type: "none";
319
+ }>]>;
320
+ exerciseNumber: z.ZodNumber;
321
+ stepNumber: z.ZodNumber;
322
+ type: z.ZodLiteral<"solution">;
323
+ problemName: z.ZodNullable<z.ZodString>;
324
+ }, "strip", z.ZodTypeAny, {
325
+ type: "solution";
326
+ name: string;
327
+ title: string;
328
+ dirName: string;
329
+ fullPath: string;
330
+ relativePath: string;
331
+ test: {
332
+ type: "browser";
333
+ pathname: string;
334
+ testFiles: string[];
335
+ } | {
336
+ type: "script";
337
+ script: string;
338
+ } | {
339
+ type: "none";
340
+ };
341
+ dev: {
342
+ type: "browser";
343
+ pathname: string;
344
+ } | {
345
+ type: "script";
346
+ portNumber: number;
347
+ } | {
348
+ type: "none";
349
+ };
350
+ exerciseNumber: number;
351
+ stepNumber: number;
352
+ problemName: string | null;
353
+ instructionsCode?: string | undefined;
354
+ epicVideoEmbeds?: string[] | undefined;
355
+ }, {
356
+ type: "solution";
357
+ name: string;
358
+ title: string;
359
+ dirName: string;
360
+ fullPath: string;
361
+ relativePath: string;
362
+ test: {
363
+ type: "browser";
364
+ pathname: string;
365
+ testFiles: string[];
366
+ } | {
367
+ type: "script";
368
+ script: string;
369
+ } | {
370
+ type: "none";
371
+ };
372
+ dev: {
373
+ type: "browser";
374
+ pathname: string;
375
+ } | {
376
+ type: "script";
377
+ portNumber: number;
378
+ } | {
379
+ type: "none";
380
+ };
381
+ exerciseNumber: number;
382
+ stepNumber: number;
383
+ problemName: string | null;
384
+ instructionsCode?: string | undefined;
385
+ epicVideoEmbeds?: string[] | undefined;
386
+ }>;
387
+ declare const ExampleAppSchema: z.ZodObject<{
388
+ name: z.ZodString;
389
+ title: z.ZodString;
390
+ dirName: z.ZodString;
391
+ fullPath: z.ZodString;
392
+ relativePath: z.ZodString;
393
+ instructionsCode: z.ZodOptional<z.ZodString>;
394
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
395
+ test: z.ZodUnion<[z.ZodObject<{
396
+ type: z.ZodLiteral<"browser">;
397
+ pathname: z.ZodString;
398
+ testFiles: z.ZodArray<z.ZodString, "many">;
399
+ }, "strip", z.ZodTypeAny, {
400
+ type: "browser";
401
+ pathname: string;
402
+ testFiles: string[];
403
+ }, {
404
+ type: "browser";
405
+ pathname: string;
406
+ testFiles: string[];
407
+ }>, z.ZodObject<{
408
+ type: z.ZodLiteral<"script">;
409
+ script: z.ZodString;
410
+ }, "strip", z.ZodTypeAny, {
411
+ type: "script";
412
+ script: string;
413
+ }, {
414
+ type: "script";
415
+ script: string;
416
+ }>, z.ZodObject<{
417
+ type: z.ZodLiteral<"none">;
418
+ }, "strip", z.ZodTypeAny, {
419
+ type: "none";
420
+ }, {
421
+ type: "none";
422
+ }>]>;
423
+ dev: z.ZodUnion<[z.ZodObject<{
424
+ type: z.ZodLiteral<"browser">;
425
+ pathname: z.ZodString;
426
+ }, "strip", z.ZodTypeAny, {
427
+ type: "browser";
428
+ pathname: string;
429
+ }, {
430
+ type: "browser";
431
+ pathname: string;
432
+ }>, z.ZodObject<{
433
+ type: z.ZodLiteral<"script">;
434
+ portNumber: z.ZodNumber;
435
+ }, "strip", z.ZodTypeAny, {
436
+ type: "script";
437
+ portNumber: number;
438
+ }, {
439
+ type: "script";
440
+ portNumber: number;
441
+ }>, z.ZodObject<{
442
+ type: z.ZodLiteral<"none">;
443
+ }, "strip", z.ZodTypeAny, {
444
+ type: "none";
445
+ }, {
446
+ type: "none";
447
+ }>]>;
448
+ type: z.ZodLiteral<"example">;
449
+ }, "strip", z.ZodTypeAny, {
450
+ type: "example";
451
+ name: string;
452
+ title: string;
453
+ dirName: string;
454
+ fullPath: string;
455
+ relativePath: string;
456
+ test: {
457
+ type: "browser";
458
+ pathname: string;
459
+ testFiles: string[];
460
+ } | {
461
+ type: "script";
462
+ script: string;
463
+ } | {
464
+ type: "none";
465
+ };
466
+ dev: {
467
+ type: "browser";
468
+ pathname: string;
469
+ } | {
470
+ type: "script";
471
+ portNumber: number;
472
+ } | {
473
+ type: "none";
474
+ };
475
+ instructionsCode?: string | undefined;
476
+ epicVideoEmbeds?: string[] | undefined;
477
+ }, {
478
+ type: "example";
479
+ name: string;
480
+ title: string;
481
+ dirName: string;
482
+ fullPath: string;
483
+ relativePath: string;
484
+ test: {
485
+ type: "browser";
486
+ pathname: string;
487
+ testFiles: string[];
488
+ } | {
489
+ type: "script";
490
+ script: string;
491
+ } | {
492
+ type: "none";
493
+ };
494
+ dev: {
495
+ type: "browser";
496
+ pathname: string;
497
+ } | {
498
+ type: "script";
499
+ portNumber: number;
500
+ } | {
501
+ type: "none";
502
+ };
503
+ instructionsCode?: string | undefined;
504
+ epicVideoEmbeds?: string[] | undefined;
505
+ }>;
506
+ declare const PlaygroundAppSchema: z.ZodObject<{
507
+ name: z.ZodString;
508
+ title: z.ZodString;
509
+ dirName: z.ZodString;
510
+ fullPath: z.ZodString;
511
+ relativePath: z.ZodString;
512
+ instructionsCode: z.ZodOptional<z.ZodString>;
513
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
514
+ test: z.ZodUnion<[z.ZodObject<{
515
+ type: z.ZodLiteral<"browser">;
516
+ pathname: z.ZodString;
517
+ testFiles: z.ZodArray<z.ZodString, "many">;
518
+ }, "strip", z.ZodTypeAny, {
519
+ type: "browser";
520
+ pathname: string;
521
+ testFiles: string[];
522
+ }, {
523
+ type: "browser";
524
+ pathname: string;
525
+ testFiles: string[];
526
+ }>, z.ZodObject<{
527
+ type: z.ZodLiteral<"script">;
528
+ script: z.ZodString;
529
+ }, "strip", z.ZodTypeAny, {
530
+ type: "script";
531
+ script: string;
532
+ }, {
533
+ type: "script";
534
+ script: string;
535
+ }>, z.ZodObject<{
536
+ type: z.ZodLiteral<"none">;
537
+ }, "strip", z.ZodTypeAny, {
538
+ type: "none";
539
+ }, {
540
+ type: "none";
541
+ }>]>;
542
+ dev: z.ZodUnion<[z.ZodObject<{
543
+ type: z.ZodLiteral<"browser">;
544
+ pathname: z.ZodString;
545
+ }, "strip", z.ZodTypeAny, {
546
+ type: "browser";
547
+ pathname: string;
548
+ }, {
549
+ type: "browser";
550
+ pathname: string;
551
+ }>, z.ZodObject<{
552
+ type: z.ZodLiteral<"script">;
553
+ portNumber: z.ZodNumber;
554
+ }, "strip", z.ZodTypeAny, {
555
+ type: "script";
556
+ portNumber: number;
557
+ }, {
558
+ type: "script";
559
+ portNumber: number;
560
+ }>, z.ZodObject<{
561
+ type: z.ZodLiteral<"none">;
562
+ }, "strip", z.ZodTypeAny, {
563
+ type: "none";
564
+ }, {
565
+ type: "none";
566
+ }>]>;
567
+ type: z.ZodLiteral<"playground">;
568
+ appName: z.ZodString;
569
+ }, "strip", z.ZodTypeAny, {
570
+ type: "playground";
571
+ name: string;
572
+ title: string;
573
+ dirName: string;
574
+ fullPath: string;
575
+ relativePath: string;
576
+ test: {
577
+ type: "browser";
578
+ pathname: string;
579
+ testFiles: string[];
580
+ } | {
581
+ type: "script";
582
+ script: string;
583
+ } | {
584
+ type: "none";
585
+ };
586
+ dev: {
587
+ type: "browser";
588
+ pathname: string;
589
+ } | {
590
+ type: "script";
591
+ portNumber: number;
592
+ } | {
593
+ type: "none";
594
+ };
595
+ appName: string;
596
+ instructionsCode?: string | undefined;
597
+ epicVideoEmbeds?: string[] | undefined;
598
+ }, {
599
+ type: "playground";
600
+ name: string;
601
+ title: string;
602
+ dirName: string;
603
+ fullPath: string;
604
+ relativePath: string;
605
+ test: {
606
+ type: "browser";
607
+ pathname: string;
608
+ testFiles: string[];
609
+ } | {
610
+ type: "script";
611
+ script: string;
612
+ } | {
613
+ type: "none";
614
+ };
615
+ dev: {
616
+ type: "browser";
617
+ pathname: string;
618
+ } | {
619
+ type: "script";
620
+ portNumber: number;
621
+ } | {
622
+ type: "none";
623
+ };
624
+ appName: string;
625
+ instructionsCode?: string | undefined;
626
+ epicVideoEmbeds?: string[] | undefined;
627
+ }>;
628
+ declare const ExerciseSchema: z.ZodObject<{
629
+ /** a unique identifier for the exercise */
630
+ exerciseNumber: z.ZodNumber;
631
+ /** used when displaying the list of files to match the list of apps in the file system (comes the name of the directory of the app) */
632
+ dirName: z.ZodString;
633
+ /** the title of the app used for display (comes from the first h1 in the README) */
634
+ title: z.ZodString;
635
+ instructionsCode: z.ZodOptional<z.ZodString>;
636
+ finishedCode: z.ZodOptional<z.ZodString>;
637
+ instructionsEpicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
638
+ finishedEpicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
639
+ steps: z.ZodArray<z.ZodUnion<[z.ZodObject<{
640
+ stepNumber: z.ZodNumber;
641
+ problem: z.ZodObject<{
642
+ name: z.ZodString;
643
+ title: z.ZodString;
644
+ dirName: z.ZodString;
645
+ fullPath: z.ZodString;
646
+ relativePath: z.ZodString;
647
+ instructionsCode: z.ZodOptional<z.ZodString>;
648
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
649
+ test: z.ZodUnion<[z.ZodObject<{
650
+ type: z.ZodLiteral<"browser">;
651
+ pathname: z.ZodString;
652
+ testFiles: z.ZodArray<z.ZodString, "many">;
653
+ }, "strip", z.ZodTypeAny, {
654
+ type: "browser";
655
+ pathname: string;
656
+ testFiles: string[];
657
+ }, {
658
+ type: "browser";
659
+ pathname: string;
660
+ testFiles: string[];
661
+ }>, z.ZodObject<{
662
+ type: z.ZodLiteral<"script">;
663
+ script: z.ZodString;
664
+ }, "strip", z.ZodTypeAny, {
665
+ type: "script";
666
+ script: string;
667
+ }, {
668
+ type: "script";
669
+ script: string;
670
+ }>, z.ZodObject<{
671
+ type: z.ZodLiteral<"none">;
672
+ }, "strip", z.ZodTypeAny, {
673
+ type: "none";
674
+ }, {
675
+ type: "none";
676
+ }>]>;
677
+ dev: z.ZodUnion<[z.ZodObject<{
678
+ type: z.ZodLiteral<"browser">;
679
+ pathname: z.ZodString;
680
+ }, "strip", z.ZodTypeAny, {
681
+ type: "browser";
682
+ pathname: string;
683
+ }, {
684
+ type: "browser";
685
+ pathname: string;
686
+ }>, z.ZodObject<{
687
+ type: z.ZodLiteral<"script">;
688
+ portNumber: z.ZodNumber;
689
+ }, "strip", z.ZodTypeAny, {
690
+ type: "script";
691
+ portNumber: number;
692
+ }, {
693
+ type: "script";
694
+ portNumber: number;
695
+ }>, z.ZodObject<{
696
+ type: z.ZodLiteral<"none">;
697
+ }, "strip", z.ZodTypeAny, {
698
+ type: "none";
699
+ }, {
700
+ type: "none";
701
+ }>]>;
702
+ exerciseNumber: z.ZodNumber;
703
+ stepNumber: z.ZodNumber;
704
+ type: z.ZodLiteral<"problem">;
705
+ solutionName: z.ZodNullable<z.ZodString>;
706
+ }, "strip", z.ZodTypeAny, {
707
+ type: "problem";
708
+ name: string;
709
+ title: string;
710
+ dirName: string;
711
+ fullPath: string;
712
+ relativePath: string;
713
+ test: {
714
+ type: "browser";
715
+ pathname: string;
716
+ testFiles: string[];
717
+ } | {
718
+ type: "script";
719
+ script: string;
720
+ } | {
721
+ type: "none";
722
+ };
723
+ dev: {
724
+ type: "browser";
725
+ pathname: string;
726
+ } | {
727
+ type: "script";
728
+ portNumber: number;
729
+ } | {
730
+ type: "none";
731
+ };
732
+ exerciseNumber: number;
733
+ stepNumber: number;
734
+ solutionName: string | null;
735
+ instructionsCode?: string | undefined;
736
+ epicVideoEmbeds?: string[] | undefined;
737
+ }, {
738
+ type: "problem";
739
+ name: string;
740
+ title: string;
741
+ dirName: string;
742
+ fullPath: string;
743
+ relativePath: string;
744
+ test: {
745
+ type: "browser";
746
+ pathname: string;
747
+ testFiles: string[];
748
+ } | {
749
+ type: "script";
750
+ script: string;
751
+ } | {
752
+ type: "none";
753
+ };
754
+ dev: {
755
+ type: "browser";
756
+ pathname: string;
757
+ } | {
758
+ type: "script";
759
+ portNumber: number;
760
+ } | {
761
+ type: "none";
762
+ };
763
+ exerciseNumber: number;
764
+ stepNumber: number;
765
+ solutionName: string | null;
766
+ instructionsCode?: string | undefined;
767
+ epicVideoEmbeds?: string[] | undefined;
768
+ }>;
769
+ solution: z.ZodObject<{
770
+ name: z.ZodString;
771
+ title: z.ZodString;
772
+ dirName: z.ZodString;
773
+ fullPath: z.ZodString;
774
+ relativePath: z.ZodString;
775
+ instructionsCode: z.ZodOptional<z.ZodString>;
776
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
777
+ test: z.ZodUnion<[z.ZodObject<{
778
+ type: z.ZodLiteral<"browser">;
779
+ pathname: z.ZodString;
780
+ testFiles: z.ZodArray<z.ZodString, "many">;
781
+ }, "strip", z.ZodTypeAny, {
782
+ type: "browser";
783
+ pathname: string;
784
+ testFiles: string[];
785
+ }, {
786
+ type: "browser";
787
+ pathname: string;
788
+ testFiles: string[];
789
+ }>, z.ZodObject<{
790
+ type: z.ZodLiteral<"script">;
791
+ script: z.ZodString;
792
+ }, "strip", z.ZodTypeAny, {
793
+ type: "script";
794
+ script: string;
795
+ }, {
796
+ type: "script";
797
+ script: string;
798
+ }>, z.ZodObject<{
799
+ type: z.ZodLiteral<"none">;
800
+ }, "strip", z.ZodTypeAny, {
801
+ type: "none";
802
+ }, {
803
+ type: "none";
804
+ }>]>;
805
+ dev: z.ZodUnion<[z.ZodObject<{
806
+ type: z.ZodLiteral<"browser">;
807
+ pathname: z.ZodString;
808
+ }, "strip", z.ZodTypeAny, {
809
+ type: "browser";
810
+ pathname: string;
811
+ }, {
812
+ type: "browser";
813
+ pathname: string;
814
+ }>, z.ZodObject<{
815
+ type: z.ZodLiteral<"script">;
816
+ portNumber: z.ZodNumber;
817
+ }, "strip", z.ZodTypeAny, {
818
+ type: "script";
819
+ portNumber: number;
820
+ }, {
821
+ type: "script";
822
+ portNumber: number;
823
+ }>, z.ZodObject<{
824
+ type: z.ZodLiteral<"none">;
825
+ }, "strip", z.ZodTypeAny, {
826
+ type: "none";
827
+ }, {
828
+ type: "none";
829
+ }>]>;
830
+ exerciseNumber: z.ZodNumber;
831
+ stepNumber: z.ZodNumber;
832
+ type: z.ZodLiteral<"solution">;
833
+ problemName: z.ZodNullable<z.ZodString>;
834
+ }, "strip", z.ZodTypeAny, {
835
+ type: "solution";
836
+ name: string;
837
+ title: string;
838
+ dirName: string;
839
+ fullPath: string;
840
+ relativePath: string;
841
+ test: {
842
+ type: "browser";
843
+ pathname: string;
844
+ testFiles: string[];
845
+ } | {
846
+ type: "script";
847
+ script: string;
848
+ } | {
849
+ type: "none";
850
+ };
851
+ dev: {
852
+ type: "browser";
853
+ pathname: string;
854
+ } | {
855
+ type: "script";
856
+ portNumber: number;
857
+ } | {
858
+ type: "none";
859
+ };
860
+ exerciseNumber: number;
861
+ stepNumber: number;
862
+ problemName: string | null;
863
+ instructionsCode?: string | undefined;
864
+ epicVideoEmbeds?: string[] | undefined;
865
+ }, {
866
+ type: "solution";
867
+ name: string;
868
+ title: string;
869
+ dirName: string;
870
+ fullPath: string;
871
+ relativePath: string;
872
+ test: {
873
+ type: "browser";
874
+ pathname: string;
875
+ testFiles: string[];
876
+ } | {
877
+ type: "script";
878
+ script: string;
879
+ } | {
880
+ type: "none";
881
+ };
882
+ dev: {
883
+ type: "browser";
884
+ pathname: string;
885
+ } | {
886
+ type: "script";
887
+ portNumber: number;
888
+ } | {
889
+ type: "none";
890
+ };
891
+ exerciseNumber: number;
892
+ stepNumber: number;
893
+ problemName: string | null;
894
+ instructionsCode?: string | undefined;
895
+ epicVideoEmbeds?: string[] | undefined;
896
+ }>;
897
+ }, "strip", z.ZodTypeAny, {
898
+ stepNumber: number;
899
+ solution: {
900
+ type: "solution";
901
+ name: string;
902
+ title: string;
903
+ dirName: string;
904
+ fullPath: string;
905
+ relativePath: string;
906
+ test: {
907
+ type: "browser";
908
+ pathname: string;
909
+ testFiles: string[];
910
+ } | {
911
+ type: "script";
912
+ script: string;
913
+ } | {
914
+ type: "none";
915
+ };
916
+ dev: {
917
+ type: "browser";
918
+ pathname: string;
919
+ } | {
920
+ type: "script";
921
+ portNumber: number;
922
+ } | {
923
+ type: "none";
924
+ };
925
+ exerciseNumber: number;
926
+ stepNumber: number;
927
+ problemName: string | null;
928
+ instructionsCode?: string | undefined;
929
+ epicVideoEmbeds?: string[] | undefined;
930
+ };
931
+ problem: {
932
+ type: "problem";
933
+ name: string;
934
+ title: string;
935
+ dirName: string;
936
+ fullPath: string;
937
+ relativePath: string;
938
+ test: {
939
+ type: "browser";
940
+ pathname: string;
941
+ testFiles: string[];
942
+ } | {
943
+ type: "script";
944
+ script: string;
945
+ } | {
946
+ type: "none";
947
+ };
948
+ dev: {
949
+ type: "browser";
950
+ pathname: string;
951
+ } | {
952
+ type: "script";
953
+ portNumber: number;
954
+ } | {
955
+ type: "none";
956
+ };
957
+ exerciseNumber: number;
958
+ stepNumber: number;
959
+ solutionName: string | null;
960
+ instructionsCode?: string | undefined;
961
+ epicVideoEmbeds?: string[] | undefined;
962
+ };
963
+ }, {
964
+ stepNumber: number;
965
+ solution: {
966
+ type: "solution";
967
+ name: string;
968
+ title: string;
969
+ dirName: string;
970
+ fullPath: string;
971
+ relativePath: string;
972
+ test: {
973
+ type: "browser";
974
+ pathname: string;
975
+ testFiles: string[];
976
+ } | {
977
+ type: "script";
978
+ script: string;
979
+ } | {
980
+ type: "none";
981
+ };
982
+ dev: {
983
+ type: "browser";
984
+ pathname: string;
985
+ } | {
986
+ type: "script";
987
+ portNumber: number;
988
+ } | {
989
+ type: "none";
990
+ };
991
+ exerciseNumber: number;
992
+ stepNumber: number;
993
+ problemName: string | null;
994
+ instructionsCode?: string | undefined;
995
+ epicVideoEmbeds?: string[] | undefined;
996
+ };
997
+ problem: {
998
+ type: "problem";
999
+ name: string;
1000
+ title: string;
1001
+ dirName: string;
1002
+ fullPath: string;
1003
+ relativePath: string;
1004
+ test: {
1005
+ type: "browser";
1006
+ pathname: string;
1007
+ testFiles: string[];
1008
+ } | {
1009
+ type: "script";
1010
+ script: string;
1011
+ } | {
1012
+ type: "none";
1013
+ };
1014
+ dev: {
1015
+ type: "browser";
1016
+ pathname: string;
1017
+ } | {
1018
+ type: "script";
1019
+ portNumber: number;
1020
+ } | {
1021
+ type: "none";
1022
+ };
1023
+ exerciseNumber: number;
1024
+ stepNumber: number;
1025
+ solutionName: string | null;
1026
+ instructionsCode?: string | undefined;
1027
+ epicVideoEmbeds?: string[] | undefined;
1028
+ };
1029
+ }>, z.ZodObject<{
1030
+ stepNumber: z.ZodNumber;
1031
+ problem: z.ZodObject<{
1032
+ name: z.ZodString;
1033
+ title: z.ZodString;
1034
+ dirName: z.ZodString;
1035
+ fullPath: z.ZodString;
1036
+ relativePath: z.ZodString;
1037
+ instructionsCode: z.ZodOptional<z.ZodString>;
1038
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1039
+ test: z.ZodUnion<[z.ZodObject<{
1040
+ type: z.ZodLiteral<"browser">;
1041
+ pathname: z.ZodString;
1042
+ testFiles: z.ZodArray<z.ZodString, "many">;
1043
+ }, "strip", z.ZodTypeAny, {
1044
+ type: "browser";
1045
+ pathname: string;
1046
+ testFiles: string[];
1047
+ }, {
1048
+ type: "browser";
1049
+ pathname: string;
1050
+ testFiles: string[];
1051
+ }>, z.ZodObject<{
1052
+ type: z.ZodLiteral<"script">;
1053
+ script: z.ZodString;
1054
+ }, "strip", z.ZodTypeAny, {
1055
+ type: "script";
1056
+ script: string;
1057
+ }, {
1058
+ type: "script";
1059
+ script: string;
1060
+ }>, z.ZodObject<{
1061
+ type: z.ZodLiteral<"none">;
1062
+ }, "strip", z.ZodTypeAny, {
1063
+ type: "none";
1064
+ }, {
1065
+ type: "none";
1066
+ }>]>;
1067
+ dev: z.ZodUnion<[z.ZodObject<{
1068
+ type: z.ZodLiteral<"browser">;
1069
+ pathname: z.ZodString;
1070
+ }, "strip", z.ZodTypeAny, {
1071
+ type: "browser";
1072
+ pathname: string;
1073
+ }, {
1074
+ type: "browser";
1075
+ pathname: string;
1076
+ }>, z.ZodObject<{
1077
+ type: z.ZodLiteral<"script">;
1078
+ portNumber: z.ZodNumber;
1079
+ }, "strip", z.ZodTypeAny, {
1080
+ type: "script";
1081
+ portNumber: number;
1082
+ }, {
1083
+ type: "script";
1084
+ portNumber: number;
1085
+ }>, z.ZodObject<{
1086
+ type: z.ZodLiteral<"none">;
1087
+ }, "strip", z.ZodTypeAny, {
1088
+ type: "none";
1089
+ }, {
1090
+ type: "none";
1091
+ }>]>;
1092
+ exerciseNumber: z.ZodNumber;
1093
+ stepNumber: z.ZodNumber;
1094
+ type: z.ZodLiteral<"problem">;
1095
+ solutionName: z.ZodNullable<z.ZodString>;
1096
+ }, "strip", z.ZodTypeAny, {
1097
+ type: "problem";
1098
+ name: string;
1099
+ title: string;
1100
+ dirName: string;
1101
+ fullPath: string;
1102
+ relativePath: string;
1103
+ test: {
1104
+ type: "browser";
1105
+ pathname: string;
1106
+ testFiles: string[];
1107
+ } | {
1108
+ type: "script";
1109
+ script: string;
1110
+ } | {
1111
+ type: "none";
1112
+ };
1113
+ dev: {
1114
+ type: "browser";
1115
+ pathname: string;
1116
+ } | {
1117
+ type: "script";
1118
+ portNumber: number;
1119
+ } | {
1120
+ type: "none";
1121
+ };
1122
+ exerciseNumber: number;
1123
+ stepNumber: number;
1124
+ solutionName: string | null;
1125
+ instructionsCode?: string | undefined;
1126
+ epicVideoEmbeds?: string[] | undefined;
1127
+ }, {
1128
+ type: "problem";
1129
+ name: string;
1130
+ title: string;
1131
+ dirName: string;
1132
+ fullPath: string;
1133
+ relativePath: string;
1134
+ test: {
1135
+ type: "browser";
1136
+ pathname: string;
1137
+ testFiles: string[];
1138
+ } | {
1139
+ type: "script";
1140
+ script: string;
1141
+ } | {
1142
+ type: "none";
1143
+ };
1144
+ dev: {
1145
+ type: "browser";
1146
+ pathname: string;
1147
+ } | {
1148
+ type: "script";
1149
+ portNumber: number;
1150
+ } | {
1151
+ type: "none";
1152
+ };
1153
+ exerciseNumber: number;
1154
+ stepNumber: number;
1155
+ solutionName: string | null;
1156
+ instructionsCode?: string | undefined;
1157
+ epicVideoEmbeds?: string[] | undefined;
1158
+ }>;
1159
+ solution: z.ZodOptional<z.ZodNever>;
1160
+ }, "strip", z.ZodTypeAny, {
1161
+ stepNumber: number;
1162
+ problem: {
1163
+ type: "problem";
1164
+ name: string;
1165
+ title: string;
1166
+ dirName: string;
1167
+ fullPath: string;
1168
+ relativePath: string;
1169
+ test: {
1170
+ type: "browser";
1171
+ pathname: string;
1172
+ testFiles: string[];
1173
+ } | {
1174
+ type: "script";
1175
+ script: string;
1176
+ } | {
1177
+ type: "none";
1178
+ };
1179
+ dev: {
1180
+ type: "browser";
1181
+ pathname: string;
1182
+ } | {
1183
+ type: "script";
1184
+ portNumber: number;
1185
+ } | {
1186
+ type: "none";
1187
+ };
1188
+ exerciseNumber: number;
1189
+ stepNumber: number;
1190
+ solutionName: string | null;
1191
+ instructionsCode?: string | undefined;
1192
+ epicVideoEmbeds?: string[] | undefined;
1193
+ };
1194
+ solution?: undefined;
1195
+ }, {
1196
+ stepNumber: number;
1197
+ problem: {
1198
+ type: "problem";
1199
+ name: string;
1200
+ title: string;
1201
+ dirName: string;
1202
+ fullPath: string;
1203
+ relativePath: string;
1204
+ test: {
1205
+ type: "browser";
1206
+ pathname: string;
1207
+ testFiles: string[];
1208
+ } | {
1209
+ type: "script";
1210
+ script: string;
1211
+ } | {
1212
+ type: "none";
1213
+ };
1214
+ dev: {
1215
+ type: "browser";
1216
+ pathname: string;
1217
+ } | {
1218
+ type: "script";
1219
+ portNumber: number;
1220
+ } | {
1221
+ type: "none";
1222
+ };
1223
+ exerciseNumber: number;
1224
+ stepNumber: number;
1225
+ solutionName: string | null;
1226
+ instructionsCode?: string | undefined;
1227
+ epicVideoEmbeds?: string[] | undefined;
1228
+ };
1229
+ solution?: undefined;
1230
+ }>, z.ZodObject<{
1231
+ stepNumber: z.ZodNumber;
1232
+ problem: z.ZodOptional<z.ZodNever>;
1233
+ solution: z.ZodObject<{
1234
+ name: z.ZodString;
1235
+ title: z.ZodString;
1236
+ dirName: z.ZodString;
1237
+ fullPath: z.ZodString;
1238
+ relativePath: z.ZodString;
1239
+ instructionsCode: z.ZodOptional<z.ZodString>;
1240
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1241
+ test: z.ZodUnion<[z.ZodObject<{
1242
+ type: z.ZodLiteral<"browser">;
1243
+ pathname: z.ZodString;
1244
+ testFiles: z.ZodArray<z.ZodString, "many">;
1245
+ }, "strip", z.ZodTypeAny, {
1246
+ type: "browser";
1247
+ pathname: string;
1248
+ testFiles: string[];
1249
+ }, {
1250
+ type: "browser";
1251
+ pathname: string;
1252
+ testFiles: string[];
1253
+ }>, z.ZodObject<{
1254
+ type: z.ZodLiteral<"script">;
1255
+ script: z.ZodString;
1256
+ }, "strip", z.ZodTypeAny, {
1257
+ type: "script";
1258
+ script: string;
1259
+ }, {
1260
+ type: "script";
1261
+ script: string;
1262
+ }>, z.ZodObject<{
1263
+ type: z.ZodLiteral<"none">;
1264
+ }, "strip", z.ZodTypeAny, {
1265
+ type: "none";
1266
+ }, {
1267
+ type: "none";
1268
+ }>]>;
1269
+ dev: z.ZodUnion<[z.ZodObject<{
1270
+ type: z.ZodLiteral<"browser">;
1271
+ pathname: z.ZodString;
1272
+ }, "strip", z.ZodTypeAny, {
1273
+ type: "browser";
1274
+ pathname: string;
1275
+ }, {
1276
+ type: "browser";
1277
+ pathname: string;
1278
+ }>, z.ZodObject<{
1279
+ type: z.ZodLiteral<"script">;
1280
+ portNumber: z.ZodNumber;
1281
+ }, "strip", z.ZodTypeAny, {
1282
+ type: "script";
1283
+ portNumber: number;
1284
+ }, {
1285
+ type: "script";
1286
+ portNumber: number;
1287
+ }>, z.ZodObject<{
1288
+ type: z.ZodLiteral<"none">;
1289
+ }, "strip", z.ZodTypeAny, {
1290
+ type: "none";
1291
+ }, {
1292
+ type: "none";
1293
+ }>]>;
1294
+ exerciseNumber: z.ZodNumber;
1295
+ stepNumber: z.ZodNumber;
1296
+ type: z.ZodLiteral<"solution">;
1297
+ problemName: z.ZodNullable<z.ZodString>;
1298
+ }, "strip", z.ZodTypeAny, {
1299
+ type: "solution";
1300
+ name: string;
1301
+ title: string;
1302
+ dirName: string;
1303
+ fullPath: string;
1304
+ relativePath: string;
1305
+ test: {
1306
+ type: "browser";
1307
+ pathname: string;
1308
+ testFiles: string[];
1309
+ } | {
1310
+ type: "script";
1311
+ script: string;
1312
+ } | {
1313
+ type: "none";
1314
+ };
1315
+ dev: {
1316
+ type: "browser";
1317
+ pathname: string;
1318
+ } | {
1319
+ type: "script";
1320
+ portNumber: number;
1321
+ } | {
1322
+ type: "none";
1323
+ };
1324
+ exerciseNumber: number;
1325
+ stepNumber: number;
1326
+ problemName: string | null;
1327
+ instructionsCode?: string | undefined;
1328
+ epicVideoEmbeds?: string[] | undefined;
1329
+ }, {
1330
+ type: "solution";
1331
+ name: string;
1332
+ title: string;
1333
+ dirName: string;
1334
+ fullPath: string;
1335
+ relativePath: string;
1336
+ test: {
1337
+ type: "browser";
1338
+ pathname: string;
1339
+ testFiles: string[];
1340
+ } | {
1341
+ type: "script";
1342
+ script: string;
1343
+ } | {
1344
+ type: "none";
1345
+ };
1346
+ dev: {
1347
+ type: "browser";
1348
+ pathname: string;
1349
+ } | {
1350
+ type: "script";
1351
+ portNumber: number;
1352
+ } | {
1353
+ type: "none";
1354
+ };
1355
+ exerciseNumber: number;
1356
+ stepNumber: number;
1357
+ problemName: string | null;
1358
+ instructionsCode?: string | undefined;
1359
+ epicVideoEmbeds?: string[] | undefined;
1360
+ }>;
1361
+ }, "strip", z.ZodTypeAny, {
1362
+ stepNumber: number;
1363
+ solution: {
1364
+ type: "solution";
1365
+ name: string;
1366
+ title: string;
1367
+ dirName: string;
1368
+ fullPath: string;
1369
+ relativePath: string;
1370
+ test: {
1371
+ type: "browser";
1372
+ pathname: string;
1373
+ testFiles: string[];
1374
+ } | {
1375
+ type: "script";
1376
+ script: string;
1377
+ } | {
1378
+ type: "none";
1379
+ };
1380
+ dev: {
1381
+ type: "browser";
1382
+ pathname: string;
1383
+ } | {
1384
+ type: "script";
1385
+ portNumber: number;
1386
+ } | {
1387
+ type: "none";
1388
+ };
1389
+ exerciseNumber: number;
1390
+ stepNumber: number;
1391
+ problemName: string | null;
1392
+ instructionsCode?: string | undefined;
1393
+ epicVideoEmbeds?: string[] | undefined;
1394
+ };
1395
+ problem?: undefined;
1396
+ }, {
1397
+ stepNumber: number;
1398
+ solution: {
1399
+ type: "solution";
1400
+ name: string;
1401
+ title: string;
1402
+ dirName: string;
1403
+ fullPath: string;
1404
+ relativePath: string;
1405
+ test: {
1406
+ type: "browser";
1407
+ pathname: string;
1408
+ testFiles: string[];
1409
+ } | {
1410
+ type: "script";
1411
+ script: string;
1412
+ } | {
1413
+ type: "none";
1414
+ };
1415
+ dev: {
1416
+ type: "browser";
1417
+ pathname: string;
1418
+ } | {
1419
+ type: "script";
1420
+ portNumber: number;
1421
+ } | {
1422
+ type: "none";
1423
+ };
1424
+ exerciseNumber: number;
1425
+ stepNumber: number;
1426
+ problemName: string | null;
1427
+ instructionsCode?: string | undefined;
1428
+ epicVideoEmbeds?: string[] | undefined;
1429
+ };
1430
+ problem?: undefined;
1431
+ }>]>, "many">;
1432
+ problems: z.ZodArray<z.ZodObject<{
1433
+ name: z.ZodString;
1434
+ title: z.ZodString;
1435
+ dirName: z.ZodString;
1436
+ fullPath: z.ZodString;
1437
+ relativePath: z.ZodString;
1438
+ instructionsCode: z.ZodOptional<z.ZodString>;
1439
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1440
+ test: z.ZodUnion<[z.ZodObject<{
1441
+ type: z.ZodLiteral<"browser">;
1442
+ pathname: z.ZodString;
1443
+ testFiles: z.ZodArray<z.ZodString, "many">;
1444
+ }, "strip", z.ZodTypeAny, {
1445
+ type: "browser";
1446
+ pathname: string;
1447
+ testFiles: string[];
1448
+ }, {
1449
+ type: "browser";
1450
+ pathname: string;
1451
+ testFiles: string[];
1452
+ }>, z.ZodObject<{
1453
+ type: z.ZodLiteral<"script">;
1454
+ script: z.ZodString;
1455
+ }, "strip", z.ZodTypeAny, {
1456
+ type: "script";
1457
+ script: string;
1458
+ }, {
1459
+ type: "script";
1460
+ script: string;
1461
+ }>, z.ZodObject<{
1462
+ type: z.ZodLiteral<"none">;
1463
+ }, "strip", z.ZodTypeAny, {
1464
+ type: "none";
1465
+ }, {
1466
+ type: "none";
1467
+ }>]>;
1468
+ dev: z.ZodUnion<[z.ZodObject<{
1469
+ type: z.ZodLiteral<"browser">;
1470
+ pathname: z.ZodString;
1471
+ }, "strip", z.ZodTypeAny, {
1472
+ type: "browser";
1473
+ pathname: string;
1474
+ }, {
1475
+ type: "browser";
1476
+ pathname: string;
1477
+ }>, z.ZodObject<{
1478
+ type: z.ZodLiteral<"script">;
1479
+ portNumber: z.ZodNumber;
1480
+ }, "strip", z.ZodTypeAny, {
1481
+ type: "script";
1482
+ portNumber: number;
1483
+ }, {
1484
+ type: "script";
1485
+ portNumber: number;
1486
+ }>, z.ZodObject<{
1487
+ type: z.ZodLiteral<"none">;
1488
+ }, "strip", z.ZodTypeAny, {
1489
+ type: "none";
1490
+ }, {
1491
+ type: "none";
1492
+ }>]>;
1493
+ exerciseNumber: z.ZodNumber;
1494
+ stepNumber: z.ZodNumber;
1495
+ type: z.ZodLiteral<"problem">;
1496
+ solutionName: z.ZodNullable<z.ZodString>;
1497
+ }, "strip", z.ZodTypeAny, {
1498
+ type: "problem";
1499
+ name: string;
1500
+ title: string;
1501
+ dirName: string;
1502
+ fullPath: string;
1503
+ relativePath: string;
1504
+ test: {
1505
+ type: "browser";
1506
+ pathname: string;
1507
+ testFiles: string[];
1508
+ } | {
1509
+ type: "script";
1510
+ script: string;
1511
+ } | {
1512
+ type: "none";
1513
+ };
1514
+ dev: {
1515
+ type: "browser";
1516
+ pathname: string;
1517
+ } | {
1518
+ type: "script";
1519
+ portNumber: number;
1520
+ } | {
1521
+ type: "none";
1522
+ };
1523
+ exerciseNumber: number;
1524
+ stepNumber: number;
1525
+ solutionName: string | null;
1526
+ instructionsCode?: string | undefined;
1527
+ epicVideoEmbeds?: string[] | undefined;
1528
+ }, {
1529
+ type: "problem";
1530
+ name: string;
1531
+ title: string;
1532
+ dirName: string;
1533
+ fullPath: string;
1534
+ relativePath: string;
1535
+ test: {
1536
+ type: "browser";
1537
+ pathname: string;
1538
+ testFiles: string[];
1539
+ } | {
1540
+ type: "script";
1541
+ script: string;
1542
+ } | {
1543
+ type: "none";
1544
+ };
1545
+ dev: {
1546
+ type: "browser";
1547
+ pathname: string;
1548
+ } | {
1549
+ type: "script";
1550
+ portNumber: number;
1551
+ } | {
1552
+ type: "none";
1553
+ };
1554
+ exerciseNumber: number;
1555
+ stepNumber: number;
1556
+ solutionName: string | null;
1557
+ instructionsCode?: string | undefined;
1558
+ epicVideoEmbeds?: string[] | undefined;
1559
+ }>, "many">;
1560
+ solutions: z.ZodArray<z.ZodObject<{
1561
+ name: z.ZodString;
1562
+ title: z.ZodString;
1563
+ dirName: z.ZodString;
1564
+ fullPath: z.ZodString;
1565
+ relativePath: z.ZodString;
1566
+ instructionsCode: z.ZodOptional<z.ZodString>;
1567
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1568
+ test: z.ZodUnion<[z.ZodObject<{
1569
+ type: z.ZodLiteral<"browser">;
1570
+ pathname: z.ZodString;
1571
+ testFiles: z.ZodArray<z.ZodString, "many">;
1572
+ }, "strip", z.ZodTypeAny, {
1573
+ type: "browser";
1574
+ pathname: string;
1575
+ testFiles: string[];
1576
+ }, {
1577
+ type: "browser";
1578
+ pathname: string;
1579
+ testFiles: string[];
1580
+ }>, z.ZodObject<{
1581
+ type: z.ZodLiteral<"script">;
1582
+ script: z.ZodString;
1583
+ }, "strip", z.ZodTypeAny, {
1584
+ type: "script";
1585
+ script: string;
1586
+ }, {
1587
+ type: "script";
1588
+ script: string;
1589
+ }>, z.ZodObject<{
1590
+ type: z.ZodLiteral<"none">;
1591
+ }, "strip", z.ZodTypeAny, {
1592
+ type: "none";
1593
+ }, {
1594
+ type: "none";
1595
+ }>]>;
1596
+ dev: z.ZodUnion<[z.ZodObject<{
1597
+ type: z.ZodLiteral<"browser">;
1598
+ pathname: z.ZodString;
1599
+ }, "strip", z.ZodTypeAny, {
1600
+ type: "browser";
1601
+ pathname: string;
1602
+ }, {
1603
+ type: "browser";
1604
+ pathname: string;
1605
+ }>, z.ZodObject<{
1606
+ type: z.ZodLiteral<"script">;
1607
+ portNumber: z.ZodNumber;
1608
+ }, "strip", z.ZodTypeAny, {
1609
+ type: "script";
1610
+ portNumber: number;
1611
+ }, {
1612
+ type: "script";
1613
+ portNumber: number;
1614
+ }>, z.ZodObject<{
1615
+ type: z.ZodLiteral<"none">;
1616
+ }, "strip", z.ZodTypeAny, {
1617
+ type: "none";
1618
+ }, {
1619
+ type: "none";
1620
+ }>]>;
1621
+ exerciseNumber: z.ZodNumber;
1622
+ stepNumber: z.ZodNumber;
1623
+ type: z.ZodLiteral<"solution">;
1624
+ problemName: z.ZodNullable<z.ZodString>;
1625
+ }, "strip", z.ZodTypeAny, {
1626
+ type: "solution";
1627
+ name: string;
1628
+ title: string;
1629
+ dirName: string;
1630
+ fullPath: string;
1631
+ relativePath: string;
1632
+ test: {
1633
+ type: "browser";
1634
+ pathname: string;
1635
+ testFiles: string[];
1636
+ } | {
1637
+ type: "script";
1638
+ script: string;
1639
+ } | {
1640
+ type: "none";
1641
+ };
1642
+ dev: {
1643
+ type: "browser";
1644
+ pathname: string;
1645
+ } | {
1646
+ type: "script";
1647
+ portNumber: number;
1648
+ } | {
1649
+ type: "none";
1650
+ };
1651
+ exerciseNumber: number;
1652
+ stepNumber: number;
1653
+ problemName: string | null;
1654
+ instructionsCode?: string | undefined;
1655
+ epicVideoEmbeds?: string[] | undefined;
1656
+ }, {
1657
+ type: "solution";
1658
+ name: string;
1659
+ title: string;
1660
+ dirName: string;
1661
+ fullPath: string;
1662
+ relativePath: string;
1663
+ test: {
1664
+ type: "browser";
1665
+ pathname: string;
1666
+ testFiles: string[];
1667
+ } | {
1668
+ type: "script";
1669
+ script: string;
1670
+ } | {
1671
+ type: "none";
1672
+ };
1673
+ dev: {
1674
+ type: "browser";
1675
+ pathname: string;
1676
+ } | {
1677
+ type: "script";
1678
+ portNumber: number;
1679
+ } | {
1680
+ type: "none";
1681
+ };
1682
+ exerciseNumber: number;
1683
+ stepNumber: number;
1684
+ problemName: string | null;
1685
+ instructionsCode?: string | undefined;
1686
+ epicVideoEmbeds?: string[] | undefined;
1687
+ }>, "many">;
1688
+ }, "strip", z.ZodTypeAny, {
1689
+ title: string;
1690
+ dirName: string;
1691
+ exerciseNumber: number;
1692
+ steps: ({
1693
+ stepNumber: number;
1694
+ solution: {
1695
+ type: "solution";
1696
+ name: string;
1697
+ title: string;
1698
+ dirName: string;
1699
+ fullPath: string;
1700
+ relativePath: string;
1701
+ test: {
1702
+ type: "browser";
1703
+ pathname: string;
1704
+ testFiles: string[];
1705
+ } | {
1706
+ type: "script";
1707
+ script: string;
1708
+ } | {
1709
+ type: "none";
1710
+ };
1711
+ dev: {
1712
+ type: "browser";
1713
+ pathname: string;
1714
+ } | {
1715
+ type: "script";
1716
+ portNumber: number;
1717
+ } | {
1718
+ type: "none";
1719
+ };
1720
+ exerciseNumber: number;
1721
+ stepNumber: number;
1722
+ problemName: string | null;
1723
+ instructionsCode?: string | undefined;
1724
+ epicVideoEmbeds?: string[] | undefined;
1725
+ };
1726
+ problem: {
1727
+ type: "problem";
1728
+ name: string;
1729
+ title: string;
1730
+ dirName: string;
1731
+ fullPath: string;
1732
+ relativePath: string;
1733
+ test: {
1734
+ type: "browser";
1735
+ pathname: string;
1736
+ testFiles: string[];
1737
+ } | {
1738
+ type: "script";
1739
+ script: string;
1740
+ } | {
1741
+ type: "none";
1742
+ };
1743
+ dev: {
1744
+ type: "browser";
1745
+ pathname: string;
1746
+ } | {
1747
+ type: "script";
1748
+ portNumber: number;
1749
+ } | {
1750
+ type: "none";
1751
+ };
1752
+ exerciseNumber: number;
1753
+ stepNumber: number;
1754
+ solutionName: string | null;
1755
+ instructionsCode?: string | undefined;
1756
+ epicVideoEmbeds?: string[] | undefined;
1757
+ };
1758
+ } | {
1759
+ stepNumber: number;
1760
+ problem: {
1761
+ type: "problem";
1762
+ name: string;
1763
+ title: string;
1764
+ dirName: string;
1765
+ fullPath: string;
1766
+ relativePath: string;
1767
+ test: {
1768
+ type: "browser";
1769
+ pathname: string;
1770
+ testFiles: string[];
1771
+ } | {
1772
+ type: "script";
1773
+ script: string;
1774
+ } | {
1775
+ type: "none";
1776
+ };
1777
+ dev: {
1778
+ type: "browser";
1779
+ pathname: string;
1780
+ } | {
1781
+ type: "script";
1782
+ portNumber: number;
1783
+ } | {
1784
+ type: "none";
1785
+ };
1786
+ exerciseNumber: number;
1787
+ stepNumber: number;
1788
+ solutionName: string | null;
1789
+ instructionsCode?: string | undefined;
1790
+ epicVideoEmbeds?: string[] | undefined;
1791
+ };
1792
+ solution?: undefined;
1793
+ } | {
1794
+ stepNumber: number;
1795
+ solution: {
1796
+ type: "solution";
1797
+ name: string;
1798
+ title: string;
1799
+ dirName: string;
1800
+ fullPath: string;
1801
+ relativePath: string;
1802
+ test: {
1803
+ type: "browser";
1804
+ pathname: string;
1805
+ testFiles: string[];
1806
+ } | {
1807
+ type: "script";
1808
+ script: string;
1809
+ } | {
1810
+ type: "none";
1811
+ };
1812
+ dev: {
1813
+ type: "browser";
1814
+ pathname: string;
1815
+ } | {
1816
+ type: "script";
1817
+ portNumber: number;
1818
+ } | {
1819
+ type: "none";
1820
+ };
1821
+ exerciseNumber: number;
1822
+ stepNumber: number;
1823
+ problemName: string | null;
1824
+ instructionsCode?: string | undefined;
1825
+ epicVideoEmbeds?: string[] | undefined;
1826
+ };
1827
+ problem?: undefined;
1828
+ })[];
1829
+ problems: {
1830
+ type: "problem";
1831
+ name: string;
1832
+ title: string;
1833
+ dirName: string;
1834
+ fullPath: string;
1835
+ relativePath: string;
1836
+ test: {
1837
+ type: "browser";
1838
+ pathname: string;
1839
+ testFiles: string[];
1840
+ } | {
1841
+ type: "script";
1842
+ script: string;
1843
+ } | {
1844
+ type: "none";
1845
+ };
1846
+ dev: {
1847
+ type: "browser";
1848
+ pathname: string;
1849
+ } | {
1850
+ type: "script";
1851
+ portNumber: number;
1852
+ } | {
1853
+ type: "none";
1854
+ };
1855
+ exerciseNumber: number;
1856
+ stepNumber: number;
1857
+ solutionName: string | null;
1858
+ instructionsCode?: string | undefined;
1859
+ epicVideoEmbeds?: string[] | undefined;
1860
+ }[];
1861
+ solutions: {
1862
+ type: "solution";
1863
+ name: string;
1864
+ title: string;
1865
+ dirName: string;
1866
+ fullPath: string;
1867
+ relativePath: string;
1868
+ test: {
1869
+ type: "browser";
1870
+ pathname: string;
1871
+ testFiles: string[];
1872
+ } | {
1873
+ type: "script";
1874
+ script: string;
1875
+ } | {
1876
+ type: "none";
1877
+ };
1878
+ dev: {
1879
+ type: "browser";
1880
+ pathname: string;
1881
+ } | {
1882
+ type: "script";
1883
+ portNumber: number;
1884
+ } | {
1885
+ type: "none";
1886
+ };
1887
+ exerciseNumber: number;
1888
+ stepNumber: number;
1889
+ problemName: string | null;
1890
+ instructionsCode?: string | undefined;
1891
+ epicVideoEmbeds?: string[] | undefined;
1892
+ }[];
1893
+ instructionsCode?: string | undefined;
1894
+ finishedCode?: string | undefined;
1895
+ instructionsEpicVideoEmbeds?: string[] | undefined;
1896
+ finishedEpicVideoEmbeds?: string[] | undefined;
1897
+ }, {
1898
+ title: string;
1899
+ dirName: string;
1900
+ exerciseNumber: number;
1901
+ steps: ({
1902
+ stepNumber: number;
1903
+ solution: {
1904
+ type: "solution";
1905
+ name: string;
1906
+ title: string;
1907
+ dirName: string;
1908
+ fullPath: string;
1909
+ relativePath: string;
1910
+ test: {
1911
+ type: "browser";
1912
+ pathname: string;
1913
+ testFiles: string[];
1914
+ } | {
1915
+ type: "script";
1916
+ script: string;
1917
+ } | {
1918
+ type: "none";
1919
+ };
1920
+ dev: {
1921
+ type: "browser";
1922
+ pathname: string;
1923
+ } | {
1924
+ type: "script";
1925
+ portNumber: number;
1926
+ } | {
1927
+ type: "none";
1928
+ };
1929
+ exerciseNumber: number;
1930
+ stepNumber: number;
1931
+ problemName: string | null;
1932
+ instructionsCode?: string | undefined;
1933
+ epicVideoEmbeds?: string[] | undefined;
1934
+ };
1935
+ problem: {
1936
+ type: "problem";
1937
+ name: string;
1938
+ title: string;
1939
+ dirName: string;
1940
+ fullPath: string;
1941
+ relativePath: string;
1942
+ test: {
1943
+ type: "browser";
1944
+ pathname: string;
1945
+ testFiles: string[];
1946
+ } | {
1947
+ type: "script";
1948
+ script: string;
1949
+ } | {
1950
+ type: "none";
1951
+ };
1952
+ dev: {
1953
+ type: "browser";
1954
+ pathname: string;
1955
+ } | {
1956
+ type: "script";
1957
+ portNumber: number;
1958
+ } | {
1959
+ type: "none";
1960
+ };
1961
+ exerciseNumber: number;
1962
+ stepNumber: number;
1963
+ solutionName: string | null;
1964
+ instructionsCode?: string | undefined;
1965
+ epicVideoEmbeds?: string[] | undefined;
1966
+ };
1967
+ } | {
1968
+ stepNumber: number;
1969
+ problem: {
1970
+ type: "problem";
1971
+ name: string;
1972
+ title: string;
1973
+ dirName: string;
1974
+ fullPath: string;
1975
+ relativePath: string;
1976
+ test: {
1977
+ type: "browser";
1978
+ pathname: string;
1979
+ testFiles: string[];
1980
+ } | {
1981
+ type: "script";
1982
+ script: string;
1983
+ } | {
1984
+ type: "none";
1985
+ };
1986
+ dev: {
1987
+ type: "browser";
1988
+ pathname: string;
1989
+ } | {
1990
+ type: "script";
1991
+ portNumber: number;
1992
+ } | {
1993
+ type: "none";
1994
+ };
1995
+ exerciseNumber: number;
1996
+ stepNumber: number;
1997
+ solutionName: string | null;
1998
+ instructionsCode?: string | undefined;
1999
+ epicVideoEmbeds?: string[] | undefined;
2000
+ };
2001
+ solution?: undefined;
2002
+ } | {
2003
+ stepNumber: number;
2004
+ solution: {
2005
+ type: "solution";
2006
+ name: string;
2007
+ title: string;
2008
+ dirName: string;
2009
+ fullPath: string;
2010
+ relativePath: string;
2011
+ test: {
2012
+ type: "browser";
2013
+ pathname: string;
2014
+ testFiles: string[];
2015
+ } | {
2016
+ type: "script";
2017
+ script: string;
2018
+ } | {
2019
+ type: "none";
2020
+ };
2021
+ dev: {
2022
+ type: "browser";
2023
+ pathname: string;
2024
+ } | {
2025
+ type: "script";
2026
+ portNumber: number;
2027
+ } | {
2028
+ type: "none";
2029
+ };
2030
+ exerciseNumber: number;
2031
+ stepNumber: number;
2032
+ problemName: string | null;
2033
+ instructionsCode?: string | undefined;
2034
+ epicVideoEmbeds?: string[] | undefined;
2035
+ };
2036
+ problem?: undefined;
2037
+ })[];
2038
+ problems: {
2039
+ type: "problem";
2040
+ name: string;
2041
+ title: string;
2042
+ dirName: string;
2043
+ fullPath: string;
2044
+ relativePath: string;
2045
+ test: {
2046
+ type: "browser";
2047
+ pathname: string;
2048
+ testFiles: string[];
2049
+ } | {
2050
+ type: "script";
2051
+ script: string;
2052
+ } | {
2053
+ type: "none";
2054
+ };
2055
+ dev: {
2056
+ type: "browser";
2057
+ pathname: string;
2058
+ } | {
2059
+ type: "script";
2060
+ portNumber: number;
2061
+ } | {
2062
+ type: "none";
2063
+ };
2064
+ exerciseNumber: number;
2065
+ stepNumber: number;
2066
+ solutionName: string | null;
2067
+ instructionsCode?: string | undefined;
2068
+ epicVideoEmbeds?: string[] | undefined;
2069
+ }[];
2070
+ solutions: {
2071
+ type: "solution";
2072
+ name: string;
2073
+ title: string;
2074
+ dirName: string;
2075
+ fullPath: string;
2076
+ relativePath: string;
2077
+ test: {
2078
+ type: "browser";
2079
+ pathname: string;
2080
+ testFiles: string[];
2081
+ } | {
2082
+ type: "script";
2083
+ script: string;
2084
+ } | {
2085
+ type: "none";
2086
+ };
2087
+ dev: {
2088
+ type: "browser";
2089
+ pathname: string;
2090
+ } | {
2091
+ type: "script";
2092
+ portNumber: number;
2093
+ } | {
2094
+ type: "none";
2095
+ };
2096
+ exerciseNumber: number;
2097
+ stepNumber: number;
2098
+ problemName: string | null;
2099
+ instructionsCode?: string | undefined;
2100
+ epicVideoEmbeds?: string[] | undefined;
2101
+ }[];
2102
+ instructionsCode?: string | undefined;
2103
+ finishedCode?: string | undefined;
2104
+ instructionsEpicVideoEmbeds?: string[] | undefined;
2105
+ finishedEpicVideoEmbeds?: string[] | undefined;
2106
+ }>;
2107
+ declare const ExerciseStepAppSchema: z.ZodUnion<[z.ZodObject<{
2108
+ name: z.ZodString;
2109
+ title: z.ZodString;
2110
+ dirName: z.ZodString;
2111
+ fullPath: z.ZodString;
2112
+ relativePath: z.ZodString;
2113
+ instructionsCode: z.ZodOptional<z.ZodString>;
2114
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2115
+ test: z.ZodUnion<[z.ZodObject<{
2116
+ type: z.ZodLiteral<"browser">;
2117
+ pathname: z.ZodString;
2118
+ testFiles: z.ZodArray<z.ZodString, "many">;
2119
+ }, "strip", z.ZodTypeAny, {
2120
+ type: "browser";
2121
+ pathname: string;
2122
+ testFiles: string[];
2123
+ }, {
2124
+ type: "browser";
2125
+ pathname: string;
2126
+ testFiles: string[];
2127
+ }>, z.ZodObject<{
2128
+ type: z.ZodLiteral<"script">;
2129
+ script: z.ZodString;
2130
+ }, "strip", z.ZodTypeAny, {
2131
+ type: "script";
2132
+ script: string;
2133
+ }, {
2134
+ type: "script";
2135
+ script: string;
2136
+ }>, z.ZodObject<{
2137
+ type: z.ZodLiteral<"none">;
2138
+ }, "strip", z.ZodTypeAny, {
2139
+ type: "none";
2140
+ }, {
2141
+ type: "none";
2142
+ }>]>;
2143
+ dev: z.ZodUnion<[z.ZodObject<{
2144
+ type: z.ZodLiteral<"browser">;
2145
+ pathname: z.ZodString;
2146
+ }, "strip", z.ZodTypeAny, {
2147
+ type: "browser";
2148
+ pathname: string;
2149
+ }, {
2150
+ type: "browser";
2151
+ pathname: string;
2152
+ }>, z.ZodObject<{
2153
+ type: z.ZodLiteral<"script">;
2154
+ portNumber: z.ZodNumber;
2155
+ }, "strip", z.ZodTypeAny, {
2156
+ type: "script";
2157
+ portNumber: number;
2158
+ }, {
2159
+ type: "script";
2160
+ portNumber: number;
2161
+ }>, z.ZodObject<{
2162
+ type: z.ZodLiteral<"none">;
2163
+ }, "strip", z.ZodTypeAny, {
2164
+ type: "none";
2165
+ }, {
2166
+ type: "none";
2167
+ }>]>;
2168
+ exerciseNumber: z.ZodNumber;
2169
+ stepNumber: z.ZodNumber;
2170
+ type: z.ZodLiteral<"problem">;
2171
+ solutionName: z.ZodNullable<z.ZodString>;
2172
+ }, "strip", z.ZodTypeAny, {
2173
+ type: "problem";
2174
+ name: string;
2175
+ title: string;
2176
+ dirName: string;
2177
+ fullPath: string;
2178
+ relativePath: string;
2179
+ test: {
2180
+ type: "browser";
2181
+ pathname: string;
2182
+ testFiles: string[];
2183
+ } | {
2184
+ type: "script";
2185
+ script: string;
2186
+ } | {
2187
+ type: "none";
2188
+ };
2189
+ dev: {
2190
+ type: "browser";
2191
+ pathname: string;
2192
+ } | {
2193
+ type: "script";
2194
+ portNumber: number;
2195
+ } | {
2196
+ type: "none";
2197
+ };
2198
+ exerciseNumber: number;
2199
+ stepNumber: number;
2200
+ solutionName: string | null;
2201
+ instructionsCode?: string | undefined;
2202
+ epicVideoEmbeds?: string[] | undefined;
2203
+ }, {
2204
+ type: "problem";
2205
+ name: string;
2206
+ title: string;
2207
+ dirName: string;
2208
+ fullPath: string;
2209
+ relativePath: string;
2210
+ test: {
2211
+ type: "browser";
2212
+ pathname: string;
2213
+ testFiles: string[];
2214
+ } | {
2215
+ type: "script";
2216
+ script: string;
2217
+ } | {
2218
+ type: "none";
2219
+ };
2220
+ dev: {
2221
+ type: "browser";
2222
+ pathname: string;
2223
+ } | {
2224
+ type: "script";
2225
+ portNumber: number;
2226
+ } | {
2227
+ type: "none";
2228
+ };
2229
+ exerciseNumber: number;
2230
+ stepNumber: number;
2231
+ solutionName: string | null;
2232
+ instructionsCode?: string | undefined;
2233
+ epicVideoEmbeds?: string[] | undefined;
2234
+ }>, z.ZodObject<{
2235
+ name: z.ZodString;
2236
+ title: z.ZodString;
2237
+ dirName: z.ZodString;
2238
+ fullPath: z.ZodString;
2239
+ relativePath: z.ZodString;
2240
+ instructionsCode: z.ZodOptional<z.ZodString>;
2241
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2242
+ test: z.ZodUnion<[z.ZodObject<{
2243
+ type: z.ZodLiteral<"browser">;
2244
+ pathname: z.ZodString;
2245
+ testFiles: z.ZodArray<z.ZodString, "many">;
2246
+ }, "strip", z.ZodTypeAny, {
2247
+ type: "browser";
2248
+ pathname: string;
2249
+ testFiles: string[];
2250
+ }, {
2251
+ type: "browser";
2252
+ pathname: string;
2253
+ testFiles: string[];
2254
+ }>, z.ZodObject<{
2255
+ type: z.ZodLiteral<"script">;
2256
+ script: z.ZodString;
2257
+ }, "strip", z.ZodTypeAny, {
2258
+ type: "script";
2259
+ script: string;
2260
+ }, {
2261
+ type: "script";
2262
+ script: string;
2263
+ }>, z.ZodObject<{
2264
+ type: z.ZodLiteral<"none">;
2265
+ }, "strip", z.ZodTypeAny, {
2266
+ type: "none";
2267
+ }, {
2268
+ type: "none";
2269
+ }>]>;
2270
+ dev: z.ZodUnion<[z.ZodObject<{
2271
+ type: z.ZodLiteral<"browser">;
2272
+ pathname: z.ZodString;
2273
+ }, "strip", z.ZodTypeAny, {
2274
+ type: "browser";
2275
+ pathname: string;
2276
+ }, {
2277
+ type: "browser";
2278
+ pathname: string;
2279
+ }>, z.ZodObject<{
2280
+ type: z.ZodLiteral<"script">;
2281
+ portNumber: z.ZodNumber;
2282
+ }, "strip", z.ZodTypeAny, {
2283
+ type: "script";
2284
+ portNumber: number;
2285
+ }, {
2286
+ type: "script";
2287
+ portNumber: number;
2288
+ }>, z.ZodObject<{
2289
+ type: z.ZodLiteral<"none">;
2290
+ }, "strip", z.ZodTypeAny, {
2291
+ type: "none";
2292
+ }, {
2293
+ type: "none";
2294
+ }>]>;
2295
+ exerciseNumber: z.ZodNumber;
2296
+ stepNumber: z.ZodNumber;
2297
+ type: z.ZodLiteral<"solution">;
2298
+ problemName: z.ZodNullable<z.ZodString>;
2299
+ }, "strip", z.ZodTypeAny, {
2300
+ type: "solution";
2301
+ name: string;
2302
+ title: string;
2303
+ dirName: string;
2304
+ fullPath: string;
2305
+ relativePath: string;
2306
+ test: {
2307
+ type: "browser";
2308
+ pathname: string;
2309
+ testFiles: string[];
2310
+ } | {
2311
+ type: "script";
2312
+ script: string;
2313
+ } | {
2314
+ type: "none";
2315
+ };
2316
+ dev: {
2317
+ type: "browser";
2318
+ pathname: string;
2319
+ } | {
2320
+ type: "script";
2321
+ portNumber: number;
2322
+ } | {
2323
+ type: "none";
2324
+ };
2325
+ exerciseNumber: number;
2326
+ stepNumber: number;
2327
+ problemName: string | null;
2328
+ instructionsCode?: string | undefined;
2329
+ epicVideoEmbeds?: string[] | undefined;
2330
+ }, {
2331
+ type: "solution";
2332
+ name: string;
2333
+ title: string;
2334
+ dirName: string;
2335
+ fullPath: string;
2336
+ relativePath: string;
2337
+ test: {
2338
+ type: "browser";
2339
+ pathname: string;
2340
+ testFiles: string[];
2341
+ } | {
2342
+ type: "script";
2343
+ script: string;
2344
+ } | {
2345
+ type: "none";
2346
+ };
2347
+ dev: {
2348
+ type: "browser";
2349
+ pathname: string;
2350
+ } | {
2351
+ type: "script";
2352
+ portNumber: number;
2353
+ } | {
2354
+ type: "none";
2355
+ };
2356
+ exerciseNumber: number;
2357
+ stepNumber: number;
2358
+ problemName: string | null;
2359
+ instructionsCode?: string | undefined;
2360
+ epicVideoEmbeds?: string[] | undefined;
2361
+ }>]>;
2362
+ declare const AppSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
2363
+ name: z.ZodString;
2364
+ title: z.ZodString;
2365
+ dirName: z.ZodString;
2366
+ fullPath: z.ZodString;
2367
+ relativePath: z.ZodString;
2368
+ instructionsCode: z.ZodOptional<z.ZodString>;
2369
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2370
+ test: z.ZodUnion<[z.ZodObject<{
2371
+ type: z.ZodLiteral<"browser">;
2372
+ pathname: z.ZodString;
2373
+ testFiles: z.ZodArray<z.ZodString, "many">;
2374
+ }, "strip", z.ZodTypeAny, {
2375
+ type: "browser";
2376
+ pathname: string;
2377
+ testFiles: string[];
2378
+ }, {
2379
+ type: "browser";
2380
+ pathname: string;
2381
+ testFiles: string[];
2382
+ }>, z.ZodObject<{
2383
+ type: z.ZodLiteral<"script">;
2384
+ script: z.ZodString;
2385
+ }, "strip", z.ZodTypeAny, {
2386
+ type: "script";
2387
+ script: string;
2388
+ }, {
2389
+ type: "script";
2390
+ script: string;
2391
+ }>, z.ZodObject<{
2392
+ type: z.ZodLiteral<"none">;
2393
+ }, "strip", z.ZodTypeAny, {
2394
+ type: "none";
2395
+ }, {
2396
+ type: "none";
2397
+ }>]>;
2398
+ dev: z.ZodUnion<[z.ZodObject<{
2399
+ type: z.ZodLiteral<"browser">;
2400
+ pathname: z.ZodString;
2401
+ }, "strip", z.ZodTypeAny, {
2402
+ type: "browser";
2403
+ pathname: string;
2404
+ }, {
2405
+ type: "browser";
2406
+ pathname: string;
2407
+ }>, z.ZodObject<{
2408
+ type: z.ZodLiteral<"script">;
2409
+ portNumber: z.ZodNumber;
2410
+ }, "strip", z.ZodTypeAny, {
2411
+ type: "script";
2412
+ portNumber: number;
2413
+ }, {
2414
+ type: "script";
2415
+ portNumber: number;
2416
+ }>, z.ZodObject<{
2417
+ type: z.ZodLiteral<"none">;
2418
+ }, "strip", z.ZodTypeAny, {
2419
+ type: "none";
2420
+ }, {
2421
+ type: "none";
2422
+ }>]>;
2423
+ exerciseNumber: z.ZodNumber;
2424
+ stepNumber: z.ZodNumber;
2425
+ type: z.ZodLiteral<"problem">;
2426
+ solutionName: z.ZodNullable<z.ZodString>;
2427
+ }, "strip", z.ZodTypeAny, {
2428
+ type: "problem";
2429
+ name: string;
2430
+ title: string;
2431
+ dirName: string;
2432
+ fullPath: string;
2433
+ relativePath: string;
2434
+ test: {
2435
+ type: "browser";
2436
+ pathname: string;
2437
+ testFiles: string[];
2438
+ } | {
2439
+ type: "script";
2440
+ script: string;
2441
+ } | {
2442
+ type: "none";
2443
+ };
2444
+ dev: {
2445
+ type: "browser";
2446
+ pathname: string;
2447
+ } | {
2448
+ type: "script";
2449
+ portNumber: number;
2450
+ } | {
2451
+ type: "none";
2452
+ };
2453
+ exerciseNumber: number;
2454
+ stepNumber: number;
2455
+ solutionName: string | null;
2456
+ instructionsCode?: string | undefined;
2457
+ epicVideoEmbeds?: string[] | undefined;
2458
+ }, {
2459
+ type: "problem";
2460
+ name: string;
2461
+ title: string;
2462
+ dirName: string;
2463
+ fullPath: string;
2464
+ relativePath: string;
2465
+ test: {
2466
+ type: "browser";
2467
+ pathname: string;
2468
+ testFiles: string[];
2469
+ } | {
2470
+ type: "script";
2471
+ script: string;
2472
+ } | {
2473
+ type: "none";
2474
+ };
2475
+ dev: {
2476
+ type: "browser";
2477
+ pathname: string;
2478
+ } | {
2479
+ type: "script";
2480
+ portNumber: number;
2481
+ } | {
2482
+ type: "none";
2483
+ };
2484
+ exerciseNumber: number;
2485
+ stepNumber: number;
2486
+ solutionName: string | null;
2487
+ instructionsCode?: string | undefined;
2488
+ epicVideoEmbeds?: string[] | undefined;
2489
+ }>, z.ZodObject<{
2490
+ name: z.ZodString;
2491
+ title: z.ZodString;
2492
+ dirName: z.ZodString;
2493
+ fullPath: z.ZodString;
2494
+ relativePath: z.ZodString;
2495
+ instructionsCode: z.ZodOptional<z.ZodString>;
2496
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2497
+ test: z.ZodUnion<[z.ZodObject<{
2498
+ type: z.ZodLiteral<"browser">;
2499
+ pathname: z.ZodString;
2500
+ testFiles: z.ZodArray<z.ZodString, "many">;
2501
+ }, "strip", z.ZodTypeAny, {
2502
+ type: "browser";
2503
+ pathname: string;
2504
+ testFiles: string[];
2505
+ }, {
2506
+ type: "browser";
2507
+ pathname: string;
2508
+ testFiles: string[];
2509
+ }>, z.ZodObject<{
2510
+ type: z.ZodLiteral<"script">;
2511
+ script: z.ZodString;
2512
+ }, "strip", z.ZodTypeAny, {
2513
+ type: "script";
2514
+ script: string;
2515
+ }, {
2516
+ type: "script";
2517
+ script: string;
2518
+ }>, z.ZodObject<{
2519
+ type: z.ZodLiteral<"none">;
2520
+ }, "strip", z.ZodTypeAny, {
2521
+ type: "none";
2522
+ }, {
2523
+ type: "none";
2524
+ }>]>;
2525
+ dev: z.ZodUnion<[z.ZodObject<{
2526
+ type: z.ZodLiteral<"browser">;
2527
+ pathname: z.ZodString;
2528
+ }, "strip", z.ZodTypeAny, {
2529
+ type: "browser";
2530
+ pathname: string;
2531
+ }, {
2532
+ type: "browser";
2533
+ pathname: string;
2534
+ }>, z.ZodObject<{
2535
+ type: z.ZodLiteral<"script">;
2536
+ portNumber: z.ZodNumber;
2537
+ }, "strip", z.ZodTypeAny, {
2538
+ type: "script";
2539
+ portNumber: number;
2540
+ }, {
2541
+ type: "script";
2542
+ portNumber: number;
2543
+ }>, z.ZodObject<{
2544
+ type: z.ZodLiteral<"none">;
2545
+ }, "strip", z.ZodTypeAny, {
2546
+ type: "none";
2547
+ }, {
2548
+ type: "none";
2549
+ }>]>;
2550
+ exerciseNumber: z.ZodNumber;
2551
+ stepNumber: z.ZodNumber;
2552
+ type: z.ZodLiteral<"solution">;
2553
+ problemName: z.ZodNullable<z.ZodString>;
2554
+ }, "strip", z.ZodTypeAny, {
2555
+ type: "solution";
2556
+ name: string;
2557
+ title: string;
2558
+ dirName: string;
2559
+ fullPath: string;
2560
+ relativePath: string;
2561
+ test: {
2562
+ type: "browser";
2563
+ pathname: string;
2564
+ testFiles: string[];
2565
+ } | {
2566
+ type: "script";
2567
+ script: string;
2568
+ } | {
2569
+ type: "none";
2570
+ };
2571
+ dev: {
2572
+ type: "browser";
2573
+ pathname: string;
2574
+ } | {
2575
+ type: "script";
2576
+ portNumber: number;
2577
+ } | {
2578
+ type: "none";
2579
+ };
2580
+ exerciseNumber: number;
2581
+ stepNumber: number;
2582
+ problemName: string | null;
2583
+ instructionsCode?: string | undefined;
2584
+ epicVideoEmbeds?: string[] | undefined;
2585
+ }, {
2586
+ type: "solution";
2587
+ name: string;
2588
+ title: string;
2589
+ dirName: string;
2590
+ fullPath: string;
2591
+ relativePath: string;
2592
+ test: {
2593
+ type: "browser";
2594
+ pathname: string;
2595
+ testFiles: string[];
2596
+ } | {
2597
+ type: "script";
2598
+ script: string;
2599
+ } | {
2600
+ type: "none";
2601
+ };
2602
+ dev: {
2603
+ type: "browser";
2604
+ pathname: string;
2605
+ } | {
2606
+ type: "script";
2607
+ portNumber: number;
2608
+ } | {
2609
+ type: "none";
2610
+ };
2611
+ exerciseNumber: number;
2612
+ stepNumber: number;
2613
+ problemName: string | null;
2614
+ instructionsCode?: string | undefined;
2615
+ epicVideoEmbeds?: string[] | undefined;
2616
+ }>]>, z.ZodObject<{
2617
+ name: z.ZodString;
2618
+ title: z.ZodString;
2619
+ dirName: z.ZodString;
2620
+ fullPath: z.ZodString;
2621
+ relativePath: z.ZodString;
2622
+ instructionsCode: z.ZodOptional<z.ZodString>;
2623
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2624
+ test: z.ZodUnion<[z.ZodObject<{
2625
+ type: z.ZodLiteral<"browser">;
2626
+ pathname: z.ZodString;
2627
+ testFiles: z.ZodArray<z.ZodString, "many">;
2628
+ }, "strip", z.ZodTypeAny, {
2629
+ type: "browser";
2630
+ pathname: string;
2631
+ testFiles: string[];
2632
+ }, {
2633
+ type: "browser";
2634
+ pathname: string;
2635
+ testFiles: string[];
2636
+ }>, z.ZodObject<{
2637
+ type: z.ZodLiteral<"script">;
2638
+ script: z.ZodString;
2639
+ }, "strip", z.ZodTypeAny, {
2640
+ type: "script";
2641
+ script: string;
2642
+ }, {
2643
+ type: "script";
2644
+ script: string;
2645
+ }>, z.ZodObject<{
2646
+ type: z.ZodLiteral<"none">;
2647
+ }, "strip", z.ZodTypeAny, {
2648
+ type: "none";
2649
+ }, {
2650
+ type: "none";
2651
+ }>]>;
2652
+ dev: z.ZodUnion<[z.ZodObject<{
2653
+ type: z.ZodLiteral<"browser">;
2654
+ pathname: z.ZodString;
2655
+ }, "strip", z.ZodTypeAny, {
2656
+ type: "browser";
2657
+ pathname: string;
2658
+ }, {
2659
+ type: "browser";
2660
+ pathname: string;
2661
+ }>, z.ZodObject<{
2662
+ type: z.ZodLiteral<"script">;
2663
+ portNumber: z.ZodNumber;
2664
+ }, "strip", z.ZodTypeAny, {
2665
+ type: "script";
2666
+ portNumber: number;
2667
+ }, {
2668
+ type: "script";
2669
+ portNumber: number;
2670
+ }>, z.ZodObject<{
2671
+ type: z.ZodLiteral<"none">;
2672
+ }, "strip", z.ZodTypeAny, {
2673
+ type: "none";
2674
+ }, {
2675
+ type: "none";
2676
+ }>]>;
2677
+ type: z.ZodLiteral<"playground">;
2678
+ appName: z.ZodString;
2679
+ }, "strip", z.ZodTypeAny, {
2680
+ type: "playground";
2681
+ name: string;
2682
+ title: string;
2683
+ dirName: string;
2684
+ fullPath: string;
2685
+ relativePath: string;
2686
+ test: {
2687
+ type: "browser";
2688
+ pathname: string;
2689
+ testFiles: string[];
2690
+ } | {
2691
+ type: "script";
2692
+ script: string;
2693
+ } | {
2694
+ type: "none";
2695
+ };
2696
+ dev: {
2697
+ type: "browser";
2698
+ pathname: string;
2699
+ } | {
2700
+ type: "script";
2701
+ portNumber: number;
2702
+ } | {
2703
+ type: "none";
2704
+ };
2705
+ appName: string;
2706
+ instructionsCode?: string | undefined;
2707
+ epicVideoEmbeds?: string[] | undefined;
2708
+ }, {
2709
+ type: "playground";
2710
+ name: string;
2711
+ title: string;
2712
+ dirName: string;
2713
+ fullPath: string;
2714
+ relativePath: string;
2715
+ test: {
2716
+ type: "browser";
2717
+ pathname: string;
2718
+ testFiles: string[];
2719
+ } | {
2720
+ type: "script";
2721
+ script: string;
2722
+ } | {
2723
+ type: "none";
2724
+ };
2725
+ dev: {
2726
+ type: "browser";
2727
+ pathname: string;
2728
+ } | {
2729
+ type: "script";
2730
+ portNumber: number;
2731
+ } | {
2732
+ type: "none";
2733
+ };
2734
+ appName: string;
2735
+ instructionsCode?: string | undefined;
2736
+ epicVideoEmbeds?: string[] | undefined;
2737
+ }>, z.ZodObject<{
2738
+ name: z.ZodString;
2739
+ title: z.ZodString;
2740
+ dirName: z.ZodString;
2741
+ fullPath: z.ZodString;
2742
+ relativePath: z.ZodString;
2743
+ instructionsCode: z.ZodOptional<z.ZodString>;
2744
+ epicVideoEmbeds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2745
+ test: z.ZodUnion<[z.ZodObject<{
2746
+ type: z.ZodLiteral<"browser">;
2747
+ pathname: z.ZodString;
2748
+ testFiles: z.ZodArray<z.ZodString, "many">;
2749
+ }, "strip", z.ZodTypeAny, {
2750
+ type: "browser";
2751
+ pathname: string;
2752
+ testFiles: string[];
2753
+ }, {
2754
+ type: "browser";
2755
+ pathname: string;
2756
+ testFiles: string[];
2757
+ }>, z.ZodObject<{
2758
+ type: z.ZodLiteral<"script">;
2759
+ script: z.ZodString;
2760
+ }, "strip", z.ZodTypeAny, {
2761
+ type: "script";
2762
+ script: string;
2763
+ }, {
2764
+ type: "script";
2765
+ script: string;
2766
+ }>, z.ZodObject<{
2767
+ type: z.ZodLiteral<"none">;
2768
+ }, "strip", z.ZodTypeAny, {
2769
+ type: "none";
2770
+ }, {
2771
+ type: "none";
2772
+ }>]>;
2773
+ dev: z.ZodUnion<[z.ZodObject<{
2774
+ type: z.ZodLiteral<"browser">;
2775
+ pathname: z.ZodString;
2776
+ }, "strip", z.ZodTypeAny, {
2777
+ type: "browser";
2778
+ pathname: string;
2779
+ }, {
2780
+ type: "browser";
2781
+ pathname: string;
2782
+ }>, z.ZodObject<{
2783
+ type: z.ZodLiteral<"script">;
2784
+ portNumber: z.ZodNumber;
2785
+ }, "strip", z.ZodTypeAny, {
2786
+ type: "script";
2787
+ portNumber: number;
2788
+ }, {
2789
+ type: "script";
2790
+ portNumber: number;
2791
+ }>, z.ZodObject<{
2792
+ type: z.ZodLiteral<"none">;
2793
+ }, "strip", z.ZodTypeAny, {
2794
+ type: "none";
2795
+ }, {
2796
+ type: "none";
2797
+ }>]>;
2798
+ type: z.ZodLiteral<"example">;
2799
+ }, "strip", z.ZodTypeAny, {
2800
+ type: "example";
2801
+ name: string;
2802
+ title: string;
2803
+ dirName: string;
2804
+ fullPath: string;
2805
+ relativePath: string;
2806
+ test: {
2807
+ type: "browser";
2808
+ pathname: string;
2809
+ testFiles: string[];
2810
+ } | {
2811
+ type: "script";
2812
+ script: string;
2813
+ } | {
2814
+ type: "none";
2815
+ };
2816
+ dev: {
2817
+ type: "browser";
2818
+ pathname: string;
2819
+ } | {
2820
+ type: "script";
2821
+ portNumber: number;
2822
+ } | {
2823
+ type: "none";
2824
+ };
2825
+ instructionsCode?: string | undefined;
2826
+ epicVideoEmbeds?: string[] | undefined;
2827
+ }, {
2828
+ type: "example";
2829
+ name: string;
2830
+ title: string;
2831
+ dirName: string;
2832
+ fullPath: string;
2833
+ relativePath: string;
2834
+ test: {
2835
+ type: "browser";
2836
+ pathname: string;
2837
+ testFiles: string[];
2838
+ } | {
2839
+ type: "script";
2840
+ script: string;
2841
+ } | {
2842
+ type: "none";
2843
+ };
2844
+ dev: {
2845
+ type: "browser";
2846
+ pathname: string;
2847
+ } | {
2848
+ type: "script";
2849
+ portNumber: number;
2850
+ } | {
2851
+ type: "none";
2852
+ };
2853
+ instructionsCode?: string | undefined;
2854
+ epicVideoEmbeds?: string[] | undefined;
2855
+ }>]>;
2856
+ export type BaseExerciseStepApp = z.infer<typeof BaseExerciseStepAppSchema>;
2857
+ export type ProblemApp = z.infer<typeof ProblemAppSchema>;
2858
+ export type SolutionApp = z.infer<typeof SolutionAppSchema>;
2859
+ export type ExampleApp = z.infer<typeof ExampleAppSchema>;
2860
+ export type PlaygroundApp = z.infer<typeof PlaygroundAppSchema>;
2861
+ export type ExerciseStepApp = z.infer<typeof ExerciseStepAppSchema>;
2862
+ export type App = z.infer<typeof AppSchema>;
2863
+ type Exercise = z.infer<typeof ExerciseSchema>;
2864
+ export declare function isApp(app: any): app is App;
2865
+ export declare function isProblemApp(app: any): app is ProblemApp;
2866
+ export declare function isSolutionApp(app: any): app is SolutionApp;
2867
+ export declare function isFirstStepProblemApp(app: App): app is ProblemApp & {
2868
+ stepNumber: 1;
2869
+ };
2870
+ export declare function isFirstStepSolutionApp(app: App): app is SolutionApp & {
2871
+ stepNumber: 1;
2872
+ };
2873
+ export declare function isPlaygroundApp(app: any): app is PlaygroundApp;
2874
+ export declare function isExampleApp(app: any): app is ExampleApp;
2875
+ export declare function isExerciseStepApp(app: any): app is ExerciseStepApp;
2876
+ export declare const modifiedTimes: Map<string, number>;
2877
+ export declare function init(): void;
2878
+ export declare function setModifiedTimesForDir(dir: string): void;
2879
+ export declare function getForceFreshForDir(dir: string, cacheEntry: CacheEntry | null | undefined): true | undefined;
2880
+ export declare function getExercises({ timings, request, }?: CachifiedOptions): Promise<Array<Exercise>>;
2881
+ export declare function getApps({ timings, request, forceFresh, }?: CachifiedOptions & {
2882
+ forceFresh?: boolean;
2883
+ }): Promise<Array<App>>;
2884
+ /**
2885
+ * Handles both full paths and app names
2886
+ *
2887
+ * @example
2888
+ * extractNumbersAndTypeFromAppNameOrPath('02.01.problem') // { exerciseNumber: '02', stepNumber: '01', type: 'problem' }
2889
+ * extractNumbersAndTypeFromAppNameOrPath('/path/to/exercises/02.desc/01.problem.desc') // { exerciseNumber: '02', stepNumber: '01', type: 'problem' }
2890
+ */
2891
+ export declare function extractNumbersAndTypeFromAppNameOrPath(fullPathOrAppName: string): {
2892
+ type: "solution" | "problem";
2893
+ exerciseNumber: string;
2894
+ stepNumber: string;
2895
+ } | null;
2896
+ export declare function getPlaygroundApp({ timings, request, }?: CachifiedOptions): Promise<PlaygroundApp | null>;
2897
+ export declare function getExercise(exerciseNumber: number | string, { request, timings }?: CachifiedOptions): Promise<{
2898
+ title: string;
2899
+ dirName: string;
2900
+ exerciseNumber: number;
2901
+ steps: ({
2902
+ stepNumber: number;
2903
+ solution: {
2904
+ type: "solution";
2905
+ name: string;
2906
+ title: string;
2907
+ dirName: string;
2908
+ fullPath: string;
2909
+ relativePath: string;
2910
+ test: {
2911
+ type: "browser";
2912
+ pathname: string;
2913
+ testFiles: string[];
2914
+ } | {
2915
+ type: "script";
2916
+ script: string;
2917
+ } | {
2918
+ type: "none";
2919
+ };
2920
+ dev: {
2921
+ type: "browser";
2922
+ pathname: string;
2923
+ } | {
2924
+ type: "script";
2925
+ portNumber: number;
2926
+ } | {
2927
+ type: "none";
2928
+ };
2929
+ exerciseNumber: number;
2930
+ stepNumber: number;
2931
+ problemName: string | null;
2932
+ instructionsCode?: string | undefined;
2933
+ epicVideoEmbeds?: string[] | undefined;
2934
+ };
2935
+ problem: {
2936
+ type: "problem";
2937
+ name: string;
2938
+ title: string;
2939
+ dirName: string;
2940
+ fullPath: string;
2941
+ relativePath: string;
2942
+ test: {
2943
+ type: "browser";
2944
+ pathname: string;
2945
+ testFiles: string[];
2946
+ } | {
2947
+ type: "script";
2948
+ script: string;
2949
+ } | {
2950
+ type: "none";
2951
+ };
2952
+ dev: {
2953
+ type: "browser";
2954
+ pathname: string;
2955
+ } | {
2956
+ type: "script";
2957
+ portNumber: number;
2958
+ } | {
2959
+ type: "none";
2960
+ };
2961
+ exerciseNumber: number;
2962
+ stepNumber: number;
2963
+ solutionName: string | null;
2964
+ instructionsCode?: string | undefined;
2965
+ epicVideoEmbeds?: string[] | undefined;
2966
+ };
2967
+ } | {
2968
+ stepNumber: number;
2969
+ problem: {
2970
+ type: "problem";
2971
+ name: string;
2972
+ title: string;
2973
+ dirName: string;
2974
+ fullPath: string;
2975
+ relativePath: string;
2976
+ test: {
2977
+ type: "browser";
2978
+ pathname: string;
2979
+ testFiles: string[];
2980
+ } | {
2981
+ type: "script";
2982
+ script: string;
2983
+ } | {
2984
+ type: "none";
2985
+ };
2986
+ dev: {
2987
+ type: "browser";
2988
+ pathname: string;
2989
+ } | {
2990
+ type: "script";
2991
+ portNumber: number;
2992
+ } | {
2993
+ type: "none";
2994
+ };
2995
+ exerciseNumber: number;
2996
+ stepNumber: number;
2997
+ solutionName: string | null;
2998
+ instructionsCode?: string | undefined;
2999
+ epicVideoEmbeds?: string[] | undefined;
3000
+ };
3001
+ solution?: undefined;
3002
+ } | {
3003
+ stepNumber: number;
3004
+ solution: {
3005
+ type: "solution";
3006
+ name: string;
3007
+ title: string;
3008
+ dirName: string;
3009
+ fullPath: string;
3010
+ relativePath: string;
3011
+ test: {
3012
+ type: "browser";
3013
+ pathname: string;
3014
+ testFiles: string[];
3015
+ } | {
3016
+ type: "script";
3017
+ script: string;
3018
+ } | {
3019
+ type: "none";
3020
+ };
3021
+ dev: {
3022
+ type: "browser";
3023
+ pathname: string;
3024
+ } | {
3025
+ type: "script";
3026
+ portNumber: number;
3027
+ } | {
3028
+ type: "none";
3029
+ };
3030
+ exerciseNumber: number;
3031
+ stepNumber: number;
3032
+ problemName: string | null;
3033
+ instructionsCode?: string | undefined;
3034
+ epicVideoEmbeds?: string[] | undefined;
3035
+ };
3036
+ problem?: undefined;
3037
+ })[];
3038
+ problems: {
3039
+ type: "problem";
3040
+ name: string;
3041
+ title: string;
3042
+ dirName: string;
3043
+ fullPath: string;
3044
+ relativePath: string;
3045
+ test: {
3046
+ type: "browser";
3047
+ pathname: string;
3048
+ testFiles: string[];
3049
+ } | {
3050
+ type: "script";
3051
+ script: string;
3052
+ } | {
3053
+ type: "none";
3054
+ };
3055
+ dev: {
3056
+ type: "browser";
3057
+ pathname: string;
3058
+ } | {
3059
+ type: "script";
3060
+ portNumber: number;
3061
+ } | {
3062
+ type: "none";
3063
+ };
3064
+ exerciseNumber: number;
3065
+ stepNumber: number;
3066
+ solutionName: string | null;
3067
+ instructionsCode?: string | undefined;
3068
+ epicVideoEmbeds?: string[] | undefined;
3069
+ }[];
3070
+ solutions: {
3071
+ type: "solution";
3072
+ name: string;
3073
+ title: string;
3074
+ dirName: string;
3075
+ fullPath: string;
3076
+ relativePath: string;
3077
+ test: {
3078
+ type: "browser";
3079
+ pathname: string;
3080
+ testFiles: string[];
3081
+ } | {
3082
+ type: "script";
3083
+ script: string;
3084
+ } | {
3085
+ type: "none";
3086
+ };
3087
+ dev: {
3088
+ type: "browser";
3089
+ pathname: string;
3090
+ } | {
3091
+ type: "script";
3092
+ portNumber: number;
3093
+ } | {
3094
+ type: "none";
3095
+ };
3096
+ exerciseNumber: number;
3097
+ stepNumber: number;
3098
+ problemName: string | null;
3099
+ instructionsCode?: string | undefined;
3100
+ epicVideoEmbeds?: string[] | undefined;
3101
+ }[];
3102
+ instructionsCode?: string | undefined;
3103
+ finishedCode?: string | undefined;
3104
+ instructionsEpicVideoEmbeds?: string[] | undefined;
3105
+ finishedEpicVideoEmbeds?: string[] | undefined;
3106
+ } | undefined>;
3107
+ export declare function requireExercise(exerciseNumber: number | string, { request, timings }?: CachifiedOptions): Promise<{
3108
+ title: string;
3109
+ dirName: string;
3110
+ exerciseNumber: number;
3111
+ steps: ({
3112
+ stepNumber: number;
3113
+ solution: {
3114
+ type: "solution";
3115
+ name: string;
3116
+ title: string;
3117
+ dirName: string;
3118
+ fullPath: string;
3119
+ relativePath: string;
3120
+ test: {
3121
+ type: "browser";
3122
+ pathname: string;
3123
+ testFiles: string[];
3124
+ } | {
3125
+ type: "script";
3126
+ script: string;
3127
+ } | {
3128
+ type: "none";
3129
+ };
3130
+ dev: {
3131
+ type: "browser";
3132
+ pathname: string;
3133
+ } | {
3134
+ type: "script";
3135
+ portNumber: number;
3136
+ } | {
3137
+ type: "none";
3138
+ };
3139
+ exerciseNumber: number;
3140
+ stepNumber: number;
3141
+ problemName: string | null;
3142
+ instructionsCode?: string | undefined;
3143
+ epicVideoEmbeds?: string[] | undefined;
3144
+ };
3145
+ problem: {
3146
+ type: "problem";
3147
+ name: string;
3148
+ title: string;
3149
+ dirName: string;
3150
+ fullPath: string;
3151
+ relativePath: string;
3152
+ test: {
3153
+ type: "browser";
3154
+ pathname: string;
3155
+ testFiles: string[];
3156
+ } | {
3157
+ type: "script";
3158
+ script: string;
3159
+ } | {
3160
+ type: "none";
3161
+ };
3162
+ dev: {
3163
+ type: "browser";
3164
+ pathname: string;
3165
+ } | {
3166
+ type: "script";
3167
+ portNumber: number;
3168
+ } | {
3169
+ type: "none";
3170
+ };
3171
+ exerciseNumber: number;
3172
+ stepNumber: number;
3173
+ solutionName: string | null;
3174
+ instructionsCode?: string | undefined;
3175
+ epicVideoEmbeds?: string[] | undefined;
3176
+ };
3177
+ } | {
3178
+ stepNumber: number;
3179
+ problem: {
3180
+ type: "problem";
3181
+ name: string;
3182
+ title: string;
3183
+ dirName: string;
3184
+ fullPath: string;
3185
+ relativePath: string;
3186
+ test: {
3187
+ type: "browser";
3188
+ pathname: string;
3189
+ testFiles: string[];
3190
+ } | {
3191
+ type: "script";
3192
+ script: string;
3193
+ } | {
3194
+ type: "none";
3195
+ };
3196
+ dev: {
3197
+ type: "browser";
3198
+ pathname: string;
3199
+ } | {
3200
+ type: "script";
3201
+ portNumber: number;
3202
+ } | {
3203
+ type: "none";
3204
+ };
3205
+ exerciseNumber: number;
3206
+ stepNumber: number;
3207
+ solutionName: string | null;
3208
+ instructionsCode?: string | undefined;
3209
+ epicVideoEmbeds?: string[] | undefined;
3210
+ };
3211
+ solution?: undefined;
3212
+ } | {
3213
+ stepNumber: number;
3214
+ solution: {
3215
+ type: "solution";
3216
+ name: string;
3217
+ title: string;
3218
+ dirName: string;
3219
+ fullPath: string;
3220
+ relativePath: string;
3221
+ test: {
3222
+ type: "browser";
3223
+ pathname: string;
3224
+ testFiles: string[];
3225
+ } | {
3226
+ type: "script";
3227
+ script: string;
3228
+ } | {
3229
+ type: "none";
3230
+ };
3231
+ dev: {
3232
+ type: "browser";
3233
+ pathname: string;
3234
+ } | {
3235
+ type: "script";
3236
+ portNumber: number;
3237
+ } | {
3238
+ type: "none";
3239
+ };
3240
+ exerciseNumber: number;
3241
+ stepNumber: number;
3242
+ problemName: string | null;
3243
+ instructionsCode?: string | undefined;
3244
+ epicVideoEmbeds?: string[] | undefined;
3245
+ };
3246
+ problem?: undefined;
3247
+ })[];
3248
+ problems: {
3249
+ type: "problem";
3250
+ name: string;
3251
+ title: string;
3252
+ dirName: string;
3253
+ fullPath: string;
3254
+ relativePath: string;
3255
+ test: {
3256
+ type: "browser";
3257
+ pathname: string;
3258
+ testFiles: string[];
3259
+ } | {
3260
+ type: "script";
3261
+ script: string;
3262
+ } | {
3263
+ type: "none";
3264
+ };
3265
+ dev: {
3266
+ type: "browser";
3267
+ pathname: string;
3268
+ } | {
3269
+ type: "script";
3270
+ portNumber: number;
3271
+ } | {
3272
+ type: "none";
3273
+ };
3274
+ exerciseNumber: number;
3275
+ stepNumber: number;
3276
+ solutionName: string | null;
3277
+ instructionsCode?: string | undefined;
3278
+ epicVideoEmbeds?: string[] | undefined;
3279
+ }[];
3280
+ solutions: {
3281
+ type: "solution";
3282
+ name: string;
3283
+ title: string;
3284
+ dirName: string;
3285
+ fullPath: string;
3286
+ relativePath: string;
3287
+ test: {
3288
+ type: "browser";
3289
+ pathname: string;
3290
+ testFiles: string[];
3291
+ } | {
3292
+ type: "script";
3293
+ script: string;
3294
+ } | {
3295
+ type: "none";
3296
+ };
3297
+ dev: {
3298
+ type: "browser";
3299
+ pathname: string;
3300
+ } | {
3301
+ type: "script";
3302
+ portNumber: number;
3303
+ } | {
3304
+ type: "none";
3305
+ };
3306
+ exerciseNumber: number;
3307
+ stepNumber: number;
3308
+ problemName: string | null;
3309
+ instructionsCode?: string | undefined;
3310
+ epicVideoEmbeds?: string[] | undefined;
3311
+ }[];
3312
+ instructionsCode?: string | undefined;
3313
+ finishedCode?: string | undefined;
3314
+ instructionsEpicVideoEmbeds?: string[] | undefined;
3315
+ finishedEpicVideoEmbeds?: string[] | undefined;
3316
+ }>;
3317
+ export declare function requireExerciseApp(params: Parameters<typeof getExerciseApp>[0], { request, timings }?: CachifiedOptions): Promise<{
3318
+ type: "solution";
3319
+ name: string;
3320
+ title: string;
3321
+ dirName: string;
3322
+ fullPath: string;
3323
+ relativePath: string;
3324
+ test: {
3325
+ type: "browser";
3326
+ pathname: string;
3327
+ testFiles: string[];
3328
+ } | {
3329
+ type: "script";
3330
+ script: string;
3331
+ } | {
3332
+ type: "none";
3333
+ };
3334
+ dev: {
3335
+ type: "browser";
3336
+ pathname: string;
3337
+ } | {
3338
+ type: "script";
3339
+ portNumber: number;
3340
+ } | {
3341
+ type: "none";
3342
+ };
3343
+ exerciseNumber: number;
3344
+ stepNumber: number;
3345
+ problemName: string | null;
3346
+ instructionsCode?: string | undefined;
3347
+ epicVideoEmbeds?: string[] | undefined;
3348
+ } | {
3349
+ type: "problem";
3350
+ name: string;
3351
+ title: string;
3352
+ dirName: string;
3353
+ fullPath: string;
3354
+ relativePath: string;
3355
+ test: {
3356
+ type: "browser";
3357
+ pathname: string;
3358
+ testFiles: string[];
3359
+ } | {
3360
+ type: "script";
3361
+ script: string;
3362
+ } | {
3363
+ type: "none";
3364
+ };
3365
+ dev: {
3366
+ type: "browser";
3367
+ pathname: string;
3368
+ } | {
3369
+ type: "script";
3370
+ portNumber: number;
3371
+ } | {
3372
+ type: "none";
3373
+ };
3374
+ exerciseNumber: number;
3375
+ stepNumber: number;
3376
+ solutionName: string | null;
3377
+ instructionsCode?: string | undefined;
3378
+ epicVideoEmbeds?: string[] | undefined;
3379
+ }>;
3380
+ export declare function getExerciseApp(params: {
3381
+ type?: string;
3382
+ exerciseNumber?: string;
3383
+ stepNumber?: string;
3384
+ }, { request, timings }?: CachifiedOptions): Promise<{
3385
+ type: "solution";
3386
+ name: string;
3387
+ title: string;
3388
+ dirName: string;
3389
+ fullPath: string;
3390
+ relativePath: string;
3391
+ test: {
3392
+ type: "browser";
3393
+ pathname: string;
3394
+ testFiles: string[];
3395
+ } | {
3396
+ type: "script";
3397
+ script: string;
3398
+ } | {
3399
+ type: "none";
3400
+ };
3401
+ dev: {
3402
+ type: "browser";
3403
+ pathname: string;
3404
+ } | {
3405
+ type: "script";
3406
+ portNumber: number;
3407
+ } | {
3408
+ type: "none";
3409
+ };
3410
+ exerciseNumber: number;
3411
+ stepNumber: number;
3412
+ problemName: string | null;
3413
+ instructionsCode?: string | undefined;
3414
+ epicVideoEmbeds?: string[] | undefined;
3415
+ } | {
3416
+ type: "problem";
3417
+ name: string;
3418
+ title: string;
3419
+ dirName: string;
3420
+ fullPath: string;
3421
+ relativePath: string;
3422
+ test: {
3423
+ type: "browser";
3424
+ pathname: string;
3425
+ testFiles: string[];
3426
+ } | {
3427
+ type: "script";
3428
+ script: string;
3429
+ } | {
3430
+ type: "none";
3431
+ };
3432
+ dev: {
3433
+ type: "browser";
3434
+ pathname: string;
3435
+ } | {
3436
+ type: "script";
3437
+ portNumber: number;
3438
+ } | {
3439
+ type: "none";
3440
+ };
3441
+ exerciseNumber: number;
3442
+ stepNumber: number;
3443
+ solutionName: string | null;
3444
+ instructionsCode?: string | undefined;
3445
+ epicVideoEmbeds?: string[] | undefined;
3446
+ } | null>;
3447
+ export declare function getAppByName(name: string, { request, timings }?: CachifiedOptions): Promise<{
3448
+ type: "solution";
3449
+ name: string;
3450
+ title: string;
3451
+ dirName: string;
3452
+ fullPath: string;
3453
+ relativePath: string;
3454
+ test: {
3455
+ type: "browser";
3456
+ pathname: string;
3457
+ testFiles: string[];
3458
+ } | {
3459
+ type: "script";
3460
+ script: string;
3461
+ } | {
3462
+ type: "none";
3463
+ };
3464
+ dev: {
3465
+ type: "browser";
3466
+ pathname: string;
3467
+ } | {
3468
+ type: "script";
3469
+ portNumber: number;
3470
+ } | {
3471
+ type: "none";
3472
+ };
3473
+ exerciseNumber: number;
3474
+ stepNumber: number;
3475
+ problemName: string | null;
3476
+ instructionsCode?: string | undefined;
3477
+ epicVideoEmbeds?: string[] | undefined;
3478
+ } | {
3479
+ type: "problem";
3480
+ name: string;
3481
+ title: string;
3482
+ dirName: string;
3483
+ fullPath: string;
3484
+ relativePath: string;
3485
+ test: {
3486
+ type: "browser";
3487
+ pathname: string;
3488
+ testFiles: string[];
3489
+ } | {
3490
+ type: "script";
3491
+ script: string;
3492
+ } | {
3493
+ type: "none";
3494
+ };
3495
+ dev: {
3496
+ type: "browser";
3497
+ pathname: string;
3498
+ } | {
3499
+ type: "script";
3500
+ portNumber: number;
3501
+ } | {
3502
+ type: "none";
3503
+ };
3504
+ exerciseNumber: number;
3505
+ stepNumber: number;
3506
+ solutionName: string | null;
3507
+ instructionsCode?: string | undefined;
3508
+ epicVideoEmbeds?: string[] | undefined;
3509
+ } | {
3510
+ type: "example";
3511
+ name: string;
3512
+ title: string;
3513
+ dirName: string;
3514
+ fullPath: string;
3515
+ relativePath: string;
3516
+ test: {
3517
+ type: "browser";
3518
+ pathname: string;
3519
+ testFiles: string[];
3520
+ } | {
3521
+ type: "script";
3522
+ script: string;
3523
+ } | {
3524
+ type: "none";
3525
+ };
3526
+ dev: {
3527
+ type: "browser";
3528
+ pathname: string;
3529
+ } | {
3530
+ type: "script";
3531
+ portNumber: number;
3532
+ } | {
3533
+ type: "none";
3534
+ };
3535
+ instructionsCode?: string | undefined;
3536
+ epicVideoEmbeds?: string[] | undefined;
3537
+ } | {
3538
+ type: "playground";
3539
+ name: string;
3540
+ title: string;
3541
+ dirName: string;
3542
+ fullPath: string;
3543
+ relativePath: string;
3544
+ test: {
3545
+ type: "browser";
3546
+ pathname: string;
3547
+ testFiles: string[];
3548
+ } | {
3549
+ type: "script";
3550
+ script: string;
3551
+ } | {
3552
+ type: "none";
3553
+ };
3554
+ dev: {
3555
+ type: "browser";
3556
+ pathname: string;
3557
+ } | {
3558
+ type: "script";
3559
+ portNumber: number;
3560
+ } | {
3561
+ type: "none";
3562
+ };
3563
+ appName: string;
3564
+ instructionsCode?: string | undefined;
3565
+ epicVideoEmbeds?: string[] | undefined;
3566
+ } | undefined>;
3567
+ export declare function getNextExerciseApp(app: ExerciseStepApp, { request, timings }?: CachifiedOptions): Promise<{
3568
+ type: "solution";
3569
+ name: string;
3570
+ title: string;
3571
+ dirName: string;
3572
+ fullPath: string;
3573
+ relativePath: string;
3574
+ test: {
3575
+ type: "browser";
3576
+ pathname: string;
3577
+ testFiles: string[];
3578
+ } | {
3579
+ type: "script";
3580
+ script: string;
3581
+ } | {
3582
+ type: "none";
3583
+ };
3584
+ dev: {
3585
+ type: "browser";
3586
+ pathname: string;
3587
+ } | {
3588
+ type: "script";
3589
+ portNumber: number;
3590
+ } | {
3591
+ type: "none";
3592
+ };
3593
+ exerciseNumber: number;
3594
+ stepNumber: number;
3595
+ problemName: string | null;
3596
+ instructionsCode?: string | undefined;
3597
+ epicVideoEmbeds?: string[] | undefined;
3598
+ } | {
3599
+ type: "problem";
3600
+ name: string;
3601
+ title: string;
3602
+ dirName: string;
3603
+ fullPath: string;
3604
+ relativePath: string;
3605
+ test: {
3606
+ type: "browser";
3607
+ pathname: string;
3608
+ testFiles: string[];
3609
+ } | {
3610
+ type: "script";
3611
+ script: string;
3612
+ } | {
3613
+ type: "none";
3614
+ };
3615
+ dev: {
3616
+ type: "browser";
3617
+ pathname: string;
3618
+ } | {
3619
+ type: "script";
3620
+ portNumber: number;
3621
+ } | {
3622
+ type: "none";
3623
+ };
3624
+ exerciseNumber: number;
3625
+ stepNumber: number;
3626
+ solutionName: string | null;
3627
+ instructionsCode?: string | undefined;
3628
+ epicVideoEmbeds?: string[] | undefined;
3629
+ } | null>;
3630
+ export declare function getPrevExerciseApp(app: ExerciseStepApp, { request, timings }?: CachifiedOptions): Promise<{
3631
+ type: "solution";
3632
+ name: string;
3633
+ title: string;
3634
+ dirName: string;
3635
+ fullPath: string;
3636
+ relativePath: string;
3637
+ test: {
3638
+ type: "browser";
3639
+ pathname: string;
3640
+ testFiles: string[];
3641
+ } | {
3642
+ type: "script";
3643
+ script: string;
3644
+ } | {
3645
+ type: "none";
3646
+ };
3647
+ dev: {
3648
+ type: "browser";
3649
+ pathname: string;
3650
+ } | {
3651
+ type: "script";
3652
+ portNumber: number;
3653
+ } | {
3654
+ type: "none";
3655
+ };
3656
+ exerciseNumber: number;
3657
+ stepNumber: number;
3658
+ problemName: string | null;
3659
+ instructionsCode?: string | undefined;
3660
+ epicVideoEmbeds?: string[] | undefined;
3661
+ } | {
3662
+ type: "problem";
3663
+ name: string;
3664
+ title: string;
3665
+ dirName: string;
3666
+ fullPath: string;
3667
+ relativePath: string;
3668
+ test: {
3669
+ type: "browser";
3670
+ pathname: string;
3671
+ testFiles: string[];
3672
+ } | {
3673
+ type: "script";
3674
+ script: string;
3675
+ } | {
3676
+ type: "none";
3677
+ };
3678
+ dev: {
3679
+ type: "browser";
3680
+ pathname: string;
3681
+ } | {
3682
+ type: "script";
3683
+ portNumber: number;
3684
+ } | {
3685
+ type: "none";
3686
+ };
3687
+ exerciseNumber: number;
3688
+ stepNumber: number;
3689
+ solutionName: string | null;
3690
+ instructionsCode?: string | undefined;
3691
+ epicVideoEmbeds?: string[] | undefined;
3692
+ } | null>;
3693
+ export declare function getAppPageRoute(app: ExerciseStepApp): string;
3694
+ /**
3695
+ * Given a file path, this will find the app that file path belongs to.
3696
+ */
3697
+ export declare function getAppFromFile(filePath: string): Promise<{
3698
+ type: "solution";
3699
+ name: string;
3700
+ title: string;
3701
+ dirName: string;
3702
+ fullPath: string;
3703
+ relativePath: string;
3704
+ test: {
3705
+ type: "browser";
3706
+ pathname: string;
3707
+ testFiles: string[];
3708
+ } | {
3709
+ type: "script";
3710
+ script: string;
3711
+ } | {
3712
+ type: "none";
3713
+ };
3714
+ dev: {
3715
+ type: "browser";
3716
+ pathname: string;
3717
+ } | {
3718
+ type: "script";
3719
+ portNumber: number;
3720
+ } | {
3721
+ type: "none";
3722
+ };
3723
+ exerciseNumber: number;
3724
+ stepNumber: number;
3725
+ problemName: string | null;
3726
+ instructionsCode?: string | undefined;
3727
+ epicVideoEmbeds?: string[] | undefined;
3728
+ } | {
3729
+ type: "problem";
3730
+ name: string;
3731
+ title: string;
3732
+ dirName: string;
3733
+ fullPath: string;
3734
+ relativePath: string;
3735
+ test: {
3736
+ type: "browser";
3737
+ pathname: string;
3738
+ testFiles: string[];
3739
+ } | {
3740
+ type: "script";
3741
+ script: string;
3742
+ } | {
3743
+ type: "none";
3744
+ };
3745
+ dev: {
3746
+ type: "browser";
3747
+ pathname: string;
3748
+ } | {
3749
+ type: "script";
3750
+ portNumber: number;
3751
+ } | {
3752
+ type: "none";
3753
+ };
3754
+ exerciseNumber: number;
3755
+ stepNumber: number;
3756
+ solutionName: string | null;
3757
+ instructionsCode?: string | undefined;
3758
+ epicVideoEmbeds?: string[] | undefined;
3759
+ } | {
3760
+ type: "example";
3761
+ name: string;
3762
+ title: string;
3763
+ dirName: string;
3764
+ fullPath: string;
3765
+ relativePath: string;
3766
+ test: {
3767
+ type: "browser";
3768
+ pathname: string;
3769
+ testFiles: string[];
3770
+ } | {
3771
+ type: "script";
3772
+ script: string;
3773
+ } | {
3774
+ type: "none";
3775
+ };
3776
+ dev: {
3777
+ type: "browser";
3778
+ pathname: string;
3779
+ } | {
3780
+ type: "script";
3781
+ portNumber: number;
3782
+ } | {
3783
+ type: "none";
3784
+ };
3785
+ instructionsCode?: string | undefined;
3786
+ epicVideoEmbeds?: string[] | undefined;
3787
+ } | {
3788
+ type: "playground";
3789
+ name: string;
3790
+ title: string;
3791
+ dirName: string;
3792
+ fullPath: string;
3793
+ relativePath: string;
3794
+ test: {
3795
+ type: "browser";
3796
+ pathname: string;
3797
+ testFiles: string[];
3798
+ } | {
3799
+ type: "script";
3800
+ script: string;
3801
+ } | {
3802
+ type: "none";
3803
+ };
3804
+ dev: {
3805
+ type: "browser";
3806
+ pathname: string;
3807
+ } | {
3808
+ type: "script";
3809
+ portNumber: number;
3810
+ } | {
3811
+ type: "none";
3812
+ };
3813
+ appName: string;
3814
+ instructionsCode?: string | undefined;
3815
+ epicVideoEmbeds?: string[] | undefined;
3816
+ } | undefined>;
3817
+ export declare function setPlayground(srcDir: string, { reset }?: {
3818
+ reset?: boolean;
3819
+ }): Promise<void>;
3820
+ /**
3821
+ * The playground is based on another app. This returns the app the playground
3822
+ * is based on.
3823
+ */
3824
+ export declare function getPlaygroundAppName(): Promise<string | null>;
3825
+ export declare function getAppDisplayName(a: App, allApps: Array<App>): string;
3826
+ export declare function getWorkshopTitle(): Promise<string>;
3827
+ export declare function getEpicWorkshopSlug(): Promise<string | null>;
3828
+ export declare function getWorkshopRoot(): string;
3829
+ export declare function getWorkshopInstructions({ request, }?: {
3830
+ request?: Request;
3831
+ }): Promise<{
3832
+ readonly compiled: {
3833
+ readonly status: "success";
3834
+ readonly code: string;
3835
+ readonly title: string | null;
3836
+ readonly epicVideoEmbeds: string[];
3837
+ } | {
3838
+ readonly status: "error";
3839
+ readonly error: string;
3840
+ };
3841
+ readonly file: string;
3842
+ readonly relativePath: "exercises";
3843
+ }>;
3844
+ export declare function getWorkshopFinished({ request, }?: {
3845
+ request?: Request;
3846
+ }): Promise<{
3847
+ readonly compiled: {
3848
+ readonly status: "success";
3849
+ readonly code: string;
3850
+ readonly title: string | null;
3851
+ readonly epicVideoEmbeds: string[];
3852
+ } | {
3853
+ readonly status: "error";
3854
+ readonly error: string;
3855
+ };
3856
+ readonly file: string;
3857
+ readonly relativePath: "exercises/finished.mdx";
3858
+ }>;
3859
+ export declare function getRelativePath(filePath: string): string;
3860
+ export {};
3861
+ //# sourceMappingURL=apps.server.d.ts.map