@timeback/sdk 0.1.4

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 (136) hide show
  1. package/README.md +612 -0
  2. package/dist/client/adapters/react/SignInButton.d.ts +60 -0
  3. package/dist/client/adapters/react/SignInButton.d.ts.map +1 -0
  4. package/dist/client/adapters/react/index.d.ts +47 -0
  5. package/dist/client/adapters/react/index.d.ts.map +1 -0
  6. package/dist/client/adapters/react/index.js +478 -0
  7. package/dist/client/adapters/react/provider.d.ts +78 -0
  8. package/dist/client/adapters/react/provider.d.ts.map +1 -0
  9. package/dist/client/adapters/solid/SignInButton.d.ts +52 -0
  10. package/dist/client/adapters/solid/SignInButton.d.ts.map +1 -0
  11. package/dist/client/adapters/solid/SignInButton.tsx +321 -0
  12. package/dist/client/adapters/solid/context.d.ts +73 -0
  13. package/dist/client/adapters/solid/context.d.ts.map +1 -0
  14. package/dist/client/adapters/solid/context.tsx +91 -0
  15. package/dist/client/adapters/solid/index.d.ts +46 -0
  16. package/dist/client/adapters/solid/index.d.ts.map +1 -0
  17. package/dist/client/adapters/solid/index.ts +50 -0
  18. package/dist/client/adapters/svelte/SignInButton.svelte +234 -0
  19. package/dist/client/adapters/svelte/SignInButton.svelte.d.ts +24 -0
  20. package/dist/client/adapters/svelte/index.d.ts +37 -0
  21. package/dist/client/adapters/svelte/index.d.ts.map +1 -0
  22. package/dist/client/adapters/svelte/index.ts +42 -0
  23. package/dist/client/adapters/svelte/stores.d.ts +66 -0
  24. package/dist/client/adapters/svelte/stores.d.ts.map +1 -0
  25. package/dist/client/adapters/svelte/stores.ts +143 -0
  26. package/dist/client/adapters/vue/SignInButton.vue +260 -0
  27. package/dist/client/adapters/vue/SignInButton.vue.d.ts +53 -0
  28. package/dist/client/adapters/vue/index.d.ts +43 -0
  29. package/dist/client/adapters/vue/index.d.ts.map +1 -0
  30. package/dist/client/adapters/vue/index.ts +48 -0
  31. package/dist/client/adapters/vue/provider.d.ts +94 -0
  32. package/dist/client/adapters/vue/provider.d.ts.map +1 -0
  33. package/dist/client/adapters/vue/provider.ts +147 -0
  34. package/dist/client/index.d.ts +9 -0
  35. package/dist/client/index.d.ts.map +1 -0
  36. package/dist/client/lib/activity/activity.class.d.ts +73 -0
  37. package/dist/client/lib/activity/activity.class.d.ts.map +1 -0
  38. package/dist/client/lib/activity/activity.d.ts +16 -0
  39. package/dist/client/lib/activity/activity.d.ts.map +1 -0
  40. package/dist/client/lib/activity/index.d.ts +6 -0
  41. package/dist/client/lib/activity/index.d.ts.map +1 -0
  42. package/dist/client/lib/utils.d.ts +20 -0
  43. package/dist/client/lib/utils.d.ts.map +1 -0
  44. package/dist/client/namespaces/activity.d.ts +41 -0
  45. package/dist/client/namespaces/activity.d.ts.map +1 -0
  46. package/dist/client/namespaces/auth.d.ts +33 -0
  47. package/dist/client/namespaces/auth.d.ts.map +1 -0
  48. package/dist/client/namespaces/index.d.ts +7 -0
  49. package/dist/client/namespaces/index.d.ts.map +1 -0
  50. package/dist/client/namespaces/user.d.ts +29 -0
  51. package/dist/client/namespaces/user.d.ts.map +1 -0
  52. package/dist/client/timeback-client.class.d.ts +37 -0
  53. package/dist/client/timeback-client.class.d.ts.map +1 -0
  54. package/dist/client/timeback-client.d.ts +29 -0
  55. package/dist/client/timeback-client.d.ts.map +1 -0
  56. package/dist/client.d.ts +30 -0
  57. package/dist/client.d.ts.map +1 -0
  58. package/dist/client.js +198 -0
  59. package/dist/config.d.ts +20 -0
  60. package/dist/config.d.ts.map +1 -0
  61. package/dist/config.js +0 -0
  62. package/dist/edge.d.ts +13 -0
  63. package/dist/edge.d.ts.map +1 -0
  64. package/dist/edge.js +1149 -0
  65. package/dist/identity.d.ts +14 -0
  66. package/dist/identity.d.ts.map +1 -0
  67. package/dist/identity.js +1019 -0
  68. package/dist/index.d.ts +48 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +84921 -0
  71. package/dist/server/adapters/express.d.ts +66 -0
  72. package/dist/server/adapters/express.d.ts.map +1 -0
  73. package/dist/server/adapters/express.js +67332 -0
  74. package/dist/server/adapters/native.d.ts +47 -0
  75. package/dist/server/adapters/native.d.ts.map +1 -0
  76. package/dist/server/adapters/native.js +190 -0
  77. package/dist/server/adapters/nextjs.d.ts +32 -0
  78. package/dist/server/adapters/nextjs.d.ts.map +1 -0
  79. package/dist/server/adapters/nextjs.js +202 -0
  80. package/dist/server/adapters/nuxt.d.ts +98 -0
  81. package/dist/server/adapters/nuxt.d.ts.map +1 -0
  82. package/dist/server/adapters/nuxt.js +67401 -0
  83. package/dist/server/adapters/solid-start.d.ts +63 -0
  84. package/dist/server/adapters/solid-start.d.ts.map +1 -0
  85. package/dist/server/adapters/solid-start.js +67300 -0
  86. package/dist/server/adapters/svelte-kit.d.ts +84 -0
  87. package/dist/server/adapters/svelte-kit.d.ts.map +1 -0
  88. package/dist/server/adapters/svelte-kit.js +243 -0
  89. package/dist/server/adapters/tanstack-start.d.ts +42 -0
  90. package/dist/server/adapters/tanstack-start.d.ts.map +1 -0
  91. package/dist/server/adapters/tanstack-start.js +67278 -0
  92. package/dist/server/adapters/types.d.ts +294 -0
  93. package/dist/server/adapters/types.d.ts.map +1 -0
  94. package/dist/server/adapters/utils.d.ts +76 -0
  95. package/dist/server/adapters/utils.d.ts.map +1 -0
  96. package/dist/server/handlers/activity.d.ts +28 -0
  97. package/dist/server/handlers/activity.d.ts.map +1 -0
  98. package/dist/server/handlers/identity-full.d.ts +28 -0
  99. package/dist/server/handlers/identity-full.d.ts.map +1 -0
  100. package/dist/server/handlers/identity-only.d.ts +22 -0
  101. package/dist/server/handlers/identity-only.d.ts.map +1 -0
  102. package/dist/server/handlers/index.d.ts +9 -0
  103. package/dist/server/handlers/index.d.ts.map +1 -0
  104. package/dist/server/handlers/user.d.ts +31 -0
  105. package/dist/server/handlers/user.d.ts.map +1 -0
  106. package/dist/server/index.d.ts +9 -0
  107. package/dist/server/index.d.ts.map +1 -0
  108. package/dist/server/lib/build-activity-events.d.ts +39 -0
  109. package/dist/server/lib/build-activity-events.d.ts.map +1 -0
  110. package/dist/server/lib/build-user-profile.d.ts +62 -0
  111. package/dist/server/lib/build-user-profile.d.ts.map +1 -0
  112. package/dist/server/lib/index.d.ts +14 -0
  113. package/dist/server/lib/index.d.ts.map +1 -0
  114. package/dist/server/lib/logger.d.ts +21 -0
  115. package/dist/server/lib/logger.d.ts.map +1 -0
  116. package/dist/server/lib/oidc.d.ts +76 -0
  117. package/dist/server/lib/oidc.d.ts.map +1 -0
  118. package/dist/server/lib/resolve-activity-course.d.ts +22 -0
  119. package/dist/server/lib/resolve-activity-course.d.ts.map +1 -0
  120. package/dist/server/lib/resolve-timeback-id.d.ts +28 -0
  121. package/dist/server/lib/resolve-timeback-id.d.ts.map +1 -0
  122. package/dist/server/lib/resolve-timeback-user.d.ts +42 -0
  123. package/dist/server/lib/resolve-timeback-user.d.ts.map +1 -0
  124. package/dist/server/lib/utils.d.ts +54 -0
  125. package/dist/server/lib/utils.d.ts.map +1 -0
  126. package/dist/server/timeback-identity.d.ts +19 -0
  127. package/dist/server/timeback-identity.d.ts.map +1 -0
  128. package/dist/server/timeback.d.ts +68 -0
  129. package/dist/server/timeback.d.ts.map +1 -0
  130. package/dist/server/types.d.ts +421 -0
  131. package/dist/server/types.d.ts.map +1 -0
  132. package/dist/shared/constants.d.ts +18 -0
  133. package/dist/shared/constants.d.ts.map +1 -0
  134. package/dist/shared/types.d.ts +159 -0
  135. package/dist/shared/types.d.ts.map +1 -0
  136. package/package.json +119 -0
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Server Adapter Types
3
+ *
4
+ * Public type definitions for server framework adapters.
5
+ */
6
+ import type { Handlers, IdentityOnlyHandlers, IdentityOnlyInstance, TimebackInstance } from '../types';
7
+ /**
8
+ * Flexible input that accepts either a TimebackInstance or just the handlers.
9
+ *
10
+ * Allows both:
11
+ * - `toNextjsHandler(timeback)`
12
+ * - `toNextjsHandler(timeback.handle)`
13
+ */
14
+ export type TimebackInput = TimebackInstance | Handlers;
15
+ /**
16
+ * Flexible input that accepts either an IdentityOnlyInstance or just the handlers.
17
+ *
18
+ * Allows both:
19
+ * - `toNextjsHandler(timeback)`
20
+ * - `toNextjsHandler(timeback.handle)`
21
+ */
22
+ export type IdentityOnlyInput = IdentityOnlyInstance | IdentityOnlyHandlers;
23
+ /**
24
+ * Union of all valid inputs for adapters.
25
+ *
26
+ * Adapters accept either full Timeback instances or identity-only instances.
27
+ */
28
+ export type AnyTimebackInput = TimebackInput | IdentityOnlyInput;
29
+ /**
30
+ * Next.js route handlers.
31
+ */
32
+ export interface NextjsHandlers {
33
+ GET: (req: Request) => Promise<Response>;
34
+ POST: (req: Request) => Promise<Response>;
35
+ PUT: (req: Request) => Promise<Response>;
36
+ DELETE: (req: Request) => Promise<Response>;
37
+ PATCH: (req: Request) => Promise<Response>;
38
+ }
39
+ /**
40
+ * Minimal request interface compatible with Express and similar frameworks.
41
+ *
42
+ * Works with: Express, Polka, Fastify (with express compat), Restify, etc.
43
+ */
44
+ export interface ExpressLikeRequest {
45
+ method: string;
46
+ url: string;
47
+ headers: Record<string, string | string[] | undefined>;
48
+ body?: unknown;
49
+ protocol: string;
50
+ get: (name: string) => string | undefined;
51
+ }
52
+ /**
53
+ * Minimal response interface compatible with Express and similar frameworks.
54
+ *
55
+ * Works with: Express, Polka, Fastify (with express compat), Restify, etc.
56
+ */
57
+ export interface ExpressLikeResponse {
58
+ status: (code: number) => ExpressLikeResponse;
59
+ set: (headers: Record<string, string>) => ExpressLikeResponse;
60
+ json: (data: unknown) => void;
61
+ send: (body: string) => void;
62
+ redirect: (url: string) => void;
63
+ }
64
+ /**
65
+ * Next function for Express-like middleware.
66
+ */
67
+ export type ExpressLikeNext = () => void;
68
+ /**
69
+ * Minimal router interface compatible with Express and similar frameworks.
70
+ *
71
+ * Works with: Express.Router(), Polka, etc.
72
+ */
73
+ export interface ExpressLikeRouter {
74
+ get: (path: string, handler: ExpressLikeHandler) => void;
75
+ post: (path: string, handler: ExpressLikeHandler) => void;
76
+ use: (handler: ExpressLikeHandler) => void;
77
+ }
78
+ /**
79
+ * Express-like middleware handler type.
80
+ */
81
+ export type ExpressLikeHandler = (req: ExpressLikeRequest, res: ExpressLikeResponse, next: ExpressLikeNext) => void;
82
+ /**
83
+ * Options for the native handler.
84
+ */
85
+ export interface NativeHandlerOptions {
86
+ /** Timeback instance or handlers (full or identity-only) */
87
+ timeback: AnyTimebackInput;
88
+ /**
89
+ * Custom callback path for OAuth redirect.
90
+ *
91
+ * When your IdP uses a custom redirect URI that doesn't match the SDK's
92
+ * default `/identity/callback` path, set this to match your `redirectUri`.
93
+ *
94
+ * @example '/api/auth/sso/callback/timeback'
95
+ */
96
+ callbackPath?: string;
97
+ }
98
+ /**
99
+ * Minimal SvelteKit RequestEvent-compatible structure.
100
+ *
101
+ * Uses generics to accept SvelteKit's full RequestEvent without requiring the dependency.
102
+ */
103
+ export interface SvelteKitRequestEvent {
104
+ request: Request;
105
+ url: URL;
106
+ }
107
+ /**
108
+ * Options for the SvelteKit handler hook.
109
+ *
110
+ * Uses generics to properly type the resolve function with the actual SvelteKit event type.
111
+ */
112
+ export interface SvelteKitHandlerOptions<TEvent extends SvelteKitRequestEvent = SvelteKitRequestEvent> {
113
+ /** Timeback instance or handlers (full or identity-only) */
114
+ timeback: AnyTimebackInput;
115
+ /** SvelteKit request event */
116
+ event: TEvent;
117
+ /** SvelteKit resolve function */
118
+ resolve: (event: TEvent) => Response | Promise<Response>;
119
+ /** Whether SvelteKit is building (from `$app/environment`) */
120
+ building?: boolean;
121
+ /** Base path for Timeback routes (default: '/api/timeback') */
122
+ basePath?: string;
123
+ /**
124
+ * Custom callback path for OAuth redirects.
125
+ *
126
+ * If your IdP has a pre-registered callback URL that differs from the SDK default
127
+ * (`/api/timeback/identity/callback`), specify the path here so the handler can
128
+ * intercept it.
129
+ *
130
+ * @example '/api/auth/sso/callback/timeback'
131
+ */
132
+ callbackPath?: string;
133
+ }
134
+ /**
135
+ * SvelteKit RequestHandler type.
136
+ *
137
+ * Compatible with SvelteKit's `RequestHandler` from `@sveltejs/kit`.
138
+ */
139
+ export type SvelteKitRequestHandler = (event: {
140
+ request: Request;
141
+ }) => Promise<Response>;
142
+ /**
143
+ * SvelteKit route handlers.
144
+ */
145
+ export interface SvelteKitHandlers {
146
+ GET: SvelteKitRequestHandler;
147
+ POST: SvelteKitRequestHandler;
148
+ PUT: SvelteKitRequestHandler;
149
+ DELETE: SvelteKitRequestHandler;
150
+ PATCH: SvelteKitRequestHandler;
151
+ }
152
+ /**
153
+ * Minimal SolidStart APIEvent-compatible structure.
154
+ */
155
+ export interface SolidStartEvent {
156
+ request: Request;
157
+ }
158
+ /**
159
+ * Options for the SolidStart middleware handler.
160
+ */
161
+ export interface SolidStartHandlerOptions {
162
+ /** Timeback instance or handlers (full or identity-only) */
163
+ timeback: AnyTimebackInput;
164
+ /** SolidStart event containing the request */
165
+ event: SolidStartEvent;
166
+ /** Base path for Timeback routes (default: '/api/timeback') */
167
+ basePath?: string;
168
+ /**
169
+ * Custom callback path for OAuth redirects.
170
+ *
171
+ * If your IdP has a pre-registered callback URL that differs from the SDK default
172
+ * (`/api/timeback/identity/callback`), specify the path here so the handler can
173
+ * intercept it.
174
+ *
175
+ * @example '/api/auth/sso/callback/timeback'
176
+ */
177
+ callbackPath?: string;
178
+ }
179
+ /**
180
+ * SolidStart RequestHandler type.
181
+ *
182
+ * Compatible with SolidStart's APIEvent handler pattern.
183
+ */
184
+ export type SolidStartRequestHandler = (event: {
185
+ request: Request;
186
+ }) => Response | Promise<Response>;
187
+ /**
188
+ * SolidStart route handlers.
189
+ */
190
+ export interface SolidStartHandlers {
191
+ GET: SolidStartRequestHandler;
192
+ POST: SolidStartRequestHandler;
193
+ PUT: SolidStartRequestHandler;
194
+ DELETE: SolidStartRequestHandler;
195
+ PATCH: SolidStartRequestHandler;
196
+ }
197
+ /**
198
+ * TanStack Start route event.
199
+ */
200
+ export interface TanStackStartEvent {
201
+ request: Request;
202
+ }
203
+ /**
204
+ * TanStack Start RequestHandler type.
205
+ */
206
+ export type TanStackStartRequestHandler = (event: TanStackStartEvent) => Response | Promise<Response>;
207
+ /**
208
+ * TanStack Start route handlers.
209
+ */
210
+ export interface TanStackStartHandlers {
211
+ GET: TanStackStartRequestHandler;
212
+ POST: TanStackStartRequestHandler;
213
+ PUT: TanStackStartRequestHandler;
214
+ DELETE: TanStackStartRequestHandler;
215
+ PATCH: TanStackStartRequestHandler;
216
+ }
217
+ /**
218
+ * Options for the TanStack Start handler.
219
+ */
220
+ export interface TanStackStartHandlerOptions {
221
+ /** Timeback instance or handlers (full or identity-only) */
222
+ timeback: AnyTimebackInput;
223
+ /** Custom callback path for OAuth (if different from default) */
224
+ callbackPath?: string;
225
+ }
226
+ /**
227
+ * Minimal Node.js IncomingMessage-like interface.
228
+ *
229
+ * Used for fallback request conversion when `event.request` is not available.
230
+ */
231
+ export interface NodeLikeIncomingMessage {
232
+ method?: string;
233
+ url?: string;
234
+ headers: Record<string, string | string[] | undefined>;
235
+ on: (event: 'data' | 'end' | 'error', listener: (chunk?: Buffer | Error) => void) => void;
236
+ }
237
+ /**
238
+ * Minimal H3Event-compatible structure for Nuxt 3.
239
+ *
240
+ * This interface supports two patterns:
241
+ * 1. Modern H3 with `event.request` (Web Request API) - preferred
242
+ * 2. Legacy/fallback with `event.node.req` (Node IncomingMessage)
243
+ *
244
+ * We check for `event.request` first, falling back to `event.node.req` for
245
+ * environments where the Web Request isn't directly available.
246
+ */
247
+ export interface NuxtLikeEvent {
248
+ /** Web Request (preferred, available in modern H3/Nitro) */
249
+ request?: Request;
250
+ /** Node.js request/response objects (fallback) */
251
+ node?: {
252
+ req: NodeLikeIncomingMessage;
253
+ };
254
+ /** Request path */
255
+ path?: string;
256
+ }
257
+ /**
258
+ * Options for the Nuxt middleware handler.
259
+ */
260
+ export interface NuxtHandlerOptions<TEvent extends NuxtLikeEvent = NuxtLikeEvent> {
261
+ /** Timeback instance or handlers (full or identity-only) */
262
+ timeback: AnyTimebackInput;
263
+ /** Nuxt/H3 event */
264
+ event: TEvent;
265
+ /** Base path for Timeback routes (default: '/api/timeback') */
266
+ basePath?: string;
267
+ /**
268
+ * Custom callback path for OAuth redirects.
269
+ *
270
+ * If your IdP has a pre-registered callback URL that differs from the SDK default
271
+ * (`/api/timeback/identity/callback`), specify the path here so the handler can
272
+ * intercept it.
273
+ *
274
+ * @example '/api/auth/sso/callback/timeback'
275
+ */
276
+ callbackPath?: string;
277
+ }
278
+ /**
279
+ * Nuxt RequestHandler type.
280
+ *
281
+ * Compatible with Nuxt 3's defineEventHandler pattern.
282
+ */
283
+ export type NuxtRequestHandler = (event: NuxtLikeEvent) => Response | Promise<Response>;
284
+ /**
285
+ * Nuxt route handlers.
286
+ */
287
+ export interface NuxtHandlers {
288
+ GET: NuxtRequestHandler;
289
+ POST: NuxtRequestHandler;
290
+ PUT: NuxtRequestHandler;
291
+ DELETE: NuxtRequestHandler;
292
+ PATCH: NuxtRequestHandler;
293
+ }
294
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Server Adapter Utilities
3
+ *
4
+ * Shared utilities for server framework adapters.
5
+ */
6
+ import type { Handlers, IdentityOnlyHandlers } from '../types';
7
+ import type { AnyTimebackInput } from './types';
8
+ /**
9
+ * Union of handler types returned by getHandlers.
10
+ */
11
+ type AnyHandlers = Handlers | IdentityOnlyHandlers;
12
+ /**
13
+ * A canonical route identifier for Timeback's built-in endpoints.
14
+ */
15
+ type TimebackRouteId = 'identity.signIn' | 'identity.callback' | 'identity.signOut' | 'user.me' | 'activity';
16
+ /**
17
+ * Normalize a path-like string to a pathname only (no query string).
18
+ *
19
+ * Some frameworks may provide path-like values that include a query string
20
+ * (e.g. `/api/timeback/identity/signin?returnTo=/`). Route matching should
21
+ * operate on pathnames only.
22
+ *
23
+ * @param path - Path-like string (may include query string)
24
+ * @returns Pathname only (no query string)
25
+ */
26
+ export declare function normalizePathname(path: string): string;
27
+ /**
28
+ * Attempt to map a request to a Timeback built-in route.
29
+ *
30
+ * This consolidates route matching logic so adapters don't each re-implement
31
+ * their own `endsWith(...)` chains.
32
+ *
33
+ * Matching strategy:
34
+ * - If `callbackPath` is provided and equals the request pathname, treat it as
35
+ * the identity callback route (GET only).
36
+ * - If `basePath` is provided, match *exactly* against `basePath + ROUTES.*`
37
+ * by stripping the base path and comparing the relative path.
38
+ * - If `basePath` is not provided, fall back to suffix matching (`endsWith`)
39
+ * to support catch-all mounts where the mount prefix isn't known.
40
+ *
41
+ * @param params - Matching inputs
42
+ * @param params.pathname - Request pathname (may include query string; will be normalized)
43
+ * @param params.method - HTTP method
44
+ * @param params.basePath - Optional base path (recommended when available)
45
+ * @param params.callbackPath - Optional custom callback path
46
+ * @returns A matched route id, or null if not a Timeback route
47
+ */
48
+ export declare function matchTimebackRoute(params: {
49
+ pathname: string;
50
+ method: string;
51
+ basePath?: string;
52
+ callbackPath?: string;
53
+ }): TimebackRouteId | null;
54
+ /**
55
+ * Extract handlers from flexible input.
56
+ *
57
+ * @param input - TimebackInstance, IdentityOnlyInstance, or their handlers
58
+ * @returns Handlers object (full or identity-only)
59
+ */
60
+ export declare function getHandlers(input: AnyTimebackInput): AnyHandlers;
61
+ /**
62
+ * Check if handlers include activity tracking (full SDK).
63
+ *
64
+ * @param handlers - Handlers to check
65
+ * @returns True if handlers include activity tracking
66
+ */
67
+ export declare function hasActivityHandler(handlers: AnyHandlers): handlers is Handlers;
68
+ /**
69
+ * Check if handlers include user handlers (full SDK).
70
+ *
71
+ * @param handlers - Handlers to check
72
+ * @returns True if handlers include user handlers
73
+ */
74
+ export declare function hasUserHandler(handlers: AnyHandlers): handlers is Handlers;
75
+ export {};
76
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/adapters/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,KAAK,WAAW,GAAG,QAAQ,GAAG,oBAAoB,CAAA;AAElD;;GAEG;AACH,KAAK,eAAe,GACjB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,SAAS,GACT,UAAU,CAAA;AAEb;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqBtD;AA8BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,eAAe,GAAG,IAAI,CAsDzB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,WAAW,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAE1E"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Activity Handlers
3
+ *
4
+ * Route handlers for activity tracking.
5
+ */
6
+ import type { ApiCredentials, AppConfig, Environment, IdentityConfig } from '../types';
7
+ /**
8
+ * Configuration for the activity handler.
9
+ */
10
+ interface ActivityHandlerConfig {
11
+ env: Environment;
12
+ identity: IdentityConfig;
13
+ appConfig: AppConfig;
14
+ api: ApiCredentials;
15
+ }
16
+ /**
17
+ * Activity handler type.
18
+ */
19
+ type ActivityHandler = (req: Request) => Promise<Response>;
20
+ /**
21
+ * Create the activity POST handler.
22
+ *
23
+ * @param config - Handler configuration
24
+ * @returns The activity request handler
25
+ */
26
+ export declare function createActivityHandler(config: ActivityHandlerConfig): ActivityHandler;
27
+ export {};
28
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/activity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0BH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAuFtF;;GAEG;AACH,UAAU,qBAAqB;IAC9B,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;CACnB;AAED;;GAEG;AACH,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE1D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAqIpF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Identity Handlers (full SDK)
3
+ *
4
+ * This module includes Timeback user resolution and therefore depends on Timeback API access.
5
+ */
6
+ import type { TimebackClient } from '@timeback/core';
7
+ import type { ApiCredentials, Environment, IdentityConfig } from '../types';
8
+ type FullIdentityHandlerParams<TState = unknown> = {
9
+ env: Environment;
10
+ identity: IdentityConfig<TState>;
11
+ api: {
12
+ credentials: ApiCredentials;
13
+ getClient: () => TimebackClient;
14
+ };
15
+ };
16
+ /**
17
+ * Create identity route handlers (full SDK).
18
+ *
19
+ * @param params - Handler configuration
20
+ * @returns Identity handlers
21
+ */
22
+ export declare function createIdentityHandlers<TState = unknown>(params: FullIdentityHandlerParams<TState>): {
23
+ signIn: (req: Request) => Promise<Response>;
24
+ callback: (req: Request) => Promise<Response>;
25
+ signOut: () => Response;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=identity-full.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-full.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/identity-full.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACX,cAAc,EAGd,WAAW,EACX,cAAc,EAEd,MAAM,UAAU,CAAA;AAEjB,KAAK,yBAAyB,CAAC,MAAM,GAAG,OAAO,IAAI;IAClD,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAChC,GAAG,EAAE;QACJ,WAAW,EAAE,cAAc,CAAA;QAC3B,SAAS,EAAE,MAAM,cAAc,CAAA;KAC/B,CAAA;CACD,CAAA;AAwQD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAG,OAAO,EACtD,MAAM,EAAE,yBAAyB,CAAC,MAAM,CAAC,GACvC;IACF,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,OAAO,EAAE,MAAM,QAAQ,CAAA;CACvB,CAQA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Identity Handlers (identity-only)
3
+ *
4
+ * This module is intentionally minimal and does NOT import Timeback API client code.
5
+ * It is safe to include in edge runtimes (e.g. Cloudflare Workers / workerd).
6
+ */
7
+ import type { Environment, IdentityOnlyCallbackSuccessContext, SsoIdentityConfig } from '../types';
8
+ /**
9
+ * Create identity route handlers (identity-only mode).
10
+ *
11
+ * @param params - Handler configuration
12
+ * @returns Identity-only handlers
13
+ */
14
+ export declare function createIdentityOnlyHandlers<TState = unknown>(params: {
15
+ env: Environment;
16
+ identity: SsoIdentityConfig<TState, IdentityOnlyCallbackSuccessContext<TState>>;
17
+ }): {
18
+ signIn: (req: Request) => Promise<Response>;
19
+ callback: (req: Request) => Promise<Response>;
20
+ signOut: () => Response;
21
+ };
22
+ //# sourceMappingURL=identity-only.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-only.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/identity-only.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAEX,WAAW,EACX,kCAAkC,EAClC,iBAAiB,EACjB,MAAM,UAAU,CAAA;AAuPjB;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE;IACpE,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,iBAAiB,CAAC,MAAM,EAAE,kCAAkC,CAAC,MAAM,CAAC,CAAC,CAAA;CAC/E;;;;EAYA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Server Handlers
3
+ *
4
+ * Route handlers for Timeback server operations.
5
+ */
6
+ export { createIdentityHandlers } from './identity-full';
7
+ export { createActivityHandler } from './activity';
8
+ export { createUserHandler } from './user';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * User Handlers
3
+ *
4
+ * Route handlers for user profile data.
5
+ */
6
+ import type { ApiCredentials, AppConfig, Environment, IdentityConfig } from '../types';
7
+ /**
8
+ * Configuration for the user handler.
9
+ */
10
+ interface UserHandlerConfig {
11
+ env: Environment;
12
+ identity: IdentityConfig;
13
+ api: ApiCredentials;
14
+ appConfig: AppConfig;
15
+ }
16
+ /**
17
+ * User handler type.
18
+ */
19
+ type UserHandler = (req: Request) => Promise<Response>;
20
+ /**
21
+ * Create the user profile handler.
22
+ *
23
+ * Returns the current user's profile, including identity and enriched data
24
+ * from the Timeback API.
25
+ *
26
+ * @param config - Handler configuration
27
+ * @returns The user profile request handler
28
+ */
29
+ export declare function createUserHandler(config: UserHandlerConfig): UserHandler;
30
+ export {};
31
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/user.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAItF;;GAEG;AACH,UAAU,iBAAiB;IAC1B,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;CACpB;AAED;;GAEG;AACH,KAAK,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAyFxE"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Timeback Server SDK
3
+ *
4
+ * Server-side exports for the Timeback SDK.
5
+ */
6
+ export { createTimeback } from './timeback';
7
+ export { createTimebackIdentity } from './timeback-identity';
8
+ export type { TimebackConfig, TimebackInstance, Environment, ApiCredentials, IdentityConfig, SsoIdentityConfig, CustomIdentityConfig, Handlers, IdentityOnlyConfig, IdentityOnlyInstance, IdentityOnlyHandlers, BuildStateContext, CallbackSuccessContext, IdentityOnlyCallbackSuccessContext, CallbackErrorContext, OIDCTokens, OIDCUserInfo, IdpData, TimebackUserResolutionErrorCode, } from './types';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,YAAY,EAEX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EAER,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EAEpB,iBAAiB,EACjB,sBAAsB,EACtB,kCAAkC,EAClC,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,OAAO,EAEP,+BAA+B,GAC/B,MAAM,SAAS,CAAA"}
@@ -0,0 +1,39 @@
1
+ import type { ActivityCompletedEvent, TimebackActivityContext, TimebackActivityMetric, TimeSpentEvent, TimeSpentMetric } from '@timeback/caliper';
2
+ import type { TimebackClient } from '@timeback/core';
3
+ import type { ActivityEndPayload, ActivityMetrics } from '../../shared/types';
4
+ import type { AppConfig } from '../types';
5
+ /**
6
+ * Build a Timeback activity context for Caliper events.
7
+ *
8
+ * @param payload - Validated activity payload
9
+ * @param course - Matched course config
10
+ * @param appName - Timeback app display name
11
+ * @param apiEnv - Target Timeback API environment
12
+ * @returns Caliper activity context payload
13
+ */
14
+ export declare function buildActivityContext(payload: ActivityEndPayload, course: AppConfig['courses'][number], appName: string, apiEnv: 'staging' | 'production'): TimebackActivityContext;
15
+ /**
16
+ * Build Caliper activity metrics from the client payload.
17
+ *
18
+ * @param metrics - Activity metrics from the client
19
+ * @returns Normalized Caliper activity metrics
20
+ */
21
+ export declare function buildActivityMetrics(metrics: ActivityMetrics): TimebackActivityMetric[];
22
+ /**
23
+ * Build Caliper time spent metrics from elapsed and paused times.
24
+ *
25
+ * @param elapsedMs - Active time in milliseconds
26
+ * @param pausedMs - Paused time in milliseconds
27
+ * @returns Normalized Caliper time spent metrics
28
+ */
29
+ export declare function buildTimeSpentMetrics(elapsedMs: number, pausedMs: number): TimeSpentMetric[];
30
+ /**
31
+ * Send a batch of Caliper events as a single envelope.
32
+ *
33
+ * @param client - Timeback API client
34
+ * @param sensor - Caliper sensor URL
35
+ * @param activityEvent - ActivityEvent payload
36
+ * @param timeSpentEvent - TimeSpentEvent payload
37
+ */
38
+ export declare function sendCaliperEnvelope(client: TimebackClient, sensor: string, activityEvent: ActivityCompletedEvent, timeSpentEvent: TimeSpentEvent): Promise<void>;
39
+ //# sourceMappingURL=build-activity-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-activity-events.d.ts","sourceRoot":"","sources":["../../../src/server/lib/build-activity-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EAEtB,cAAc,EACd,eAAe,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,GAAG,YAAY,GAC9B,uBAAuB,CAgBzB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,sBAAsB,EAAE,CAoBvF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAQ5F;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,sBAAsB,EACrC,cAAc,EAAE,cAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,62 @@
1
+ import type { AppConfig } from '../types';
2
+ type EnrollmentGoals = NonNullable<AppConfig['courses'][number]['metadata']>['goals'];
3
+ type EnrollmentLike = {
4
+ course: {
5
+ id: string;
6
+ title: string;
7
+ };
8
+ metadata?: {
9
+ goals?: EnrollmentGoals;
10
+ };
11
+ };
12
+ type ActivityFacts = Record<string, Record<string, {
13
+ activityMetrics?: {
14
+ xpEarned?: number;
15
+ };
16
+ }>>;
17
+ /**
18
+ * Build a lookup for configured courses keyed by their environment-specific IDs.
19
+ *
20
+ * @param courses - App course config
21
+ * @param apiEnv - Target Timeback API environment
22
+ * @returns Map of courseId → course config
23
+ */
24
+ export declare function buildCourseLookup(courses: AppConfig['courses'], apiEnv: 'staging' | 'production'): Map<string, AppConfig['courses'][number]>;
25
+ /**
26
+ * Map enrollments to the TimebackProfile course shape.
27
+ *
28
+ * @param enrollments - Enrollment list
29
+ * @param courseById - Lookup for configured courses
30
+ * @returns Normalized course list for profile
31
+ */
32
+ export declare function mapEnrollmentsToCourses(enrollments: EnrollmentLike[], courseById: Map<string, AppConfig['courses'][number]>): Array<{
33
+ id: string;
34
+ code: string;
35
+ name: string;
36
+ }>;
37
+ /**
38
+ * Pick a goals object from enrollments, if present.
39
+ *
40
+ * @param enrollments - Enrollment list
41
+ * @returns Goals metadata or undefined
42
+ */
43
+ export declare function pickGoalsFromEnrollments(enrollments: EnrollmentLike[]): EnrollmentGoals | undefined;
44
+ /**
45
+ * Calculate UTC day range for a given date.
46
+ *
47
+ * @param date - Date to anchor the range
48
+ * @returns Start/end timestamps for the UTC day
49
+ */
50
+ export declare function getUtcDayRange(date: Date): {
51
+ start: Date;
52
+ end: Date;
53
+ };
54
+ /**
55
+ * Sum XP values from Edubridge activity facts.
56
+ *
57
+ * @param facts - Activity facts by date and subject
58
+ * @returns Total XP
59
+ */
60
+ export declare function sumXp(facts: ActivityFacts): number;
61
+ export {};
62
+ //# sourceMappingURL=build-user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-user-profile.d.ts","sourceRoot":"","sources":["../../../src/server/lib/build-user-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,KAAK,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAErF,KAAK,cAAc,GAAG;IACrB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CACtC,CAAA;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,eAAe,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC,CAAA;AAEhG;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,MAAM,EAAE,SAAS,GAAG,YAAY,GAC9B,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAW3C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,cAAc,EAAE,EAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GACnD,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAUnD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,cAAc,EAAE,GAC3B,eAAe,GAAG,SAAS,CAE7B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAQrE;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CASlD"}