@timeback/sdk 0.1.9 → 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.
- package/dist/chunk-3mqpr9vx.js +2 -0
- package/dist/chunk-92nnwa7t.js +2 -0
- package/dist/{chunk-agpf1x3g.js → chunk-af3xwwsv.js} +1 -1
- package/dist/{chunk-07j8zre9.js → chunk-b8649tw4.js} +1 -1
- package/dist/{chunk-63afdp3y.js → chunk-bd09q1fw.js} +6 -6
- package/dist/chunk-js665z11.js +1 -0
- package/dist/chunk-nsr7a2dv.js +2 -0
- package/dist/chunk-sgcwg4j6.js +1 -0
- package/dist/{chunk-9se82640.js → chunk-txwjkpfz.js} +1 -1
- package/dist/client/adapters/react/hooks/types.d.ts +2 -29
- package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +2 -2
- package/dist/client/adapters/solid/types.d.ts +2 -29
- package/dist/client/adapters/solid/types.d.ts.map +1 -1
- package/dist/client/adapters/solid/types.ts +2 -18
- package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/client.ts +2 -9
- package/dist/client/adapters/svelte/stores/profile.d.ts +1 -1
- package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/profile.ts +4 -11
- package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores/verification.ts +1 -10
- package/dist/client/adapters/svelte/types.d.ts +1 -29
- package/dist/client/adapters/svelte/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.ts +4 -11
- package/dist/client/adapters/vue/types.d.ts +2 -29
- package/dist/client/adapters/vue/types.d.ts.map +1 -1
- package/dist/client/adapters/vue/types.ts +2 -18
- package/dist/client/auth/types.d.ts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/lib/activity/activity.class.d.ts +130 -22
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/activity/transport.d.ts +15 -0
- package/dist/client/lib/activity/transport.d.ts.map +1 -0
- package/dist/client/lib/activity/types.d.ts +53 -0
- package/dist/client/lib/activity/types.d.ts.map +1 -0
- package/dist/client/lib/utils.d.ts +18 -0
- package/dist/client/lib/utils.d.ts.map +1 -1
- package/dist/client/lib/utils.ts +109 -0
- package/dist/client/namespaces/activity.d.ts +45 -6
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client/timeback-client.class.d.ts +7 -1
- package/dist/client/timeback-client.class.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/edge.js +1 -1
- package/dist/identity.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -22
- package/dist/server/adapters/express.d.ts.map +1 -1
- package/dist/server/adapters/express.js +1 -1
- package/dist/server/adapters/native.d.ts.map +1 -1
- package/dist/server/adapters/native.js +1 -1
- package/dist/server/adapters/nextjs.js +1 -1
- package/dist/server/adapters/nuxt.d.ts.map +1 -1
- package/dist/server/adapters/nuxt.js +1 -1
- package/dist/server/adapters/solid-start.d.ts.map +1 -1
- package/dist/server/adapters/solid-start.js +1 -1
- package/dist/server/adapters/svelte-kit.d.ts.map +1 -1
- package/dist/server/adapters/svelte-kit.js +1 -1
- package/dist/server/adapters/tanstack-start.d.ts.map +1 -1
- package/dist/server/adapters/tanstack-start.js +1 -1
- package/dist/server/adapters/utils.d.ts +1 -1
- package/dist/server/adapters/utils.d.ts.map +1 -1
- package/dist/server/handlers/activity/caliper.d.ts +50 -14
- package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
- package/dist/server/handlers/activity/heartbeat-handler.d.ts +15 -0
- package/dist/server/handlers/activity/heartbeat-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/index.d.ts +5 -3
- package/dist/server/handlers/activity/index.d.ts.map +1 -1
- package/dist/server/handlers/activity/progress.d.ts +2 -2
- package/dist/server/handlers/activity/progress.d.ts.map +1 -1
- package/dist/server/handlers/activity/schema.d.ts +40 -6
- package/dist/server/handlers/activity/schema.d.ts.map +1 -1
- package/dist/server/handlers/activity/submit-handler.d.ts +29 -0
- package/dist/server/handlers/activity/submit-handler.d.ts.map +1 -0
- package/dist/server/handlers/activity/submit.d.ts +44 -0
- package/dist/server/handlers/activity/submit.d.ts.map +1 -0
- package/dist/server/handlers/activity/types.d.ts +126 -5
- package/dist/server/handlers/activity/types.d.ts.map +1 -1
- package/dist/server/handlers/identity/handler.d.ts +23 -4
- package/dist/server/handlers/identity/handler.d.ts.map +1 -1
- package/dist/server/handlers/identity/index.d.ts +2 -2
- package/dist/server/handlers/identity/index.d.ts.map +1 -1
- package/dist/server/handlers/identity/oidc.d.ts.map +1 -1
- package/dist/server/handlers/identity/types.d.ts +0 -6
- package/dist/server/handlers/identity/types.d.ts.map +1 -1
- package/dist/server/handlers/index.d.ts +3 -3
- package/dist/server/handlers/index.d.ts.map +1 -1
- package/dist/server/handlers/user/handler.d.ts.map +1 -1
- package/dist/server/handlers/user/profile.d.ts.map +1 -1
- package/dist/server/handlers/user/types.d.ts +3 -0
- package/dist/server/handlers/user/types.d.ts.map +1 -1
- package/dist/server/handlers/user/verify.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/lib/hooks.d.ts +20 -0
- package/dist/server/lib/hooks.d.ts.map +1 -0
- package/dist/server/lib/index.d.ts +4 -2
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/logger.d.ts +36 -9
- package/dist/server/lib/logger.d.ts.map +1 -1
- package/dist/server/lib/resolve.d.ts +1 -1
- package/dist/server/lib/resolve.d.ts.map +1 -1
- package/dist/server/lib/utils.d.ts +19 -1
- package/dist/server/lib/utils.d.ts.map +1 -1
- package/dist/server/lib/validation.d.ts +55 -0
- package/dist/server/lib/validation.d.ts.map +1 -0
- package/dist/server/namespaces/activity/index.d.ts +8 -0
- package/dist/server/namespaces/activity/index.d.ts.map +1 -0
- package/dist/server/namespaces/activity/record.d.ts +49 -0
- package/dist/server/namespaces/activity/record.d.ts.map +1 -0
- package/dist/server/namespaces/activity/schema.d.ts +50 -0
- package/dist/server/namespaces/activity/schema.d.ts.map +1 -0
- package/dist/server/namespaces/user/get-profile.d.ts +32 -0
- package/dist/server/namespaces/user/get-profile.d.ts.map +1 -0
- package/dist/server/namespaces/user/index.d.ts +8 -0
- package/dist/server/namespaces/user/index.d.ts.map +1 -0
- package/dist/server/namespaces/user/verify.d.ts +28 -0
- package/dist/server/namespaces/user/verify.d.ts.map +1 -0
- package/dist/server/timeback.d.ts +1 -1
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +394 -12
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +7 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.ts +51 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/schemas.d.ts +57 -0
- package/dist/shared/schemas.d.ts.map +1 -0
- package/dist/shared/types.d.ts +263 -10
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.ts +620 -0
- package/package.json +2 -2
- package/dist/chunk-5171mkp2.js +0 -2
- package/dist/chunk-8gg8n8v9.js +0 -2
- package/dist/chunk-hnf0tart.js +0 -2
- package/dist/chunk-qr0bbnsr.js +0 -1
- package/dist/chunk-x9gvef7q.js +0 -1
- package/dist/server/handlers/activity/handler.d.ts +0 -32
- package/dist/server/handlers/activity/handler.d.ts.map +0 -1
- package/dist/shared/xp-calculator.d.ts +0 -25
- package/dist/shared/xp-calculator.d.ts.map +0 -1
|
@@ -3,23 +3,50 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Feature-local types for the activity submission flow.
|
|
5
5
|
*/
|
|
6
|
+
import type { ActivityCompletedEvent, TimebackActivityContext } from '@timeback/caliper';
|
|
7
|
+
import type { TimebackClient } from '@timeback/core';
|
|
6
8
|
import type { ActivityCourseRef } from '../../../shared/types';
|
|
7
9
|
import type { ApiCredentials, AppConfig, Environment, IdentityConfig, TimebackConfig } from '../../types';
|
|
10
|
+
import type { maybeWriteCompletionEntry } from './completion';
|
|
11
|
+
import type { computeProgress } from './progress';
|
|
8
12
|
/** User identity info needed for activity submission. */
|
|
9
13
|
export interface ActivityUserInfo {
|
|
10
14
|
email: string;
|
|
11
15
|
/** Timeback ID if already resolved (SSO mode). When present, skip lookup. */
|
|
12
16
|
timebackId?: string;
|
|
13
17
|
}
|
|
14
|
-
/** Validated
|
|
15
|
-
export interface
|
|
18
|
+
/** Validated completion payload for activity submission. */
|
|
19
|
+
export interface CompletionPayload {
|
|
16
20
|
id: string;
|
|
17
21
|
name: string;
|
|
18
22
|
course: ActivityCourseRef;
|
|
23
|
+
endedAt: string;
|
|
24
|
+
metrics: {
|
|
25
|
+
totalQuestions?: number;
|
|
26
|
+
correctQuestions?: number;
|
|
27
|
+
xpEarned?: number;
|
|
28
|
+
masteredUnits?: number;
|
|
29
|
+
};
|
|
30
|
+
pctComplete?: number;
|
|
31
|
+
}
|
|
32
|
+
/** Validated heartbeat payload for time-spent tracking. */
|
|
33
|
+
export interface ValidatedHeartbeatPayload {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
course: ActivityCourseRef;
|
|
37
|
+
runId: string;
|
|
19
38
|
startedAt: string;
|
|
20
39
|
endedAt: string;
|
|
21
40
|
elapsedMs: number;
|
|
22
41
|
pausedMs: number;
|
|
42
|
+
}
|
|
43
|
+
/** Validated submit payload for activity completion. */
|
|
44
|
+
export interface ValidatedSubmitPayload {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
course: ActivityCourseRef;
|
|
48
|
+
runId: string;
|
|
49
|
+
endedAt: string;
|
|
23
50
|
metrics: {
|
|
24
51
|
totalQuestions?: number;
|
|
25
52
|
correctQuestions?: number;
|
|
@@ -28,10 +55,20 @@ export interface ValidatedActivityPayload {
|
|
|
28
55
|
};
|
|
29
56
|
pctComplete?: number;
|
|
30
57
|
}
|
|
31
|
-
/** Result of
|
|
32
|
-
export type
|
|
58
|
+
/** Result of heartbeat validation. */
|
|
59
|
+
export type HeartbeatValidationResult = {
|
|
33
60
|
ok: true;
|
|
34
|
-
payload:
|
|
61
|
+
payload: ValidatedHeartbeatPayload;
|
|
62
|
+
course: AppConfig['courses'][number];
|
|
63
|
+
sensor: string;
|
|
64
|
+
} | {
|
|
65
|
+
ok: false;
|
|
66
|
+
response: Response;
|
|
67
|
+
};
|
|
68
|
+
/** Result of submit validation. */
|
|
69
|
+
export type SubmitValidationResult = {
|
|
70
|
+
ok: true;
|
|
71
|
+
payload: ValidatedSubmitPayload;
|
|
35
72
|
course: AppConfig['courses'][number];
|
|
36
73
|
sensor: string;
|
|
37
74
|
} | {
|
|
@@ -44,8 +81,92 @@ export interface ActivityHandlerConfig {
|
|
|
44
81
|
identity: IdentityConfig;
|
|
45
82
|
appConfig: AppConfig;
|
|
46
83
|
api: ApiCredentials;
|
|
84
|
+
getClient: () => TimebackClient;
|
|
47
85
|
hooks?: TimebackConfig['hooks'];
|
|
48
86
|
}
|
|
49
87
|
/** Activity handler type. */
|
|
50
88
|
export type ActivityHandler = (req: Request) => Promise<Response>;
|
|
89
|
+
/**
|
|
90
|
+
* Configuration for activity completion recording.
|
|
91
|
+
*/
|
|
92
|
+
export interface CompletionConfig {
|
|
93
|
+
/** Environment (local, staging, production) */
|
|
94
|
+
env: Environment;
|
|
95
|
+
/** API credentials */
|
|
96
|
+
api: ApiCredentials;
|
|
97
|
+
/** App configuration */
|
|
98
|
+
appConfig: AppConfig;
|
|
99
|
+
/** Get the shared Timeback API client. */
|
|
100
|
+
getClient: () => TimebackClient;
|
|
101
|
+
/** Optional hooks */
|
|
102
|
+
hooks?: TimebackConfig['hooks'];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Options for recording an activity completion.
|
|
106
|
+
*/
|
|
107
|
+
export interface CompletionOptions {
|
|
108
|
+
/** User info (email + optional timebackId) */
|
|
109
|
+
userInfo: ActivityUserInfo;
|
|
110
|
+
/** Validated completion payload */
|
|
111
|
+
payload: CompletionPayload;
|
|
112
|
+
/** Resolved course from config */
|
|
113
|
+
course: AppConfig['courses'][number];
|
|
114
|
+
/** Resolved sensor URL */
|
|
115
|
+
sensor: string;
|
|
116
|
+
/** Whether to skip sending (preview mode) */
|
|
117
|
+
preview?: boolean;
|
|
118
|
+
/** Optional correlation ID linking to client-side heartbeats */
|
|
119
|
+
runId?: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Result of recording an activity completion.
|
|
123
|
+
*/
|
|
124
|
+
export interface CompletionResult {
|
|
125
|
+
success: true;
|
|
126
|
+
preview?: boolean;
|
|
127
|
+
sensor?: string;
|
|
128
|
+
actor?: {
|
|
129
|
+
id: string;
|
|
130
|
+
type: 'TimebackUser';
|
|
131
|
+
email: string;
|
|
132
|
+
};
|
|
133
|
+
object?: TimebackActivityContext;
|
|
134
|
+
event?: ActivityCompletedEvent;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Options for sending a time-spent event.
|
|
138
|
+
*/
|
|
139
|
+
export interface TimeSpentOptions {
|
|
140
|
+
/** User info (email + optional timebackId) */
|
|
141
|
+
userInfo: ActivityUserInfo;
|
|
142
|
+
/** Time-spent payload */
|
|
143
|
+
payload: {
|
|
144
|
+
id: string;
|
|
145
|
+
name: string;
|
|
146
|
+
course: ActivityCourseRef;
|
|
147
|
+
startedAt: string;
|
|
148
|
+
endedAt: string;
|
|
149
|
+
elapsedMs: number;
|
|
150
|
+
pausedMs: number;
|
|
151
|
+
};
|
|
152
|
+
/** Resolved course from config */
|
|
153
|
+
course: AppConfig['courses'][number];
|
|
154
|
+
/** Resolved sensor URL */
|
|
155
|
+
sensor: string;
|
|
156
|
+
/** Correlation ID linking to client-side heartbeats */
|
|
157
|
+
runId?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Internal dependencies for activity completion.
|
|
161
|
+
*
|
|
162
|
+
* This interface enables unit tests to inject mock implementations of
|
|
163
|
+
* computeProgress and maybeWriteCompletionEntry without mocking the entire
|
|
164
|
+
* TimebackClient.
|
|
165
|
+
*
|
|
166
|
+
* Not part of the public API - only exposed for testing purposes.
|
|
167
|
+
*/
|
|
168
|
+
export interface CompletionDeps {
|
|
169
|
+
computeProgress: typeof computeProgress;
|
|
170
|
+
maybeWriteCompletionEntry: typeof maybeWriteCompletionEntry;
|
|
171
|
+
}
|
|
51
172
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EACX,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACd,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,31 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This module includes Timeback user resolution and therefore depends on Timeback API access.
|
|
5
5
|
*/
|
|
6
|
-
import type { IdentityHandlerParams
|
|
6
|
+
import type { IdentityHandlerParams } from './types';
|
|
7
7
|
/**
|
|
8
|
-
* Create
|
|
8
|
+
* Create the sign-in handler.
|
|
9
|
+
*
|
|
10
|
+
* Initiates the OIDC sign-in flow by redirecting to the identity provider.
|
|
11
|
+
*
|
|
12
|
+
* @param params - Handler configuration
|
|
13
|
+
* @returns Sign-in request handler
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSignInHandler<TState = unknown>(params: IdentityHandlerParams<TState>): (req: Request) => Promise<Response>;
|
|
16
|
+
/**
|
|
17
|
+
* Create the OIDC callback handler.
|
|
18
|
+
*
|
|
19
|
+
* Exchanges the authorization code for tokens and resolves the Timeback user.
|
|
9
20
|
*
|
|
10
21
|
* @param params - Handler configuration
|
|
11
|
-
* @returns
|
|
22
|
+
* @returns Callback request handler
|
|
23
|
+
*/
|
|
24
|
+
export declare function createCallbackHandler<TState = unknown>(params: IdentityHandlerParams<TState>): (req: Request) => Promise<Response>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a sign-out handler.
|
|
27
|
+
*
|
|
28
|
+
* Returns a redirect to the root path.
|
|
29
|
+
*
|
|
30
|
+
* @returns Sign-out handler
|
|
12
31
|
*/
|
|
13
|
-
export declare function
|
|
32
|
+
export declare function createSignOutHandler(): () => Response;
|
|
14
33
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAG,OAAO,EACnD,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACnC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAGrC;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAG,OAAO,EACrD,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,GACnC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAGrC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,QAAQ,CAErD"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Route handlers for SSO authentication with Timeback user resolution.
|
|
5
5
|
*/
|
|
6
|
-
export {
|
|
7
|
-
export type { IdentityHandlerParams
|
|
6
|
+
export { createSignInHandler, createCallbackHandler, createSignOutHandler } from './handler';
|
|
7
|
+
export type { IdentityHandlerParams } from './types';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC5F,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/oidc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"oidc.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/oidc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,OAAO,KAAK,EAA0B,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAMpD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,MAAM,EACxC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAcnB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAC5C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAClD,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC,CA8DnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAC1C,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC,CAiBnB"}
|
|
@@ -14,11 +14,5 @@ export interface IdentityHandlerParams<TState = unknown> {
|
|
|
14
14
|
getClient: () => TimebackClient;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
/** Identity handlers returned by createIdentityHandlers. */
|
|
18
|
-
export interface IdentityHandlers {
|
|
19
|
-
signIn: (req: Request) => Promise<Response>;
|
|
20
|
-
callback: (req: Request) => Promise<Response>;
|
|
21
|
-
signOut: () => Response;
|
|
22
|
-
}
|
|
23
17
|
export type { CallbackErrorContext, CallbackSuccessContext, Environment, IdentityConfig, SsoIdentityConfig, };
|
|
24
18
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACX,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,aAAa,CAAA;AAEpB,sDAAsD;AACtD,MAAM,WAAW,qBAAqB,CAAC,MAAM,GAAG,OAAO;IACtD,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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/identity/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACX,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,aAAa,CAAA;AAEpB,sDAAsD;AACtD,MAAM,WAAW,qBAAqB,CAAC,MAAM,GAAG,OAAO;IACtD,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;AAGD,YAAY,EACX,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,cAAc,EACd,iBAAiB,GACjB,CAAA"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Route handlers for Timeback server operations.
|
|
5
5
|
*/
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
6
|
+
export { createHeartbeatHandler, createSubmitHandler } from './activity';
|
|
7
|
+
export { createSignInHandler, createCallbackHandler, createSignOutHandler } from './identity';
|
|
8
8
|
export { createUserHandler, createUserVerifyHandler } from './user';
|
|
9
9
|
export type { ActivityHandler, ActivityHandlerConfig } from './activity';
|
|
10
|
-
export type { IdentityHandlerParams
|
|
10
|
+
export type { IdentityHandlerParams } from './identity';
|
|
11
11
|
export type { UserHandler, UserHandlerConfig, UserVerifyHandler, UserVerifyHandlerConfig } from './user';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA;AAEnE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACxE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACvD,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AA8C7D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAwCxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/profile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/profile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,GAAG,YAAY,GAC9B,OAAO,CAAC,eAAe,CAAC,CAoC1B"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Feature-local types for the user profile handler.
|
|
5
5
|
*/
|
|
6
|
+
import type { TimebackClient } from '@timeback/core';
|
|
6
7
|
import type { ApiCredentials, AppConfig, Environment, IdentityConfig } from '../../types';
|
|
7
8
|
/** Configuration for the user handler. */
|
|
8
9
|
export interface UserHandlerConfig {
|
|
@@ -10,6 +11,7 @@ export interface UserHandlerConfig {
|
|
|
10
11
|
identity: IdentityConfig;
|
|
11
12
|
api: ApiCredentials;
|
|
12
13
|
appConfig: AppConfig;
|
|
14
|
+
getClient: () => TimebackClient;
|
|
13
15
|
}
|
|
14
16
|
/** User handler type. */
|
|
15
17
|
export type UserHandler = (req: Request) => Promise<Response>;
|
|
@@ -18,6 +20,7 @@ export interface UserVerifyHandlerConfig {
|
|
|
18
20
|
env: Environment;
|
|
19
21
|
identity: IdentityConfig;
|
|
20
22
|
api: ApiCredentials;
|
|
23
|
+
getClient: () => TimebackClient;
|
|
21
24
|
}
|
|
22
25
|
/** User verify handler type. */
|
|
23
26
|
export type UserVerifyHandler = (req: Request) => Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEzF,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,MAAM,cAAc,CAAA;CAC/B;AAED,yBAAyB;AACzB,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7D,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,MAAM,cAAc,CAAA;CAC/B;AAED,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEnE,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/user/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AA0BzE;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CA+C1F"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { createTimeback } from './timeback';
|
|
7
7
|
export { createTimebackIdentity } from './timeback-identity';
|
|
8
|
-
export type { TimebackConfig, TimebackInstance, Environment, EnvironmentInput, ApiCredentials, IdentityConfig, SsoIdentityConfig, CustomIdentityConfig, Handlers, IdentityOnlyConfig, IdentityOnlyInstance, IdentityOnlyHandlers, BuildStateContext, CallbackSuccessContext, IdentityOnlyCallbackSuccessContext, CallbackErrorContext, OIDCTokens, OIDCUserInfo, IdpData, TimebackUserResolutionErrorCode, } from './types';
|
|
8
|
+
export type { TimebackConfig, TimebackInstance, Environment, EnvironmentInput, ApiCredentials, IdentityConfig, SsoIdentityConfig, CustomIdentityConfig, Handlers, ActivityRecordInput, ActivityRecordUserInput, ActivityRecordActivityInput, ActivityRecordMetricsInput, ActivityRecordTimeInput, ActivityNamespace, UserNamespace, IdentityOnlyConfig, IdentityOnlyInstance, IdentityOnlyHandlers, BuildStateContext, CallbackSuccessContext, IdentityOnlyCallbackSuccessContext, CallbackErrorContext, OIDCTokens, OIDCUserInfo, IdpData, ActivityBeforeSendData, TimeSpentBeforeSendData, HandlerName, RequestStartContext, RequestEndContext, TimebackUserResolutionErrorCode, ErrorCode, SdkError, SdkErrorBody, SdkLogger, SdkLogLevel, } from './types';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +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,gBAAgB,EAChB,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,
|
|
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,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EAER,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EAEjB,aAAa,EAEb,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EAEpB,iBAAiB,EACjB,sBAAsB,EACtB,kCAAkC,EAClC,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,OAAO,EAEP,sBAAsB,EACtB,uBAAuB,EAEvB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EAEjB,+BAA+B,EAC/B,SAAS,EACT,QAAQ,EACR,YAAY,EAEZ,SAAS,EACT,WAAW,GACX,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Lifecycle Hook Utilities
|
|
3
|
+
*
|
|
4
|
+
* Wraps request handlers with optional `onRequestStart` / `onRequestEnd` hooks
|
|
5
|
+
* for timing, tracing, and metrics.
|
|
6
|
+
*/
|
|
7
|
+
import type { HandlerName, TimebackConfig } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a request handler with lifecycle hooks.
|
|
10
|
+
*
|
|
11
|
+
* When neither `onRequestStart` nor `onRequestEnd` is configured the original
|
|
12
|
+
* handler is returned as-is (zero overhead).
|
|
13
|
+
*
|
|
14
|
+
* @param handler - Handler name for identification
|
|
15
|
+
* @param hooks - Hook configuration
|
|
16
|
+
* @param fn - The request handler to wrap
|
|
17
|
+
* @returns Wrapped handler
|
|
18
|
+
*/
|
|
19
|
+
export declare function withRequestHooks(handler: HandlerName, hooks: TimebackConfig['hooks'], fn: (req: Request) => Promise<Response>): (req: Request) => Promise<Response>;
|
|
20
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/server/lib/hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE3D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,EAC9B,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GACrC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAyBrC"}
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* Shared utilities for the server SDK.
|
|
5
5
|
*/
|
|
6
6
|
export { getIssuer, buildAuthorizationUrl, exchangeCodeForTokens, getUserInfo } from './oidc';
|
|
7
|
-
export { deriveCourseStructureIds, jsonResponse, redirectResponse, encodeBase64Url, decodeBase64Url, mapEnvForApi, normalizeEnv, safeIdSegment, sameInstant, hashSuffix64Base36, sha256Hex, } from './utils';
|
|
8
|
-
export { ssoLog, oidcLog, createScopedLogger } from './logger';
|
|
7
|
+
export { deriveCourseStructureIds, jsonResponse, errorResponse, redirectResponse, encodeBase64Url, decodeBase64Url, mapEnvForApi, normalizeEnv, safeIdSegment, sameInstant, hashSuffix64Base36, sha256Hex, } from './utils';
|
|
8
|
+
export { ssoLog, oidcLog, createScopedLogger, configureSdkLogging, resetSdkLogging } from './logger';
|
|
9
9
|
export { lookupTimebackIdByEmail, resolveStatusForUserResolutionError, resolveTimebackUserByEmail, TimebackUserResolutionError, } from './resolve';
|
|
10
10
|
export { buildErrorContext, computeRedirectUri, handleIdpError, handleMissingCode, initiateSignIn, parseCallback, tryDecodeState, } from './sso';
|
|
11
|
+
export { refineQuestionMetrics, resolveSensor } from './validation';
|
|
12
|
+
export { withRequestHooks } from './hooks';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC7F,OAAO,EACN,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,GACT,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/lib/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAC7F,OAAO,EACN,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,GACT,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AACpG,OAAO,EACN,uBAAuB,EACvB,mCAAmC,EACnC,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,GACd,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -1,21 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SDK Logger
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Configurable logging for the Timeback SDK server components.
|
|
5
|
+
*
|
|
6
|
+
* All handler modules create loggers at import time:
|
|
7
|
+
*
|
|
8
|
+
* const log = createScopedLogger('handlers:user')
|
|
9
|
+
*
|
|
10
|
+
* These loggers are lazy proxies — each call resolves the effective
|
|
11
|
+
* logger at invocation time, so module-level loggers automatically
|
|
12
|
+
* pick up configuration set later in `createTimeback()`.
|
|
13
|
+
*/
|
|
14
|
+
import type { SdkLogger, SdkLogLevel } from '../types';
|
|
15
|
+
/**
|
|
16
|
+
* Configure SDK-wide logging.
|
|
17
|
+
*
|
|
18
|
+
* Called by `createTimeback()` during initialization. Clears the logger cache
|
|
19
|
+
* so all existing proxies pick up the new configuration on their next call.
|
|
20
|
+
*
|
|
21
|
+
* @param options - Logger and level overrides
|
|
22
|
+
*/
|
|
23
|
+
export declare function configureSdkLogging(options: {
|
|
24
|
+
logger?: SdkLogger;
|
|
25
|
+
logLevel?: SdkLogLevel;
|
|
26
|
+
}): void;
|
|
27
|
+
/**
|
|
28
|
+
* Reset SDK logging to defaults.
|
|
29
|
+
*
|
|
30
|
+
* Intended for tests that need isolation between runs.
|
|
6
31
|
*/
|
|
7
|
-
|
|
32
|
+
export declare function resetSdkLogging(): void;
|
|
8
33
|
/**
|
|
9
34
|
* Create a scoped logger for SDK components.
|
|
10
35
|
*
|
|
11
|
-
*
|
|
36
|
+
* Returns a lazy proxy — each log call resolves the effective logger
|
|
37
|
+
* at invocation time. This allows module-level loggers to pick up
|
|
38
|
+
* configuration set after import.
|
|
12
39
|
*
|
|
13
|
-
* @param scope - Logger scope name (e.g., '
|
|
14
|
-
* @returns
|
|
40
|
+
* @param scope - Logger scope name (e.g., 'handlers:user', 'resolve')
|
|
41
|
+
* @returns Logger proxy scoped to `timeback:{scope}`
|
|
15
42
|
*/
|
|
16
|
-
export declare function createScopedLogger(scope: string):
|
|
43
|
+
export declare function createScopedLogger(scope: string): SdkLogger;
|
|
17
44
|
/** Logger for SSO/identity operations */
|
|
18
|
-
export declare const ssoLog:
|
|
45
|
+
export declare const ssoLog: SdkLogger;
|
|
19
46
|
/** Logger for OIDC protocol operations */
|
|
20
|
-
export declare const oidcLog:
|
|
47
|
+
export declare const oidcLog: SdkLogger;
|
|
21
48
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/server/lib/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/server/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAgGtD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,IAAI,CAIjG;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAiB3D;AAED,yCAAyC;AACzC,eAAO,MAAM,MAAM,WAA4B,CAAA;AAE/C,0CAA0C;AAC1C,eAAO,MAAM,OAAO,WAA6B,CAAA"}
|
|
@@ -26,7 +26,7 @@ export declare class TimebackUserResolutionError extends Error {
|
|
|
26
26
|
* Map a user resolution error to an HTTP status code.
|
|
27
27
|
*
|
|
28
28
|
* @param err - Timeback user resolution error
|
|
29
|
-
* @returns HTTP status code (409 for ambiguous, 404 otherwise)
|
|
29
|
+
* @returns HTTP status code (409 for ambiguous, 404 for not found, 502 otherwise)
|
|
30
30
|
*/
|
|
31
31
|
export declare function resolveStatusForUserResolutionError(err: TimebackUserResolutionError): number;
|
|
32
32
|
interface ResolveTimebackUserByEmailParams {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/server/lib/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAM/C,OAAO,KAAK,EAAkB,gBAAgB,EAAmB,MAAM,oBAAoB,CAAA;AAC3F,OAAO,KAAK,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,+BAA+B,EAC/B,MAAM,UAAU,CAAA;AAQjB;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;aAGpC,IAAI,EAAE,+BAA+B;IAFtD,YACC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,+BAA+B,EAIrD;CACD;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/server/lib/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAM/C,OAAO,KAAK,EAAkB,gBAAgB,EAAmB,MAAM,oBAAoB,CAAA;AAC3F,OAAO,KAAK,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,+BAA+B,EAC/B,MAAM,UAAU,CAAA;AAQjB;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;aAGpC,IAAI,EAAE,+BAA+B;IAFtD,YACC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,+BAA+B,EAIrD;CACD;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAS5F;AAMD,UAAU,gCAAgC;IACzC,uCAAuC;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,uCAAuC;IACvC,cAAc,EAAE,cAAc,CAAA;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,UAAU,6BAA6B;IACtC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,MAAM,EAAE,cAAc,CAAA;CACtB;AA2FD;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC/C,MAAM,EAAE,gCAAgC,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC5C,MAAM,EAAE,6BAA6B,GACnC,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Internal utility functions for the server SDK.
|
|
5
5
|
*/
|
|
6
|
-
import type { Environment, EnvironmentInput } from '../types';
|
|
6
|
+
import type { Environment, EnvironmentInput, ErrorCode } from '../types';
|
|
7
7
|
/**
|
|
8
8
|
* Derived resource IDs for a course structure.
|
|
9
9
|
*/
|
|
@@ -118,6 +118,24 @@ export declare function normalizeEnv(env: EnvironmentInput): Environment;
|
|
|
118
118
|
* @returns JSON response
|
|
119
119
|
*/
|
|
120
120
|
export declare function jsonResponse<T>(data: T, status?: number, headers?: HeadersInit): Response;
|
|
121
|
+
/**
|
|
122
|
+
* Create a JSON error response with the standard SDK error shape.
|
|
123
|
+
*
|
|
124
|
+
* All error responses include `success: false` and a structured `error`
|
|
125
|
+
* object with a machine-readable `code` and human-readable `message`.
|
|
126
|
+
*
|
|
127
|
+
* @param code - Machine-readable error code
|
|
128
|
+
* @param message - Human-readable error message
|
|
129
|
+
* @param status - HTTP status code
|
|
130
|
+
* @param options - Additional fields
|
|
131
|
+
* @returns HTTP Response
|
|
132
|
+
*/
|
|
133
|
+
export declare function errorResponse(code: ErrorCode, message: string, status: number, options?: {
|
|
134
|
+
/** Additional top-level fields merged into the body (e.g., `{ verified: false }`). */
|
|
135
|
+
fields?: Record<string, unknown>;
|
|
136
|
+
/** Validation details included in the error object. */
|
|
137
|
+
details?: unknown;
|
|
138
|
+
}): Response;
|
|
121
139
|
/**
|
|
122
140
|
* Create a redirect response.
|
|
123
141
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/lib/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/lib/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMxE;;GAEG;AACH,UAAU,kBAAkB;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAO7E;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,YAAY,CAMvE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,WAAW,CAK/D;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,SAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAItF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC5B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACT,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,GACC,QAAQ,CAQV;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAI7E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAIrD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAKrD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Validation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Common validation logic used across server schemas.
|
|
5
|
+
*/
|
|
6
|
+
import type * as z from 'zod';
|
|
7
|
+
import type { AppConfig, Environment } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Refine question metrics to ensure consistency.
|
|
10
|
+
*
|
|
11
|
+
* Validation rules:
|
|
12
|
+
* - `totalQuestions` and `correctQuestions` must be provided together (both or neither)
|
|
13
|
+
* - `correctQuestions` cannot exceed `totalQuestions`
|
|
14
|
+
*
|
|
15
|
+
* @param metrics - The metrics object containing optional question counts
|
|
16
|
+
* @param ctx - Zod refinement context for adding validation issues
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const metricsSchema = z.object({
|
|
21
|
+
* totalQuestions: z.number().int().nonnegative().optional(),
|
|
22
|
+
* correctQuestions: z.number().int().nonnegative().optional(),
|
|
23
|
+
* }).superRefine(refineQuestionMetrics)
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function refineQuestionMetrics(metrics: {
|
|
27
|
+
totalQuestions?: number;
|
|
28
|
+
correctQuestions?: number;
|
|
29
|
+
}, ctx: z.RefinementCtx): void;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the effective sensor URL for a course.
|
|
32
|
+
*
|
|
33
|
+
* The sensor URL identifies where Caliper events should be sent.
|
|
34
|
+
*
|
|
35
|
+
* Resolution order:
|
|
36
|
+
* 1. Environment-specific sensor override: `course.overrides[env].sensor`
|
|
37
|
+
* 2. Course-level sensor: `course.sensor`
|
|
38
|
+
* 3. App-level sensor: `appConfig.sensor`
|
|
39
|
+
* 4. Derived from launchUrl origin (if available)
|
|
40
|
+
*
|
|
41
|
+
* @param appConfig - App configuration from timeback.config.json
|
|
42
|
+
* @param course - Resolved course from config
|
|
43
|
+
* @param env - Environment (local/staging/production)
|
|
44
|
+
* @returns The resolved sensor URL, or undefined if none could be determined
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* const sensor = resolveSensor(appConfig, course, env)
|
|
49
|
+
* if (!sensor) {
|
|
50
|
+
* throw new Error('No sensor configured for course')
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveSensor(appConfig: AppConfig, course: AppConfig['courses'][number], env: Environment): string | undefined;
|
|
55
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/server/lib/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,KAAK,CAAC,MAAM,KAAK,CAAA;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/D,GAAG,EAAE,CAAC,CAAC,aAAa,GAClB,IAAI,CAuBN;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC5B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,GAAG,EAAE,WAAW,GACd,MAAM,GAAG,SAAS,CAqBpB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity Record
|
|
3
|
+
*
|
|
4
|
+
* Server-side activity recording API.
|
|
5
|
+
*/
|
|
6
|
+
export { createActivityRecord, ActivityRecordValidationError, ActivityRecordCourseError, } from './record';
|
|
7
|
+
export { activityRecordInputSchema } from './schema';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/namespaces/activity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACN,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,GACzB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA"}
|