@timeback/sdk 0.1.8 → 0.1.10

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 (159) hide show
  1. package/README.md +6 -6
  2. package/dist/chunk-3mqpr9vx.js +2 -0
  3. package/dist/chunk-92nnwa7t.js +2 -0
  4. package/dist/{chunk-ewsp6v3b.js → chunk-af3xwwsv.js} +5 -5
  5. package/dist/{chunk-07j8zre9.js → chunk-b8649tw4.js} +1 -1
  6. package/dist/{chunk-3886xy48.js → chunk-bd09q1fw.js} +6 -6
  7. package/dist/chunk-js665z11.js +1 -0
  8. package/dist/chunk-nsr7a2dv.js +2 -0
  9. package/dist/chunk-sgcwg4j6.js +1 -0
  10. package/dist/{chunk-9se82640.js → chunk-txwjkpfz.js} +1 -1
  11. package/dist/client/adapters/react/hooks/types.d.ts +34 -27
  12. package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
  13. package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts +17 -5
  14. package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
  15. package/dist/client/adapters/react/index.d.ts +1 -1
  16. package/dist/client/adapters/react/index.d.ts.map +1 -1
  17. package/dist/client/adapters/react/index.js +2 -2
  18. package/dist/client/adapters/react/provider.d.ts.map +1 -1
  19. package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts +3 -1
  20. package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts.map +1 -1
  21. package/dist/client/adapters/solid/primitives/createTimebackVerification.ts +55 -15
  22. package/dist/client/adapters/solid/types.d.ts +25 -29
  23. package/dist/client/adapters/solid/types.d.ts.map +1 -1
  24. package/dist/client/adapters/solid/types.ts +27 -18
  25. package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
  26. package/dist/client/adapters/svelte/stores/client.ts +2 -9
  27. package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
  28. package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
  29. package/dist/client/adapters/svelte/stores/profile.ts +4 -11
  30. package/dist/client/adapters/svelte/stores/verification.d.ts +1 -1
  31. package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
  32. package/dist/client/adapters/svelte/stores/verification.ts +90 -17
  33. package/dist/client/adapters/svelte/types.d.ts +1 -29
  34. package/dist/client/adapters/svelte/types.d.ts.map +1 -1
  35. package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts +3 -1
  36. package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts.map +1 -1
  37. package/dist/client/adapters/vue/composables/useTimebackVerification.ts +59 -18
  38. package/dist/client/adapters/vue/provider.d.ts.map +1 -1
  39. package/dist/client/adapters/vue/provider.ts +4 -11
  40. package/dist/client/adapters/vue/types.d.ts +25 -29
  41. package/dist/client/adapters/vue/types.d.ts.map +1 -1
  42. package/dist/client/adapters/vue/types.ts +27 -18
  43. package/dist/client/auth/types.d.ts +1 -1
  44. package/dist/client/index.d.ts +1 -1
  45. package/dist/client/lib/activity/activity.class.d.ts +130 -22
  46. package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
  47. package/dist/client/lib/activity/transport.d.ts +15 -0
  48. package/dist/client/lib/activity/transport.d.ts.map +1 -0
  49. package/dist/client/lib/activity/types.d.ts +53 -0
  50. package/dist/client/lib/activity/types.d.ts.map +1 -0
  51. package/dist/client/lib/utils.d.ts +33 -0
  52. package/dist/client/lib/utils.d.ts.map +1 -1
  53. package/dist/client/lib/utils.ts +109 -0
  54. package/dist/client/namespaces/activity.d.ts +45 -6
  55. package/dist/client/namespaces/activity.d.ts.map +1 -1
  56. package/dist/client/timeback-client.class.d.ts +7 -1
  57. package/dist/client/timeback-client.class.d.ts.map +1 -1
  58. package/dist/client.d.ts +1 -1
  59. package/dist/client.js +1 -1
  60. package/dist/edge.js +1 -1
  61. package/dist/identity.js +1 -1
  62. package/dist/index.d.ts +3 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +22 -22
  65. package/dist/server/adapters/express.d.ts.map +1 -1
  66. package/dist/server/adapters/express.js +1 -1
  67. package/dist/server/adapters/native.d.ts.map +1 -1
  68. package/dist/server/adapters/native.js +1 -1
  69. package/dist/server/adapters/nextjs.js +1 -1
  70. package/dist/server/adapters/nuxt.d.ts.map +1 -1
  71. package/dist/server/adapters/nuxt.js +1 -1
  72. package/dist/server/adapters/solid-start.d.ts.map +1 -1
  73. package/dist/server/adapters/solid-start.js +1 -1
  74. package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
  75. package/dist/server/adapters/svelte-kit.js +1 -1
  76. package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
  77. package/dist/server/adapters/tanstack-start.js +1 -1
  78. package/dist/server/adapters/utils.d.ts +1 -1
  79. package/dist/server/adapters/utils.d.ts.map +1 -1
  80. package/dist/server/handlers/activity/caliper.d.ts +50 -14
  81. package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
  82. package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
  83. package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
  84. package/dist/server/handlers/activity/index.d.ts +5 -3
  85. package/dist/server/handlers/activity/index.d.ts.map +1 -1
  86. package/dist/server/handlers/activity/progress.d.ts +2 -2
  87. package/dist/server/handlers/activity/progress.d.ts.map +1 -1
  88. package/dist/server/handlers/activity/schema.d.ts +40 -6
  89. package/dist/server/handlers/activity/schema.d.ts.map +1 -1
  90. package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
  91. package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
  92. package/dist/server/handlers/activity/submit.d.ts +44 -0
  93. package/dist/server/handlers/activity/submit.d.ts.map +1 -0
  94. package/dist/server/handlers/activity/types.d.ts +126 -5
  95. package/dist/server/handlers/activity/types.d.ts.map +1 -1
  96. package/dist/server/handlers/identity/handler.d.ts +23 -4
  97. package/dist/server/handlers/identity/handler.d.ts.map +1 -1
  98. package/dist/server/handlers/identity/index.d.ts +2 -2
  99. package/dist/server/handlers/identity/index.d.ts.map +1 -1
  100. package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
  101. package/dist/server/handlers/identity/types.d.ts +0 -6
  102. package/dist/server/handlers/identity/types.d.ts.map +1 -1
  103. package/dist/server/handlers/index.d.ts +3 -3
  104. package/dist/server/handlers/index.d.ts.map +1 -1
  105. package/dist/server/handlers/user/handler.d.ts.map +1 -1
  106. package/dist/server/handlers/user/profile.d.ts.map +1 -1
  107. package/dist/server/handlers/user/types.d.ts +3 -0
  108. package/dist/server/handlers/user/types.d.ts.map +1 -1
  109. package/dist/server/handlers/user/verify.d.ts.map +1 -1
  110. package/dist/server/index.d.ts +1 -1
  111. package/dist/server/index.d.ts.map +1 -1
  112. package/dist/server/lib/hooks.d.ts +20 -0
  113. package/dist/server/lib/hooks.d.ts.map +1 -0
  114. package/dist/server/lib/index.d.ts +4 -2
  115. package/dist/server/lib/index.d.ts.map +1 -1
  116. package/dist/server/lib/logger.d.ts +36 -9
  117. package/dist/server/lib/logger.d.ts.map +1 -1
  118. package/dist/server/lib/resolve.d.ts +1 -1
  119. package/dist/server/lib/resolve.d.ts.map +1 -1
  120. package/dist/server/lib/utils.d.ts +19 -1
  121. package/dist/server/lib/utils.d.ts.map +1 -1
  122. package/dist/server/lib/validation.d.ts +55 -0
  123. package/dist/server/lib/validation.d.ts.map +1 -0
  124. package/dist/server/namespaces/activity/index.d.ts +8 -0
  125. package/dist/server/namespaces/activity/index.d.ts.map +1 -0
  126. package/dist/server/namespaces/activity/record.d.ts +49 -0
  127. package/dist/server/namespaces/activity/record.d.ts.map +1 -0
  128. package/dist/server/namespaces/activity/schema.d.ts +50 -0
  129. package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
  130. package/dist/server/namespaces/user/get-profile.d.ts +32 -0
  131. package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
  132. package/dist/server/namespaces/user/index.d.ts +8 -0
  133. package/dist/server/namespaces/user/index.d.ts.map +1 -0
  134. package/dist/server/namespaces/user/verify.d.ts +28 -0
  135. package/dist/server/namespaces/user/verify.d.ts.map +1 -0
  136. package/dist/server/timeback.d.ts +3 -3
  137. package/dist/server/timeback.d.ts.map +1 -1
  138. package/dist/server/types.d.ts +394 -12
  139. package/dist/server/types.d.ts.map +1 -1
  140. package/dist/shared/constants.d.ts +20 -0
  141. package/dist/shared/constants.d.ts.map +1 -1
  142. package/dist/shared/constants.ts +51 -0
  143. package/dist/shared/index.d.ts +9 -0
  144. package/dist/shared/index.d.ts.map +1 -0
  145. package/dist/shared/schemas.d.ts +57 -0
  146. package/dist/shared/schemas.d.ts.map +1 -0
  147. package/dist/shared/types.d.ts +263 -10
  148. package/dist/shared/types.d.ts.map +1 -1
  149. package/dist/shared/types.ts +620 -0
  150. package/package.json +5 -5
  151. package/dist/chunk-ahy54f2r.js +0 -2
  152. package/dist/chunk-j1xdrfqj.js +0 -2
  153. package/dist/chunk-qaa129bd.js +0 -2
  154. package/dist/chunk-qr0bbnsr.js +0 -1
  155. package/dist/chunk-rgbpvxbv.js +0 -1
  156. package/dist/server/handlers/activity/handler.d.ts +0 -32
  157. package/dist/server/handlers/activity/handler.d.ts.map +0 -1
  158. package/dist/shared/xp-calculator.d.ts +0 -25
  159. package/dist/shared/xp-calculator.d.ts.map +0 -1
@@ -1,11 +1,79 @@
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 console (zero config)
23
+ * ```typescript
24
+ * createTimeback({ logger: console, ... })
25
+ * ```
26
+ *
27
+ * @example Pino
28
+ * ```typescript
29
+ * import pino from 'pino'
30
+ * createTimeback({ logger: pino(), ... })
31
+ * ```
32
+ *
33
+ * @example Winston
34
+ * ```typescript
35
+ * import winston from 'winston'
36
+ * createTimeback({ logger: winston.createLogger({ ... }), ... })
37
+ * ```
38
+ */
39
+ export interface SdkLogger {
40
+ /** Log a debug-level message. */
41
+ debug(message: string, ...args: unknown[]): void;
42
+ /** Log an info-level message. */
43
+ info(message: string, ...args: unknown[]): void;
44
+ /** Log a warn-level message. */
45
+ warn(message: string, ...args: unknown[]): void;
46
+ /** Log an error-level message. */
47
+ error(message: string, ...args: unknown[]): void;
48
+ }
49
+ /**
50
+ * Machine-readable error codes returned by SDK HTTP handlers.
51
+ *
52
+ * Consumers can `switch` on these codes for programmatic error handling
53
+ * without relying on human-readable messages.
54
+ */
55
+ 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';
56
+ /**
57
+ * Structured error object in SDK HTTP responses.
58
+ */
59
+ export interface SdkError {
60
+ /** Machine-readable error code. */
61
+ code: ErrorCode;
62
+ /** Human-readable error message. */
63
+ message: string;
64
+ /** Validation details (present on INVALID_PAYLOAD errors). */
65
+ details?: unknown;
66
+ }
67
+ /**
68
+ * Standard error body returned by all SDK HTTP handlers.
69
+ *
70
+ * Every error response includes a structured `error` object with a stable
71
+ * `code` for programmatic handling and a `message` for display. The HTTP
72
+ * status code signals failure; no `success` field is included.
73
+ */
74
+ export interface SdkErrorBody {
75
+ error: SdkError;
76
+ }
9
77
  /**
10
78
  * Environment configuration.
11
79
  */
@@ -315,7 +383,7 @@ export type IdentityConfig<TState = unknown> = SsoIdentityConfig<TState> | Custo
315
383
  /**
316
384
  * Data provided to `hooks.beforeActivitySend`.
317
385
  *
318
- * This is the payload the client POSTed plus the Caliper events the SDK built.
386
+ * Contains the Caliper ActivityCompletedEvent the SDK built plus context.
319
387
  * Returning `null` from the hook skips sending.
320
388
  */
321
389
  export interface ActivityBeforeSendData {
@@ -329,10 +397,57 @@ export interface ActivityBeforeSendData {
329
397
  };
330
398
  /** Caliper activity context object */
331
399
  object: TimebackActivityContext;
332
- /** Built events (ActivityEvent + TimeSpentEvent) */
333
- events: [ActivityCompletedEvent, TimeSpentEvent];
334
- /** Original payload posted by the client */
335
- payload: ActivityEndPayload;
400
+ /** Built ActivityCompletedEvent */
401
+ event: ActivityCompletedEvent;
402
+ /** Effective completion payload (after progress computation) */
403
+ payload: {
404
+ id: string;
405
+ name: string;
406
+ course: ActivityCourseRef;
407
+ endedAt: string;
408
+ metrics: ActivityMetrics;
409
+ pctComplete?: number;
410
+ };
411
+ /** Matched course from `timeback.config.json` */
412
+ course: AppConfig['courses'][number];
413
+ /** App name (from config) */
414
+ appName: string;
415
+ /** API environment used for resolution */
416
+ apiEnv: 'staging' | 'production';
417
+ /** User email */
418
+ email: string;
419
+ /** Canonical Timeback user id */
420
+ timebackId: string;
421
+ }
422
+ /**
423
+ * Data provided to `hooks.beforeTimeSpentSend`.
424
+ *
425
+ * Contains the Caliper TimeSpentEvent the SDK built plus context.
426
+ * Returning `null` from the hook skips sending.
427
+ */
428
+ export interface TimeSpentBeforeSendData {
429
+ /** Sensor URL selected for the event submission */
430
+ sensor: string;
431
+ /** Actor object used in generated Caliper events */
432
+ actor: {
433
+ id: string;
434
+ type: 'TimebackUser';
435
+ email: string;
436
+ };
437
+ /** Caliper activity context object */
438
+ object: TimebackActivityContext;
439
+ /** Built TimeSpentEvent */
440
+ event: TimeSpentEvent;
441
+ /** Time-spent payload */
442
+ payload: {
443
+ id: string;
444
+ name: string;
445
+ course: ActivityCourseRef;
446
+ startedAt: string;
447
+ endedAt: string;
448
+ elapsedMs: number;
449
+ pausedMs: number;
450
+ };
336
451
  /** Matched course from `timeback.config.json` */
337
452
  course: AppConfig['courses'][number];
338
453
  /** App name (from config) */
@@ -343,6 +458,34 @@ export interface ActivityBeforeSendData {
343
458
  email: string;
344
459
  /** Canonical Timeback user id */
345
460
  timebackId: string;
461
+ /** Correlation ID linking to client-side heartbeats */
462
+ runId?: string;
463
+ }
464
+ /**
465
+ * Handler names for request lifecycle hooks.
466
+ *
467
+ * Matches the shape of `timeback.handle.*` on the instance.
468
+ * `identity.signOut` is excluded because it is a trivial redirect
469
+ * with no request processing.
470
+ */
471
+ export type HandlerName = 'activity.submit' | 'activity.heartbeat' | 'identity.signIn' | 'identity.callback' | 'user.me' | 'user.verify';
472
+ /**
473
+ * Context passed to `hooks.onRequestStart`.
474
+ */
475
+ export interface RequestStartContext {
476
+ /** Which handler is processing the request */
477
+ handler: HandlerName;
478
+ }
479
+ /**
480
+ * Context passed to `hooks.onRequestEnd`.
481
+ */
482
+ export interface RequestEndContext {
483
+ /** Which handler processed the request */
484
+ handler: HandlerName;
485
+ /** Time taken to process the request in milliseconds */
486
+ durationMs: number;
487
+ /** HTTP status code of the response */
488
+ status: number;
346
489
  }
347
490
  /**
348
491
  * Full Timeback SDK configuration.
@@ -356,6 +499,35 @@ export interface TimebackConfig<TState = unknown> {
356
499
  api: ApiCredentials;
357
500
  /** Identity configuration */
358
501
  identity: IdentityConfig<TState>;
502
+ /**
503
+ * Custom logger for SDK output.
504
+ *
505
+ * When provided, all SDK log calls are routed through this logger.
506
+ * Each message is prefixed with the internal scope (e.g., `[timeback:handlers:user]`).
507
+ *
508
+ * When omitted, the SDK uses its built-in logger (console-based, scoped).
509
+ *
510
+ * @example
511
+ * ```typescript
512
+ * // Route SDK logs through Pino
513
+ * import pino from 'pino'
514
+ * createTimeback({ logger: pino(), ... })
515
+ *
516
+ * // Or just use console
517
+ * createTimeback({ logger: console, ... })
518
+ * ```
519
+ */
520
+ logger?: SdkLogger;
521
+ /**
522
+ * Minimum log level for SDK output.
523
+ *
524
+ * Controls which messages are emitted by the built-in logger.
525
+ * Ignored when a custom `logger` is provided (the custom logger
526
+ * is responsible for its own level filtering).
527
+ *
528
+ * @default `'warn'` (or `'debug'` when `DEBUG=1`)
529
+ */
530
+ logLevel?: SdkLogLevel;
359
531
  /**
360
532
  * Optional hooks for customizing SDK handler behavior.
361
533
  *
@@ -363,7 +535,7 @@ export interface TimebackConfig<TState = unknown> {
363
535
  */
364
536
  hooks?: {
365
537
  /**
366
- * Called after Caliper events are built, right before sending.
538
+ * Called after Caliper ActivityCompletedEvent is built, right before sending.
367
539
  *
368
540
  * - Return the (optionally modified) data to proceed with sending
369
541
  * - Return `null` to skip sending (handler still returns success)
@@ -373,14 +545,50 @@ export interface TimebackConfig<TState = unknown> {
373
545
  * @returns Modified data to send, or null to skip
374
546
  */
375
547
  beforeActivitySend?: (data: ActivityBeforeSendData) => ActivityBeforeSendData | null | Promise<ActivityBeforeSendData | null>;
548
+ /**
549
+ * Called after Caliper TimeSpentEvent is built, right before sending.
550
+ *
551
+ * Fires on both the heartbeat path and `timeback.activity.record()` with time data.
552
+ *
553
+ * - Return the (optionally modified) data to proceed with sending
554
+ * - Return `null` to skip sending (handler still returns success)
555
+ * - Throw to fail the request
556
+ *
557
+ * @param data - Built time-spent event + context
558
+ * @returns Modified data to send, or null to skip
559
+ */
560
+ beforeTimeSpentSend?: (data: TimeSpentBeforeSendData) => TimeSpentBeforeSendData | null | Promise<TimeSpentBeforeSendData | null>;
561
+ /**
562
+ * Called when a request handler starts processing.
563
+ *
564
+ * Fires for `activity.submit`, `activity.heartbeat`, `user.me`, and `user.verify`.
565
+ * Use this to start trace spans, log request entry, or initialize per-request context.
566
+ *
567
+ * @param context - Handler identification
568
+ */
569
+ onRequestStart?: (context: RequestStartContext) => void | Promise<void>;
570
+ /**
571
+ * Called when a request handler finishes processing.
572
+ *
573
+ * Fires for every request that triggered `onRequestStart`, including failures.
574
+ * Use this to record metrics, close trace spans, or log request completion.
575
+ *
576
+ * @param context - Handler identification, timing, and HTTP status
577
+ */
578
+ onRequestEnd?: (context: RequestEndContext) => void | Promise<void>;
376
579
  };
377
580
  }
378
581
  /**
379
582
  * Request handlers namespace.
380
583
  */
381
584
  export interface Handlers {
382
- /** Activity submission handler */
383
- activity: (req: Request) => Promise<Response>;
585
+ /** Activity-related handlers */
586
+ activity: {
587
+ /** Heartbeat handler (time-spent only) */
588
+ heartbeat: (req: Request) => Promise<Response>;
589
+ /** Submit handler (completion only) */
590
+ submit: (req: Request) => Promise<Response>;
591
+ };
384
592
  /** Identity-related handlers */
385
593
  identity: {
386
594
  /** Initiate sign-in (SSO only) */
@@ -491,13 +699,180 @@ export interface AppConfig {
491
699
  courses: AppCourse[];
492
700
  }
493
701
  /**
494
- * Timeback SDK instance (framework-agnostic).
702
+ * User identity for server-side activity recording.
703
+ *
704
+ * Provide either `email` (the SDK will resolve the timebackId) or `timebackId` directly.
705
+ * If both are provided, `timebackId` takes precedence.
706
+ */
707
+ export interface ActivityRecordUserInput {
708
+ /** User's email address (used to resolve timebackId if not provided) */
709
+ email: string;
710
+ /** User's Timeback ID (if already known, skips email lookup) */
711
+ timebackId?: string;
712
+ }
713
+ /**
714
+ * Activity identity for server-side activity recording.
715
+ */
716
+ export interface ActivityRecordActivityInput {
717
+ /** Activity slug (stable identifier) */
718
+ id: string;
719
+ /** Human-readable activity name */
720
+ name: string;
721
+ /** Course selector (must match a course in timeback.config.json) */
722
+ course: import('../shared/types').ActivityCourseRef;
723
+ }
724
+ /** Metrics for server-side activity recording. */
725
+ export interface ActivityRecordMetricsInput {
726
+ /** Total questions attempted */
727
+ totalQuestions?: number;
728
+ /** Number of correct answers */
729
+ correctQuestions?: number;
730
+ /** XP earned */
731
+ xpEarned: number;
732
+ /** Number of units mastered */
733
+ masteredUnits?: number;
734
+ /** App-reported course progress (0-100) */
735
+ pctComplete?: number;
736
+ }
737
+ /**
738
+ * Time information for server-side activity recording.
739
+ *
740
+ * When provided, a TimeSpentEvent will be emitted alongside the ActivityCompletedEvent.
741
+ * When omitted, only ActivityCompletedEvent is emitted.
742
+ */
743
+ export interface ActivityRecordTimeInput {
744
+ /** When the session started (defaults to endedAt - activeMs - inactiveMs, or endedAt if not computable) */
745
+ startedAt?: Date | string;
746
+ /** When the session ended (defaults to now) */
747
+ endedAt?: Date | string;
748
+ /** Active engagement time in milliseconds */
749
+ activeMs?: number;
750
+ /** Inactive/paused time in milliseconds */
751
+ inactiveMs?: number;
752
+ }
753
+ /**
754
+ * Input for `timeback.activity.record()`.
755
+ *
756
+ * Records an activity completion from the server side. Use this for stateful activities
757
+ * where the backend is the source of truth for completion state.
758
+ *
759
+ * @example Completion-only (no time tracking)
760
+ * ```typescript
761
+ * await timeback.activity.record({
762
+ * user: { email: 'student@example.com' },
763
+ * activity: { id: 'lesson-1', name: 'Intro', course: { code: 'MATH-101' } },
764
+ * metrics: { totalQuestions: 20, correctQuestions: 16, xpEarned: 150 },
765
+ * })
766
+ * ```
767
+ *
768
+ * @example With time (emits TimeSpentEvent too)
769
+ * ```typescript
770
+ * await timeback.activity.record({
771
+ * user: { email: 'student@example.com' },
772
+ * activity: { id: 'lesson-1', name: 'Intro', course: { code: 'MATH-101' } },
773
+ * metrics: { totalQuestions: 20, correctQuestions: 16, xpEarned: 150 },
774
+ * time: { activeMs: 900000, inactiveMs: 60000 },
775
+ * })
776
+ * ```
777
+ */
778
+ export interface ActivityRecordInput {
779
+ /** User identity */
780
+ user: ActivityRecordUserInput;
781
+ /** Activity identity */
782
+ activity: ActivityRecordActivityInput;
783
+ /** Activity metrics */
784
+ metrics: ActivityRecordMetricsInput;
785
+ /** Optional time information (when provided, emits TimeSpentEvent) */
786
+ time?: ActivityRecordTimeInput;
787
+ /** Optional correlation ID linking this completion to client-side heartbeats */
788
+ runId?: string;
789
+ }
790
+ /**
791
+ * Server-side activity namespace.
792
+ */
793
+ export interface ActivityNamespace {
794
+ /**
795
+ * Record an activity completion from the server.
796
+ *
797
+ * Use this for stateful activities where the backend is the source of truth.
798
+ * When time is provided, both ActivityCompletedEvent and TimeSpentEvent are emitted.
799
+ * When time is omitted, only ActivityCompletedEvent is emitted.
800
+ *
801
+ * @param input - Activity record input
802
+ */
803
+ record(input: ActivityRecordInput): Promise<void>;
804
+ }
805
+ /**
806
+ * Server-side user namespace.
807
+ *
808
+ * Programmatic equivalents of `/user/verify` and `/user/me` for server-to-server
809
+ * use cases. Both methods accept an email directly rather than a `Request` object.
810
+ */
811
+ export interface UserNamespace {
812
+ /**
813
+ * Check whether a Timeback user exists for the given email.
814
+ *
815
+ * This is a lightweight check that does not build the full enriched profile.
816
+ * Programmatic equivalent of the `/user/verify` HTTP handler.
817
+ *
818
+ * @param email - User's email address
819
+ * @returns Verification result with timebackId if the user exists
820
+ *
821
+ * @example
822
+ * ```typescript
823
+ * const result = await timeback.user.verify('student@example.com')
824
+ *
825
+ * if (result.verified) {
826
+ * console.log(result.timebackId) // "tb_abc123"
827
+ * }
828
+ * ```
829
+ */
830
+ verify(email: string): Promise<TimebackVerifyResult>;
831
+ /**
832
+ * Get the full enriched profile for a user by email.
833
+ *
834
+ * Returns identity, enrollments, courses, goals, and XP data.
835
+ * Programmatic equivalent of the `/user/me` HTTP handler.
836
+ *
837
+ * @param email - User's email address
838
+ * @returns Enriched user profile
839
+ * @throws {TimebackUserResolutionError} If the user cannot be resolved
840
+ *
841
+ * @example
842
+ * ```typescript
843
+ * const profile = await timeback.user.getProfile('student@example.com')
844
+ *
845
+ * console.log(profile.xp?.today) // 42
846
+ * console.log(profile.courses) // [{ id, code, name }]
847
+ * console.log(profile.goals) // { dailyXp, dailyLessons, ... }
848
+ * ```
849
+ */
850
+ getProfile(email: string): Promise<TimebackProfile>;
851
+ }
852
+ /**
853
+ * Timeback SDK instance.
495
854
  */
496
855
  export interface TimebackInstance<TState = unknown> {
497
856
  /** Configuration */
498
857
  config: TimebackConfig<TState>;
499
858
  /** Request handlers */
500
859
  handle: Handlers;
860
+ /**
861
+ * Server-side activity recording.
862
+ *
863
+ * Use `activity.record()` to submit activity completions from the backend,
864
+ * bypassing the HTTP handler. This is useful for stateful activities where
865
+ * the backend is the source of truth for completion state.
866
+ */
867
+ activity: ActivityNamespace;
868
+ /**
869
+ * Server-side user operations.
870
+ *
871
+ * Programmatic equivalents of the `/user/me` and `/user/verify` HTTP handlers.
872
+ * Use these when you need user data in server-side logic (webhooks, cron jobs,
873
+ * SSR data loaders, background tasks) without constructing HTTP requests.
874
+ */
875
+ user: UserNamespace;
501
876
  /**
502
877
  * Direct access to the Timeback API client.
503
878
  *
@@ -517,6 +892,13 @@ export interface TimebackInstance<TState = unknown> {
517
892
  * ```
518
893
  */
519
894
  api: TimebackClient;
895
+ /**
896
+ * Close the shared API client and release resources.
897
+ *
898
+ * Call this during graceful server shutdown to clean up HTTP connections.
899
+ * After calling `close()`, the client will be re-created on next access.
900
+ */
901
+ close: () => void;
520
902
  }
521
903
  /**
522
904
  * 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,10 +19,27 @@ 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
  *
22
29
  * Example: `10 / 10` can become `0.9999999999999999` due to IEEE754 rounding.
23
30
  */
24
31
  export declare const PERFECT_ACCURACY_THRESHOLD = 0.999999;
32
+ /**
33
+ * Default number of retry attempts for verification.
34
+ *
35
+ * Retries help handle race conditions where the user may not be
36
+ * fully set up in the backend when verification first runs.
37
+ */
38
+ export declare const DEFAULT_RETRY_ATTEMPTS = 3;
39
+ /**
40
+ * Default retry delays in milliseconds (exponential backoff).
41
+ *
42
+ * Each index corresponds to the delay before that retry attempt.
43
+ */
44
+ export declare const DEFAULT_RETRY_DELAYS_MS: readonly [100, 300, 1000];
25
45
  //# sourceMappingURL=constants.d.ts.map
@@ -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"}
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"}