@timeback/edubridge 0.1.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.
- package/README.md +220 -0
- package/dist/client.d.ts +70 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +1217 -0
- package/dist/factory.d.ts +46 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1566 -0
- package/dist/lib/index.d.ts +9 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/resolve.d.ts +21 -0
- package/dist/lib/resolve.d.ts.map +1 -0
- package/dist/lib/transport.d.ts +49 -0
- package/dist/lib/transport.d.ts.map +1 -0
- package/dist/resources/analytics.d.ts +56 -0
- package/dist/resources/analytics.d.ts.map +1 -0
- package/dist/resources/applications.d.ts +30 -0
- package/dist/resources/applications.d.ts.map +1 -0
- package/dist/resources/enrollments.d.ts +71 -0
- package/dist/resources/enrollments.d.ts.map +1 -0
- package/dist/resources/index.d.ts +10 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/learning-reports.d.ts +30 -0
- package/dist/resources/learning-reports.d.ts.map +1 -0
- package/dist/resources/subject-track.d.ts +48 -0
- package/dist/resources/subject-track.d.ts.map +1 -0
- package/dist/resources/users.d.ts +53 -0
- package/dist/resources/users.d.ts.map +1 -0
- package/dist/types/analytics.d.ts +208 -0
- package/dist/types/analytics.d.ts.map +1 -0
- package/dist/types/applications.d.ts +27 -0
- package/dist/types/applications.d.ts.map +1 -0
- package/dist/types/base.d.ts +38 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/client.d.ts +52 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/enrollments.d.ts +113 -0
- package/dist/types/enrollments.d.ts.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/learning-reports.d.ts +27 -0
- package/dist/types/learning-reports.d.ts.map +1 -0
- package/dist/types/subject-track.d.ts +54 -0
- package/dist/types/subject-track.d.ts.map +1 -0
- package/dist/types/users.d.ts +107 -0
- package/dist/types/users.d.ts.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/utils.d.ts +64 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/types/applications.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACzC;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Types
|
|
3
|
+
*
|
|
4
|
+
* Common types shared across Edubridge resources.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Resource status.
|
|
8
|
+
*/
|
|
9
|
+
export type Status = 'active' | 'tobedeleted';
|
|
10
|
+
/**
|
|
11
|
+
* User roles in the system.
|
|
12
|
+
*/
|
|
13
|
+
export type Role = 'administrator' | 'aide' | 'guardian' | 'parent' | 'proctor' | 'relative' | 'student' | 'teacher';
|
|
14
|
+
/**
|
|
15
|
+
* Enrollment-specific roles.
|
|
16
|
+
*/
|
|
17
|
+
export type EnrollmentRole = 'administrator' | 'proctor' | 'student' | 'teacher';
|
|
18
|
+
/**
|
|
19
|
+
* Reference to another entity.
|
|
20
|
+
*/
|
|
21
|
+
export interface GUIDRef {
|
|
22
|
+
href: string;
|
|
23
|
+
sourcedId: string;
|
|
24
|
+
type: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Standard Edubridge API response wrapper.
|
|
28
|
+
*/
|
|
29
|
+
export interface DataResponse<T> {
|
|
30
|
+
data: T;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Paginated list response with optional metadata.
|
|
34
|
+
*/
|
|
35
|
+
export interface ListResponse<T> {
|
|
36
|
+
data: T[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,aAAa,CAAA;AAE7C;;GAEG;AACH,MAAM,MAAM,IAAI,GACb,eAAe,GACf,MAAM,GACN,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,SAAS,GACT,SAAS,CAAA;AAEZ;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACZ;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAA;CACP;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,EAAE,CAAA;CACT"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Configuration Types
|
|
3
|
+
*/
|
|
4
|
+
import type { ClientConfig, EdubridgePaths, ProviderClientConfig, RequestOptions, ResolvedProvider, TransportConfigWithTokenProvider, TransportOnlyConfig } from '@timeback/internal-client-infra';
|
|
5
|
+
/**
|
|
6
|
+
* Re-export vital config types for SDK users.
|
|
7
|
+
*/
|
|
8
|
+
export type { Environment, EnvAuth, ExplicitAuth, Platform } from '@timeback/internal-client-infra';
|
|
9
|
+
/**
|
|
10
|
+
* Transport interface for Edubridge client.
|
|
11
|
+
*
|
|
12
|
+
* Extends base transport requirements with Edubridge-specific paths.
|
|
13
|
+
* Required when using transport mode with EdubridgeClient.
|
|
14
|
+
*/
|
|
15
|
+
export interface EdubridgeTransportLike {
|
|
16
|
+
/** Base URL of the API */
|
|
17
|
+
baseUrl: string;
|
|
18
|
+
/** API path profiles for Edubridge operations */
|
|
19
|
+
paths: EdubridgePaths;
|
|
20
|
+
/** Make an authenticated request */
|
|
21
|
+
request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* All supported Edubridge client configuration types.
|
|
25
|
+
*
|
|
26
|
+
* Supports four modes:
|
|
27
|
+
* - **Provider mode**: `{ provider: TimebackProvider }` — pre-built provider with token sharing
|
|
28
|
+
* - **Environment mode**: `{ platform?, env, auth }` — Timeback hosted APIs
|
|
29
|
+
* - **Explicit mode**: `{ baseUrl, auth: { authUrl } }` — custom API URLs
|
|
30
|
+
* - **Transport mode**: `{ transport }` — custom transport with paths
|
|
31
|
+
*
|
|
32
|
+
* The `platform` field (in env mode) selects which Timeback implementation to use:
|
|
33
|
+
* - `'BEYOND_AI'` (default): BeyondAI's Timeback platform
|
|
34
|
+
* - `'LEARNWITH_AI'`: Samy's LearnWith.AI platform
|
|
35
|
+
*/
|
|
36
|
+
export type EdubridgeClientConfig = ClientConfig | TransportOnlyConfig<EdubridgeTransportLike> | ProviderClientConfig;
|
|
37
|
+
/**
|
|
38
|
+
* Configuration for Edubridge transport.
|
|
39
|
+
*/
|
|
40
|
+
export interface EdubridgeTransportConfig extends TransportConfigWithTokenProvider {
|
|
41
|
+
/** API path profiles for Edubridge operations */
|
|
42
|
+
paths: EdubridgePaths;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolved provider type for Edubridge client.
|
|
46
|
+
*/
|
|
47
|
+
export type EdubridgeResolvedProvider = ResolvedProvider<EdubridgeTransportLike>;
|
|
48
|
+
/**
|
|
49
|
+
* Instance type of EdubridgeClient.
|
|
50
|
+
*/
|
|
51
|
+
export type EdubridgeClientInstance = InstanceType<typeof import('../client').EdubridgeClient>;
|
|
52
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACX,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,gCAAgC,EAChC,mBAAmB,EACnB,MAAM,iCAAiC,CAAA;AAExC;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAEnG;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,KAAK,EAAE,cAAc,CAAA;IACrB,oCAAoC;IACpC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAC9D;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,qBAAqB,GAC9B,YAAY,GACZ,mBAAmB,CAAC,sBAAsB,CAAC,GAC3C,oBAAoB,CAAA;AAEvB;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,gCAAgC;IACjF,iDAAiD;IACjD,KAAK,EAAE,cAAc,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,cAAc,WAAW,EAAE,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enrollment Types
|
|
3
|
+
*
|
|
4
|
+
* Types for course-centric enrollment management.
|
|
5
|
+
*/
|
|
6
|
+
import type { EnrollmentRole } from './base';
|
|
7
|
+
/**
|
|
8
|
+
* Course information within an enrollment.
|
|
9
|
+
*/
|
|
10
|
+
export interface EnrollmentCourse {
|
|
11
|
+
id: string;
|
|
12
|
+
title: string;
|
|
13
|
+
metadata: Record<string, unknown>;
|
|
14
|
+
subjects?: string[] | null;
|
|
15
|
+
grades?: string[] | null;
|
|
16
|
+
primaryApp?: {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
domains: string[];
|
|
20
|
+
} | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* School information within an enrollment.
|
|
24
|
+
*/
|
|
25
|
+
export interface EnrollmentSchool {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Enrollment goals metadata.
|
|
31
|
+
*/
|
|
32
|
+
export interface EnrollmentGoals {
|
|
33
|
+
dailyXp?: number;
|
|
34
|
+
dailyLessons?: number;
|
|
35
|
+
dailyActiveMinutes?: number;
|
|
36
|
+
dailyAccuracy?: number;
|
|
37
|
+
dailyMasteredUnits?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Enrollment metrics metadata.
|
|
41
|
+
*/
|
|
42
|
+
export interface EnrollmentMetrics {
|
|
43
|
+
totalXp?: number;
|
|
44
|
+
totalLessons?: number;
|
|
45
|
+
totalGrades?: number;
|
|
46
|
+
courseType?: string;
|
|
47
|
+
isSupplemental?: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Enrollment metadata.
|
|
51
|
+
*/
|
|
52
|
+
export interface EnrollmentMetadata {
|
|
53
|
+
goals?: EnrollmentGoals;
|
|
54
|
+
metrics?: EnrollmentMetrics;
|
|
55
|
+
[key: string]: unknown;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Period information for enrollments.
|
|
59
|
+
*/
|
|
60
|
+
export interface EnrollmentPeriod {
|
|
61
|
+
id: string;
|
|
62
|
+
title: string;
|
|
63
|
+
startDate: string | null;
|
|
64
|
+
endDate: string | null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A user's enrollment in a course.
|
|
68
|
+
*/
|
|
69
|
+
export interface Enrollment {
|
|
70
|
+
id: string;
|
|
71
|
+
role: EnrollmentRole;
|
|
72
|
+
beginDate: string | null;
|
|
73
|
+
endDate: string | null;
|
|
74
|
+
metadata?: EnrollmentMetadata;
|
|
75
|
+
course: EnrollmentCourse;
|
|
76
|
+
school: EnrollmentSchool;
|
|
77
|
+
periods?: EnrollmentPeriod[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Parameters for listing enrollments.
|
|
81
|
+
*/
|
|
82
|
+
export interface ListEnrollmentsParams {
|
|
83
|
+
/** User ID to filter enrollments by */
|
|
84
|
+
userId: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Options for enrolling a user in a course.
|
|
88
|
+
*/
|
|
89
|
+
export interface EnrollOptions {
|
|
90
|
+
/** Optional client-provided ID for the enrollment */
|
|
91
|
+
sourcedId?: string;
|
|
92
|
+
/** Role for the enrollment (default: 'student') */
|
|
93
|
+
role?: EnrollmentRole;
|
|
94
|
+
/** Start date for the enrollment */
|
|
95
|
+
beginDate?: string;
|
|
96
|
+
/** Enrollment metadata including goals and metrics */
|
|
97
|
+
metadata?: EnrollmentMetadata;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Response from reset goals operation.
|
|
101
|
+
*/
|
|
102
|
+
export interface ResetGoalsResult {
|
|
103
|
+
updated: number;
|
|
104
|
+
errors: string[];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Default class information for a course.
|
|
108
|
+
*/
|
|
109
|
+
export interface DefaultClass {
|
|
110
|
+
classSourcedId: string;
|
|
111
|
+
termSourcedId: string;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=enrollments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrollments.d.ts","sourceRoot":"","sources":["../../src/types/enrollments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAM5C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACxB,UAAU,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,EAAE,CAAA;KACjB,GAAG,IAAI,CAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,iBAAiB,CAAA;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,cAAc,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,gBAAgB,CAAA;IACxB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC5B;AAMD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,kBAAkB,CAAA;CAC7B;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACrB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edubridge Types
|
|
3
|
+
*
|
|
4
|
+
* All entity and domain types for `@timeback/edubridge`.
|
|
5
|
+
*/
|
|
6
|
+
export * from './analytics';
|
|
7
|
+
export * from './applications';
|
|
8
|
+
export * from './base';
|
|
9
|
+
export * from './client';
|
|
10
|
+
export * from './enrollments';
|
|
11
|
+
export * from './learning-reports';
|
|
12
|
+
export * from './subject-track';
|
|
13
|
+
export * from './users';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Reports Types
|
|
3
|
+
*
|
|
4
|
+
* Types for learning reports endpoints.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MAP (Measures of Academic Progress) profile data.
|
|
8
|
+
*/
|
|
9
|
+
export interface MapProfile {
|
|
10
|
+
userId: string;
|
|
11
|
+
ritScore?: number;
|
|
12
|
+
percentile?: number;
|
|
13
|
+
gradeLevel?: string;
|
|
14
|
+
testDate?: string;
|
|
15
|
+
subject?: string;
|
|
16
|
+
metadata?: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Time saved metrics for a user.
|
|
20
|
+
*/
|
|
21
|
+
export interface TimeSaved {
|
|
22
|
+
userId: string;
|
|
23
|
+
totalMinutesSaved?: number;
|
|
24
|
+
breakdownBySubject?: Record<string, number>;
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=learning-reports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning-reports.d.ts","sourceRoot":"","sources":["../../src/types/learning-reports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAMD;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subject Track Types
|
|
3
|
+
*
|
|
4
|
+
* Types for subject track management.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* A subject track mapping subject + grade to a target course.
|
|
8
|
+
*/
|
|
9
|
+
export interface SubjectTrack {
|
|
10
|
+
id: string;
|
|
11
|
+
subject: string;
|
|
12
|
+
gradeLevel: string;
|
|
13
|
+
targetCourseId: string;
|
|
14
|
+
targetCourseName?: string;
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A group of subject tracks.
|
|
19
|
+
*/
|
|
20
|
+
export interface SubjectTrackGroup {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
tracks: SubjectTrack[];
|
|
25
|
+
metadata?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Response from the subject tracks list endpoint.
|
|
29
|
+
*/
|
|
30
|
+
export interface SubjectTrackListResponse {
|
|
31
|
+
subjectTrack: SubjectTrack[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Response from the subject track groups endpoint.
|
|
35
|
+
*/
|
|
36
|
+
export interface SubjectTrackGroupsResponse {
|
|
37
|
+
groups: SubjectTrackGroup[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Response from the subject track update (PUT) endpoint.
|
|
41
|
+
*/
|
|
42
|
+
export interface SubjectTrackUpdateResponse {
|
|
43
|
+
subjectTrack: SubjectTrack;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parameters for creating/updating a subject track.
|
|
47
|
+
*/
|
|
48
|
+
export interface SubjectTrackInput {
|
|
49
|
+
subject: string;
|
|
50
|
+
gradeLevel: string;
|
|
51
|
+
targetCourseId: string;
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=subject-track.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject-track.d.ts","sourceRoot":"","sources":["../../src/types/subject-track.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAMD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,YAAY,EAAE,YAAY,EAAE,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,YAAY,EAAE,YAAY,CAAA;CAC1B;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User Types
|
|
3
|
+
*
|
|
4
|
+
* Types for user management.
|
|
5
|
+
*/
|
|
6
|
+
import type { GUIDRef, Role, Status } from './base';
|
|
7
|
+
/**
|
|
8
|
+
* User identifier (external ID).
|
|
9
|
+
*/
|
|
10
|
+
export interface UserId {
|
|
11
|
+
type: string;
|
|
12
|
+
identifier: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* User role assignment.
|
|
16
|
+
*/
|
|
17
|
+
export interface UserRole {
|
|
18
|
+
roleType: 'primary' | 'secondary';
|
|
19
|
+
role: Role;
|
|
20
|
+
org: GUIDRef;
|
|
21
|
+
userProfile?: string;
|
|
22
|
+
metadata?: Record<string, unknown> | null;
|
|
23
|
+
beginDate?: string | null;
|
|
24
|
+
endDate?: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Application credentials for a user.
|
|
28
|
+
*/
|
|
29
|
+
export interface UserCredential {
|
|
30
|
+
id: string;
|
|
31
|
+
type: string;
|
|
32
|
+
username: string;
|
|
33
|
+
password?: string | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Application info within a user profile.
|
|
37
|
+
*/
|
|
38
|
+
export interface UserApp {
|
|
39
|
+
sourcedId: string;
|
|
40
|
+
name: string;
|
|
41
|
+
description?: string | null;
|
|
42
|
+
domain: string[];
|
|
43
|
+
metadata?: Record<string, unknown> | null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* User profile for an application.
|
|
47
|
+
*/
|
|
48
|
+
export interface UserProfile {
|
|
49
|
+
profileId: string;
|
|
50
|
+
profileType: string;
|
|
51
|
+
vendorId: string;
|
|
52
|
+
applicationId: string;
|
|
53
|
+
description?: string | null;
|
|
54
|
+
app: UserApp;
|
|
55
|
+
credentials: UserCredential[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Primary organization reference.
|
|
59
|
+
*/
|
|
60
|
+
export interface PrimaryOrg {
|
|
61
|
+
sourcedId: string;
|
|
62
|
+
name: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A user in the system.
|
|
66
|
+
*/
|
|
67
|
+
export interface User {
|
|
68
|
+
sourcedId: string;
|
|
69
|
+
status: Status;
|
|
70
|
+
dateLastModified: string;
|
|
71
|
+
metadata?: Record<string, unknown> | null;
|
|
72
|
+
userMasterIdentifier?: string | null;
|
|
73
|
+
username?: string | null;
|
|
74
|
+
userIds: UserId[];
|
|
75
|
+
enabledUser: boolean;
|
|
76
|
+
givenName: string;
|
|
77
|
+
familyName: string;
|
|
78
|
+
middleName?: string | null;
|
|
79
|
+
roles: UserRole[];
|
|
80
|
+
agents: GUIDRef[];
|
|
81
|
+
userProfiles: UserProfile[];
|
|
82
|
+
primaryOrg?: PrimaryOrg;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parameters for listing users by role.
|
|
86
|
+
*/
|
|
87
|
+
export interface ListUsersParams {
|
|
88
|
+
/** Fields to include in response */
|
|
89
|
+
fields?: string;
|
|
90
|
+
/** Maximum items to return */
|
|
91
|
+
limit?: number;
|
|
92
|
+
/** Items to skip */
|
|
93
|
+
offset?: number;
|
|
94
|
+
/** Field to sort by */
|
|
95
|
+
sort?: string;
|
|
96
|
+
/** Sort order */
|
|
97
|
+
orderBy?: 'asc' | 'desc';
|
|
98
|
+
/** OneRoster filter expression */
|
|
99
|
+
filter?: string;
|
|
100
|
+
/** Free-text search */
|
|
101
|
+
search?: string;
|
|
102
|
+
/** Roles to filter by (required) */
|
|
103
|
+
roles: Role[];
|
|
104
|
+
/** Organization IDs to filter by */
|
|
105
|
+
orgSourcedIds?: string[];
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/types/users.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,eAAe,CAAA"}
|
package/dist/types.js
ADDED
|
File without changes
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Internal utilities for the Edubridge client.
|
|
5
|
+
*/
|
|
6
|
+
import type { AggregatedMetrics, DailyActivityMap } from './types/analytics';
|
|
7
|
+
/**
|
|
8
|
+
* Scoped logger for the Edubridge client.
|
|
9
|
+
* Only logs debug/info when DEBUG=1 or DEBUG=true.
|
|
10
|
+
*/
|
|
11
|
+
export declare const log: import("@timeback/internal-logger").Logger;
|
|
12
|
+
/**
|
|
13
|
+
* Normalize a boolean-like value to a boolean.
|
|
14
|
+
*
|
|
15
|
+
* The Beyond-AI API sometimes returns boolean fields as strings (`"true"`/`"false"`).
|
|
16
|
+
* This normalizes them to actual booleans for a stable, predictable API.
|
|
17
|
+
*
|
|
18
|
+
* @param value - Boolean-like value from the API
|
|
19
|
+
* @returns Normalized boolean
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeBoolean(value: boolean | string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Normalize a User object from the API.
|
|
24
|
+
*
|
|
25
|
+
* Applies all necessary field normalizations to ensure consistent types.
|
|
26
|
+
* Currently normalizes:
|
|
27
|
+
* - `enabledUser`: string → boolean
|
|
28
|
+
*
|
|
29
|
+
* @param user - Raw user from the API
|
|
30
|
+
* @returns User with normalized fields
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeUser<T extends {
|
|
33
|
+
enabledUser: boolean;
|
|
34
|
+
}>(user: T): T;
|
|
35
|
+
/**
|
|
36
|
+
* Normalize a date string to full ISO 8601 format.
|
|
37
|
+
*
|
|
38
|
+
* The Edubridge API requires full ISO 8601 datetime format (e.g., `2025-12-25T00:00:00.000Z`).
|
|
39
|
+
* This function accepts multiple input formats for developer convenience:
|
|
40
|
+
* - Date-only: `2025-12-25` → `2025-12-25T00:00:00.000Z`
|
|
41
|
+
* - Full ISO: `2025-12-25T10:30:00.000Z` → passed through unchanged
|
|
42
|
+
* - Date object: `new Date()` → `.toISOString()`
|
|
43
|
+
*
|
|
44
|
+
* @param date - Date string or Date object
|
|
45
|
+
* @returns Full ISO 8601 datetime string, or undefined if input is undefined
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeDate(date: string | Date | undefined): string | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Aggregate activity metrics from a DailyActivityMap.
|
|
50
|
+
*
|
|
51
|
+
* Sums up all metrics across dates and subjects into a single totals object.
|
|
52
|
+
*
|
|
53
|
+
* @param data - Activity data grouped by date and subject
|
|
54
|
+
* @returns Aggregated totals
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const activity = await client.analytics.getActivity({ ... })
|
|
59
|
+
* const totals = aggregateActivityMetrics(activity)
|
|
60
|
+
* console.log(`Total XP: ${totals.totalXp}`)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function aggregateActivityMetrics(data: DailyActivityMap): AggregatedMetrics;
|
|
64
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,GAAG,4CAAkC,CAAA;AAElD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAGjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAK5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA8BjF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,iBAAiB,CAoClF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@timeback/edubridge",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"import": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"./errors": {
|
|
11
|
+
"types": "./dist/errors.d.ts",
|
|
12
|
+
"import": "./dist/errors.js"
|
|
13
|
+
},
|
|
14
|
+
"./types": {
|
|
15
|
+
"types": "./dist/types.d.ts",
|
|
16
|
+
"import": "./dist/types.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"main": "dist/index.js",
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "bun build.ts",
|
|
26
|
+
"test": "bun test --no-env-file unit.test.ts"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@timeback/internal-client-infra": "0.0.0",
|
|
30
|
+
"@timeback/internal-constants": "0.0.0",
|
|
31
|
+
"@timeback/internal-logger": "0.0.0",
|
|
32
|
+
"@timeback/internal-test": "0.0.0",
|
|
33
|
+
"@timeback/internal-utils": "0.0.0",
|
|
34
|
+
"@timeback/types": "0.0.0",
|
|
35
|
+
"@types/bun": "latest"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"typescript": "^5"
|
|
39
|
+
}
|
|
40
|
+
}
|