@timeback/sdk 0.1.9 → 0.1.11
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 +10 -8
- package/dist/chunk-1cqa51je.js +2 -0
- package/dist/chunk-3ew9vn2d.js +2 -0
- package/dist/chunk-6b0ppq9d.js +2 -0
- package/dist/chunk-92nnwa7t.js +2 -0
- package/dist/chunk-bavxzt1k.js +2 -0
- package/dist/chunk-c8pw96sp.js +10 -0
- package/dist/chunk-edk3nfj7.js +2 -0
- package/dist/chunk-g67efaph.js +4 -0
- package/dist/chunk-pd91g539.js +1 -0
- package/dist/chunk-sgcwg4j6.js +1 -0
- package/dist/client/adapters/react/hooks/types.d.ts +2 -29
- package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +2 -2
- package/dist/client/adapters/solid/types.d.ts +2 -29
- package/dist/client/adapters/solid/types.d.ts.map +1 -1
- package/dist/client/adapters/solid/types.ts +2 -18
- package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/client.ts +2 -9
- package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
- package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/profile.ts +4 -11
- package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/verification.ts +1 -10
- package/dist/client/adapters/svelte/types.d.ts +1 -29
- package/dist/client/adapters/svelte/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.ts +4 -11
- package/dist/client/adapters/vue/types.d.ts +2 -29
- package/dist/client/adapters/vue/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/types.ts +2 -18
- package/dist/client/auth/types.d.ts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/lib/activity/activity.class.d.ts +130 -22
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/activity/transport.d.ts +15 -0
- package/dist/client/lib/activity/transport.d.ts.map +1 -0
- package/dist/client/lib/activity/types.d.ts +53 -0
- package/dist/client/lib/activity/types.d.ts.map +1 -0
- package/dist/client/lib/utils.d.ts +18 -0
- package/dist/client/lib/utils.d.ts.map +1 -1
- package/dist/client/lib/utils.ts +109 -0
- package/dist/client/namespaces/activity.d.ts +49 -7
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client/timeback-client.class.d.ts +7 -1
- package/dist/client/timeback-client.class.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/identity.d.ts +2 -5
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -21
- package/dist/server/adapters/express.d.ts.map +1 -1
- package/dist/server/adapters/express.js +1 -1
- package/dist/server/adapters/native.d.ts.map +1 -1
- package/dist/server/adapters/native.js +2 -2
- package/dist/server/adapters/nextjs.js +1 -1
- package/dist/server/adapters/nuxt.d.ts.map +1 -1
- package/dist/server/adapters/nuxt.js +1 -1
- package/dist/server/adapters/solid-start.d.ts.map +1 -1
- package/dist/server/adapters/solid-start.js +1 -1
- package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
- package/dist/server/adapters/svelte-kit.js +1 -1
- package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
- package/dist/server/adapters/tanstack-start.js +1 -1
- package/dist/server/adapters/types.d.ts +16 -4
- package/dist/server/adapters/types.d.ts.map +1 -1
- package/dist/server/adapters/utils.d.ts +1 -1
- package/dist/server/adapters/utils.d.ts.map +1 -1
- package/dist/server/handlers/activity/attempts.d.ts +1 -1
- package/dist/server/handlers/activity/attempts.d.ts.map +1 -1
- package/dist/server/handlers/activity/caliper.d.ts +54 -16
- package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
- package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
- package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/index.d.ts +5 -3
- package/dist/server/handlers/activity/index.d.ts.map +1 -1
- package/dist/server/handlers/activity/progress.d.ts +2 -2
- package/dist/server/handlers/activity/progress.d.ts.map +1 -1
- package/dist/server/handlers/activity/schema.d.ts +40 -6
- package/dist/server/handlers/activity/schema.d.ts.map +1 -1
- package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
- package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/submit.d.ts +44 -0
- package/dist/server/handlers/activity/submit.d.ts.map +1 -0
- package/dist/server/handlers/activity/types.d.ts +126 -5
- package/dist/server/handlers/activity/types.d.ts.map +1 -1
- package/dist/server/handlers/identity/handler.d.ts +23 -4
- package/dist/server/handlers/identity/handler.d.ts.map +1 -1
- package/dist/server/handlers/identity/index.d.ts +2 -2
- package/dist/server/handlers/identity/index.d.ts.map +1 -1
- package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
- package/dist/server/handlers/identity/types.d.ts +0 -6
- package/dist/server/handlers/identity/types.d.ts.map +1 -1
- package/dist/server/handlers/index.d.ts +3 -3
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/user/handler.d.ts.map +1 -1
- package/dist/server/handlers/user/profile.d.ts.map +1 -1
- package/dist/server/handlers/user/types.d.ts +3 -0
- package/dist/server/handlers/user/types.d.ts.map +1 -1
- package/dist/server/handlers/user/verify.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/lib/hooks.d.ts +20 -0
- package/dist/server/lib/hooks.d.ts.map +1 -0
- package/dist/server/lib/index.d.ts +4 -2
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/logger.d.ts +36 -9
- package/dist/server/lib/logger.d.ts.map +1 -1
- package/dist/server/lib/resolve.d.ts +1 -1
- package/dist/server/lib/resolve.d.ts.map +1 -1
- package/dist/server/lib/utils.d.ts +23 -2
- package/dist/server/lib/utils.d.ts.map +1 -1
- package/dist/server/lib/validation.d.ts +55 -0
- package/dist/server/lib/validation.d.ts.map +1 -0
- package/dist/server/namespaces/activity/index.d.ts +8 -0
- package/dist/server/namespaces/activity/index.d.ts.map +1 -0
- package/dist/server/namespaces/activity/record.d.ts +49 -0
- package/dist/server/namespaces/activity/record.d.ts.map +1 -0
- package/dist/server/namespaces/activity/schema.d.ts +50 -0
- package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
- package/dist/server/namespaces/user/get-profile.d.ts +32 -0
- package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
- package/dist/server/namespaces/user/index.d.ts +8 -0
- package/dist/server/namespaces/user/index.d.ts.map +1 -0
- package/dist/server/namespaces/user/verify.d.ts +28 -0
- package/dist/server/namespaces/user/verify.d.ts.map +1 -0
- package/dist/server/timeback-identity.d.ts +3 -3
- package/dist/server/timeback.d.ts +5 -3
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +407 -14
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +7 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.ts +51 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/schemas.d.ts +57 -0
- package/dist/shared/schemas.d.ts.map +1 -0
- package/dist/shared/types.d.ts +287 -18
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.ts +636 -0
- package/package.json +7 -10
- package/dist/chunk-07j8zre9.js +0 -2
- package/dist/chunk-5171mkp2.js +0 -2
- package/dist/chunk-63afdp3y.js +0 -8
- package/dist/chunk-8gg8n8v9.js +0 -2
- package/dist/chunk-9se82640.js +0 -1
- package/dist/chunk-agpf1x3g.js +0 -16
- package/dist/chunk-hnf0tart.js +0 -2
- package/dist/chunk-qr0bbnsr.js +0 -1
- package/dist/chunk-whc53e0y.js +0 -11
- package/dist/chunk-x9gvef7q.js +0 -1
- package/dist/edge.d.ts +0 -13
- package/dist/edge.d.ts.map +0 -1
- package/dist/edge.js +0 -1
- package/dist/server/handlers/activity/handler.d.ts +0 -32
- package/dist/server/handlers/activity/handler.d.ts.map +0 -1
- package/dist/shared/xp-calculator.d.ts +0 -25
- package/dist/shared/xp-calculator.d.ts.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Zod Schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for shared types used across client and server.
|
|
5
|
+
*/
|
|
6
|
+
import * as z from 'zod';
|
|
7
|
+
/**
|
|
8
|
+
* Zod schema for grade-based course selector.
|
|
9
|
+
*
|
|
10
|
+
* @see {@link SubjectGradeCourseRef}
|
|
11
|
+
*/
|
|
12
|
+
export declare const subjectGradeCourseRefSchema: z.ZodObject<{
|
|
13
|
+
subject: z.ZodEnum<{
|
|
14
|
+
FastMath: "FastMath";
|
|
15
|
+
Language: "Language";
|
|
16
|
+
Math: "Math";
|
|
17
|
+
None: "None";
|
|
18
|
+
Other: "Other";
|
|
19
|
+
Reading: "Reading";
|
|
20
|
+
Science: "Science";
|
|
21
|
+
"Social Studies": "Social Studies";
|
|
22
|
+
Vocabulary: "Vocabulary";
|
|
23
|
+
Writing: "Writing";
|
|
24
|
+
}>;
|
|
25
|
+
grade: z.ZodUnion<readonly [z.ZodLiteral<-1>, z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>, z.ZodLiteral<7>, z.ZodLiteral<8>, z.ZodLiteral<9>, z.ZodLiteral<10>, z.ZodLiteral<11>, z.ZodLiteral<12>, z.ZodLiteral<13>]>;
|
|
26
|
+
}, z.core.$strip>;
|
|
27
|
+
/**
|
|
28
|
+
* Zod schema for code-based course selector.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link CourseCodeRef}
|
|
31
|
+
*/
|
|
32
|
+
export declare const courseCodeRefSchema: z.ZodObject<{
|
|
33
|
+
code: z.ZodString;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
/**
|
|
36
|
+
* Zod schema for activity course reference (union of subject+grade or code).
|
|
37
|
+
*
|
|
38
|
+
* @see {@link ActivityCourseRef}
|
|
39
|
+
*/
|
|
40
|
+
export declare const activityCourseRefSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
41
|
+
subject: z.ZodEnum<{
|
|
42
|
+
FastMath: "FastMath";
|
|
43
|
+
Language: "Language";
|
|
44
|
+
Math: "Math";
|
|
45
|
+
None: "None";
|
|
46
|
+
Other: "Other";
|
|
47
|
+
Reading: "Reading";
|
|
48
|
+
Science: "Science";
|
|
49
|
+
"Social Studies": "Social Studies";
|
|
50
|
+
Vocabulary: "Vocabulary";
|
|
51
|
+
Writing: "Writing";
|
|
52
|
+
}>;
|
|
53
|
+
grade: z.ZodUnion<readonly [z.ZodLiteral<-1>, z.ZodLiteral<0>, z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>, z.ZodLiteral<6>, z.ZodLiteral<7>, z.ZodLiteral<8>, z.ZodLiteral<9>, z.ZodLiteral<10>, z.ZodLiteral<11>, z.ZodLiteral<12>, z.ZodLiteral<13>]>;
|
|
54
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
55
|
+
code: z.ZodString;
|
|
56
|
+
}, z.core.$strip>]>;
|
|
57
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/shared/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAWxB;;;;GAIG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;iBAGtC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;mBAA8D,CAAA"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -124,13 +124,15 @@ export interface CourseCodeRef {
|
|
|
124
124
|
* - **Grade-based**: `{ subject, grade }` — K-12 style
|
|
125
125
|
* - **Grade-less**: `{ code }` — CS/skill-based
|
|
126
126
|
*
|
|
127
|
-
* @example
|
|
127
|
+
* @example
|
|
128
128
|
* ```typescript
|
|
129
|
+
* // Grade-based
|
|
129
130
|
* { subject: 'Math', grade: 3 }
|
|
130
131
|
* ```
|
|
131
132
|
*
|
|
132
|
-
* @example
|
|
133
|
+
* @example
|
|
133
134
|
* ```typescript
|
|
135
|
+
* // Grade-less
|
|
134
136
|
* { code: 'CS-101' }
|
|
135
137
|
* ```
|
|
136
138
|
*/
|
|
@@ -142,6 +144,70 @@ export type ActivityCourseRef = SubjectGradeCourseRef | CourseCodeRef;
|
|
|
142
144
|
* @returns True if grade-based selector
|
|
143
145
|
*/
|
|
144
146
|
export declare function isSubjectGradeCourseRef(ref: ActivityCourseRef): ref is SubjectGradeCourseRef;
|
|
147
|
+
/**
|
|
148
|
+
* Time tracking configuration options.
|
|
149
|
+
*
|
|
150
|
+
* Controls how the SDK tracks and reports time-spent data via heartbeats.
|
|
151
|
+
*/
|
|
152
|
+
export interface TimeTrackingOptions {
|
|
153
|
+
/**
|
|
154
|
+
* Interval in milliseconds between automatic heartbeat flushes.
|
|
155
|
+
* @default 15000 (15 seconds)
|
|
156
|
+
*/
|
|
157
|
+
flushIntervalMs?: number;
|
|
158
|
+
/**
|
|
159
|
+
* Whether to pause time tracking when the tab is not visible.
|
|
160
|
+
* @default true
|
|
161
|
+
*/
|
|
162
|
+
visibilityAware?: boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Whether to flush accumulated time when the tab becomes hidden.
|
|
165
|
+
* @default true
|
|
166
|
+
*/
|
|
167
|
+
flushOnVisibilityHidden?: boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Whether to attempt a best-effort flush on page unload (pagehide event).
|
|
170
|
+
*
|
|
171
|
+
* Implementation notes:
|
|
172
|
+
* - Prefer `navigator.sendBeacon()` when available and safe to use
|
|
173
|
+
* - Fall back to `fetch(..., { keepalive: true })` otherwise
|
|
174
|
+
*
|
|
175
|
+
* sendBeacon cannot set arbitrary headers (e.g. Authorization), so
|
|
176
|
+
* integrations that rely on bearer tokens typically use the keepalive
|
|
177
|
+
* fetch fallback.
|
|
178
|
+
* @default true
|
|
179
|
+
*/
|
|
180
|
+
flushOnPageHide?: boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Timeout in milliseconds after which hidden time stops being tracked.
|
|
183
|
+
*
|
|
184
|
+
* When the tab is hidden for longer than this duration, heartbeats stop
|
|
185
|
+
* and the hidden time is not counted. When the user returns, tracking
|
|
186
|
+
* resumes fresh without counting the extended absence.
|
|
187
|
+
*
|
|
188
|
+
* Set to `null` or `Infinity` to disable (always track hidden time).
|
|
189
|
+
* @default 600000 (10 minutes)
|
|
190
|
+
*/
|
|
191
|
+
hiddenTimeoutMs?: number | null;
|
|
192
|
+
/**
|
|
193
|
+
* Number of retry attempts for failed heartbeat sends.
|
|
194
|
+
*
|
|
195
|
+
* Set to `0` (default) for no retries. Retries use exponential backoff
|
|
196
|
+
* with delays configured by `retryDelaysMs`.
|
|
197
|
+
*
|
|
198
|
+
* @default 0
|
|
199
|
+
*/
|
|
200
|
+
retryAttempts?: number;
|
|
201
|
+
/**
|
|
202
|
+
* Delay schedule (in milliseconds) between retry attempts.
|
|
203
|
+
*
|
|
204
|
+
* Each index corresponds to the delay before that retry attempt.
|
|
205
|
+
* If more attempts are made than there are entries, the last value is reused.
|
|
206
|
+
*
|
|
207
|
+
* @default [100, 300, 1000]
|
|
208
|
+
*/
|
|
209
|
+
retryDelaysMs?: number[];
|
|
210
|
+
}
|
|
145
211
|
/**
|
|
146
212
|
* Activity start parameters.
|
|
147
213
|
*
|
|
@@ -182,9 +248,18 @@ export interface ActivityParams {
|
|
|
182
248
|
* Use a short, URL-safe slug like `"fractions-with-like-denominators"` or
|
|
183
249
|
* `"lesson-1"`. Special characters will be URI-encoded.
|
|
184
250
|
*
|
|
185
|
-
* @example
|
|
186
|
-
*
|
|
187
|
-
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```typescript
|
|
253
|
+
* // 'fractions-with-like-denominators'
|
|
254
|
+
* ```
|
|
255
|
+
* @example
|
|
256
|
+
* ```typescript
|
|
257
|
+
* // 'ccss.math.content.3.nf.a.1'
|
|
258
|
+
* ```
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* // 'lesson-1'
|
|
262
|
+
* ```
|
|
188
263
|
*/
|
|
189
264
|
id: string;
|
|
190
265
|
/**
|
|
@@ -192,11 +267,71 @@ export interface ActivityParams {
|
|
|
192
267
|
*
|
|
193
268
|
* This is sent as `object.activity.name` in Caliper events.
|
|
194
269
|
*
|
|
195
|
-
* @example
|
|
270
|
+
* @example
|
|
271
|
+
* ```typescript
|
|
272
|
+
* // 'Fractions with Like Denominators'
|
|
273
|
+
* ```
|
|
196
274
|
*/
|
|
197
275
|
name: string;
|
|
198
276
|
/** Course selector (must match a unique course in timeback.config.json) */
|
|
199
277
|
course: ActivityCourseRef;
|
|
278
|
+
/**
|
|
279
|
+
* Optional run identifier for correlating events across sessions.
|
|
280
|
+
*
|
|
281
|
+
* When resuming an activity, provide the same `runId` from the previous session
|
|
282
|
+
* to correlate time-spent events with the eventual completion event.
|
|
283
|
+
*
|
|
284
|
+
* If not provided, the SDK generates a new UUID.
|
|
285
|
+
*/
|
|
286
|
+
runId?: string;
|
|
287
|
+
/**
|
|
288
|
+
* Time tracking configuration options.
|
|
289
|
+
*
|
|
290
|
+
* Heartbeats are enabled by default. Use this to customize flush intervals
|
|
291
|
+
* or disable visibility-aware tracking.
|
|
292
|
+
*
|
|
293
|
+
* Set to `false` to disable client-side time tracking entirely. When
|
|
294
|
+
* disabled, no heartbeats are sent, no visibility handlers are registered,
|
|
295
|
+
* and `end()` skips the final time flush. Use this when time is managed
|
|
296
|
+
* server-side (e.g. via `timeback.activity.record()`).
|
|
297
|
+
*/
|
|
298
|
+
time?: TimeTrackingOptions | false;
|
|
299
|
+
/**
|
|
300
|
+
* Called when a heartbeat or submission fails.
|
|
301
|
+
*
|
|
302
|
+
* Heartbeat errors are non-fatal — the SDK continues tracking time
|
|
303
|
+
* regardless. Submit errors (from `end()`) are also surfaced here
|
|
304
|
+
* before being re-thrown.
|
|
305
|
+
*
|
|
306
|
+
* @param error - The error that occurred
|
|
307
|
+
* @param context - Details about the failed operation
|
|
308
|
+
*/
|
|
309
|
+
onError?: (error: Error, context: ActivityErrorContext) => void;
|
|
310
|
+
/**
|
|
311
|
+
* Called when the activity is paused (via `pause()` or visibility timeout).
|
|
312
|
+
*/
|
|
313
|
+
onPause?: () => void;
|
|
314
|
+
/**
|
|
315
|
+
* Called when the activity resumes after being paused.
|
|
316
|
+
*/
|
|
317
|
+
onResume?: () => void;
|
|
318
|
+
/**
|
|
319
|
+
* Called after each successful heartbeat flush.
|
|
320
|
+
*
|
|
321
|
+
* @param elapsedMs - Active milliseconds reported in this flush
|
|
322
|
+
*/
|
|
323
|
+
onFlush?: (elapsedMs: number) => void;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Context passed to the `onError` callback.
|
|
327
|
+
*/
|
|
328
|
+
export interface ActivityErrorContext {
|
|
329
|
+
/** Which operation failed — aligns with Caliper event types. */
|
|
330
|
+
type: 'timeSpent' | 'completion';
|
|
331
|
+
/** The activity slug passed to `activity.start()`. */
|
|
332
|
+
activityId: string;
|
|
333
|
+
/** The `runId` for this activity instance. */
|
|
334
|
+
runId: string;
|
|
200
335
|
}
|
|
201
336
|
/**
|
|
202
337
|
* Activity metrics (optional performance data).
|
|
@@ -212,19 +347,23 @@ export interface ActivityMetrics {
|
|
|
212
347
|
masteredUnits?: number;
|
|
213
348
|
}
|
|
214
349
|
/**
|
|
215
|
-
*
|
|
350
|
+
* Question count metrics for activity completion.
|
|
216
351
|
*
|
|
217
|
-
* @example
|
|
352
|
+
* @example
|
|
218
353
|
* ```typescript
|
|
354
|
+
* // Basic usage
|
|
219
355
|
* await activity.end({
|
|
356
|
+
* xpEarned: 100,
|
|
220
357
|
* totalQuestions: 10,
|
|
221
358
|
* correctQuestions: 8,
|
|
222
359
|
* })
|
|
223
360
|
* ```
|
|
224
361
|
*
|
|
225
|
-
* @example
|
|
362
|
+
* @example
|
|
226
363
|
* ```typescript
|
|
364
|
+
* // With time override
|
|
227
365
|
* await activity.end({
|
|
366
|
+
* xpEarned: 100,
|
|
228
367
|
* totalQuestions: 10,
|
|
229
368
|
* correctQuestions: 8,
|
|
230
369
|
* time: { active: 42000, inactive: 3000 },
|
|
@@ -250,9 +389,31 @@ type QuestionCountMetrics = {
|
|
|
250
389
|
/** Omit question counts entirely. */
|
|
251
390
|
correctQuestions?: undefined;
|
|
252
391
|
};
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
392
|
+
/** Optional time override for activity.end() */
|
|
393
|
+
interface ActivityEndTimeOverride {
|
|
394
|
+
/** Active time in milliseconds */
|
|
395
|
+
active: number;
|
|
396
|
+
/** Inactive/paused time in milliseconds (defaults to 0) */
|
|
397
|
+
inactive?: number;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Time-only end: final flush without completion event.
|
|
401
|
+
*
|
|
402
|
+
* Call `activity.end()` with no args or just a time override to flush
|
|
403
|
+
* accumulated time without sending an ActivityCompletedEvent.
|
|
404
|
+
*/
|
|
405
|
+
type ActivityEndTimeOnly = {
|
|
406
|
+
totalQuestions?: undefined;
|
|
407
|
+
correctQuestions?: undefined;
|
|
408
|
+
xpEarned?: undefined;
|
|
409
|
+
masteredUnits?: undefined;
|
|
410
|
+
pctComplete?: undefined;
|
|
411
|
+
time?: ActivityEndTimeOverride;
|
|
412
|
+
};
|
|
413
|
+
/** Completion end: flush + ActivityCompletedEvent. */
|
|
414
|
+
type ActivityEndCompletion = QuestionCountMetrics & {
|
|
415
|
+
/** XP earned from this activity. */
|
|
416
|
+
xpEarned: number;
|
|
256
417
|
/** Number of units mastered */
|
|
257
418
|
masteredUnits?: number;
|
|
258
419
|
/**
|
|
@@ -263,13 +424,17 @@ export type ActivityEndData = QuestionCountMetrics & {
|
|
|
263
424
|
* Optional time override. When provided, the SDK uses these values instead
|
|
264
425
|
* of the internal timer. Values are clamped to >= 0 and rounded to integers.
|
|
265
426
|
*/
|
|
266
|
-
time?:
|
|
267
|
-
/** Active time in milliseconds */
|
|
268
|
-
active: number;
|
|
269
|
-
/** Inactive/paused time in milliseconds (defaults to 0) */
|
|
270
|
-
inactive?: number;
|
|
271
|
-
};
|
|
427
|
+
time?: ActivityEndTimeOverride;
|
|
272
428
|
};
|
|
429
|
+
/**
|
|
430
|
+
* Data for ending an activity.
|
|
431
|
+
*
|
|
432
|
+
* Two modes:
|
|
433
|
+
* - **Time-only**: `activity.end()` or `activity.end({ time: {...} })` — final
|
|
434
|
+
* flush only, no completion event
|
|
435
|
+
* - **Completion**: `activity.end({ xpEarned, ... })` — final flush + completion event
|
|
436
|
+
*/
|
|
437
|
+
export type ActivityEndData = ActivityEndTimeOnly | ActivityEndCompletion;
|
|
273
438
|
/**
|
|
274
439
|
* Activity state sent to the server when ending.
|
|
275
440
|
*
|
|
@@ -311,6 +476,76 @@ export interface ActivityEndPayload {
|
|
|
311
476
|
*/
|
|
312
477
|
pctComplete?: number;
|
|
313
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* Activity heartbeat payload for time-spent tracking.
|
|
481
|
+
*
|
|
482
|
+
* Sent periodically to report accumulated active time for a time window.
|
|
483
|
+
* The server builds a `TimeSpentEvent` from this data.
|
|
484
|
+
*/
|
|
485
|
+
export interface ActivityHeartbeatPayload {
|
|
486
|
+
/**
|
|
487
|
+
* Activity slug (stable identifier for the learning object).
|
|
488
|
+
*/
|
|
489
|
+
id: string;
|
|
490
|
+
/**
|
|
491
|
+
* Human-readable display name of the activity.
|
|
492
|
+
*/
|
|
493
|
+
name: string;
|
|
494
|
+
/** Course selector (must match a unique course in timeback.config.json) */
|
|
495
|
+
course: ActivityCourseRef;
|
|
496
|
+
/**
|
|
497
|
+
* Run identifier for correlating heartbeats with the completion event.
|
|
498
|
+
*/
|
|
499
|
+
runId: string;
|
|
500
|
+
/**
|
|
501
|
+
* ISO 8601 timestamp when this time window started.
|
|
502
|
+
*/
|
|
503
|
+
startedAt: string;
|
|
504
|
+
/**
|
|
505
|
+
* ISO 8601 timestamp when this time window ended.
|
|
506
|
+
*/
|
|
507
|
+
endedAt: string;
|
|
508
|
+
/**
|
|
509
|
+
* Active time in this window in milliseconds.
|
|
510
|
+
*/
|
|
511
|
+
elapsedMs: number;
|
|
512
|
+
/**
|
|
513
|
+
* Paused time in this window in milliseconds.
|
|
514
|
+
*/
|
|
515
|
+
pausedMs: number;
|
|
516
|
+
}
|
|
517
|
+
/**
|
|
518
|
+
* Activity submit payload for completion events.
|
|
519
|
+
*
|
|
520
|
+
* Sent when the activity completes with metrics.
|
|
521
|
+
* The server builds an `ActivityCompletedEvent` from this data.
|
|
522
|
+
*/
|
|
523
|
+
export interface ActivitySubmitPayload {
|
|
524
|
+
/**
|
|
525
|
+
* Activity slug (stable identifier for the learning object).
|
|
526
|
+
*/
|
|
527
|
+
id: string;
|
|
528
|
+
/**
|
|
529
|
+
* Human-readable display name of the activity.
|
|
530
|
+
*/
|
|
531
|
+
name: string;
|
|
532
|
+
/** Course selector (must match a unique course in timeback.config.json) */
|
|
533
|
+
course: ActivityCourseRef;
|
|
534
|
+
/**
|
|
535
|
+
* Run identifier for correlating with previous heartbeats.
|
|
536
|
+
*/
|
|
537
|
+
runId: string;
|
|
538
|
+
/**
|
|
539
|
+
* ISO 8601 timestamp when the activity ended.
|
|
540
|
+
*/
|
|
541
|
+
endedAt: string;
|
|
542
|
+
/** Activity metrics */
|
|
543
|
+
metrics: ActivityMetrics;
|
|
544
|
+
/**
|
|
545
|
+
* App-reported course progress (per enrollment), as a percentage from 0–100.
|
|
546
|
+
*/
|
|
547
|
+
pctComplete?: number;
|
|
548
|
+
}
|
|
314
549
|
/**
|
|
315
550
|
* Activity submission response.
|
|
316
551
|
*/
|
|
@@ -333,5 +568,39 @@ export type TimebackVerifyResult = {
|
|
|
333
568
|
/** User does not exist in Timeback */
|
|
334
569
|
verified: false;
|
|
335
570
|
};
|
|
571
|
+
/**
|
|
572
|
+
* Verification state for the current user.
|
|
573
|
+
*
|
|
574
|
+
* Used by framework adapters (React, Vue, Svelte, Solid) to expose
|
|
575
|
+
* verification status as a state machine for UI consumption.
|
|
576
|
+
*/
|
|
577
|
+
export type TimebackVerificationState = {
|
|
578
|
+
status: 'loading';
|
|
579
|
+
} | {
|
|
580
|
+
status: 'verified';
|
|
581
|
+
timebackId: string;
|
|
582
|
+
} | {
|
|
583
|
+
status: 'unverified';
|
|
584
|
+
} | {
|
|
585
|
+
status: 'error';
|
|
586
|
+
message: string;
|
|
587
|
+
};
|
|
588
|
+
/**
|
|
589
|
+
* Profile state for the current user.
|
|
590
|
+
*
|
|
591
|
+
* Used by framework adapters (React, Vue, Svelte, Solid) to expose
|
|
592
|
+
* profile fetching status as a state machine for UI consumption.
|
|
593
|
+
*/
|
|
594
|
+
export type TimebackProfileState = {
|
|
595
|
+
status: 'idle';
|
|
596
|
+
} | {
|
|
597
|
+
status: 'loading';
|
|
598
|
+
} | {
|
|
599
|
+
status: 'loaded';
|
|
600
|
+
profile: TimebackProfile;
|
|
601
|
+
} | {
|
|
602
|
+
status: 'error';
|
|
603
|
+
message: string;
|
|
604
|
+
};
|
|
336
605
|
export {};
|
|
337
606
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,yBAAyB;IACzB,MAAM,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;KACZ,CAAA;IAED,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,4BAA4B;IAC5B,EAAE,CAAC,EAAE;QACJ,sCAAsC;QACtC,KAAK,EAAE,MAAM,CAAA;QACb,0DAA0D;QAC1D,GAAG,EAAE,MAAM,CAAA;KACX,CAAA;IAED,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;IAEF,yBAAyB;IACzB,KAAK,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;CACD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACrC,eAAe,EACf,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAC5C,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACxD,8CAA8C;IAC9C,MAAM,EAAE,cAAc,CAAA;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,aAAa,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAA;CACZ;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|