@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.
Files changed (163) hide show
  1. package/README.md +10 -8
  2. package/dist/chunk-1cqa51je.js +2 -0
  3. package/dist/chunk-3ew9vn2d.js +2 -0
  4. package/dist/chunk-6b0ppq9d.js +2 -0
  5. package/dist/chunk-92nnwa7t.js +2 -0
  6. package/dist/chunk-bavxzt1k.js +2 -0
  7. package/dist/chunk-c8pw96sp.js +10 -0
  8. package/dist/chunk-edk3nfj7.js +2 -0
  9. package/dist/chunk-g67efaph.js +4 -0
  10. package/dist/chunk-pd91g539.js +1 -0
  11. package/dist/chunk-sgcwg4j6.js +1 -0
  12. package/dist/client/adapters/react/hooks/types.d.ts +2 -29
  13. package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
  14. package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
  15. package/dist/client/adapters/react/index.js +2 -2
  16. package/dist/client/adapters/solid/types.d.ts +2 -29
  17. package/dist/client/adapters/solid/types.d.ts.map +1 -1
  18. package/dist/client/adapters/solid/types.ts +2 -18
  19. package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
  20. package/dist/client/adapters/svelte/stores/client.ts +2 -9
  21. package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
  22. package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
  23. package/dist/client/adapters/svelte/stores/profile.ts +4 -11
  24. package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
  25. package/dist/client/adapters/svelte/stores/verification.ts +1 -10
  26. package/dist/client/adapters/svelte/types.d.ts +1 -29
  27. package/dist/client/adapters/svelte/types.d.ts.map +1 -1
  28. package/dist/client/adapters/vue/provider.d.ts.map +1 -1
  29. package/dist/client/adapters/vue/provider.ts +4 -11
  30. package/dist/client/adapters/vue/types.d.ts +2 -29
  31. package/dist/client/adapters/vue/types.d.ts.map +1 -1
  32. package/dist/client/adapters/vue/types.ts +2 -18
  33. package/dist/client/auth/types.d.ts +1 -1
  34. package/dist/client/index.d.ts +1 -1
  35. package/dist/client/lib/activity/activity.class.d.ts +130 -22
  36. package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
  37. package/dist/client/lib/activity/transport.d.ts +15 -0
  38. package/dist/client/lib/activity/transport.d.ts.map +1 -0
  39. package/dist/client/lib/activity/types.d.ts +53 -0
  40. package/dist/client/lib/activity/types.d.ts.map +1 -0
  41. package/dist/client/lib/utils.d.ts +18 -0
  42. package/dist/client/lib/utils.d.ts.map +1 -1
  43. package/dist/client/lib/utils.ts +109 -0
  44. package/dist/client/namespaces/activity.d.ts +49 -7
  45. package/dist/client/namespaces/activity.d.ts.map +1 -1
  46. package/dist/client/timeback-client.class.d.ts +7 -1
  47. package/dist/client/timeback-client.class.d.ts.map +1 -1
  48. package/dist/client.d.ts +1 -1
  49. package/dist/client.js +1 -1
  50. package/dist/identity.d.ts +2 -5
  51. package/dist/identity.d.ts.map +1 -1
  52. package/dist/identity.js +1 -1
  53. package/dist/index.d.ts +7 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +30 -21
  56. package/dist/server/adapters/express.d.ts.map +1 -1
  57. package/dist/server/adapters/express.js +1 -1
  58. package/dist/server/adapters/native.d.ts.map +1 -1
  59. package/dist/server/adapters/native.js +2 -2
  60. package/dist/server/adapters/nextjs.js +1 -1
  61. package/dist/server/adapters/nuxt.d.ts.map +1 -1
  62. package/dist/server/adapters/nuxt.js +1 -1
  63. package/dist/server/adapters/solid-start.d.ts.map +1 -1
  64. package/dist/server/adapters/solid-start.js +1 -1
  65. package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
  66. package/dist/server/adapters/svelte-kit.js +1 -1
  67. package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
  68. package/dist/server/adapters/tanstack-start.js +1 -1
  69. package/dist/server/adapters/types.d.ts +16 -4
  70. package/dist/server/adapters/types.d.ts.map +1 -1
  71. package/dist/server/adapters/utils.d.ts +1 -1
  72. package/dist/server/adapters/utils.d.ts.map +1 -1
  73. package/dist/server/handlers/activity/attempts.d.ts +1 -1
  74. package/dist/server/handlers/activity/attempts.d.ts.map +1 -1
  75. package/dist/server/handlers/activity/caliper.d.ts +54 -16
  76. package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
  77. package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
  78. package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
  79. package/dist/server/handlers/activity/index.d.ts +5 -3
  80. package/dist/server/handlers/activity/index.d.ts.map +1 -1
  81. package/dist/server/handlers/activity/progress.d.ts +2 -2
  82. package/dist/server/handlers/activity/progress.d.ts.map +1 -1
  83. package/dist/server/handlers/activity/schema.d.ts +40 -6
  84. package/dist/server/handlers/activity/schema.d.ts.map +1 -1
  85. package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
  86. package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
  87. package/dist/server/handlers/activity/submit.d.ts +44 -0
  88. package/dist/server/handlers/activity/submit.d.ts.map +1 -0
  89. package/dist/server/handlers/activity/types.d.ts +126 -5
  90. package/dist/server/handlers/activity/types.d.ts.map +1 -1
  91. package/dist/server/handlers/identity/handler.d.ts +23 -4
  92. package/dist/server/handlers/identity/handler.d.ts.map +1 -1
  93. package/dist/server/handlers/identity/index.d.ts +2 -2
  94. package/dist/server/handlers/identity/index.d.ts.map +1 -1
  95. package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
  96. package/dist/server/handlers/identity/types.d.ts +0 -6
  97. package/dist/server/handlers/identity/types.d.ts.map +1 -1
  98. package/dist/server/handlers/index.d.ts +3 -3
  99. package/dist/server/handlers/index.d.ts.map +1 -1
  100. package/dist/server/handlers/user/handler.d.ts.map +1 -1
  101. package/dist/server/handlers/user/profile.d.ts.map +1 -1
  102. package/dist/server/handlers/user/types.d.ts +3 -0
  103. package/dist/server/handlers/user/types.d.ts.map +1 -1
  104. package/dist/server/handlers/user/verify.d.ts.map +1 -1
  105. package/dist/server/index.d.ts +1 -1
  106. package/dist/server/index.d.ts.map +1 -1
  107. package/dist/server/lib/hooks.d.ts +20 -0
  108. package/dist/server/lib/hooks.d.ts.map +1 -0
  109. package/dist/server/lib/index.d.ts +4 -2
  110. package/dist/server/lib/index.d.ts.map +1 -1
  111. package/dist/server/lib/logger.d.ts +36 -9
  112. package/dist/server/lib/logger.d.ts.map +1 -1
  113. package/dist/server/lib/resolve.d.ts +1 -1
  114. package/dist/server/lib/resolve.d.ts.map +1 -1
  115. package/dist/server/lib/utils.d.ts +23 -2
  116. package/dist/server/lib/utils.d.ts.map +1 -1
  117. package/dist/server/lib/validation.d.ts +55 -0
  118. package/dist/server/lib/validation.d.ts.map +1 -0
  119. package/dist/server/namespaces/activity/index.d.ts +8 -0
  120. package/dist/server/namespaces/activity/index.d.ts.map +1 -0
  121. package/dist/server/namespaces/activity/record.d.ts +49 -0
  122. package/dist/server/namespaces/activity/record.d.ts.map +1 -0
  123. package/dist/server/namespaces/activity/schema.d.ts +50 -0
  124. package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
  125. package/dist/server/namespaces/user/get-profile.d.ts +32 -0
  126. package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
  127. package/dist/server/namespaces/user/index.d.ts +8 -0
  128. package/dist/server/namespaces/user/index.d.ts.map +1 -0
  129. package/dist/server/namespaces/user/verify.d.ts +28 -0
  130. package/dist/server/namespaces/user/verify.d.ts.map +1 -0
  131. package/dist/server/timeback-identity.d.ts +3 -3
  132. package/dist/server/timeback.d.ts +5 -3
  133. package/dist/server/timeback.d.ts.map +1 -1
  134. package/dist/server/types.d.ts +407 -14
  135. package/dist/server/types.d.ts.map +1 -1
  136. package/dist/shared/constants.d.ts +7 -0
  137. package/dist/shared/constants.d.ts.map +1 -1
  138. package/dist/shared/constants.ts +51 -0
  139. package/dist/shared/index.d.ts +9 -0
  140. package/dist/shared/index.d.ts.map +1 -0
  141. package/dist/shared/schemas.d.ts +57 -0
  142. package/dist/shared/schemas.d.ts.map +1 -0
  143. package/dist/shared/types.d.ts +287 -18
  144. package/dist/shared/types.d.ts.map +1 -1
  145. package/dist/shared/types.ts +636 -0
  146. package/package.json +7 -10
  147. package/dist/chunk-07j8zre9.js +0 -2
  148. package/dist/chunk-5171mkp2.js +0 -2
  149. package/dist/chunk-63afdp3y.js +0 -8
  150. package/dist/chunk-8gg8n8v9.js +0 -2
  151. package/dist/chunk-9se82640.js +0 -1
  152. package/dist/chunk-agpf1x3g.js +0 -16
  153. package/dist/chunk-hnf0tart.js +0 -2
  154. package/dist/chunk-qr0bbnsr.js +0 -1
  155. package/dist/chunk-whc53e0y.js +0 -11
  156. package/dist/chunk-x9gvef7q.js +0 -1
  157. package/dist/edge.d.ts +0 -13
  158. package/dist/edge.d.ts.map +0 -1
  159. package/dist/edge.js +0 -1
  160. package/dist/server/handlers/activity/handler.d.ts +0 -32
  161. package/dist/server/handlers/activity/handler.d.ts.map +0 -1
  162. package/dist/shared/xp-calculator.d.ts +0 -25
  163. package/dist/shared/xp-calculator.d.ts.map +0 -1
@@ -1,11 +1,82 @@
1
+ import type { ActivityCompletedEvent, TimebackActivityContext, TimeSpentEvent } from '@timeback/caliper';
2
+ import type { TimebackClient } from '@timeback/core';
3
+ import type { ActivityCourseRef, ActivityMetrics, TimebackAuthUser, TimebackIdentity, TimebackProfile, TimebackVerifyResult } from '../shared/types';
1
4
  /**
2
5
  * Server Types
3
6
  *
4
7
  * Configuration and internal types for the server SDK.
5
8
  */
6
- import type { ActivityCompletedEvent, TimebackActivityContext, TimeSpentEvent } from '@timeback/caliper';
7
- import type { TimebackClient } from '@timeback/core';
8
- import type { ActivityEndPayload, TimebackAuthUser, TimebackIdentity } from '../shared/types';
9
+ /**
10
+ * Minimum log level for SDK output.
11
+ *
12
+ * Levels in ascending severity: `debug`, `info`, `warn`, `error`.
13
+ * Use `'silent'` to suppress all SDK logging.
14
+ */
15
+ export type SdkLogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
16
+ /**
17
+ * Logger interface accepted by `createTimeback()`.
18
+ *
19
+ * Compatible with `console`, Pino, Winston, Bunyan, and any logger whose
20
+ * methods accept a string message followed by optional arguments.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // console (zero config)
25
+ * createTimeback({ logger: console, ... })
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Pino
31
+ * import pino from 'pino'
32
+ * createTimeback({ logger: pino(), ... })
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Winston
38
+ * import winston from 'winston'
39
+ * createTimeback({ logger: winston.createLogger({ ... }), ... })
40
+ * ```
41
+ */
42
+ export interface SdkLogger {
43
+ /** Log a debug-level message. */
44
+ debug(message: string, ...args: unknown[]): void;
45
+ /** Log an info-level message. */
46
+ info(message: string, ...args: unknown[]): void;
47
+ /** Log a warn-level message. */
48
+ warn(message: string, ...args: unknown[]): void;
49
+ /** Log an error-level message. */
50
+ error(message: string, ...args: unknown[]): void;
51
+ }
52
+ /**
53
+ * Machine-readable error codes returned by SDK HTTP handlers.
54
+ *
55
+ * Consumers can `switch` on these codes for programmatic error handling
56
+ * without relying on human-readable messages.
57
+ */
58
+ export type ErrorCode = 'UNAUTHORIZED' | 'INVALID_PAYLOAD' | 'UNKNOWN_COURSE' | 'AMBIGUOUS_COURSE_SELECTOR' | 'MISSING_SENSOR' | 'MISSING_SYNCED_COURSE_ID' | 'INVALID_SENSOR_URL' | 'USER_NOT_FOUND' | 'USER_AMBIGUOUS' | 'USER_RESOLUTION_FAILED' | 'INTERNAL_ERROR';
59
+ /**
60
+ * Structured error object in SDK HTTP responses.
61
+ */
62
+ export interface SdkError {
63
+ /** Machine-readable error code. */
64
+ code: ErrorCode;
65
+ /** Human-readable error message. */
66
+ message: string;
67
+ /** Validation details (present on INVALID_PAYLOAD errors). */
68
+ details?: unknown;
69
+ }
70
+ /**
71
+ * Standard error body returned by all SDK HTTP handlers.
72
+ *
73
+ * Every error response includes a structured `error` object with a stable
74
+ * `code` for programmatic handling and a `message` for display. The HTTP
75
+ * status code signals failure; no `success` field is included.
76
+ */
77
+ export interface SdkErrorBody {
78
+ error: SdkError;
79
+ }
9
80
  /**
10
81
  * Environment configuration.
11
82
  */
@@ -176,7 +247,10 @@ interface BaseSsoIdentityConfig<TState = unknown> {
176
247
  * - Local development with a mock OIDC server
177
248
  * - Self-hosted Timeback instances
178
249
  *
179
- * @example 'http://localhost:3001/mock-oidc'
250
+ * @example
251
+ * ```typescript
252
+ * // 'http://localhost:3001/mock-oidc'
253
+ * ```
180
254
  */
181
255
  issuer?: string;
182
256
  /**
@@ -185,7 +259,10 @@ interface BaseSsoIdentityConfig<TState = unknown> {
185
259
  * Override the auto-computed callback URL. Use when your IdP has
186
260
  * pre-configured callback URLs that differ from the SDK default.
187
261
  *
188
- * @example 'http://localhost:5174/api/auth/sso/callback/timeback'
262
+ * @example
263
+ * ```typescript
264
+ * // 'http://localhost:5174/api/auth/sso/callback/timeback'
265
+ * ```
189
266
  */
190
267
  redirectUri?: string;
191
268
  /**
@@ -315,7 +392,7 @@ export type IdentityConfig<TState = unknown> = SsoIdentityConfig<TState> | Custo
315
392
  /**
316
393
  * Data provided to `hooks.beforeActivitySend`.
317
394
  *
318
- * This is the payload the client POSTed plus the Caliper events the SDK built.
395
+ * Contains the Caliper ActivityCompletedEvent the SDK built plus context.
319
396
  * Returning `null` from the hook skips sending.
320
397
  */
321
398
  export interface ActivityBeforeSendData {
@@ -329,10 +406,17 @@ export interface ActivityBeforeSendData {
329
406
  };
330
407
  /** Caliper activity context object */
331
408
  object: TimebackActivityContext;
332
- /** Built events (ActivityEvent + TimeSpentEvent) */
333
- events: [ActivityCompletedEvent, TimeSpentEvent];
334
- /** Original payload posted by the client */
335
- payload: ActivityEndPayload;
409
+ /** Built ActivityCompletedEvent */
410
+ event: ActivityCompletedEvent;
411
+ /** Effective completion payload (after progress computation) */
412
+ payload: {
413
+ id: string;
414
+ name: string;
415
+ course: ActivityCourseRef;
416
+ endedAt: string;
417
+ metrics: ActivityMetrics;
418
+ pctComplete?: number;
419
+ };
336
420
  /** Matched course from `timeback.config.json` */
337
421
  course: AppConfig['courses'][number];
338
422
  /** App name (from config) */
@@ -344,6 +428,74 @@ export interface ActivityBeforeSendData {
344
428
  /** Canonical Timeback user id */
345
429
  timebackId: string;
346
430
  }
431
+ /**
432
+ * Data provided to `hooks.beforeTimeSpentSend`.
433
+ *
434
+ * Contains the Caliper TimeSpentEvent the SDK built plus context.
435
+ * Returning `null` from the hook skips sending.
436
+ */
437
+ export interface TimeSpentBeforeSendData {
438
+ /** Sensor URL selected for the event submission */
439
+ sensor: string;
440
+ /** Actor object used in generated Caliper events */
441
+ actor: {
442
+ id: string;
443
+ type: 'TimebackUser';
444
+ email: string;
445
+ };
446
+ /** Caliper activity context object */
447
+ object: TimebackActivityContext;
448
+ /** Built TimeSpentEvent */
449
+ event: TimeSpentEvent;
450
+ /** Time-spent payload */
451
+ payload: {
452
+ id: string;
453
+ name: string;
454
+ course: ActivityCourseRef;
455
+ startedAt: string;
456
+ endedAt: string;
457
+ elapsedMs: number;
458
+ pausedMs: number;
459
+ };
460
+ /** Matched course from `timeback.config.json` */
461
+ course: AppConfig['courses'][number];
462
+ /** App name (from config) */
463
+ appName: string;
464
+ /** API environment used for resolution */
465
+ apiEnv: 'staging' | 'production';
466
+ /** User email */
467
+ email: string;
468
+ /** Canonical Timeback user id */
469
+ timebackId: string;
470
+ /** Correlation ID linking to client-side heartbeats */
471
+ runId?: string;
472
+ }
473
+ /**
474
+ * Handler names for request lifecycle hooks.
475
+ *
476
+ * Matches the shape of `timeback.handle.*` on the instance.
477
+ * `identity.signOut` is excluded because it is a trivial redirect
478
+ * with no request processing.
479
+ */
480
+ export type HandlerName = 'activity.submit' | 'activity.heartbeat' | 'identity.signIn' | 'identity.callback' | 'user.me' | 'user.verify';
481
+ /**
482
+ * Context passed to `hooks.onRequestStart`.
483
+ */
484
+ export interface RequestStartContext {
485
+ /** Which handler is processing the request */
486
+ handler: HandlerName;
487
+ }
488
+ /**
489
+ * Context passed to `hooks.onRequestEnd`.
490
+ */
491
+ export interface RequestEndContext {
492
+ /** Which handler processed the request */
493
+ handler: HandlerName;
494
+ /** Time taken to process the request in milliseconds */
495
+ durationMs: number;
496
+ /** HTTP status code of the response */
497
+ status: number;
498
+ }
347
499
  /**
348
500
  * Full Timeback SDK configuration.
349
501
  */
@@ -356,6 +508,35 @@ export interface TimebackConfig<TState = unknown> {
356
508
  api: ApiCredentials;
357
509
  /** Identity configuration */
358
510
  identity: IdentityConfig<TState>;
511
+ /**
512
+ * Custom logger for SDK output.
513
+ *
514
+ * When provided, all SDK log calls are routed through this logger.
515
+ * Each message is prefixed with the internal scope (e.g., `[timeback:handlers:user]`).
516
+ *
517
+ * When omitted, the SDK uses its built-in logger (console-based, scoped).
518
+ *
519
+ * @example
520
+ * ```typescript
521
+ * // Route SDK logs through Pino
522
+ * import pino from 'pino'
523
+ * createTimeback({ logger: pino(), ... })
524
+ *
525
+ * // Or just use console
526
+ * createTimeback({ logger: console, ... })
527
+ * ```
528
+ */
529
+ logger?: SdkLogger;
530
+ /**
531
+ * Minimum log level for SDK output.
532
+ *
533
+ * Controls which messages are emitted by the built-in logger.
534
+ * Ignored when a custom `logger` is provided (the custom logger
535
+ * is responsible for its own level filtering).
536
+ *
537
+ * @default `'warn'` (or `'debug'` when `DEBUG=1`)
538
+ */
539
+ logLevel?: SdkLogLevel;
359
540
  /**
360
541
  * Optional hooks for customizing SDK handler behavior.
361
542
  *
@@ -363,7 +544,7 @@ export interface TimebackConfig<TState = unknown> {
363
544
  */
364
545
  hooks?: {
365
546
  /**
366
- * Called after Caliper events are built, right before sending.
547
+ * Called after Caliper ActivityCompletedEvent is built, right before sending.
367
548
  *
368
549
  * - Return the (optionally modified) data to proceed with sending
369
550
  * - Return `null` to skip sending (handler still returns success)
@@ -373,14 +554,50 @@ export interface TimebackConfig<TState = unknown> {
373
554
  * @returns Modified data to send, or null to skip
374
555
  */
375
556
  beforeActivitySend?: (data: ActivityBeforeSendData) => ActivityBeforeSendData | null | Promise<ActivityBeforeSendData | null>;
557
+ /**
558
+ * Called after Caliper TimeSpentEvent is built, right before sending.
559
+ *
560
+ * Fires on both the heartbeat path and `timeback.activity.record()` with time data.
561
+ *
562
+ * - Return the (optionally modified) data to proceed with sending
563
+ * - Return `null` to skip sending (handler still returns success)
564
+ * - Throw to fail the request
565
+ *
566
+ * @param data - Built time-spent event + context
567
+ * @returns Modified data to send, or null to skip
568
+ */
569
+ beforeTimeSpentSend?: (data: TimeSpentBeforeSendData) => TimeSpentBeforeSendData | null | Promise<TimeSpentBeforeSendData | null>;
570
+ /**
571
+ * Called when a request handler starts processing.
572
+ *
573
+ * Fires for `activity.submit`, `activity.heartbeat`, `user.me`, and `user.verify`.
574
+ * Use this to start trace spans, log request entry, or initialize per-request context.
575
+ *
576
+ * @param context - Handler identification
577
+ */
578
+ onRequestStart?: (context: RequestStartContext) => void | Promise<void>;
579
+ /**
580
+ * Called when a request handler finishes processing.
581
+ *
582
+ * Fires for every request that triggered `onRequestStart`, including failures.
583
+ * Use this to record metrics, close trace spans, or log request completion.
584
+ *
585
+ * @param context - Handler identification, timing, and HTTP status
586
+ */
587
+ onRequestEnd?: (context: RequestEndContext) => void | Promise<void>;
376
588
  };
377
589
  }
378
590
  /**
379
591
  * Request handlers namespace.
380
592
  */
381
593
  export interface Handlers {
382
- /** Activity submission handler */
383
- activity: (req: Request) => Promise<Response>;
594
+ /** Activity-related handlers */
595
+ activity: {
596
+ /** Heartbeat handler (time-spent only) */
597
+ heartbeat: (req: Request) => Promise<Response>;
598
+ /** Submit handler (completion only) */
599
+ submit: (req: Request) => Promise<Response>;
600
+ };
384
601
  /** Identity-related handlers */
385
602
  identity: {
386
603
  /** Initiate sign-in (SSO only) */
@@ -491,13 +708,182 @@ export interface AppConfig {
491
708
  courses: AppCourse[];
492
709
  }
493
710
  /**
494
- * Timeback SDK instance (framework-agnostic).
711
+ * User identity for server-side activity recording.
712
+ *
713
+ * Provide either `email` (the SDK will resolve the timebackId) or `timebackId` directly.
714
+ * If both are provided, `timebackId` takes precedence.
715
+ */
716
+ export interface ActivityRecordUserInput {
717
+ /** User's email address (used to resolve timebackId if not provided) */
718
+ email: string;
719
+ /** User's Timeback ID (if already known, skips email lookup) */
720
+ timebackId?: string;
721
+ }
722
+ /**
723
+ * Activity identity for server-side activity recording.
724
+ */
725
+ export interface ActivityRecordActivityInput {
726
+ /** Activity slug (stable identifier) */
727
+ id: string;
728
+ /** Human-readable activity name */
729
+ name: string;
730
+ /** Course selector (must match a course in timeback.config.json) */
731
+ course: import('../shared/types').ActivityCourseRef;
732
+ }
733
+ /** Metrics for server-side activity recording. */
734
+ export interface ActivityRecordMetricsInput {
735
+ /** Total questions attempted */
736
+ totalQuestions?: number;
737
+ /** Number of correct answers */
738
+ correctQuestions?: number;
739
+ /** XP earned */
740
+ xpEarned: number;
741
+ /** Number of units mastered */
742
+ masteredUnits?: number;
743
+ /** App-reported course progress (0-100) */
744
+ pctComplete?: number;
745
+ }
746
+ /**
747
+ * Time information for server-side activity recording.
748
+ *
749
+ * When provided, a TimeSpentEvent will be emitted alongside the ActivityCompletedEvent.
750
+ * When omitted, only ActivityCompletedEvent is emitted.
751
+ */
752
+ export interface ActivityRecordTimeInput {
753
+ /** When the session started (defaults to endedAt - activeMs - inactiveMs, or endedAt if not computable) */
754
+ startedAt?: Date | string;
755
+ /** When the session ended (defaults to now) */
756
+ endedAt?: Date | string;
757
+ /** Active engagement time in milliseconds */
758
+ activeMs?: number;
759
+ /** Inactive/paused time in milliseconds */
760
+ inactiveMs?: number;
761
+ }
762
+ /**
763
+ * Input for `timeback.activity.record()`.
764
+ *
765
+ * Records an activity completion from the server side. Use this for stateful activities
766
+ * where the backend is the source of truth for completion state.
767
+ *
768
+ * @example
769
+ * ```typescript
770
+ * // Completion-only (no time tracking)
771
+ * await timeback.activity.record({
772
+ * user: { email: 'student@example.com' },
773
+ * activity: { id: 'lesson-1', name: 'Intro', course: { code: 'MATH-101' } },
774
+ * metrics: { totalQuestions: 20, correctQuestions: 16, xpEarned: 150 },
775
+ * })
776
+ * ```
777
+ *
778
+ * @example
779
+ * ```typescript
780
+ * // With time (emits TimeSpentEvent too)
781
+ * await timeback.activity.record({
782
+ * user: { email: 'student@example.com' },
783
+ * activity: { id: 'lesson-1', name: 'Intro', course: { code: 'MATH-101' } },
784
+ * metrics: { totalQuestions: 20, correctQuestions: 16, xpEarned: 150 },
785
+ * time: { activeMs: 900000, inactiveMs: 60000 },
786
+ * })
787
+ * ```
788
+ */
789
+ export interface ActivityRecordInput {
790
+ /** User identity */
791
+ user: ActivityRecordUserInput;
792
+ /** Activity identity */
793
+ activity: ActivityRecordActivityInput;
794
+ /** Activity metrics */
795
+ metrics: ActivityRecordMetricsInput;
796
+ /** Optional time information (when provided, emits TimeSpentEvent) */
797
+ time?: ActivityRecordTimeInput;
798
+ /** Optional correlation ID linking this completion to client-side heartbeats */
799
+ runId?: string;
800
+ }
801
+ /**
802
+ * Server-side activity namespace.
803
+ */
804
+ export interface ActivityNamespace {
805
+ /**
806
+ * Record an activity completion from the server.
807
+ *
808
+ * Use this for stateful activities where the backend is the source of truth.
809
+ * When time is provided, both ActivityCompletedEvent and TimeSpentEvent are emitted.
810
+ * When time is omitted, only ActivityCompletedEvent is emitted.
811
+ *
812
+ * @param input - Activity record input
813
+ */
814
+ record(input: ActivityRecordInput): Promise<void>;
815
+ }
816
+ /**
817
+ * Server-side user namespace.
818
+ *
819
+ * Programmatic equivalents of `/user/verify` and `/user/me` for server-to-server
820
+ * use cases. Both methods accept an email directly rather than a `Request` object.
821
+ */
822
+ export interface UserNamespace {
823
+ /**
824
+ * Check whether a Timeback user exists for the given email.
825
+ *
826
+ * This is a lightweight check that does not build the full enriched profile.
827
+ * Programmatic equivalent of the `/user/verify` HTTP handler.
828
+ *
829
+ * @param email - User's email address
830
+ * @returns Verification result with timebackId if the user exists
831
+ *
832
+ * @example
833
+ * ```typescript
834
+ * const result = await timeback.user.verify('student@example.com')
835
+ *
836
+ * if (result.verified) {
837
+ * console.log(result.timebackId) // "tb_abc123"
838
+ * }
839
+ * ```
840
+ */
841
+ verify(email: string): Promise<TimebackVerifyResult>;
842
+ /**
843
+ * Get the full enriched profile for a user by email.
844
+ *
845
+ * Returns identity, enrollments, courses, goals, and XP data.
846
+ * Programmatic equivalent of the `/user/me` HTTP handler.
847
+ *
848
+ * @param email - User's email address
849
+ * @returns Enriched user profile
850
+ * @throws {TimebackUserResolutionError} If the user cannot be resolved
851
+ *
852
+ * @example
853
+ * ```typescript
854
+ * const profile = await timeback.user.getProfile('student@example.com')
855
+ *
856
+ * console.log(profile.xp?.today) // 42
857
+ * console.log(profile.courses) // [{ id, code, name }]
858
+ * console.log(profile.goals) // { dailyXp, dailyLessons, ... }
859
+ * ```
860
+ */
861
+ getProfile(email: string): Promise<TimebackProfile>;
862
+ }
863
+ /**
864
+ * Timeback SDK instance.
495
865
  */
496
866
  export interface TimebackInstance<TState = unknown> {
497
867
  /** Configuration */
498
868
  config: TimebackConfig<TState>;
499
869
  /** Request handlers */
500
870
  handle: Handlers;
871
+ /**
872
+ * Server-side activity recording.
873
+ *
874
+ * Use `activity.record()` to submit activity completions from the backend,
875
+ * bypassing the HTTP handler. This is useful for stateful activities where
876
+ * the backend is the source of truth for completion state.
877
+ */
878
+ activity: ActivityNamespace;
879
+ /**
880
+ * Server-side user operations.
881
+ *
882
+ * Programmatic equivalents of the `/user/me` and `/user/verify` HTTP handlers.
883
+ * Use these when you need user data in server-side logic (webhooks, cron jobs,
884
+ * SSR data loaders, background tasks) without constructing HTTP requests.
885
+ */
886
+ user: UserNamespace;
501
887
  /**
502
888
  * Direct access to the Timeback API client.
503
889
  *
@@ -517,6 +903,13 @@ export interface TimebackInstance<TState = unknown> {
517
903
  * ```
518
904
  */
519
905
  api: TimebackClient;
906
+ /**
907
+ * Close the shared API client and release resources.
908
+ *
909
+ * Call this during graceful server shutdown to clean up HTTP connections.
910
+ * After calling `close()`, the client will be re-created on next access.
911
+ */
912
+ close: () => void;
520
913
  }
521
914
  /**
522
915
  * Identity-only configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,10 @@
5
5
  export declare const DEFAULT_BASE_PATH = "/api/timeback";
6
6
  /** API route paths */
7
7
  export declare const ROUTES: {
8
+ /** @deprecated Use ACTIVITY_HEARTBEAT and ACTIVITY_SUBMIT instead */
8
9
  readonly ACTIVITY: "/activity";
10
+ readonly ACTIVITY_HEARTBEAT: "/activity/heartbeat";
11
+ readonly ACTIVITY_SUBMIT: "/activity/submit";
9
12
  readonly IDENTITY: {
10
13
  readonly SIGNIN: "/identity/signin";
11
14
  readonly SIGNOUT: "/identity/signout";
@@ -16,6 +19,10 @@ export declare const ROUTES: {
16
19
  readonly VERIFY: "/user/verify";
17
20
  };
18
21
  };
22
+ /** Default heartbeat flush interval (15 seconds) */
23
+ export declare const DEFAULT_HEARTBEAT_INTERVAL_MS: number;
24
+ /** Default timeout for hidden tab before stopping heartbeats (10 minutes) */
25
+ export declare const DEFAULT_HIDDEN_TIMEOUT_MS: number;
19
26
  /**
20
27
  * Threshold for treating accuracy as "perfect" (handles floating point precision).
21
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,kBAAkB,CAAA;AAEhD,sBAAsB;AACtB,eAAO,MAAM,MAAM;;;;;;;;;;;CAWT,CAAA;AAEV;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,WAAW,CAAA;AAElD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,2BAA4B,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,kBAAkB,CAAA;AAEhD,sBAAsB;AACtB,eAAO,MAAM,MAAM;IAClB,qEAAqE;;;;;;;;;;;;;CAa5D,CAAA;AAEV,oDAAoD;AACpD,eAAO,MAAM,6BAA6B,QAAa,CAAA;AAEvD,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,QAAkB,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,WAAW,CAAA;AAElD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,2BAA4B,CAAA"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Shared Constants
3
+ */
4
+
5
+ /** Default base path for Timeback API routes */
6
+ export const DEFAULT_BASE_PATH = '/api/timeback'
7
+
8
+ /** API route paths */
9
+ export const ROUTES = {
10
+ /** @deprecated Use ACTIVITY_HEARTBEAT and ACTIVITY_SUBMIT instead */
11
+ ACTIVITY: '/activity',
12
+ ACTIVITY_HEARTBEAT: '/activity/heartbeat',
13
+ ACTIVITY_SUBMIT: '/activity/submit',
14
+ IDENTITY: {
15
+ SIGNIN: '/identity/signin',
16
+ SIGNOUT: '/identity/signout',
17
+ CALLBACK: '/identity/callback',
18
+ },
19
+ USER: {
20
+ ME: '/user/me',
21
+ VERIFY: '/user/verify',
22
+ },
23
+ } as const
24
+
25
+ /** Default heartbeat flush interval (15 seconds) */
26
+ export const DEFAULT_HEARTBEAT_INTERVAL_MS = 15 * 1_000
27
+
28
+ /** Default timeout for hidden tab before stopping heartbeats (10 minutes) */
29
+ export const DEFAULT_HIDDEN_TIMEOUT_MS = 10 * 60 * 1_000
30
+
31
+ /**
32
+ * Threshold for treating accuracy as "perfect" (handles floating point precision).
33
+ *
34
+ * Example: `10 / 10` can become `0.9999999999999999` due to IEEE754 rounding.
35
+ */
36
+ export const PERFECT_ACCURACY_THRESHOLD = 0.999999
37
+
38
+ /**
39
+ * Default number of retry attempts for verification.
40
+ *
41
+ * Retries help handle race conditions where the user may not be
42
+ * fully set up in the backend when verification first runs.
43
+ */
44
+ export const DEFAULT_RETRY_ATTEMPTS = 3
45
+
46
+ /**
47
+ * Default retry delays in milliseconds (exponential backoff).
48
+ *
49
+ * Each index corresponds to the delay before that retry attempt.
50
+ */
51
+ export const DEFAULT_RETRY_DELAYS_MS = [100, 300, 1000] as const
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared Module
3
+ *
4
+ * Exports shared types, constants, and schemas.
5
+ */
6
+ export * from './types';
7
+ export * from './constants';
8
+ export * from './schemas';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}