@twreporter-academy/api-types 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/schemas/course.d.ts
CHANGED
|
@@ -168,6 +168,10 @@ export declare const V1CourseBySlugResponseSchema: z.ZodObject<{
|
|
|
168
168
|
bio: z.ZodString;
|
|
169
169
|
avatarUrl: z.ZodNullable<z.ZodString>;
|
|
170
170
|
}, z.core.$strip>>;
|
|
171
|
+
heroImageVideo: z.ZodNullable<z.ZodObject<{
|
|
172
|
+
title: z.ZodString;
|
|
173
|
+
videoId: z.ZodNullable<z.ZodString>;
|
|
174
|
+
}, z.core.$strip>>;
|
|
171
175
|
heroImage: z.ZodNullable<z.ZodObject<{
|
|
172
176
|
title: z.ZodString;
|
|
173
177
|
resized: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../../src/schemas/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,OAAO,EAAE,GACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3B,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAO/C,CAAA;AAEF,eAAO,MAAM,4BAA4B;;iBAEvC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;iBAI3C,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;iBAcP,CAAA;AAE1B,eAAO,MAAM,wBAAwB;;;;iBAQP,CAAA;AAE9B,eAAO,MAAM,wBAAwB;;;;;;;iBASP,CAAA;AAE9B,eAAO,MAAM,sBAAsB;;;;;iBAQP,CAAA;AAE5B,eAAO,MAAM,4BAA4B;;;;;;iBAQP,CAAA;AAElC,eAAO,MAAM,oBAAoB;;;EAAuC,CAAA;AAExE,eAAO,MAAM,yBAAyB;;;EAAyB,CAAA;AAE/D,eAAO,MAAM,wBAAwB;;;;;;;;iBAOP,CAAA;AAE9B,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAIP,CAAA;AAEjC,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBf,CAAA;AAE7B,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"course.d.ts","sourceRoot":"","sources":["../../src/schemas/course.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,OAAO,EAAE,GACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE3B,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAO/C,CAAA;AAEF,eAAO,MAAM,4BAA4B;;iBAEvC,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;iBAI3C,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;iBAcP,CAAA;AAE1B,eAAO,MAAM,wBAAwB;;;;iBAQP,CAAA;AAE9B,eAAO,MAAM,wBAAwB;;;;;;;iBASP,CAAA;AAE9B,eAAO,MAAM,sBAAsB;;;;;iBAQP,CAAA;AAE5B,eAAO,MAAM,4BAA4B;;;;;;iBAQP,CAAA;AAElC,eAAO,MAAM,oBAAoB;;;EAAuC,CAAA;AAExE,eAAO,MAAM,yBAAyB;;;EAAyB,CAAA;AAE/D,eAAO,MAAM,wBAAwB;;;;;;;;iBAOP,CAAA;AAE9B,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAIP,CAAA;AAEjC,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBf,CAAA;AAE7B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBf,CAAA"}
|
package/dist/schemas/course.js
CHANGED
|
@@ -100,6 +100,7 @@ export const V1CourseBySlugResponseSchema = z.object({
|
|
|
100
100
|
trialVideos: z.array(CloudflareStreamVideoSchema).nullable(),
|
|
101
101
|
lessonsMeta: z.array(V1CourseLessonMetaSchema),
|
|
102
102
|
instructors: z.array(V1CourseInstructorSchema),
|
|
103
|
+
heroImageVideo: CloudflareStreamVideoSchema.nullable(),
|
|
103
104
|
heroImage: PhotoSchema.nullable()
|
|
104
105
|
}).openapi('CourseDetail');
|
|
105
106
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course.js","names":["z","RestErrorBodySchema","CloudflareStreamVideoSchema","V1LessonProgressSchema","PhotoSchema","registry","CourseThumbnailSchema","JsonValueSchema","union","string","number","boolean","null","array","unknown","record","V1CourseSlugPathParamsSchema","object","slug","min","max","V1CourseBySlugMetaResponseSchema","ogTitle","ogDescription","ogImage","nullable","V1CourseLessonSchema","id","order","int","title","videoId","durationSeconds","isFree","progress","optional","openapi","V1CourseLessonMetaSchema","duration","V1CourseInstructorSchema","name","bio","avatarUrl","V1CourseResourceSchema","description","downloadUrl","V1CourseFurtherReadingSchema","excerpt","thumbnailUrl","url","V1CourseStatusSchema","enum","V1HeaderCourseBadgeSchema","V1HeaderCourseItemSchema","subtitle","badge","V1CoursesListResponseSchema","courses","V1CourseTagSchema","V1ClassroomBySlugResponseSchema","summary","status","tags","previewVideoId","lessons","instructors","resources","furtherReading","V1CourseBySlugResponseSchema","launchAt","iso","datetime","trialVideos","lessonsMeta","heroImage","internalServerErrorResponse","content","schema","registerPath","method","path","responses","request","params"],"sources":["../../src/schemas/course.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { RestErrorBodySchema } from '../rest.js'\nimport { CloudflareStreamVideoSchema } from './cloudflare-stream.js'\nimport { V1LessonProgressSchema } from './lesson-progress.js'\nimport { PhotoSchema } from './photo.js'\nimport { registry } from './registry.js'\nimport { CourseThumbnailSchema } from './tag.js'\n\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | unknown[]\n | Record<string, unknown>\n\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(z.unknown()),\n z.record(z.string(), z.unknown()),\n])\n\nexport const V1CourseSlugPathParamsSchema = z.object({\n slug: z.string().min(1).max(200),\n})\n\nexport const V1CourseBySlugMetaResponseSchema = z.object({\n ogTitle: z.string(),\n ogDescription: z.string(),\n ogImage: CourseThumbnailSchema.nullable(),\n})\n\nexport const V1CourseLessonSchema = z\n .object({\n id: z.string(),\n order: z.number().int(),\n title: z.string(),\n /** Cloudflare stream id for this lesson; null when not yet set */\n videoId: z.string().nullable(),\n /** Video length in seconds (from CMS); null when not yet set */\n durationSeconds: z.number().int().nullable(),\n /** CMS 免費試看 flag; playback access is decided by user role (out of scope here) */\n isFree: z.boolean(),\n /** Present when request includes a valid member JWT; null when no progress record */\n progress: V1LessonProgressSchema.nullable().optional(),\n })\n .openapi('CourseLesson')\n\nexport const V1CourseLessonMetaSchema = z\n .object({\n order: z.number().int().nullable(),\n title: z.string(),\n /** Video length in seconds (from CMS); null when not yet set */\n duration: z.number().int().nullable(),\n /** CMS 免費試看 flag; playback access is decided by user role (out of scope here) */\n })\n .openapi('CourseLessonMeta')\n\nexport const V1CourseInstructorSchema = z\n .object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n title: z.string(),\n bio: z.string(),\n avatarUrl: z.string().nullable(),\n })\n .openapi('CourseInstructor')\n\nexport const V1CourseResourceSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n description: z.string(),\n /** GCS file URL; empty when no PDF uploaded */\n downloadUrl: z.string(),\n })\n .openapi('CourseResource')\n\nexport const V1CourseFurtherReadingSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n excerpt: z.string(),\n thumbnailUrl: z.string().nullable(),\n url: z.string(),\n })\n .openapi('CourseFurtherReading')\n\nexport const V1CourseStatusSchema = z.enum(['published', 'coming_soon'])\n\nexport const V1HeaderCourseBadgeSchema = z.enum(['new', 'wip'])\n\nexport const V1HeaderCourseItemSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n badge: V1HeaderCourseBadgeSchema.optional(),\n })\n .openapi('HeaderCourseItem')\n\nexport const V1CoursesListResponseSchema = z\n .object({\n courses: z.array(V1HeaderCourseItemSchema),\n })\n .openapi('CoursesListResponse')\n\nexport const V1CourseTagSchema = z.object({\n slug: z.string(),\n name: z.string(),\n})\n\nexport const V1ClassroomBySlugResponseSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n summary: z.string(),\n /** published: full payload; coming_soon: lessons/resources/furtherReading/previewVideoId stripped */\n status: V1CourseStatusSchema,\n tags: z.array(V1CourseTagSchema),\n /** Trial/preview stream only; null when unconfigured or course is coming_soon */\n previewVideoId: z.string().nullable(),\n lessons: z.array(V1CourseLessonSchema),\n instructors: z.array(V1CourseInstructorSchema),\n resources: z.array(V1CourseResourceSchema),\n furtherReading: z.array(V1CourseFurtherReadingSchema),\n })\n .openapi('ClassroomDetail')\n\nexport const V1CourseBySlugResponseSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n summary: z.string(),\n launchAt: z.iso.datetime().nullable(),\n description: JsonValueSchema.nullable(),\n /** published: full payload; coming_soon: lessons/resources/furtherReading/previewVideoId stripped */\n status: V1CourseStatusSchema,\n tags: z.array(V1CourseTagSchema),\n /** Trial/preview stream only; null when unconfigured or course is coming_soon */\n trialVideos: z.array(CloudflareStreamVideoSchema).nullable(),\n lessonsMeta: z.array(V1CourseLessonMetaSchema),\n instructors: z.array(V1CourseInstructorSchema),\n heroImage: PhotoSchema.nullable(),\n })\n .openapi('CourseDetail')\n\n// --- OpenAPI path registration ---\n\nconst internalServerErrorResponse = {\n 500: {\n description: 'Internal server error',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n} as const\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses',\n tags: ['Courses'],\n description: 'Header course list.',\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CoursesListResponseSchema },\n },\n },\n ...internalServerErrorResponse,\n },\n})\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses/{slug}/meta',\n tags: ['Courses'],\n description: 'OG metadata for a course page.',\n request: { params: V1CourseSlugPathParamsSchema },\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CourseBySlugMetaResponseSchema },\n },\n },\n 400: {\n description: 'Bad request',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n 404: {\n description: 'Course not found',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n ...internalServerErrorResponse,\n },\n})\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses/{slug}',\n tags: ['Courses'],\n description:\n 'Full course detail for the classroom page. When status is coming_soon, lessons, resources, furtherReading, and previewVideoId are empty/null while title, description, tags, and instructors remain visible.',\n request: { params: V1CourseSlugPathParamsSchema },\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CourseBySlugResponseSchema },\n },\n },\n 400: {\n description: 'Bad request',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n 404: {\n description: 'Course not found',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n ...internalServerErrorResponse,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"course.js","names":["z","RestErrorBodySchema","CloudflareStreamVideoSchema","V1LessonProgressSchema","PhotoSchema","registry","CourseThumbnailSchema","JsonValueSchema","union","string","number","boolean","null","array","unknown","record","V1CourseSlugPathParamsSchema","object","slug","min","max","V1CourseBySlugMetaResponseSchema","ogTitle","ogDescription","ogImage","nullable","V1CourseLessonSchema","id","order","int","title","videoId","durationSeconds","isFree","progress","optional","openapi","V1CourseLessonMetaSchema","duration","V1CourseInstructorSchema","name","bio","avatarUrl","V1CourseResourceSchema","description","downloadUrl","V1CourseFurtherReadingSchema","excerpt","thumbnailUrl","url","V1CourseStatusSchema","enum","V1HeaderCourseBadgeSchema","V1HeaderCourseItemSchema","subtitle","badge","V1CoursesListResponseSchema","courses","V1CourseTagSchema","V1ClassroomBySlugResponseSchema","summary","status","tags","previewVideoId","lessons","instructors","resources","furtherReading","V1CourseBySlugResponseSchema","launchAt","iso","datetime","trialVideos","lessonsMeta","heroImageVideo","heroImage","internalServerErrorResponse","content","schema","registerPath","method","path","responses","request","params"],"sources":["../../src/schemas/course.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { RestErrorBodySchema } from '../rest.js'\nimport { CloudflareStreamVideoSchema } from './cloudflare-stream.js'\nimport { V1LessonProgressSchema } from './lesson-progress.js'\nimport { PhotoSchema } from './photo.js'\nimport { registry } from './registry.js'\nimport { CourseThumbnailSchema } from './tag.js'\n\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | unknown[]\n | Record<string, unknown>\n\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(z.unknown()),\n z.record(z.string(), z.unknown()),\n])\n\nexport const V1CourseSlugPathParamsSchema = z.object({\n slug: z.string().min(1).max(200),\n})\n\nexport const V1CourseBySlugMetaResponseSchema = z.object({\n ogTitle: z.string(),\n ogDescription: z.string(),\n ogImage: CourseThumbnailSchema.nullable(),\n})\n\nexport const V1CourseLessonSchema = z\n .object({\n id: z.string(),\n order: z.number().int(),\n title: z.string(),\n /** Cloudflare stream id for this lesson; null when not yet set */\n videoId: z.string().nullable(),\n /** Video length in seconds (from CMS); null when not yet set */\n durationSeconds: z.number().int().nullable(),\n /** CMS 免費試看 flag; playback access is decided by user role (out of scope here) */\n isFree: z.boolean(),\n /** Present when request includes a valid member JWT; null when no progress record */\n progress: V1LessonProgressSchema.nullable().optional(),\n })\n .openapi('CourseLesson')\n\nexport const V1CourseLessonMetaSchema = z\n .object({\n order: z.number().int().nullable(),\n title: z.string(),\n /** Video length in seconds (from CMS); null when not yet set */\n duration: z.number().int().nullable(),\n /** CMS 免費試看 flag; playback access is decided by user role (out of scope here) */\n })\n .openapi('CourseLessonMeta')\n\nexport const V1CourseInstructorSchema = z\n .object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n title: z.string(),\n bio: z.string(),\n avatarUrl: z.string().nullable(),\n })\n .openapi('CourseInstructor')\n\nexport const V1CourseResourceSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n description: z.string(),\n /** GCS file URL; empty when no PDF uploaded */\n downloadUrl: z.string(),\n })\n .openapi('CourseResource')\n\nexport const V1CourseFurtherReadingSchema = z\n .object({\n id: z.string(),\n title: z.string(),\n excerpt: z.string(),\n thumbnailUrl: z.string().nullable(),\n url: z.string(),\n })\n .openapi('CourseFurtherReading')\n\nexport const V1CourseStatusSchema = z.enum(['published', 'coming_soon'])\n\nexport const V1HeaderCourseBadgeSchema = z.enum(['new', 'wip'])\n\nexport const V1HeaderCourseItemSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n badge: V1HeaderCourseBadgeSchema.optional(),\n })\n .openapi('HeaderCourseItem')\n\nexport const V1CoursesListResponseSchema = z\n .object({\n courses: z.array(V1HeaderCourseItemSchema),\n })\n .openapi('CoursesListResponse')\n\nexport const V1CourseTagSchema = z.object({\n slug: z.string(),\n name: z.string(),\n})\n\nexport const V1ClassroomBySlugResponseSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n summary: z.string(),\n /** published: full payload; coming_soon: lessons/resources/furtherReading/previewVideoId stripped */\n status: V1CourseStatusSchema,\n tags: z.array(V1CourseTagSchema),\n /** Trial/preview stream only; null when unconfigured or course is coming_soon */\n previewVideoId: z.string().nullable(),\n lessons: z.array(V1CourseLessonSchema),\n instructors: z.array(V1CourseInstructorSchema),\n resources: z.array(V1CourseResourceSchema),\n furtherReading: z.array(V1CourseFurtherReadingSchema),\n })\n .openapi('ClassroomDetail')\n\nexport const V1CourseBySlugResponseSchema = z\n .object({\n slug: z.string(),\n title: z.string(),\n subtitle: z.string(),\n summary: z.string(),\n launchAt: z.iso.datetime().nullable(),\n description: JsonValueSchema.nullable(),\n /** published: full payload; coming_soon: lessons/resources/furtherReading/previewVideoId stripped */\n status: V1CourseStatusSchema,\n tags: z.array(V1CourseTagSchema),\n /** Trial/preview stream only; null when unconfigured or course is coming_soon */\n trialVideos: z.array(CloudflareStreamVideoSchema).nullable(),\n lessonsMeta: z.array(V1CourseLessonMetaSchema),\n instructors: z.array(V1CourseInstructorSchema),\n heroImageVideo: CloudflareStreamVideoSchema.nullable(),\n heroImage: PhotoSchema.nullable(),\n })\n .openapi('CourseDetail')\n\n// --- OpenAPI path registration ---\n\nconst internalServerErrorResponse = {\n 500: {\n description: 'Internal server error',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n} as const\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses',\n tags: ['Courses'],\n description: 'Header course list.',\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CoursesListResponseSchema },\n },\n },\n ...internalServerErrorResponse,\n },\n})\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses/{slug}/meta',\n tags: ['Courses'],\n description: 'OG metadata for a course page.',\n request: { params: V1CourseSlugPathParamsSchema },\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CourseBySlugMetaResponseSchema },\n },\n },\n 400: {\n description: 'Bad request',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n 404: {\n description: 'Course not found',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n ...internalServerErrorResponse,\n },\n})\n\nregistry.registerPath({\n method: 'get',\n path: '/v1/courses/{slug}',\n tags: ['Courses'],\n description:\n 'Full course detail for the classroom page. When status is coming_soon, lessons, resources, furtherReading, and previewVideoId are empty/null while title, description, tags, and instructors remain visible.',\n request: { params: V1CourseSlugPathParamsSchema },\n responses: {\n 200: {\n description: 'Success',\n content: {\n 'application/json': { schema: V1CourseBySlugResponseSchema },\n },\n },\n 400: {\n description: 'Bad request',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n 404: {\n description: 'Course not found',\n content: { 'application/json': { schema: RestErrorBodySchema } },\n },\n ...internalServerErrorResponse,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|