ENGLISH·COURSE API
    Preparing search index...
    • Turns the nested course manifests into the flat catalog the repositories take.

      Parameters

      • manifests: readonly {
            id: string & $brand<"CourseId">;
            slug: string & $brand<"Slug">;
            title: string;
            description: string;
            language: string;
            sequence: number;
            draft: boolean;
            track: "level" | "reference";
            outcomes?: string[];
            audience?: string;
            highlights?: string[];
            sounds?: { vowels: string[]; consonants: string[] };
            translations?: Record<
                string,
                {
                    description?: string;
                    outcomes?: string[];
                    audience?: string;
                    highlights?: string[];
                },
            >;
            modules: {
                id: string & $brand<"ModuleId">;
                slug: string & $brand<"Slug">;
                title: string;
                sequence: number;
                lessons: (
                    | {
                        id: string & $brand<"LessonId">;
                        slug: string & $brand<"Slug">;
                        sequence: number;
                        title: string;
                        resources: {
                            id: string & $brand<(...)>;
                            title: string;
                            url: string;
                            kind: "pdf" | "slides" | "code" | "other";
                        }[];
                        kind: "video";
                        description: string;
                        source: string;
                        durationSeconds: number;
                        poster?: string;
                        notesKey?: string;
                        uploadDate?: string;
                    }
                    | {
                        id: string & $brand<"LessonId">;
                        slug: string & $brand<"Slug">;
                        sequence: number;
                        title: string;
                        resources: {
                            id: string & $brand<(...)>;
                            title: string;
                            url: string;
                            kind: "pdf" | "slides" | "code" | "other";
                        }[];
                        kind: "reading";
                        body: string;
                    }
                )[];
            }[];
        }[]

        Parsed course manifests, in ladder order

      Returns FlattenedCatalog

      Courses, modules, lesson rows, resource rows and the notes-key map

      Declaration order is preserved throughout: the manifests are ordered by the ladder, and within a course by module and lesson sequence as written. The repositories sort where they need to, but a stable input makes a diff of the catalog readable.