@tmdjr/coding-labs-contracts 0.0.1 → 0.0.3

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 (34) hide show
  1. package/dist/coding-labs.types.d.ts +279 -101
  2. package/dist/index.d.ts +13 -5
  3. package/dist/models/ComparatorDto.d.ts +7 -0
  4. package/dist/models/CreateDraftVersionDto.d.ts +15 -0
  5. package/dist/models/CreateEmbedDto.d.ts +9 -0
  6. package/dist/models/CreateLabDto.d.ts +13 -0
  7. package/dist/models/HandsOnLabEmbedMongo.d.ts +1 -0
  8. package/dist/models/HandsOnLabMongo.d.ts +1 -0
  9. package/dist/models/HandsOnLabMongo.js +1 -0
  10. package/dist/models/HandsOnLabVersionMongo.d.ts +1 -0
  11. package/dist/models/HandsOnLabVersionMongo.js +1 -0
  12. package/dist/models/LabRunnerConfigDto.d.ts +6 -0
  13. package/dist/models/LabRunnerConfigDto.js +1 -0
  14. package/dist/models/LabTestCaseDto.d.ts +11 -0
  15. package/dist/models/LabTestCaseDto.js +1 -0
  16. package/dist/models/PublishVersionDto.d.ts +4 -0
  17. package/dist/models/PublishVersionDto.js +1 -0
  18. package/dist/models/ReferenceSolutionDto.d.ts +4 -0
  19. package/dist/models/ReferenceSolutionDto.js +1 -0
  20. package/dist/models/UpdateDraftVersionDto.d.ts +15 -0
  21. package/dist/models/UpdateDraftVersionDto.js +1 -0
  22. package/dist/models/UpdateLabDto.d.ts +13 -0
  23. package/dist/models/UpdateLabDto.js +1 -0
  24. package/package.json +1 -1
  25. package/dist/models/AuthTestDto.d.ts +0 -3
  26. package/dist/models/CreateExampleMongodbDocDto.d.ts +0 -9
  27. package/dist/models/ExampleMongodbDocDto.d.ts +0 -12
  28. package/dist/models/ExampleMongodbDocObjectDto.d.ts +0 -6
  29. package/dist/models/UpdateExampleMongodbDocDto.d.ts +0 -9
  30. /package/dist/models/{AuthTestDto.js → ComparatorDto.js} +0 -0
  31. /package/dist/models/{CreateExampleMongodbDocDto.js → CreateDraftVersionDto.js} +0 -0
  32. /package/dist/models/{ExampleMongodbDocDto.js → CreateEmbedDto.js} +0 -0
  33. /package/dist/models/{ExampleMongodbDocObjectDto.js → CreateLabDto.js} +0 -0
  34. /package/dist/models/{UpdateExampleMongodbDocDto.js → HandsOnLabEmbedMongo.js} +0 -0
@@ -3,103 +3,119 @@
3
3
  * Do not make direct changes to the file.
4
4
  */
5
5
  export interface paths {
6
- "/example-crud/ping": {
6
+ "/labs": {
7
7
  parameters: {
8
8
  query?: never;
9
9
  header?: never;
10
10
  path?: never;
11
11
  cookie?: never;
12
12
  };
13
- get: operations["ExampleCrudController_health"];
13
+ get: operations["LabsController_findAll"];
14
14
  put?: never;
15
- post?: never;
15
+ post: operations["LabsController_create"];
16
16
  delete?: never;
17
17
  options?: never;
18
18
  head?: never;
19
19
  patch?: never;
20
20
  trace?: never;
21
21
  };
22
- "/example-crud/auth-test": {
22
+ "/labs/{labId}": {
23
23
  parameters: {
24
24
  query?: never;
25
25
  header?: never;
26
26
  path?: never;
27
27
  cookie?: never;
28
28
  };
29
- get: operations["ExampleCrudController_authTest"];
29
+ get: operations["LabsController_findOne"];
30
30
  put?: never;
31
31
  post?: never;
32
+ delete: operations["LabsController_remove"];
33
+ options?: never;
34
+ head?: never;
35
+ patch: operations["LabsController_update"];
36
+ trace?: never;
37
+ };
38
+ "/labs/{labId}/versions/draft": {
39
+ parameters: {
40
+ query?: never;
41
+ header?: never;
42
+ path?: never;
43
+ cookie?: never;
44
+ };
45
+ get?: never;
46
+ put?: never;
47
+ post: operations["LabVersionsController_createDraft"];
32
48
  delete?: never;
33
49
  options?: never;
34
50
  head?: never;
35
51
  patch?: never;
36
52
  trace?: never;
37
53
  };
38
- "/example-crud": {
54
+ "/labs/{labId}/versions": {
39
55
  parameters: {
40
56
  query?: never;
41
57
  header?: never;
42
58
  path?: never;
43
59
  cookie?: never;
44
60
  };
45
- get: operations["ExampleCrudController_findAll"];
61
+ get: operations["LabVersionsController_findAll"];
46
62
  put?: never;
47
- post: operations["ExampleCrudController_create"];
63
+ post?: never;
48
64
  delete?: never;
49
65
  options?: never;
50
66
  head?: never;
51
67
  patch?: never;
52
68
  trace?: never;
53
69
  };
54
- "/example-crud/{id}": {
70
+ "/labs/{labId}/versions/{versionId}": {
55
71
  parameters: {
56
72
  query?: never;
57
73
  header?: never;
58
74
  path?: never;
59
75
  cookie?: never;
60
76
  };
61
- get: operations["ExampleCrudController_findOne"];
77
+ get: operations["LabVersionsController_findOne"];
62
78
  put?: never;
63
79
  post?: never;
64
- delete: operations["ExampleCrudController_remove"];
80
+ delete?: never;
65
81
  options?: never;
66
82
  head?: never;
67
- patch: operations["ExampleCrudController_update"];
83
+ patch: operations["LabVersionsController_patchDraft"];
68
84
  trace?: never;
69
85
  };
70
- "/example-crud/name/{name}": {
86
+ "/labs/{labId}/versions/{versionId}/publish": {
71
87
  parameters: {
72
88
  query?: never;
73
89
  header?: never;
74
90
  path?: never;
75
91
  cookie?: never;
76
92
  };
77
- get: operations["ExampleCrudController_findByName"];
93
+ get?: never;
78
94
  put?: never;
79
- post?: never;
95
+ post: operations["LabVersionsController_publish"];
80
96
  delete?: never;
81
97
  options?: never;
82
98
  head?: never;
83
99
  patch?: never;
84
100
  trace?: never;
85
101
  };
86
- "/example-crud/{id}/archive": {
102
+ "/embeds": {
87
103
  parameters: {
88
104
  query?: never;
89
105
  header?: never;
90
106
  path?: never;
91
107
  cookie?: never;
92
108
  };
93
- get?: never;
109
+ get: operations["LabEmbedsController_findAll"];
94
110
  put?: never;
95
- post?: never;
111
+ post: operations["LabEmbedsController_create"];
96
112
  delete?: never;
97
113
  options?: never;
98
114
  head?: never;
99
- patch: operations["ExampleCrudController_archive"];
115
+ patch?: never;
100
116
  trace?: never;
101
117
  };
102
- "/example-crud/{id}/unarchive": {
118
+ "/embeds/{embedId}": {
103
119
  parameters: {
104
120
  query?: never;
105
121
  header?: never;
@@ -109,58 +125,130 @@ export interface paths {
109
125
  get?: never;
110
126
  put?: never;
111
127
  post?: never;
112
- delete?: never;
128
+ delete: operations["LabEmbedsController_remove"];
113
129
  options?: never;
114
130
  head?: never;
115
- patch: operations["ExampleCrudController_unarchive"];
131
+ patch?: never;
116
132
  trace?: never;
117
133
  };
118
134
  }
119
135
  export type webhooks = Record<string, never>;
120
136
  export interface components {
121
137
  schemas: {
122
- AuthTestDto: {
123
- message: string;
124
- };
125
- ExampleMongodbDocObjectDto: {
126
- street: string;
127
- city: string;
128
- state: string;
129
- zip: string;
130
- };
131
- CreateExampleMongodbDocDto: {
132
- name: string;
138
+ CreateLabDto: {
139
+ workshopId: string;
140
+ workshopDocumentGroupId?: string;
141
+ slug: string;
142
+ title: string;
143
+ summary?: string;
144
+ /** @default [] */
145
+ tags: string[];
146
+ /** @enum {string} */
147
+ difficulty?: "intro" | "easy" | "medium" | "hard";
148
+ estimatedMinutes?: number;
149
+ /**
150
+ * @default draft
151
+ * @enum {string}
152
+ */
153
+ status: "draft" | "published" | "archived";
154
+ createdBy: string;
155
+ updatedBy?: string;
156
+ };
157
+ HandsOnLabMongo: Record<string, never>;
158
+ UpdateLabDto: {
159
+ workshopId?: string;
160
+ workshopDocumentGroupId?: string;
161
+ slug?: string;
162
+ title?: string;
163
+ summary?: string;
164
+ /** @default [] */
165
+ tags: string[];
133
166
  /** @enum {string} */
134
- type: "SOME_ENUM" | "SOME_OTHER_ENUM";
135
- description?: string;
136
- archived?: boolean;
137
- exampleMongodbDocObject?: components["schemas"]["ExampleMongodbDocObjectDto"];
138
- /** Format: date-time */
139
- lastUpdated?: string;
140
- };
141
- ExampleMongodbDocDto: {
142
- _id: string;
167
+ difficulty?: "intro" | "easy" | "medium" | "hard";
168
+ estimatedMinutes?: number;
169
+ /**
170
+ * @default draft
171
+ * @enum {string}
172
+ */
173
+ status: "draft" | "published" | "archived";
174
+ createdBy?: string;
175
+ updatedBy?: string;
176
+ };
177
+ ReferenceSolutionDto: {
178
+ code: string;
179
+ notesMarkdown?: string;
180
+ };
181
+ ComparatorDto: {
182
+ /** @enum {string} */
183
+ kind: "deepEqual" | "strictEqual" | "numberTolerance" | "stringNormalized" | "custom";
184
+ tolerance?: number;
185
+ normalizeWhitespace?: boolean;
186
+ ignoreCase?: boolean;
187
+ customComparatorId?: string;
188
+ };
189
+ LabTestCaseDto: {
190
+ _id?: string;
143
191
  name: string;
144
192
  /** @enum {string} */
145
- type: "SOME_ENUM" | "SOME_OTHER_ENUM";
146
- version: number;
147
- description: string;
148
- /** Format: date-time */
149
- lastUpdated: string;
150
- archived: boolean;
151
- exampleMongodbDocObject?: components["schemas"]["ExampleMongodbDocObjectDto"];
152
- __v: number;
153
- };
154
- UpdateExampleMongodbDocDto: {
155
- name?: string;
193
+ kind: "io" | "unit";
194
+ input?: Record<string, never>;
195
+ expected?: Record<string, never>;
196
+ comparator?: components["schemas"]["ComparatorDto"];
197
+ testCode?: string;
156
198
  /** @enum {string} */
157
- type?: "SOME_ENUM" | "SOME_OTHER_ENUM";
158
- description?: string;
159
- archived?: boolean;
160
- exampleMongodbDocObject?: components["schemas"]["ExampleMongodbDocObjectDto"];
161
- /** Format: date-time */
162
- lastUpdated?: string;
199
+ framework?: "jest" | "vitest";
200
+ };
201
+ LabRunnerConfigDto: {
202
+ timeoutMs: number;
203
+ memoryMb?: number;
204
+ entryFnName?: string;
205
+ nodeVersion?: string;
163
206
  };
207
+ CreateDraftVersionDto: {
208
+ /** @enum {string} */
209
+ language?: "typescript" | "javascript";
210
+ promptMarkdown?: string;
211
+ hints?: string[];
212
+ starterCode?: string;
213
+ referenceSolution?: components["schemas"]["ReferenceSolutionDto"];
214
+ sampleTests?: components["schemas"]["LabTestCaseDto"][];
215
+ hiddenTests?: components["schemas"]["LabTestCaseDto"][];
216
+ runner?: components["schemas"]["LabRunnerConfigDto"];
217
+ contentHash?: string;
218
+ createdBy: string;
219
+ };
220
+ HandsOnLabVersionMongo: Record<string, never>;
221
+ UpdateDraftVersionDto: {
222
+ /** @enum {string} */
223
+ language?: "typescript" | "javascript";
224
+ promptMarkdown?: string;
225
+ hints?: string[];
226
+ starterCode?: string;
227
+ referenceSolution?: components["schemas"]["ReferenceSolutionDto"];
228
+ sampleTests?: components["schemas"]["LabTestCaseDto"][];
229
+ hiddenTests?: components["schemas"]["LabTestCaseDto"][];
230
+ runner?: components["schemas"]["LabRunnerConfigDto"];
231
+ contentHash?: string;
232
+ createdBy?: string;
233
+ };
234
+ PublishVersionDto: {
235
+ publishedBy: string;
236
+ notes?: string;
237
+ };
238
+ CreateEmbedDto: {
239
+ labId: string;
240
+ workshopId: string;
241
+ workshopDocumentId: string;
242
+ blockId: string;
243
+ /**
244
+ * @default handsOnLab
245
+ * @enum {string}
246
+ */
247
+ blockType: "handsOnLab";
248
+ pinnedVersionId?: string;
249
+ createdBy: string;
250
+ };
251
+ HandsOnLabEmbedMongo: Record<string, never>;
164
252
  };
165
253
  responses: never;
166
254
  parameters: never;
@@ -170,9 +258,16 @@ export interface components {
170
258
  }
171
259
  export type $defs = Record<string, never>;
172
260
  export interface operations {
173
- ExampleCrudController_health: {
261
+ LabsController_findAll: {
174
262
  parameters: {
175
- query?: never;
263
+ query?: {
264
+ workshopId?: string;
265
+ status?: string;
266
+ tag?: string;
267
+ q?: string;
268
+ limit?: number;
269
+ skip?: number;
270
+ };
176
271
  header?: never;
177
272
  path?: never;
178
273
  cookie?: never;
@@ -184,18 +279,43 @@ export interface operations {
184
279
  [name: string]: unknown;
185
280
  };
186
281
  content: {
187
- "application/json": string;
282
+ "application/json": components["schemas"]["HandsOnLabMongo"][];
188
283
  };
189
284
  };
190
285
  };
191
286
  };
192
- ExampleCrudController_authTest: {
287
+ LabsController_create: {
193
288
  parameters: {
194
289
  query?: never;
195
290
  header?: never;
196
291
  path?: never;
197
292
  cookie?: never;
198
293
  };
294
+ requestBody: {
295
+ content: {
296
+ "application/json": components["schemas"]["CreateLabDto"];
297
+ };
298
+ };
299
+ responses: {
300
+ 201: {
301
+ headers: {
302
+ [name: string]: unknown;
303
+ };
304
+ content: {
305
+ "application/json": components["schemas"]["HandsOnLabMongo"];
306
+ };
307
+ };
308
+ };
309
+ };
310
+ LabsController_findOne: {
311
+ parameters: {
312
+ query?: never;
313
+ header?: never;
314
+ path: {
315
+ labId: string;
316
+ };
317
+ cookie?: never;
318
+ };
199
319
  requestBody?: never;
200
320
  responses: {
201
321
  200: {
@@ -203,43 +323,69 @@ export interface operations {
203
323
  [name: string]: unknown;
204
324
  };
205
325
  content: {
206
- "application/json": components["schemas"]["AuthTestDto"];
326
+ "application/json": components["schemas"]["HandsOnLabMongo"];
207
327
  };
208
328
  };
209
329
  };
210
330
  };
211
- ExampleCrudController_findAll: {
331
+ LabsController_remove: {
212
332
  parameters: {
213
- query?: {
214
- /** @description Filter by archived status */
215
- archived?: boolean;
333
+ query: {
334
+ archivedBy: string;
216
335
  };
217
336
  header?: never;
218
- path?: never;
337
+ path: {
338
+ labId: string;
339
+ };
219
340
  cookie?: never;
220
341
  };
221
342
  requestBody?: never;
343
+ responses: {
344
+ 204: {
345
+ headers: {
346
+ [name: string]: unknown;
347
+ };
348
+ content?: never;
349
+ };
350
+ };
351
+ };
352
+ LabsController_update: {
353
+ parameters: {
354
+ query?: never;
355
+ header?: never;
356
+ path: {
357
+ labId: string;
358
+ };
359
+ cookie?: never;
360
+ };
361
+ requestBody: {
362
+ content: {
363
+ "application/json": components["schemas"]["UpdateLabDto"];
364
+ };
365
+ };
222
366
  responses: {
223
367
  200: {
224
368
  headers: {
225
369
  [name: string]: unknown;
226
370
  };
227
371
  content: {
228
- "application/json": components["schemas"]["ExampleMongodbDocDto"][];
372
+ "application/json": components["schemas"]["HandsOnLabMongo"];
229
373
  };
230
374
  };
231
375
  };
232
376
  };
233
- ExampleCrudController_create: {
377
+ LabVersionsController_createDraft: {
234
378
  parameters: {
235
379
  query?: never;
236
380
  header?: never;
237
- path?: never;
381
+ path: {
382
+ labId: string;
383
+ };
238
384
  cookie?: never;
239
385
  };
240
386
  requestBody: {
241
387
  content: {
242
- "application/json": components["schemas"]["CreateExampleMongodbDocDto"];
388
+ "application/json": components["schemas"]["CreateDraftVersionDto"];
243
389
  };
244
390
  };
245
391
  responses: {
@@ -248,17 +394,17 @@ export interface operations {
248
394
  [name: string]: unknown;
249
395
  };
250
396
  content: {
251
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
397
+ "application/json": components["schemas"]["HandsOnLabVersionMongo"];
252
398
  };
253
399
  };
254
400
  };
255
401
  };
256
- ExampleCrudController_findOne: {
402
+ LabVersionsController_findAll: {
257
403
  parameters: {
258
404
  query?: never;
259
405
  header?: never;
260
406
  path: {
261
- id: string;
407
+ labId: string;
262
408
  };
263
409
  cookie?: never;
264
410
  };
@@ -269,42 +415,46 @@ export interface operations {
269
415
  [name: string]: unknown;
270
416
  };
271
417
  content: {
272
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
418
+ "application/json": components["schemas"]["HandsOnLabVersionMongo"][];
273
419
  };
274
420
  };
275
421
  };
276
422
  };
277
- ExampleCrudController_remove: {
423
+ LabVersionsController_findOne: {
278
424
  parameters: {
279
425
  query?: never;
280
426
  header?: never;
281
427
  path: {
282
- id: string;
428
+ labId: string;
429
+ versionId: string;
283
430
  };
284
431
  cookie?: never;
285
432
  };
286
433
  requestBody?: never;
287
434
  responses: {
288
- 204: {
435
+ 200: {
289
436
  headers: {
290
437
  [name: string]: unknown;
291
438
  };
292
- content?: never;
439
+ content: {
440
+ "application/json": components["schemas"]["HandsOnLabVersionMongo"];
441
+ };
293
442
  };
294
443
  };
295
444
  };
296
- ExampleCrudController_update: {
445
+ LabVersionsController_patchDraft: {
297
446
  parameters: {
298
447
  query?: never;
299
448
  header?: never;
300
449
  path: {
301
- id: string;
450
+ labId: string;
451
+ versionId: string;
302
452
  };
303
453
  cookie?: never;
304
454
  };
305
455
  requestBody: {
306
456
  content: {
307
- "application/json": components["schemas"]["UpdateExampleMongodbDocDto"];
457
+ "application/json": components["schemas"]["UpdateDraftVersionDto"];
308
458
  };
309
459
  };
310
460
  responses: {
@@ -313,39 +463,46 @@ export interface operations {
313
463
  [name: string]: unknown;
314
464
  };
315
465
  content: {
316
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
466
+ "application/json": components["schemas"]["HandsOnLabVersionMongo"];
317
467
  };
318
468
  };
319
469
  };
320
470
  };
321
- ExampleCrudController_findByName: {
471
+ LabVersionsController_publish: {
322
472
  parameters: {
323
473
  query?: never;
324
474
  header?: never;
325
475
  path: {
326
- name: string;
476
+ labId: string;
477
+ versionId: string;
327
478
  };
328
479
  cookie?: never;
329
480
  };
330
- requestBody?: never;
481
+ requestBody: {
482
+ content: {
483
+ "application/json": components["schemas"]["PublishVersionDto"];
484
+ };
485
+ };
331
486
  responses: {
332
487
  200: {
333
488
  headers: {
334
489
  [name: string]: unknown;
335
490
  };
336
491
  content: {
337
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
492
+ "application/json": components["schemas"]["HandsOnLabVersionMongo"];
338
493
  };
339
494
  };
340
495
  };
341
496
  };
342
- ExampleCrudController_archive: {
497
+ LabEmbedsController_findAll: {
343
498
  parameters: {
344
- query?: never;
345
- header?: never;
346
- path: {
347
- id: string;
499
+ query?: {
500
+ labId?: string;
501
+ workshopId?: string;
502
+ workshopDocumentId?: string;
348
503
  };
504
+ header?: never;
505
+ path?: never;
349
506
  cookie?: never;
350
507
  };
351
508
  requestBody?: never;
@@ -355,29 +512,50 @@ export interface operations {
355
512
  [name: string]: unknown;
356
513
  };
357
514
  content: {
358
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
515
+ "application/json": components["schemas"]["HandsOnLabEmbedMongo"][];
516
+ };
517
+ };
518
+ };
519
+ };
520
+ LabEmbedsController_create: {
521
+ parameters: {
522
+ query?: never;
523
+ header?: never;
524
+ path?: never;
525
+ cookie?: never;
526
+ };
527
+ requestBody: {
528
+ content: {
529
+ "application/json": components["schemas"]["CreateEmbedDto"];
530
+ };
531
+ };
532
+ responses: {
533
+ 201: {
534
+ headers: {
535
+ [name: string]: unknown;
536
+ };
537
+ content: {
538
+ "application/json": components["schemas"]["HandsOnLabEmbedMongo"];
359
539
  };
360
540
  };
361
541
  };
362
542
  };
363
- ExampleCrudController_unarchive: {
543
+ LabEmbedsController_remove: {
364
544
  parameters: {
365
545
  query?: never;
366
546
  header?: never;
367
547
  path: {
368
- id: string;
548
+ embedId: string;
369
549
  };
370
550
  cookie?: never;
371
551
  };
372
552
  requestBody?: never;
373
553
  responses: {
374
- 200: {
554
+ 204: {
375
555
  headers: {
376
556
  [name: string]: unknown;
377
557
  };
378
- content: {
379
- "application/json": components["schemas"]["ExampleMongodbDocDto"];
380
- };
558
+ content?: never;
381
559
  };
382
560
  };
383
561
  };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,13 @@
1
- export type { AuthTestDto } from './models/AuthTestDto';
2
- export type { CreateExampleMongodbDocDto } from './models/CreateExampleMongodbDocDto';
3
- export type { ExampleMongodbDocDto } from './models/ExampleMongodbDocDto';
4
- export type { ExampleMongodbDocObjectDto } from './models/ExampleMongodbDocObjectDto';
5
- export type { UpdateExampleMongodbDocDto } from './models/UpdateExampleMongodbDocDto';
1
+ export type { ComparatorDto } from './models/ComparatorDto';
2
+ export type { CreateDraftVersionDto } from './models/CreateDraftVersionDto';
3
+ export type { CreateEmbedDto } from './models/CreateEmbedDto';
4
+ export type { CreateLabDto } from './models/CreateLabDto';
5
+ export type { HandsOnLabEmbedMongo } from './models/HandsOnLabEmbedMongo';
6
+ export type { HandsOnLabMongo } from './models/HandsOnLabMongo';
7
+ export type { HandsOnLabVersionMongo } from './models/HandsOnLabVersionMongo';
8
+ export type { LabRunnerConfigDto } from './models/LabRunnerConfigDto';
9
+ export type { LabTestCaseDto } from './models/LabTestCaseDto';
10
+ export type { PublishVersionDto } from './models/PublishVersionDto';
11
+ export type { ReferenceSolutionDto } from './models/ReferenceSolutionDto';
12
+ export type { UpdateDraftVersionDto } from './models/UpdateDraftVersionDto';
13
+ export type { UpdateLabDto } from './models/UpdateLabDto';
@@ -0,0 +1,7 @@
1
+ export type ComparatorDto = {
2
+ kind: 'deepEqual' | 'strictEqual' | 'numberTolerance' | 'stringNormalized' | 'custom';
3
+ tolerance?: number;
4
+ normalizeWhitespace?: boolean;
5
+ ignoreCase?: boolean;
6
+ customComparatorId?: string;
7
+ };
@@ -0,0 +1,15 @@
1
+ import type { LabRunnerConfigDto } from './LabRunnerConfigDto';
2
+ import type { LabTestCaseDto } from './LabTestCaseDto';
3
+ import type { ReferenceSolutionDto } from './ReferenceSolutionDto';
4
+ export type CreateDraftVersionDto = {
5
+ language?: 'typescript' | 'javascript';
6
+ promptMarkdown?: string;
7
+ hints?: Array<string>;
8
+ starterCode?: string;
9
+ referenceSolution?: ReferenceSolutionDto;
10
+ sampleTests?: Array<LabTestCaseDto>;
11
+ hiddenTests?: Array<LabTestCaseDto>;
12
+ runner?: LabRunnerConfigDto;
13
+ contentHash?: string;
14
+ createdBy: string;
15
+ };
@@ -0,0 +1,9 @@
1
+ export type CreateEmbedDto = {
2
+ labId: string;
3
+ workshopId: string;
4
+ workshopDocumentId: string;
5
+ blockId: string;
6
+ blockType?: 'handsOnLab';
7
+ pinnedVersionId?: string;
8
+ createdBy: string;
9
+ };
@@ -0,0 +1,13 @@
1
+ export type CreateLabDto = {
2
+ workshopId: string;
3
+ workshopDocumentGroupId?: string;
4
+ slug: string;
5
+ title: string;
6
+ summary?: string;
7
+ tags?: Array<string>;
8
+ difficulty?: 'intro' | 'easy' | 'medium' | 'hard';
9
+ estimatedMinutes?: number;
10
+ status?: 'draft' | 'published' | 'archived';
11
+ createdBy: string;
12
+ updatedBy?: string;
13
+ };
@@ -0,0 +1 @@
1
+ export type HandsOnLabEmbedMongo = {};
@@ -0,0 +1 @@
1
+ export type HandsOnLabMongo = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export type HandsOnLabVersionMongo = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export type LabRunnerConfigDto = {
2
+ timeoutMs: number;
3
+ memoryMb?: number;
4
+ entryFnName?: string;
5
+ nodeVersion?: string;
6
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { ComparatorDto } from './ComparatorDto';
2
+ export type LabTestCaseDto = {
3
+ _id?: string;
4
+ name: string;
5
+ kind: 'io' | 'unit';
6
+ input?: Record<string, any>;
7
+ expected?: Record<string, any>;
8
+ comparator?: ComparatorDto;
9
+ testCode?: string;
10
+ framework?: 'jest' | 'vitest';
11
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export type PublishVersionDto = {
2
+ publishedBy: string;
3
+ notes?: string;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export type ReferenceSolutionDto = {
2
+ code: string;
3
+ notesMarkdown?: string;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import type { LabRunnerConfigDto } from './LabRunnerConfigDto';
2
+ import type { LabTestCaseDto } from './LabTestCaseDto';
3
+ import type { ReferenceSolutionDto } from './ReferenceSolutionDto';
4
+ export type UpdateDraftVersionDto = {
5
+ language?: 'typescript' | 'javascript';
6
+ promptMarkdown?: string;
7
+ hints?: Array<string>;
8
+ starterCode?: string;
9
+ referenceSolution?: ReferenceSolutionDto;
10
+ sampleTests?: Array<LabTestCaseDto>;
11
+ hiddenTests?: Array<LabTestCaseDto>;
12
+ runner?: LabRunnerConfigDto;
13
+ contentHash?: string;
14
+ createdBy?: string;
15
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export type UpdateLabDto = {
2
+ workshopId?: string;
3
+ workshopDocumentGroupId?: string;
4
+ slug?: string;
5
+ title?: string;
6
+ summary?: string;
7
+ tags?: Array<string>;
8
+ difficulty?: 'intro' | 'easy' | 'medium' | 'hard';
9
+ estimatedMinutes?: number;
10
+ status?: 'draft' | 'published' | 'archived';
11
+ createdBy?: string;
12
+ updatedBy?: string;
13
+ };
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmdjr/coding-labs-contracts",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Types & runtime enums generated from NGX coding-labs spec",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -1,3 +0,0 @@
1
- export type AuthTestDto = {
2
- message: string;
3
- };
@@ -1,9 +0,0 @@
1
- import type { ExampleMongodbDocObjectDto } from './ExampleMongodbDocObjectDto';
2
- export type CreateExampleMongodbDocDto = {
3
- name: string;
4
- type: 'SOME_ENUM' | 'SOME_OTHER_ENUM';
5
- description?: string;
6
- archived?: boolean;
7
- exampleMongodbDocObject?: ExampleMongodbDocObjectDto;
8
- lastUpdated?: string;
9
- };
@@ -1,12 +0,0 @@
1
- import type { ExampleMongodbDocObjectDto } from './ExampleMongodbDocObjectDto';
2
- export type ExampleMongodbDocDto = {
3
- _id: string;
4
- name: string;
5
- type: 'SOME_ENUM' | 'SOME_OTHER_ENUM';
6
- version: number;
7
- description: string;
8
- lastUpdated: string;
9
- archived: boolean;
10
- exampleMongodbDocObject?: ExampleMongodbDocObjectDto;
11
- __v: number;
12
- };
@@ -1,6 +0,0 @@
1
- export type ExampleMongodbDocObjectDto = {
2
- street: string;
3
- city: string;
4
- state: string;
5
- zip: string;
6
- };
@@ -1,9 +0,0 @@
1
- import type { ExampleMongodbDocObjectDto } from './ExampleMongodbDocObjectDto';
2
- export type UpdateExampleMongodbDocDto = {
3
- name?: string;
4
- type?: 'SOME_ENUM' | 'SOME_OTHER_ENUM';
5
- description?: string;
6
- archived?: boolean;
7
- exampleMongodbDocObject?: ExampleMongodbDocObjectDto;
8
- lastUpdated?: string;
9
- };