@timeback/masterytrack 0.1.1-beta.20260219190739
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 +225 -0
- package/dist/client.d.ts +32 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/constants.d.ts +19 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +1504 -0
- package/dist/factory.d.ts +23 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/index.d.ts +449 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16943 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/resolve.d.ts +25 -0
- package/dist/lib/resolve.d.ts.map +1 -0
- package/dist/lib/token-provider.d.ts +34 -0
- package/dist/lib/token-provider.d.ts.map +1 -0
- package/dist/lib/transport.d.ts +28 -0
- package/dist/lib/transport.d.ts.map +1 -0
- package/dist/public-types.d.ts +210 -0
- package/dist/public-types.d.ts.map +1 -0
- package/dist/public-types.js +0 -0
- package/dist/resources/assignments.d.ts +30 -0
- package/dist/resources/assignments.d.ts.map +1 -0
- package/dist/resources/authorizer.d.ts +22 -0
- package/dist/resources/authorizer.d.ts.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/inventory.d.ts +23 -0
- package/dist/resources/inventory.d.ts.map +1 -0
- package/dist/types/client.d.ts +61 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MasteryTrack Config Resolution
|
|
3
|
+
*/
|
|
4
|
+
import type { MasteryTrackAuth, MasteryTrackClientConfig, MasteryTrackTransportConfig } from '../types';
|
|
5
|
+
interface ResolvedMasteryTrackConfig {
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
auth: MasteryTrackAuth;
|
|
8
|
+
timeout: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Check whether config is using custom transport mode.
|
|
12
|
+
*
|
|
13
|
+
* @param config - Client config
|
|
14
|
+
* @returns True when config is transport mode
|
|
15
|
+
*/
|
|
16
|
+
declare function isTransportConfig(config: MasteryTrackClientConfig): config is MasteryTrackTransportConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve MasteryTrack config into concrete base URL/auth/timeout values.
|
|
19
|
+
*
|
|
20
|
+
* @param config - Client config input
|
|
21
|
+
* @returns Resolved configuration for transport initialization
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolveMasteryTrackConfig(config: MasteryTrackClientConfig): ResolvedMasteryTrackConfig;
|
|
24
|
+
export { isTransportConfig };
|
|
25
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/lib/resolve.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACX,gBAAgB,EAChB,wBAAwB,EAExB,2BAA2B,EAC3B,MAAM,UAAU,CAAA;AAIjB,UAAU,0BAA0B;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CACf;AAkBD;;;;;GAKG;AACH,iBAAS,iBAAiB,CACzB,MAAM,EAAE,wBAAwB,GAC9B,MAAM,IAAI,2BAA2B,CAEvC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,wBAAwB,GAC9B,0BAA0B,CAoC5B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MasteryTrack JWT Provider
|
|
3
|
+
*
|
|
4
|
+
* Acquires and caches JWT tokens via POST /authorizer.
|
|
5
|
+
*/
|
|
6
|
+
import type { MasteryTrackAuth } from '../types';
|
|
7
|
+
import type { AuthCheckResult } from '@timeback/internal-client-infra';
|
|
8
|
+
interface MasteryTrackJwtProviderConfig {
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
auth: MasteryTrackAuth;
|
|
11
|
+
fetch?: typeof globalThis.fetch;
|
|
12
|
+
refreshAfterMs?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* JWT provider for MasteryTrack API access.
|
|
16
|
+
*
|
|
17
|
+
* Calls `/authorizer` using `x-api-key` and caches JWT responses.
|
|
18
|
+
*/
|
|
19
|
+
export declare class MasteryTrackJwtProvider {
|
|
20
|
+
private readonly baseUrl;
|
|
21
|
+
private readonly fetchImpl;
|
|
22
|
+
private readonly apiKey;
|
|
23
|
+
private readonly defaultEmail;
|
|
24
|
+
private readonly refreshAfterMs;
|
|
25
|
+
private token?;
|
|
26
|
+
private tokenEmail?;
|
|
27
|
+
private refreshAt;
|
|
28
|
+
constructor(config: MasteryTrackJwtProviderConfig);
|
|
29
|
+
getToken(emailOverride?: string): Promise<string>;
|
|
30
|
+
invalidate(): void;
|
|
31
|
+
checkAuth(): Promise<AuthCheckResult>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=token-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-provider.d.ts","sourceRoot":"","sources":["../../src/lib/token-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAatE,UAAU,6BAA6B;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAI;IAErB,YAAY,MAAM,EAAE,6BAA6B,EAMhD;IAEK,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+CtD;IAED,UAAU,IAAI,IAAI,CAIjB;IAEK,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAiB1C;CACD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport Layer
|
|
3
|
+
*
|
|
4
|
+
* HTTP transport for MasteryTrack API communication.
|
|
5
|
+
*/
|
|
6
|
+
import { BaseTransport } from '@timeback/internal-client-infra';
|
|
7
|
+
import type { RequestOptions } from '@timeback/internal-client-infra';
|
|
8
|
+
import type { MasteryTrackJwtProvider } from './token-provider';
|
|
9
|
+
interface TransportInit {
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
jwtProvider: MasteryTrackJwtProvider;
|
|
13
|
+
fetch?: typeof globalThis.fetch;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* HTTP transport for MasteryTrack API communication.
|
|
17
|
+
*
|
|
18
|
+
* MasteryTrack expects auth via X-Auth-Token (Bearer JWT) header
|
|
19
|
+
* rather than Authorization.
|
|
20
|
+
*/
|
|
21
|
+
export declare class Transport extends BaseTransport {
|
|
22
|
+
private readonly jwtProvider;
|
|
23
|
+
constructor(config: TransportInit);
|
|
24
|
+
requestRaw(path: string, options?: RequestOptions): Promise<Response>;
|
|
25
|
+
protected handleErrorResponse(response: Response, requestId?: string): Promise<never>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/lib/transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAI/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE/D,UAAU,aAAa;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,uBAAuB,CAAA;IACpC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,YAAY,MAAM,EAAE,aAAa,EAUhC;IAEc,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOvF;IAED,UAAmB,mBAAmB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC,CAMhB;CACD"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MasteryTrack Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the MasteryTrack API integration.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
interface MasteryTrackErrorDetails {
|
|
8
|
+
[key: string]: unknown
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Standard error response envelope used by MasteryTrack endpoints.
|
|
13
|
+
*/
|
|
14
|
+
interface MasteryTrackErrorResponse {
|
|
15
|
+
success: false
|
|
16
|
+
error: string
|
|
17
|
+
code?: string
|
|
18
|
+
details?: MasteryTrackErrorDetails
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Authorizer success payload.
|
|
23
|
+
*/
|
|
24
|
+
interface MasteryTrackAuthorizerResponse {
|
|
25
|
+
success: true
|
|
26
|
+
jwt: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface MasteryTrackInventoryMetadata {
|
|
30
|
+
url?: string
|
|
31
|
+
type?: string
|
|
32
|
+
subType?: string
|
|
33
|
+
year?: string
|
|
34
|
+
format?: string
|
|
35
|
+
questionTypes?: string[]
|
|
36
|
+
[key: string]: unknown
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface MasteryTrackInventoryItem {
|
|
40
|
+
id: number
|
|
41
|
+
timeback_id: string
|
|
42
|
+
name: string
|
|
43
|
+
subject: string
|
|
44
|
+
grade: string
|
|
45
|
+
grade_rank: number
|
|
46
|
+
version: number
|
|
47
|
+
active: boolean
|
|
48
|
+
metadata?: MasteryTrackInventoryMetadata
|
|
49
|
+
supported: boolean
|
|
50
|
+
created_at: string
|
|
51
|
+
updated_at: string
|
|
52
|
+
invalidated_on: string | null
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface MasteryTrackInventorySearchResponse {
|
|
56
|
+
success: true
|
|
57
|
+
data: MasteryTrackInventoryItem[]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
interface MasteryTrackAssignment {
|
|
61
|
+
id: number
|
|
62
|
+
student_email: string
|
|
63
|
+
test_name: string
|
|
64
|
+
assigned_by?: number
|
|
65
|
+
test_url: string
|
|
66
|
+
status: string
|
|
67
|
+
expires_at?: string
|
|
68
|
+
metadata?: Record<string, unknown>
|
|
69
|
+
created_at: string
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
interface MasteryTrackAssignResponse {
|
|
73
|
+
success: true
|
|
74
|
+
platform?: string
|
|
75
|
+
data: {
|
|
76
|
+
assignment: MasteryTrackAssignment
|
|
77
|
+
message: string
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
interface MasteryTrackInvalidatedAssignment {
|
|
82
|
+
assignment_id: number
|
|
83
|
+
student_email: string
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
interface MasteryTrackInvalidateResponse {
|
|
87
|
+
success: true
|
|
88
|
+
data: {
|
|
89
|
+
message: string
|
|
90
|
+
total_invalidated: number
|
|
91
|
+
invalidated_assignments: MasteryTrackInvalidatedAssignment[]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
type input<T> = T extends {
|
|
96
|
+
_zod: {
|
|
97
|
+
input: any;
|
|
98
|
+
};
|
|
99
|
+
} ? T["_zod"]["input"] : unknown;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* MasteryTrack Schemas
|
|
103
|
+
*
|
|
104
|
+
* Zod schemas for MasteryTrack requests and responses.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
declare const MasteryTrackAuthorizerInput = z.object({
|
|
110
|
+
email: z.email(),
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
type MasteryTrackAuthorizerInput = input<typeof MasteryTrackAuthorizerInput>
|
|
114
|
+
|
|
115
|
+
declare const MasteryTrackInventorySearchParams = z.object({
|
|
116
|
+
name: NonEmptyString.optional(),
|
|
117
|
+
timeback_id: NonEmptyString.optional(),
|
|
118
|
+
grade: NonEmptyString.optional(),
|
|
119
|
+
subject: NonEmptyString.optional(),
|
|
120
|
+
all: z.boolean().optional(),
|
|
121
|
+
})
|
|
122
|
+
type MasteryTrackInventorySearchParams = input<typeof MasteryTrackInventorySearchParams>
|
|
123
|
+
|
|
124
|
+
declare const MasteryTrackAssignmentInput = z
|
|
125
|
+
.object({
|
|
126
|
+
student_email: z.email(),
|
|
127
|
+
timeback_id: NonEmptyString.optional(),
|
|
128
|
+
subject: NonEmptyString.optional(),
|
|
129
|
+
grade_rank: z.number().int().min(0).max(12).optional(),
|
|
130
|
+
assessment_line_item_sourced_id: NonEmptyString.optional(),
|
|
131
|
+
assessment_result_sourced_id: NonEmptyString.optional(),
|
|
132
|
+
})
|
|
133
|
+
.superRefine((value, ctx) => {
|
|
134
|
+
const hasTimebackId = !!value.timeback_id
|
|
135
|
+
const hasSubject = !!value.subject
|
|
136
|
+
const hasGradeRank = value.grade_rank !== undefined
|
|
137
|
+
|
|
138
|
+
if (!hasTimebackId && !hasSubject) {
|
|
139
|
+
ctx.addIssue({
|
|
140
|
+
code: z.ZodIssueCode.custom,
|
|
141
|
+
message: 'must provide either timeback_id or subject',
|
|
142
|
+
path: ['timeback_id'],
|
|
143
|
+
})
|
|
144
|
+
ctx.addIssue({
|
|
145
|
+
code: z.ZodIssueCode.custom,
|
|
146
|
+
message: 'must provide either timeback_id or subject',
|
|
147
|
+
path: ['subject'],
|
|
148
|
+
})
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
if (hasGradeRank && !hasSubject) {
|
|
152
|
+
ctx.addIssue({
|
|
153
|
+
code: z.ZodIssueCode.custom,
|
|
154
|
+
message: 'grade_rank requires subject',
|
|
155
|
+
path: ['grade_rank'],
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
const hasLineItem = !!value.assessment_line_item_sourced_id
|
|
160
|
+
const hasResultId = !!value.assessment_result_sourced_id
|
|
161
|
+
|
|
162
|
+
if (hasLineItem !== hasResultId) {
|
|
163
|
+
ctx.addIssue({
|
|
164
|
+
code: z.ZodIssueCode.custom,
|
|
165
|
+
message:
|
|
166
|
+
'assessment_line_item_sourced_id and assessment_result_sourced_id must be provided together',
|
|
167
|
+
path: hasLineItem
|
|
168
|
+
? ['assessment_result_sourced_id']
|
|
169
|
+
: ['assessment_line_item_sourced_id'],
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
})
|
|
173
|
+
type MasteryTrackAssignmentInput = input<typeof MasteryTrackAssignmentInput>
|
|
174
|
+
|
|
175
|
+
declare const MasteryTrackInvalidateAssignmentInput = z
|
|
176
|
+
.object({
|
|
177
|
+
student_email: z.email(),
|
|
178
|
+
assignment_id: z.number().int().positive().optional(),
|
|
179
|
+
timeback_id: NonEmptyString.optional(),
|
|
180
|
+
subject: NonEmptyString.optional(),
|
|
181
|
+
grade_rank: z.number().int().min(0).max(12).optional(),
|
|
182
|
+
})
|
|
183
|
+
.superRefine((value, ctx) => {
|
|
184
|
+
const byAssignment = value.assignment_id !== undefined
|
|
185
|
+
const byTimeback = !!value.timeback_id
|
|
186
|
+
const bySubjectGrade = !!value.subject && value.grade_rank !== undefined
|
|
187
|
+
|
|
188
|
+
if (!byAssignment && !byTimeback && !bySubjectGrade) {
|
|
189
|
+
ctx.addIssue({
|
|
190
|
+
code: z.ZodIssueCode.custom,
|
|
191
|
+
message:
|
|
192
|
+
'Either assignment_id, timeback_id, or (subject and grade_rank) is required',
|
|
193
|
+
path: ['assignment_id'],
|
|
194
|
+
})
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (value.grade_rank !== undefined && !value.subject) {
|
|
198
|
+
ctx.addIssue({
|
|
199
|
+
code: z.ZodIssueCode.custom,
|
|
200
|
+
message: 'grade_rank requires subject',
|
|
201
|
+
path: ['grade_rank'],
|
|
202
|
+
})
|
|
203
|
+
}
|
|
204
|
+
})
|
|
205
|
+
type MasteryTrackInvalidateAssignmentInput = input<
|
|
206
|
+
typeof MasteryTrackInvalidateAssignmentInput
|
|
207
|
+
>
|
|
208
|
+
|
|
209
|
+
export { MasteryTrackAssignmentInput, MasteryTrackAuthorizerInput, MasteryTrackInvalidateAssignmentInput, MasteryTrackInventorySearchParams };
|
|
210
|
+
export type { MasteryTrackAssignResponse, MasteryTrackAssignment, MasteryTrackAuthorizerResponse, MasteryTrackErrorDetails, MasteryTrackErrorResponse, MasteryTrackInvalidateResponse, MasteryTrackInvalidatedAssignment, MasteryTrackInventoryItem, MasteryTrackInventoryMetadata, MasteryTrackInventorySearchResponse };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-types.d.ts","sourceRoot":"","sources":["../src/public-types.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAA;AAEtD,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,qCAAqC,EACrC,iCAAiC,GACjC,MAAM,qBAAqB,CAAA"}
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assignments Resource
|
|
3
|
+
*
|
|
4
|
+
* MasteryTrack test assignment operations.
|
|
5
|
+
*/
|
|
6
|
+
import type { MasteryTrackAssignmentInput as MasteryTrackAssignmentInputType, MasteryTrackInvalidateAssignmentInput as MasteryTrackInvalidateAssignmentInputType } from '@timeback/types/zod';
|
|
7
|
+
import type { MasteryTrackAssignResponse, MasteryTrackInvalidateResponse } from '@timeback/types/protocols/masterytrack';
|
|
8
|
+
import type { MasteryTrackTransportLike } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Resource for MasteryTrack assignment operations.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AssignmentsResource {
|
|
13
|
+
private readonly transport;
|
|
14
|
+
constructor(transport: MasteryTrackTransportLike);
|
|
15
|
+
/**
|
|
16
|
+
* Assign a test to a student.
|
|
17
|
+
*
|
|
18
|
+
* @param input - Assignment payload
|
|
19
|
+
* @returns Assignment response envelope
|
|
20
|
+
*/
|
|
21
|
+
assign(input: MasteryTrackAssignmentInputType): Promise<MasteryTrackAssignResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Invalidate one or more assignments for a student.
|
|
24
|
+
*
|
|
25
|
+
* @param input - Invalidate payload
|
|
26
|
+
* @returns Invalidate response envelope
|
|
27
|
+
*/
|
|
28
|
+
invalidate(input: MasteryTrackInvalidateAssignmentInputType): Promise<MasteryTrackInvalidateResponse>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=assignments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assignments.d.ts","sourceRoot":"","sources":["../../src/resources/assignments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EACX,2BAA2B,IAAI,+BAA+B,EAC9D,qCAAqC,IAAI,yCAAyC,EAClF,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACX,0BAA0B,EAC1B,8BAA8B,EAC9B,MAAM,wCAAwC,CAAA;AAC/C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEzD;;GAEG;AACH,qBAAa,mBAAmB;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,yBAAyB,EAAI;IAErE;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAMlF;IAED;;;;;OAKG;IACH,UAAU,CACT,KAAK,EAAE,yCAAyC,GAC9C,OAAO,CAAC,8BAA8B,CAAC,CAUzC;CACD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authorizer Resource
|
|
3
|
+
*
|
|
4
|
+
* MasteryTrack authorizer endpoint access.
|
|
5
|
+
*/
|
|
6
|
+
import type { MasteryTrackAuthorizerResponse } from '@timeback/types/protocols/masterytrack';
|
|
7
|
+
import type { MasteryTrackAuthenticatorLike } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Resource for MasteryTrack authorizer operations.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AuthorizerResource {
|
|
12
|
+
private readonly authenticator;
|
|
13
|
+
constructor(authenticator: MasteryTrackAuthenticatorLike);
|
|
14
|
+
/**
|
|
15
|
+
* Authenticate and return a fresh MasteryTrack JWT.
|
|
16
|
+
*
|
|
17
|
+
* @param email - Optional email override for authorizer request
|
|
18
|
+
* @returns Authorizer success payload with JWT
|
|
19
|
+
*/
|
|
20
|
+
getToken(email?: string): Promise<MasteryTrackAuthorizerResponse>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=authorizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorizer.d.ts","sourceRoot":"","sources":["../../src/resources/authorizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAA;AAC5F,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAE7D;;GAEG;AACH,qBAAa,kBAAkB;IAClB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAA1C,YAA6B,aAAa,EAAE,6BAA6B,EAAI;IAE7E;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAMtE;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inventory Resource
|
|
3
|
+
*
|
|
4
|
+
* MasteryTrack test inventory operations.
|
|
5
|
+
*/
|
|
6
|
+
import type { MasteryTrackInventorySearchResponse } from '@timeback/types/protocols/masterytrack';
|
|
7
|
+
import type { MasteryTrackInventorySearchParams as MasteryTrackInventorySearchParamsInput } from '@timeback/types/zod';
|
|
8
|
+
import type { MasteryTrackTransportLike } from '../types';
|
|
9
|
+
/**
|
|
10
|
+
* Resource for MasteryTrack inventory operations.
|
|
11
|
+
*/
|
|
12
|
+
export declare class InventoryResource {
|
|
13
|
+
private readonly transport;
|
|
14
|
+
constructor(transport: MasteryTrackTransportLike);
|
|
15
|
+
/**
|
|
16
|
+
* Search and filter tests in MasteryTrack inventory.
|
|
17
|
+
*
|
|
18
|
+
* @param params - Optional inventory search filters
|
|
19
|
+
* @returns Inventory search response envelope
|
|
20
|
+
*/
|
|
21
|
+
search(params?: MasteryTrackInventorySearchParamsInput): Promise<MasteryTrackInventorySearchResponse>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/resources/inventory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,wCAAwC,CAAA;AACjG,OAAO,KAAK,EACX,iCAAiC,IAAI,sCAAsC,EAC3E,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEzD;;GAEG;AACH,qBAAa,iBAAiB;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAtC,YAA6B,SAAS,EAAE,yBAAyB,EAAI;IAErE;;;;;OAKG;IACH,MAAM,CACL,MAAM,GAAE,sCAA2C,GACjD,OAAO,CAAC,mCAAmC,CAAC,CAG9C;CACD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Configuration Types
|
|
3
|
+
*/
|
|
4
|
+
import type { RequestOptions } from '@timeback/internal-client-infra';
|
|
5
|
+
import type { AuthCheckResult } from '@timeback/internal-client-infra';
|
|
6
|
+
export type MasteryTrackEnvironment = 'staging' | 'production';
|
|
7
|
+
/**
|
|
8
|
+
* Credentials used for MasteryTrack authentication.
|
|
9
|
+
*/
|
|
10
|
+
export interface MasteryTrackAuth {
|
|
11
|
+
apiKey: string;
|
|
12
|
+
email: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Config for environment mode (uses known MasteryTrack base URLs).
|
|
16
|
+
*/
|
|
17
|
+
export interface MasteryTrackEnvConfig {
|
|
18
|
+
env?: MasteryTrackEnvironment;
|
|
19
|
+
auth: MasteryTrackAuth;
|
|
20
|
+
timeout?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Config for explicit URL mode.
|
|
24
|
+
*/
|
|
25
|
+
export interface MasteryTrackExplicitConfig {
|
|
26
|
+
baseUrl: string;
|
|
27
|
+
auth: MasteryTrackAuth;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Authenticator interface for custom transport mode.
|
|
32
|
+
*/
|
|
33
|
+
export interface MasteryTrackAuthenticatorLike {
|
|
34
|
+
getToken(emailOverride?: string): Promise<string>;
|
|
35
|
+
invalidate(): void;
|
|
36
|
+
checkAuth(): Promise<AuthCheckResult>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Transport interface for MasteryTrack client.
|
|
40
|
+
*/
|
|
41
|
+
export interface MasteryTrackTransportLike {
|
|
42
|
+
baseUrl: string;
|
|
43
|
+
request<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
44
|
+
requestRaw(path: string, options?: RequestOptions): Promise<Response>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transport mode config for custom transports.
|
|
48
|
+
*/
|
|
49
|
+
export interface MasteryTrackTransportConfig {
|
|
50
|
+
transport: MasteryTrackTransportLike;
|
|
51
|
+
authenticator: MasteryTrackAuthenticatorLike;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* All supported MasteryTrack client configuration types.
|
|
55
|
+
*/
|
|
56
|
+
export type MasteryTrackClientConfig = MasteryTrackEnvConfig | MasteryTrackExplicitConfig | MasteryTrackTransportConfig | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Instance type of MasteryTrackClient.
|
|
59
|
+
*/
|
|
60
|
+
export type MasteryTrackClientInstance = InstanceType<typeof import('../client').MasteryTrackClient>;
|
|
61
|
+
//# 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,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,YAAY,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,GAAG,CAAC,EAAE,uBAAuB,CAAA;IAC7B,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACjD,UAAU,IAAI,IAAI,CAAA;IAClB,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC9D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,SAAS,EAAE,yBAAyB,CAAA;IACpC,aAAa,EAAE,6BAA6B,CAAA;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GACjC,qBAAqB,GACrB,0BAA0B,GAC1B,2BAA2B,GAC3B,SAAS,CAAA;AAEZ;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACpD,cAAc,WAAW,EAAE,kBAAkB,CAC7C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,UAAU,CAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,eAAe,CAAA"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Internal utilities for the MasteryTrack client.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Scoped logger for the MasteryTrack client.
|
|
8
|
+
* Only logs debug/info when DEBUG=1 or DEBUG=true.
|
|
9
|
+
*/
|
|
10
|
+
export declare const log: import("@timeback/internal-logger").Logger;
|
|
11
|
+
//# 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;;;GAGG;AACH,eAAO,MAAM,GAAG,4CAAqC,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@timeback/masterytrack",
|
|
3
|
+
"version": "0.1.1-beta.20260219190739",
|
|
4
|
+
"description": "MasteryTrack client SDK for Timeback",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"import": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"./errors": {
|
|
12
|
+
"types": "./dist/errors.d.ts",
|
|
13
|
+
"import": "./dist/errors.js"
|
|
14
|
+
},
|
|
15
|
+
"./types": {
|
|
16
|
+
"types": "./dist/public-types.d.ts",
|
|
17
|
+
"import": "./dist/public-types.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"types": "dist/index.d.ts",
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "bun build.ts",
|
|
27
|
+
"test": "bun test --no-env-file unit.test.ts"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"zod": "^4.2.1"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@timeback/internal-client-infra": "0.0.0",
|
|
34
|
+
"@timeback/internal-utils": "0.0.0",
|
|
35
|
+
"@timeback/types": "0.0.0",
|
|
36
|
+
"@types/bun": "latest",
|
|
37
|
+
"esbuild": "^0.27.3"
|
|
38
|
+
},
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"typescript": "^5"
|
|
41
|
+
}
|
|
42
|
+
}
|