@burdenoff/microfe-technospam 2026.1031.6 → 2026.1031.8
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/generated/wspace-types.d.ts +1100 -147
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/stories/fixtures/technospamFixtures.d.ts.map +1 -1
- package/dist/technospam/api/canonicalLearning.d.ts +53 -0
- package/dist/technospam/api/canonicalLearning.d.ts.map +1 -0
- package/dist/technospam/api/canonicalLearning.js +57 -0
- package/dist/technospam/api/canonicalLearning.js.map +1 -0
- package/dist/technospam/api/technospamApi.d.ts +392 -16
- package/dist/technospam/api/technospamApi.d.ts.map +1 -1
- package/dist/technospam/api/technospamApi.js +367 -304
- package/dist/technospam/api/technospamApi.js.map +1 -1
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.js +26 -26
- package/dist/technospam/pages/ApplicationsPortfolioPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js +196 -192
- package/dist/technospam/pages/CoursesCourseDetailsPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.js +125 -121
- package/dist/technospam/pages/CoursesLessonPlayerPagePage.js.map +1 -1
- package/dist/technospam/pages/CoursesMyLearningPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/CoursesMyLearningPagePage.js +95 -95
- package/dist/technospam/pages/CoursesMyLearningPagePage.js.map +1 -1
- package/dist/technospam/pages/DashboardDashboardPagePage.d.ts.map +1 -1
- package/dist/technospam/pages/DashboardDashboardPagePage.js +30 -30
- package/dist/technospam/pages/DashboardDashboardPagePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"technospamFixtures.d.ts","sourceRoot":"","sources":["../../../src/stories/fixtures/technospamFixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC;AASX,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"technospamFixtures.d.ts","sourceRoot":"","sources":["../../../src/stories/fixtures/technospamFixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC;AASX,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;AA0JxC,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,wBAA6B;;;;;;;;;;;;;;;EA8f9E;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { TecCertificate, TecCourse, TecEnrollment } from './technospamApi';
|
|
2
|
+
|
|
3
|
+
export type BuiEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED' | 'EXPIRED';
|
|
4
|
+
export type BuiCertificateStatus = 'ISSUED' | 'REVOKED' | 'EXPIRED';
|
|
5
|
+
export interface BuiMyEnrollmentRow {
|
|
6
|
+
id: string;
|
|
7
|
+
status: BuiEnrollmentStatus;
|
|
8
|
+
progressPct: number;
|
|
9
|
+
enrolledAt: string;
|
|
10
|
+
startedAt?: string | null;
|
|
11
|
+
lastActiveAt?: string | null;
|
|
12
|
+
completedAt?: string | null;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
updatedAt: string;
|
|
15
|
+
technospamNextLessonId?: string | null;
|
|
16
|
+
technospamEnrollment?: {
|
|
17
|
+
id: string;
|
|
18
|
+
courseId: string;
|
|
19
|
+
learnerId: string;
|
|
20
|
+
lessonsCompleted: number;
|
|
21
|
+
course?: TecCourse | null;
|
|
22
|
+
} | null;
|
|
23
|
+
}
|
|
24
|
+
export interface BuiMyCertificateRow {
|
|
25
|
+
id: string;
|
|
26
|
+
serial: string;
|
|
27
|
+
status: BuiCertificateStatus;
|
|
28
|
+
issuedAt: string;
|
|
29
|
+
revokedAt?: string | null;
|
|
30
|
+
finalScore?: number | null;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
technospamRevokeReason?: string | null;
|
|
33
|
+
technospamCertificate?: {
|
|
34
|
+
id: string;
|
|
35
|
+
courseId: string;
|
|
36
|
+
learnerId: string;
|
|
37
|
+
score: number;
|
|
38
|
+
course?: TecCourse | null;
|
|
39
|
+
} | null;
|
|
40
|
+
}
|
|
41
|
+
export declare function toTecEnrollment(row: BuiMyEnrollmentRow): TecEnrollment | null;
|
|
42
|
+
export declare function toTecCertificate(row: BuiMyCertificateRow): TecCertificate | null;
|
|
43
|
+
/** Map a page of canonical rows, dropping any whose Technospam overlay is missing. */
|
|
44
|
+
export declare function mapRows<Row, Out>(rows: readonly Row[] | null | undefined, map: (row: Row) => Out | null): Out[];
|
|
45
|
+
/**
|
|
46
|
+
* Narrow to one Technospam course. Applied on top of the server-side
|
|
47
|
+
* `courseId` filter (which takes the canonical course id) so the result is
|
|
48
|
+
* right even before the course's canonical id is known.
|
|
49
|
+
*/
|
|
50
|
+
export declare function forTechnospamCourse<T extends {
|
|
51
|
+
courseId: string;
|
|
52
|
+
}>(rows: T[], technospamCourseId?: string): T[];
|
|
53
|
+
//# sourceMappingURL=canonicalLearning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalLearning.d.ts","sourceRoot":"","sources":["../../../src/technospam/api/canonicalLearning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EACV,cAAc,EAEd,SAAS,EACT,aAAa,EAEd,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACnG,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,oBAAoB,CAAC,EAAE;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,qBAAqB,CAAC,EAAE;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;CACV;AAWD,wBAAgB,eAAe,CAAC,GAAG,EAAE,kBAAkB,GAAG,aAAa,GAAG,IAAI,CAmB7E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAkBhF;AAED,sFAAsF;AACtF,wBAAgB,OAAO,CAAC,GAAG,EAAE,GAAG,EAC9B,IAAI,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,EACvC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,IAAI,GAC5B,GAAG,EAAE,CAOP;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAChE,IAAI,EAAE,CAAC,EAAE,EACT,kBAAkB,CAAC,EAAE,MAAM,GAC1B,CAAC,EAAE,CAEL"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/technospam/api/canonicalLearning.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
return e === "EXPIRED" ? "DROPPED" : e;
|
|
4
|
+
}
|
|
5
|
+
function t(t) {
|
|
6
|
+
let n = t.technospamEnrollment;
|
|
7
|
+
return n ? {
|
|
8
|
+
id: n.id,
|
|
9
|
+
courseId: n.courseId,
|
|
10
|
+
learnerId: n.learnerId,
|
|
11
|
+
status: e(t.status),
|
|
12
|
+
progressPct: t.progressPct,
|
|
13
|
+
lessonsCompleted: n.lessonsCompleted,
|
|
14
|
+
startedAt: t.startedAt ?? t.enrolledAt,
|
|
15
|
+
lastActiveAt: t.lastActiveAt ?? null,
|
|
16
|
+
completedAt: t.completedAt ?? null,
|
|
17
|
+
createdAt: t.createdAt,
|
|
18
|
+
updatedAt: t.updatedAt,
|
|
19
|
+
course: n.course ?? null,
|
|
20
|
+
nextLessonId: t.technospamNextLessonId ?? null,
|
|
21
|
+
buiEnrollmentId: t.id
|
|
22
|
+
} : null;
|
|
23
|
+
}
|
|
24
|
+
function n(e) {
|
|
25
|
+
let t = e.technospamCertificate;
|
|
26
|
+
if (!t) return null;
|
|
27
|
+
let n = e.status;
|
|
28
|
+
return {
|
|
29
|
+
id: t.id,
|
|
30
|
+
courseId: t.courseId,
|
|
31
|
+
learnerId: t.learnerId,
|
|
32
|
+
serial: e.serial,
|
|
33
|
+
score: e.finalScore ?? t.score,
|
|
34
|
+
status: n,
|
|
35
|
+
issuedAt: e.issuedAt,
|
|
36
|
+
revokedAt: e.revokedAt ?? null,
|
|
37
|
+
revokeReason: e.technospamRevokeReason ?? null,
|
|
38
|
+
createdAt: e.createdAt,
|
|
39
|
+
course: t.course ?? null,
|
|
40
|
+
buiCertificateId: e.id
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function r(e, t) {
|
|
44
|
+
let n = [];
|
|
45
|
+
for (let r of e ?? []) {
|
|
46
|
+
let e = t(r);
|
|
47
|
+
e && n.push(e);
|
|
48
|
+
}
|
|
49
|
+
return n;
|
|
50
|
+
}
|
|
51
|
+
function i(e, t) {
|
|
52
|
+
return t ? e.filter((e) => e.courseId === t) : e;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { i as forTechnospamCourse, r as mapRows, n as toTecCertificate, t as toTecEnrollment };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=canonicalLearning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalLearning.js","names":[],"sources":["../../../src/technospam/api/canonicalLearning.ts"],"sourcesContent":["/**\n * Canonical (Buildmyiq) learning records seen through the Technospam overlays\n * (BOFF-10481, OVL-24 phase 2c).\n *\n * Buildmyiq is the system of record for a learner's enrollments and\n * certificates. The learner's own records are read from its self-scoped root\n * fields (`buiMyEnrollments` / `buiMyCertificates`, filtered to\n * `source: TECHNOSPAM`), and the Technospam-only data rides on the overlay\n * fields Technospam contributes to those types:\n *\n * BuiEnrollment.technospamEnrollment the Technospam row (its id, course, counts)\n * BuiEnrollment.technospamNextLessonId where \"Resume\" lands\n * BuiCertificate.technospamCertificate the Technospam row (its id, course)\n * BuiCertificate.technospamRevokeReason why Technospam revoked it\n *\n * The pages keep working with the `TecEnrollment` / `TecCertificate` view\n * models, so these mappers fold one canonical row into that shape: the\n * canonical state (status, progress, dates, serial) comes from Buildmyiq, and\n * the ids come from the Technospam row because every Technospam route and\n * mutation (`tecCompleteLesson`, `tecIssueCertificate`, portfolio items, …)\n * is keyed by the Technospam id. A canonical row whose Technospam overlay did\n * not resolve is dropped rather than rendered with an id no Technospam\n * mutation accepts.\n */\nimport type {\n TecCertificate,\n TecCertificateStatus,\n TecCourse,\n TecEnrollment,\n TecEnrollmentStatus,\n} from './technospamApi';\n\nexport type BuiEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED' | 'EXPIRED';\nexport type BuiCertificateStatus = 'ISSUED' | 'REVOKED' | 'EXPIRED';\n\nexport interface BuiMyEnrollmentRow {\n id: string;\n status: BuiEnrollmentStatus;\n progressPct: number;\n enrolledAt: string;\n startedAt?: string | null;\n lastActiveAt?: string | null;\n completedAt?: string | null;\n createdAt: string;\n updatedAt: string;\n technospamNextLessonId?: string | null;\n technospamEnrollment?: {\n id: string;\n courseId: string;\n learnerId: string;\n lessonsCompleted: number;\n course?: TecCourse | null;\n } | null;\n}\n\nexport interface BuiMyCertificateRow {\n id: string;\n serial: string;\n status: BuiCertificateStatus;\n issuedAt: string;\n revokedAt?: string | null;\n finalScore?: number | null;\n createdAt: string;\n technospamRevokeReason?: string | null;\n technospamCertificate?: {\n id: string;\n courseId: string;\n learnerId: string;\n score: number;\n course?: TecCourse | null;\n } | null;\n}\n\n/**\n * Technospam has no access-end concept, so a canonical EXPIRED enrollment\n * (access ended in Buildmyiq) is shown as DROPPED: no longer active, not\n * completed.\n */\nfunction toTecEnrollmentStatus(status: BuiEnrollmentStatus): TecEnrollmentStatus {\n return status === 'EXPIRED' ? 'DROPPED' : status;\n}\n\nexport function toTecEnrollment(row: BuiMyEnrollmentRow): TecEnrollment | null {\n const tec = row.technospamEnrollment;\n if (!tec) return null;\n return {\n id: tec.id,\n courseId: tec.courseId,\n learnerId: tec.learnerId,\n status: toTecEnrollmentStatus(row.status),\n progressPct: row.progressPct,\n lessonsCompleted: tec.lessonsCompleted,\n startedAt: row.startedAt ?? row.enrolledAt,\n lastActiveAt: row.lastActiveAt ?? null,\n completedAt: row.completedAt ?? null,\n createdAt: row.createdAt,\n updatedAt: row.updatedAt,\n course: tec.course ?? null,\n nextLessonId: row.technospamNextLessonId ?? null,\n buiEnrollmentId: row.id,\n };\n}\n\nexport function toTecCertificate(row: BuiMyCertificateRow): TecCertificate | null {\n const tec = row.technospamCertificate;\n if (!tec) return null;\n const status: TecCertificateStatus = row.status;\n return {\n id: tec.id,\n courseId: tec.courseId,\n learnerId: tec.learnerId,\n serial: row.serial,\n score: row.finalScore ?? tec.score,\n status,\n issuedAt: row.issuedAt,\n revokedAt: row.revokedAt ?? null,\n revokeReason: row.technospamRevokeReason ?? null,\n createdAt: row.createdAt,\n course: tec.course ?? null,\n buiCertificateId: row.id,\n };\n}\n\n/** Map a page of canonical rows, dropping any whose Technospam overlay is missing. */\nexport function mapRows<Row, Out>(\n rows: readonly Row[] | null | undefined,\n map: (row: Row) => Out | null\n): Out[] {\n const out: Out[] = [];\n for (const row of rows ?? []) {\n const mapped = map(row);\n if (mapped) out.push(mapped);\n }\n return out;\n}\n\n/**\n * Narrow to one Technospam course. Applied on top of the server-side\n * `courseId` filter (which takes the canonical course id) so the result is\n * right even before the course's canonical id is known.\n */\nexport function forTechnospamCourse<T extends { courseId: string }>(\n rows: T[],\n technospamCourseId?: string\n): T[] {\n return technospamCourseId ? rows.filter((row) => row.courseId === technospamCourseId) : rows;\n}\n"],"mappings":";AA8EA,SAAS,EAAsB,GAAkD;AAC/E,QAAO,MAAW,YAAY,YAAY;;AAG5C,SAAgB,EAAgB,GAA+C;CAC7E,IAAM,IAAM,EAAI;AAEhB,QADK,IACE;EACL,IAAI,EAAI;EACR,UAAU,EAAI;EACd,WAAW,EAAI;EACf,QAAQ,EAAsB,EAAI,OAAO;EACzC,aAAa,EAAI;EACjB,kBAAkB,EAAI;EACtB,WAAW,EAAI,aAAa,EAAI;EAChC,cAAc,EAAI,gBAAgB;EAClC,aAAa,EAAI,eAAe;EAChC,WAAW,EAAI;EACf,WAAW,EAAI;EACf,QAAQ,EAAI,UAAU;EACtB,cAAc,EAAI,0BAA0B;EAC5C,iBAAiB,EAAI;EACtB,GAhBgB;;AAmBnB,SAAgB,EAAiB,GAAiD;CAChF,IAAM,IAAM,EAAI;AAChB,KAAI,CAAC,EAAK,QAAO;CACjB,IAAM,IAA+B,EAAI;AACzC,QAAO;EACL,IAAI,EAAI;EACR,UAAU,EAAI;EACd,WAAW,EAAI;EACf,QAAQ,EAAI;EACZ,OAAO,EAAI,cAAc,EAAI;EAC7B;EACA,UAAU,EAAI;EACd,WAAW,EAAI,aAAa;EAC5B,cAAc,EAAI,0BAA0B;EAC5C,WAAW,EAAI;EACf,QAAQ,EAAI,UAAU;EACtB,kBAAkB,EAAI;EACvB;;AAIH,SAAgB,EACd,GACA,GACO;CACP,IAAM,IAAa,EAAE;AACrB,MAAK,IAAM,KAAO,KAAQ,EAAE,EAAE;EAC5B,IAAM,IAAS,EAAI,EAAI;AACvB,EAAI,KAAQ,EAAI,KAAK,EAAO;;AAE9B,QAAO;;AAQT,SAAgB,EACd,GACA,GACK;AACL,QAAO,IAAqB,EAAK,QAAQ,MAAQ,EAAI,aAAa,EAAmB,GAAG"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ErrorLike } from '@apollo/client';
|
|
2
2
|
import { useMutation, useQuery } from '@apollo/client/react';
|
|
3
|
+
import { BuiMyCertificateRow, BuiMyEnrollmentRow } from './canonicalLearning';
|
|
3
4
|
|
|
4
5
|
export type TecCourseLevel = 'BEGINNER' | 'INTERMEDIATE' | 'ADVANCED' | 'EXPERT';
|
|
5
6
|
export type TecCourseStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';
|
|
6
7
|
export type TecLessonKind = 'VIDEO' | 'ARTICLE' | 'INTERACTIVE' | 'QUIZ' | 'PROJECT';
|
|
7
8
|
export type TecEnrollmentStatus = 'ENROLLED' | 'IN_PROGRESS' | 'COMPLETED' | 'DROPPED';
|
|
8
|
-
|
|
9
|
+
/** EXPIRED only arrives from the canonical Buildmyiq certificate (BOFF-10481). */
|
|
10
|
+
export type TecCertificateStatus = 'ISSUED' | 'REVOKED' | 'EXPIRED';
|
|
9
11
|
export type TecProblemDifficulty = 'EASY' | 'MEDIUM' | 'HARD';
|
|
10
12
|
export type TecProblemStatus = 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';
|
|
11
13
|
export type TecInterviewFrequency = 'LOW' | 'MEDIUM' | 'HIGH';
|
|
@@ -33,6 +35,8 @@ export interface TecCourse {
|
|
|
33
35
|
* non-preview lesson's `content` is already null in the API response.
|
|
34
36
|
*/
|
|
35
37
|
isLocked: boolean;
|
|
38
|
+
/** BOFF-10481: the canonical Buildmyiq course id; null until the course is mirrored. */
|
|
39
|
+
buiCourseId?: string | null;
|
|
36
40
|
publishedAt?: string | null;
|
|
37
41
|
createdAt: string;
|
|
38
42
|
updatedAt: string;
|
|
@@ -134,6 +138,8 @@ export interface TecEnrollment {
|
|
|
134
138
|
course?: TecCourse | null;
|
|
135
139
|
/** BOFF-4107: first lesson not yet completed; null when every lesson is done. */
|
|
136
140
|
nextLessonId?: string | null;
|
|
141
|
+
/** BOFF-10481: the canonical Buildmyiq enrollment this view was read from. */
|
|
142
|
+
buiEnrollmentId?: string | null;
|
|
137
143
|
}
|
|
138
144
|
export interface TecCertificate {
|
|
139
145
|
id: string;
|
|
@@ -147,6 +153,8 @@ export interface TecCertificate {
|
|
|
147
153
|
revokeReason?: string | null;
|
|
148
154
|
createdAt: string;
|
|
149
155
|
course?: TecCourse | null;
|
|
156
|
+
/** BOFF-10481: the canonical Buildmyiq certificate this view was read from. */
|
|
157
|
+
buiCertificateId?: string | null;
|
|
150
158
|
}
|
|
151
159
|
export interface TecProblem {
|
|
152
160
|
id: string;
|
|
@@ -372,12 +380,389 @@ export declare const useCertificatesQuery: (vars: {
|
|
|
372
380
|
}) => useQuery.Result<{
|
|
373
381
|
tecListCertificates: TecCertificate[];
|
|
374
382
|
}, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
|
|
375
|
-
/**
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
383
|
+
/**
|
|
384
|
+
* Which of the learner's own records to read. `buiCourseId` narrows on the
|
|
385
|
+
* server (canonical id); `technospamCourseId` narrows on the client, so a
|
|
386
|
+
* course page gets the right rows even before its canonical id is known.
|
|
387
|
+
*/
|
|
388
|
+
export interface MyLearningScope {
|
|
389
|
+
buiCourseId?: string | null;
|
|
390
|
+
technospamCourseId?: string;
|
|
391
|
+
limit?: number;
|
|
392
|
+
skip?: boolean;
|
|
393
|
+
}
|
|
394
|
+
/** The signed-in learner's own TechnoSpam enrollments (canonical, self-scoped). */
|
|
395
|
+
export declare function useMyEnrollmentsQuery(scope?: MyLearningScope): {
|
|
396
|
+
enrollments: TecEnrollment[];
|
|
397
|
+
client: import('@apollo/client').ApolloClient;
|
|
398
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
399
|
+
buiMyEnrollments: {
|
|
400
|
+
items: BuiMyEnrollmentRow[];
|
|
401
|
+
pageInfo: TecPageInfo;
|
|
402
|
+
};
|
|
403
|
+
}, import('@apollo/client').OperationVariables>;
|
|
404
|
+
previousData?: {
|
|
405
|
+
buiMyEnrollments: {
|
|
406
|
+
items: BuiMyEnrollmentRow[];
|
|
407
|
+
pageInfo: TecPageInfo;
|
|
408
|
+
};
|
|
409
|
+
} | undefined;
|
|
410
|
+
error?: ErrorLike;
|
|
411
|
+
loading: boolean;
|
|
412
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
413
|
+
startPolling: (pollInterval: number) => void;
|
|
414
|
+
stopPolling: () => void;
|
|
415
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
416
|
+
buiMyEnrollments: {
|
|
417
|
+
items: BuiMyEnrollmentRow[];
|
|
418
|
+
pageInfo: TecPageInfo;
|
|
419
|
+
};
|
|
420
|
+
}, import('@apollo/client').OperationVariables>;
|
|
421
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
422
|
+
buiMyEnrollments: {
|
|
423
|
+
items: BuiMyEnrollmentRow[];
|
|
424
|
+
pageInfo: TecPageInfo;
|
|
425
|
+
};
|
|
426
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
427
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
428
|
+
data: {
|
|
429
|
+
buiMyEnrollments: {
|
|
430
|
+
items: BuiMyEnrollmentRow[];
|
|
431
|
+
pageInfo: TecPageInfo;
|
|
432
|
+
};
|
|
433
|
+
} | undefined;
|
|
434
|
+
error?: ErrorLike;
|
|
435
|
+
}>;
|
|
436
|
+
variables: import('@apollo/client').OperationVariables;
|
|
437
|
+
fetchMore: <TFetchData = {
|
|
438
|
+
buiMyEnrollments: {
|
|
439
|
+
items: BuiMyEnrollmentRow[];
|
|
440
|
+
pageInfo: TecPageInfo;
|
|
441
|
+
};
|
|
442
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
443
|
+
buiMyEnrollments: {
|
|
444
|
+
items: BuiMyEnrollmentRow[];
|
|
445
|
+
pageInfo: TecPageInfo;
|
|
446
|
+
};
|
|
447
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
448
|
+
data: TFetchData | undefined;
|
|
449
|
+
error?: ErrorLike;
|
|
450
|
+
}>;
|
|
451
|
+
data: undefined;
|
|
452
|
+
dataState: "empty";
|
|
453
|
+
} | {
|
|
454
|
+
enrollments: TecEnrollment[];
|
|
455
|
+
client: import('@apollo/client').ApolloClient;
|
|
456
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
457
|
+
buiMyEnrollments: {
|
|
458
|
+
items: BuiMyEnrollmentRow[];
|
|
459
|
+
pageInfo: TecPageInfo;
|
|
460
|
+
};
|
|
461
|
+
}, import('@apollo/client').OperationVariables>;
|
|
462
|
+
previousData?: {
|
|
463
|
+
buiMyEnrollments: {
|
|
464
|
+
items: BuiMyEnrollmentRow[];
|
|
465
|
+
pageInfo: TecPageInfo;
|
|
466
|
+
};
|
|
467
|
+
} | undefined;
|
|
468
|
+
error?: ErrorLike;
|
|
469
|
+
loading: boolean;
|
|
470
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
471
|
+
startPolling: (pollInterval: number) => void;
|
|
472
|
+
stopPolling: () => void;
|
|
473
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
474
|
+
buiMyEnrollments: {
|
|
475
|
+
items: BuiMyEnrollmentRow[];
|
|
476
|
+
pageInfo: TecPageInfo;
|
|
477
|
+
};
|
|
478
|
+
}, import('@apollo/client').OperationVariables>;
|
|
479
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
480
|
+
buiMyEnrollments: {
|
|
481
|
+
items: BuiMyEnrollmentRow[];
|
|
482
|
+
pageInfo: TecPageInfo;
|
|
483
|
+
};
|
|
484
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
485
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
486
|
+
data: {
|
|
487
|
+
buiMyEnrollments: {
|
|
488
|
+
items: BuiMyEnrollmentRow[];
|
|
489
|
+
pageInfo: TecPageInfo;
|
|
490
|
+
};
|
|
491
|
+
} | undefined;
|
|
492
|
+
error?: ErrorLike;
|
|
493
|
+
}>;
|
|
494
|
+
variables: import('@apollo/client').OperationVariables;
|
|
495
|
+
fetchMore: <TFetchData = {
|
|
496
|
+
buiMyEnrollments: {
|
|
497
|
+
items: BuiMyEnrollmentRow[];
|
|
498
|
+
pageInfo: TecPageInfo;
|
|
499
|
+
};
|
|
500
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
501
|
+
buiMyEnrollments: {
|
|
502
|
+
items: BuiMyEnrollmentRow[];
|
|
503
|
+
pageInfo: TecPageInfo;
|
|
504
|
+
};
|
|
505
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
506
|
+
data: TFetchData | undefined;
|
|
507
|
+
error?: ErrorLike;
|
|
508
|
+
}>;
|
|
509
|
+
data: {
|
|
510
|
+
buiMyEnrollments: {
|
|
511
|
+
items: BuiMyEnrollmentRow[];
|
|
512
|
+
pageInfo: TecPageInfo;
|
|
513
|
+
};
|
|
514
|
+
};
|
|
515
|
+
dataState: "complete";
|
|
516
|
+
} | {
|
|
517
|
+
enrollments: TecEnrollment[];
|
|
518
|
+
client: import('@apollo/client').ApolloClient;
|
|
519
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
520
|
+
buiMyEnrollments: {
|
|
521
|
+
items: BuiMyEnrollmentRow[];
|
|
522
|
+
pageInfo: TecPageInfo;
|
|
523
|
+
};
|
|
524
|
+
}, import('@apollo/client').OperationVariables>;
|
|
525
|
+
previousData?: {
|
|
526
|
+
buiMyEnrollments: {
|
|
527
|
+
items: BuiMyEnrollmentRow[];
|
|
528
|
+
pageInfo: TecPageInfo;
|
|
529
|
+
};
|
|
530
|
+
} | undefined;
|
|
531
|
+
error?: ErrorLike;
|
|
532
|
+
loading: boolean;
|
|
533
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
534
|
+
startPolling: (pollInterval: number) => void;
|
|
535
|
+
stopPolling: () => void;
|
|
536
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
537
|
+
buiMyEnrollments: {
|
|
538
|
+
items: BuiMyEnrollmentRow[];
|
|
539
|
+
pageInfo: TecPageInfo;
|
|
540
|
+
};
|
|
541
|
+
}, import('@apollo/client').OperationVariables>;
|
|
542
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
543
|
+
buiMyEnrollments: {
|
|
544
|
+
items: BuiMyEnrollmentRow[];
|
|
545
|
+
pageInfo: TecPageInfo;
|
|
546
|
+
};
|
|
547
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
548
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
549
|
+
data: {
|
|
550
|
+
buiMyEnrollments: {
|
|
551
|
+
items: BuiMyEnrollmentRow[];
|
|
552
|
+
pageInfo: TecPageInfo;
|
|
553
|
+
};
|
|
554
|
+
} | undefined;
|
|
555
|
+
error?: ErrorLike;
|
|
556
|
+
}>;
|
|
557
|
+
variables: import('@apollo/client').OperationVariables;
|
|
558
|
+
fetchMore: <TFetchData = {
|
|
559
|
+
buiMyEnrollments: {
|
|
560
|
+
items: BuiMyEnrollmentRow[];
|
|
561
|
+
pageInfo: TecPageInfo;
|
|
562
|
+
};
|
|
563
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
564
|
+
buiMyEnrollments: {
|
|
565
|
+
items: BuiMyEnrollmentRow[];
|
|
566
|
+
pageInfo: TecPageInfo;
|
|
567
|
+
};
|
|
568
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
569
|
+
data: TFetchData | undefined;
|
|
570
|
+
error?: ErrorLike;
|
|
571
|
+
}>;
|
|
572
|
+
data: {
|
|
573
|
+
buiMyEnrollments: {
|
|
574
|
+
items: BuiMyEnrollmentRow[];
|
|
575
|
+
pageInfo: TecPageInfo;
|
|
576
|
+
};
|
|
577
|
+
};
|
|
578
|
+
dataState: "streaming";
|
|
579
|
+
};
|
|
580
|
+
/** The signed-in learner's own TechnoSpam certificates (canonical, self-scoped). */
|
|
581
|
+
export declare function useMyCertificatesQuery(scope?: MyLearningScope): {
|
|
582
|
+
certificates: TecCertificate[];
|
|
583
|
+
client: import('@apollo/client').ApolloClient;
|
|
584
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
585
|
+
buiMyCertificates: {
|
|
586
|
+
items: BuiMyCertificateRow[];
|
|
587
|
+
pageInfo: TecPageInfo;
|
|
588
|
+
};
|
|
589
|
+
}, import('@apollo/client').OperationVariables>;
|
|
590
|
+
previousData?: {
|
|
591
|
+
buiMyCertificates: {
|
|
592
|
+
items: BuiMyCertificateRow[];
|
|
593
|
+
pageInfo: TecPageInfo;
|
|
594
|
+
};
|
|
595
|
+
} | undefined;
|
|
596
|
+
error?: ErrorLike;
|
|
597
|
+
loading: boolean;
|
|
598
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
599
|
+
startPolling: (pollInterval: number) => void;
|
|
600
|
+
stopPolling: () => void;
|
|
601
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
602
|
+
buiMyCertificates: {
|
|
603
|
+
items: BuiMyCertificateRow[];
|
|
604
|
+
pageInfo: TecPageInfo;
|
|
605
|
+
};
|
|
606
|
+
}, import('@apollo/client').OperationVariables>;
|
|
607
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
608
|
+
buiMyCertificates: {
|
|
609
|
+
items: BuiMyCertificateRow[];
|
|
610
|
+
pageInfo: TecPageInfo;
|
|
611
|
+
};
|
|
612
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
613
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
614
|
+
data: {
|
|
615
|
+
buiMyCertificates: {
|
|
616
|
+
items: BuiMyCertificateRow[];
|
|
617
|
+
pageInfo: TecPageInfo;
|
|
618
|
+
};
|
|
619
|
+
} | undefined;
|
|
620
|
+
error?: ErrorLike;
|
|
621
|
+
}>;
|
|
622
|
+
variables: import('@apollo/client').OperationVariables;
|
|
623
|
+
fetchMore: <TFetchData = {
|
|
624
|
+
buiMyCertificates: {
|
|
625
|
+
items: BuiMyCertificateRow[];
|
|
626
|
+
pageInfo: TecPageInfo;
|
|
627
|
+
};
|
|
628
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
629
|
+
buiMyCertificates: {
|
|
630
|
+
items: BuiMyCertificateRow[];
|
|
631
|
+
pageInfo: TecPageInfo;
|
|
632
|
+
};
|
|
633
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
634
|
+
data: TFetchData | undefined;
|
|
635
|
+
error?: ErrorLike;
|
|
636
|
+
}>;
|
|
637
|
+
data: undefined;
|
|
638
|
+
dataState: "empty";
|
|
639
|
+
} | {
|
|
640
|
+
certificates: TecCertificate[];
|
|
641
|
+
client: import('@apollo/client').ApolloClient;
|
|
642
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
643
|
+
buiMyCertificates: {
|
|
644
|
+
items: BuiMyCertificateRow[];
|
|
645
|
+
pageInfo: TecPageInfo;
|
|
646
|
+
};
|
|
647
|
+
}, import('@apollo/client').OperationVariables>;
|
|
648
|
+
previousData?: {
|
|
649
|
+
buiMyCertificates: {
|
|
650
|
+
items: BuiMyCertificateRow[];
|
|
651
|
+
pageInfo: TecPageInfo;
|
|
652
|
+
};
|
|
653
|
+
} | undefined;
|
|
654
|
+
error?: ErrorLike;
|
|
655
|
+
loading: boolean;
|
|
656
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
657
|
+
startPolling: (pollInterval: number) => void;
|
|
658
|
+
stopPolling: () => void;
|
|
659
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
660
|
+
buiMyCertificates: {
|
|
661
|
+
items: BuiMyCertificateRow[];
|
|
662
|
+
pageInfo: TecPageInfo;
|
|
663
|
+
};
|
|
664
|
+
}, import('@apollo/client').OperationVariables>;
|
|
665
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
666
|
+
buiMyCertificates: {
|
|
667
|
+
items: BuiMyCertificateRow[];
|
|
668
|
+
pageInfo: TecPageInfo;
|
|
669
|
+
};
|
|
670
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
671
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
672
|
+
data: {
|
|
673
|
+
buiMyCertificates: {
|
|
674
|
+
items: BuiMyCertificateRow[];
|
|
675
|
+
pageInfo: TecPageInfo;
|
|
676
|
+
};
|
|
677
|
+
} | undefined;
|
|
678
|
+
error?: ErrorLike;
|
|
679
|
+
}>;
|
|
680
|
+
variables: import('@apollo/client').OperationVariables;
|
|
681
|
+
fetchMore: <TFetchData = {
|
|
682
|
+
buiMyCertificates: {
|
|
683
|
+
items: BuiMyCertificateRow[];
|
|
684
|
+
pageInfo: TecPageInfo;
|
|
685
|
+
};
|
|
686
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
687
|
+
buiMyCertificates: {
|
|
688
|
+
items: BuiMyCertificateRow[];
|
|
689
|
+
pageInfo: TecPageInfo;
|
|
690
|
+
};
|
|
691
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
692
|
+
data: TFetchData | undefined;
|
|
693
|
+
error?: ErrorLike;
|
|
694
|
+
}>;
|
|
695
|
+
data: {
|
|
696
|
+
buiMyCertificates: {
|
|
697
|
+
items: BuiMyCertificateRow[];
|
|
698
|
+
pageInfo: TecPageInfo;
|
|
699
|
+
};
|
|
700
|
+
};
|
|
701
|
+
dataState: "complete";
|
|
702
|
+
} | {
|
|
703
|
+
certificates: TecCertificate[];
|
|
704
|
+
client: import('@apollo/client').ApolloClient;
|
|
705
|
+
observable: import('@apollo/client').ObservableQuery<{
|
|
706
|
+
buiMyCertificates: {
|
|
707
|
+
items: BuiMyCertificateRow[];
|
|
708
|
+
pageInfo: TecPageInfo;
|
|
709
|
+
};
|
|
710
|
+
}, import('@apollo/client').OperationVariables>;
|
|
711
|
+
previousData?: {
|
|
712
|
+
buiMyCertificates: {
|
|
713
|
+
items: BuiMyCertificateRow[];
|
|
714
|
+
pageInfo: TecPageInfo;
|
|
715
|
+
};
|
|
716
|
+
} | undefined;
|
|
717
|
+
error?: ErrorLike;
|
|
718
|
+
loading: boolean;
|
|
719
|
+
networkStatus: import('@apollo/client').NetworkStatus;
|
|
720
|
+
startPolling: (pollInterval: number) => void;
|
|
721
|
+
stopPolling: () => void;
|
|
722
|
+
subscribeToMore: import('@apollo/client').SubscribeToMoreFunction<{
|
|
723
|
+
buiMyCertificates: {
|
|
724
|
+
items: BuiMyCertificateRow[];
|
|
725
|
+
pageInfo: TecPageInfo;
|
|
726
|
+
};
|
|
727
|
+
}, import('@apollo/client').OperationVariables>;
|
|
728
|
+
updateQuery: (mapFn: import('@apollo/client').UpdateQueryMapFn<{
|
|
729
|
+
buiMyCertificates: {
|
|
730
|
+
items: BuiMyCertificateRow[];
|
|
731
|
+
pageInfo: TecPageInfo;
|
|
732
|
+
};
|
|
733
|
+
}, import('@apollo/client').OperationVariables>) => void;
|
|
734
|
+
refetch: (variables?: Partial<import('@apollo/client').OperationVariables> | undefined) => Promise<{
|
|
735
|
+
data: {
|
|
736
|
+
buiMyCertificates: {
|
|
737
|
+
items: BuiMyCertificateRow[];
|
|
738
|
+
pageInfo: TecPageInfo;
|
|
739
|
+
};
|
|
740
|
+
} | undefined;
|
|
741
|
+
error?: ErrorLike;
|
|
742
|
+
}>;
|
|
743
|
+
variables: import('@apollo/client').OperationVariables;
|
|
744
|
+
fetchMore: <TFetchData = {
|
|
745
|
+
buiMyCertificates: {
|
|
746
|
+
items: BuiMyCertificateRow[];
|
|
747
|
+
pageInfo: TecPageInfo;
|
|
748
|
+
};
|
|
749
|
+
}, TFetchVars extends import('@apollo/client').OperationVariables = import('@apollo/client').OperationVariables>(fetchMoreOptions: import("@apollo/client").ObservableQuery.FetchMoreOptions<{
|
|
750
|
+
buiMyCertificates: {
|
|
751
|
+
items: BuiMyCertificateRow[];
|
|
752
|
+
pageInfo: TecPageInfo;
|
|
753
|
+
};
|
|
754
|
+
}, import('@apollo/client').OperationVariables, TFetchData, TFetchVars>) => Promise<{
|
|
755
|
+
data: TFetchData | undefined;
|
|
756
|
+
error?: ErrorLike;
|
|
757
|
+
}>;
|
|
758
|
+
data: {
|
|
759
|
+
buiMyCertificates: {
|
|
760
|
+
items: BuiMyCertificateRow[];
|
|
761
|
+
pageInfo: TecPageInfo;
|
|
762
|
+
};
|
|
763
|
+
};
|
|
764
|
+
dataState: "streaming";
|
|
765
|
+
};
|
|
381
766
|
export declare const useProblemsQuery: (vars: {
|
|
382
767
|
difficulty?: TecProblemDifficulty;
|
|
383
768
|
status?: TecProblemStatus;
|
|
@@ -736,17 +1121,8 @@ export declare function usePageLimit(step?: number, initial?: number): PageLimit
|
|
|
736
1121
|
export interface LessonPlayerData {
|
|
737
1122
|
tecLesson: TecLesson | null;
|
|
738
1123
|
tecCourse: TecCourse | null;
|
|
739
|
-
tecMyEnrollments: {
|
|
740
|
-
items: TecEnrollment[];
|
|
741
|
-
};
|
|
742
1124
|
}
|
|
743
1125
|
export declare const useLessonPlayerQuery: (courseId: string, lessonId: string) => useQuery.Result<LessonPlayerData, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
|
|
744
|
-
/** courseId → next lesson id for the signed-in learner's enrollments. */
|
|
745
|
-
export declare const useMyNextLessonsQuery: () => useQuery.Result<{
|
|
746
|
-
tecMyEnrollments: {
|
|
747
|
-
items: Pick<TecEnrollment, "id" | "courseId" | "nextLessonId">[];
|
|
748
|
-
};
|
|
749
|
-
}, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
|
|
750
1126
|
export declare const useLessonQuizKeyQuery: (lessonId: string, skip?: boolean) => useQuery.Result<{
|
|
751
1127
|
tecLessonQuizKey: TecQuizQuestionKey[];
|
|
752
1128
|
}, import('@apollo/client').OperationVariables, "empty" | "complete" | "streaming", import('@apollo/client').OperationVariables>;
|