@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.
- package/README.md +612 -0
- package/dist/client/adapters/react/SignInButton.d.ts +60 -0
- package/dist/client/adapters/react/SignInButton.d.ts.map +1 -0
- package/dist/client/adapters/react/index.d.ts +47 -0
- package/dist/client/adapters/react/index.d.ts.map +1 -0
- package/dist/client/adapters/react/index.js +478 -0
- package/dist/client/adapters/react/provider.d.ts +78 -0
- package/dist/client/adapters/react/provider.d.ts.map +1 -0
- package/dist/client/adapters/solid/SignInButton.d.ts +52 -0
- package/dist/client/adapters/solid/SignInButton.d.ts.map +1 -0
- package/dist/client/adapters/solid/SignInButton.tsx +321 -0
- package/dist/client/adapters/solid/context.d.ts +73 -0
- package/dist/client/adapters/solid/context.d.ts.map +1 -0
- package/dist/client/adapters/solid/context.tsx +91 -0
- package/dist/client/adapters/solid/index.d.ts +46 -0
- package/dist/client/adapters/solid/index.d.ts.map +1 -0
- package/dist/client/adapters/solid/index.ts +50 -0
- package/dist/client/adapters/svelte/SignInButton.svelte +234 -0
- package/dist/client/adapters/svelte/SignInButton.svelte.d.ts +24 -0
- package/dist/client/adapters/svelte/index.d.ts +37 -0
- package/dist/client/adapters/svelte/index.d.ts.map +1 -0
- package/dist/client/adapters/svelte/index.ts +42 -0
- package/dist/client/adapters/svelte/stores.d.ts +66 -0
- package/dist/client/adapters/svelte/stores.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores.ts +143 -0
- package/dist/client/adapters/vue/SignInButton.vue +260 -0
- package/dist/client/adapters/vue/SignInButton.vue.d.ts +53 -0
- package/dist/client/adapters/vue/index.d.ts +43 -0
- package/dist/client/adapters/vue/index.d.ts.map +1 -0
- package/dist/client/adapters/vue/index.ts +48 -0
- package/dist/client/adapters/vue/provider.d.ts +94 -0
- package/dist/client/adapters/vue/provider.d.ts.map +1 -0
- package/dist/client/adapters/vue/provider.ts +147 -0
- package/dist/client/index.d.ts +9 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/lib/activity/activity.class.d.ts +73 -0
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -0
- package/dist/client/lib/activity/activity.d.ts +16 -0
- package/dist/client/lib/activity/activity.d.ts.map +1 -0
- package/dist/client/lib/activity/index.d.ts +6 -0
- package/dist/client/lib/activity/index.d.ts.map +1 -0
- package/dist/client/lib/utils.d.ts +20 -0
- package/dist/client/lib/utils.d.ts.map +1 -0
- package/dist/client/namespaces/activity.d.ts +41 -0
- package/dist/client/namespaces/activity.d.ts.map +1 -0
- package/dist/client/namespaces/auth.d.ts +33 -0
- package/dist/client/namespaces/auth.d.ts.map +1 -0
- package/dist/client/namespaces/index.d.ts +7 -0
- package/dist/client/namespaces/index.d.ts.map +1 -0
- package/dist/client/namespaces/user.d.ts +29 -0
- package/dist/client/namespaces/user.d.ts.map +1 -0
- package/dist/client/timeback-client.class.d.ts +37 -0
- package/dist/client/timeback-client.class.d.ts.map +1 -0
- package/dist/client/timeback-client.d.ts +29 -0
- package/dist/client/timeback-client.d.ts.map +1 -0
- package/dist/client.d.ts +30 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +198 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +0 -0
- package/dist/edge.d.ts +13 -0
- package/dist/edge.d.ts.map +1 -0
- package/dist/edge.js +1149 -0
- package/dist/identity.d.ts +14 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +1019 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84921 -0
- package/dist/server/adapters/express.d.ts +66 -0
- package/dist/server/adapters/express.d.ts.map +1 -0
- package/dist/server/adapters/express.js +67332 -0
- package/dist/server/adapters/native.d.ts +47 -0
- package/dist/server/adapters/native.d.ts.map +1 -0
- package/dist/server/adapters/native.js +190 -0
- package/dist/server/adapters/nextjs.d.ts +32 -0
- package/dist/server/adapters/nextjs.d.ts.map +1 -0
- package/dist/server/adapters/nextjs.js +202 -0
- package/dist/server/adapters/nuxt.d.ts +98 -0
- package/dist/server/adapters/nuxt.d.ts.map +1 -0
- package/dist/server/adapters/nuxt.js +67401 -0
- package/dist/server/adapters/solid-start.d.ts +63 -0
- package/dist/server/adapters/solid-start.d.ts.map +1 -0
- package/dist/server/adapters/solid-start.js +67300 -0
- package/dist/server/adapters/svelte-kit.d.ts +84 -0
- package/dist/server/adapters/svelte-kit.d.ts.map +1 -0
- package/dist/server/adapters/svelte-kit.js +243 -0
- package/dist/server/adapters/tanstack-start.d.ts +42 -0
- package/dist/server/adapters/tanstack-start.d.ts.map +1 -0
- package/dist/server/adapters/tanstack-start.js +67278 -0
- package/dist/server/adapters/types.d.ts +294 -0
- package/dist/server/adapters/types.d.ts.map +1 -0
- package/dist/server/adapters/utils.d.ts +76 -0
- package/dist/server/adapters/utils.d.ts.map +1 -0
- package/dist/server/handlers/activity.d.ts +28 -0
- package/dist/server/handlers/activity.d.ts.map +1 -0
- package/dist/server/handlers/identity-full.d.ts +28 -0
- package/dist/server/handlers/identity-full.d.ts.map +1 -0
- package/dist/server/handlers/identity-only.d.ts +22 -0
- package/dist/server/handlers/identity-only.d.ts.map +1 -0
- package/dist/server/handlers/index.d.ts +9 -0
- package/dist/server/handlers/index.d.ts.map +1 -0
- package/dist/server/handlers/user.d.ts +31 -0
- package/dist/server/handlers/user.d.ts.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/lib/build-activity-events.d.ts +39 -0
- package/dist/server/lib/build-activity-events.d.ts.map +1 -0
- package/dist/server/lib/build-user-profile.d.ts +62 -0
- package/dist/server/lib/build-user-profile.d.ts.map +1 -0
- package/dist/server/lib/index.d.ts +14 -0
- package/dist/server/lib/index.d.ts.map +1 -0
- package/dist/server/lib/logger.d.ts +21 -0
- package/dist/server/lib/logger.d.ts.map +1 -0
- package/dist/server/lib/oidc.d.ts +76 -0
- package/dist/server/lib/oidc.d.ts.map +1 -0
- package/dist/server/lib/resolve-activity-course.d.ts +22 -0
- package/dist/server/lib/resolve-activity-course.d.ts.map +1 -0
- package/dist/server/lib/resolve-timeback-id.d.ts +28 -0
- package/dist/server/lib/resolve-timeback-id.d.ts.map +1 -0
- package/dist/server/lib/resolve-timeback-user.d.ts +42 -0
- package/dist/server/lib/resolve-timeback-user.d.ts.map +1 -0
- package/dist/server/lib/utils.d.ts +54 -0
- package/dist/server/lib/utils.d.ts.map +1 -0
- package/dist/server/timeback-identity.d.ts +19 -0
- package/dist/server/timeback-identity.d.ts.map +1 -0
- package/dist/server/timeback.d.ts +68 -0
- package/dist/server/timeback.d.ts.map +1 -0
- package/dist/server/types.d.ts +421 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/shared/constants.d.ts +18 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/types.d.ts +159 -0
- package/dist/shared/types.d.ts.map +1 -0
- 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"}
|