@timeback/sdk 0.1.4 → 0.1.6
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 +46 -23
- package/dist/client/adapters/react/index.d.ts +1 -2
- package/dist/client/adapters/react/index.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +30 -33
- package/dist/client/adapters/react/provider.d.ts +1 -2
- package/dist/client/adapters/react/provider.d.ts.map +1 -1
- package/dist/client/adapters/solid/context.d.ts +1 -2
- package/dist/client/adapters/solid/context.d.ts.map +1 -1
- package/dist/client/adapters/solid/context.tsx +1 -2
- package/dist/client/adapters/solid/index.d.ts +1 -2
- package/dist/client/adapters/solid/index.d.ts.map +1 -1
- package/dist/client/adapters/solid/index.ts +1 -2
- package/dist/client/adapters/svelte/index.d.ts +1 -2
- package/dist/client/adapters/svelte/index.d.ts.map +1 -1
- package/dist/client/adapters/svelte/index.ts +1 -2
- package/dist/client/adapters/svelte/stores.d.ts +1 -2
- package/dist/client/adapters/svelte/stores.d.ts.map +1 -1
- package/dist/client/adapters/svelte/stores.ts +1 -2
- package/dist/client/adapters/vue/index.d.ts +1 -2
- package/dist/client/adapters/vue/index.d.ts.map +1 -1
- package/dist/client/adapters/vue/index.ts +1 -2
- package/dist/client/adapters/vue/provider.d.ts +1 -2
- package/dist/client/adapters/vue/provider.d.ts.map +1 -1
- package/dist/client/adapters/vue/provider.ts +1 -2
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/lib/activity/activity.class.d.ts +21 -21
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/activity/index.d.ts +0 -1
- package/dist/client/lib/activity/index.d.ts.map +1 -1
- package/dist/client/namespaces/activity.d.ts +13 -8
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client.d.ts +4 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +30 -34
- package/dist/edge.d.ts +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25888 -6188
- package/dist/server/adapters/express.js +19592 -927
- package/dist/server/adapters/nuxt.js +19596 -931
- package/dist/server/adapters/solid-start.js +19594 -929
- package/dist/server/adapters/tanstack-start.js +19592 -927
- package/dist/server/handlers/activity.d.ts +4 -7
- package/dist/server/handlers/activity.d.ts.map +1 -1
- package/dist/server/handlers/user.d.ts.map +1 -1
- package/dist/server/lib/build-activity-events.d.ts +29 -1
- package/dist/server/lib/build-activity-events.d.ts.map +1 -1
- package/dist/server/lib/index.d.ts +2 -4
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/resolve.d.ts +112 -0
- package/dist/server/lib/resolve.d.ts.map +1 -0
- package/dist/server/timeback-identity.d.ts +2 -2
- package/dist/server/timeback.d.ts +2 -2
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +152 -27
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/types.d.ts +118 -9
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +4 -8
- package/dist/client/lib/activity/activity.d.ts +0 -16
- package/dist/client/lib/activity/activity.d.ts.map +0 -1
- package/dist/config.d.ts +0 -20
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -0
- package/dist/server/lib/resolve-activity-course.d.ts +0 -22
- package/dist/server/lib/resolve-activity-course.d.ts.map +0 -1
- package/dist/server/lib/resolve-timeback-id.d.ts +0 -28
- package/dist/server/lib/resolve-timeback-id.d.ts.map +0 -1
- package/dist/server/lib/resolve-timeback-user.d.ts +0 -42
- package/dist/server/lib/resolve-timeback-user.d.ts.map +0 -1
package/dist/shared/types.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export interface TimebackProfile {
|
|
|
47
47
|
dailyXp?: number;
|
|
48
48
|
dailyLessons?: number;
|
|
49
49
|
dailyActiveMinutes?: number;
|
|
50
|
+
dailyAccuracy?: number;
|
|
51
|
+
dailyMasteredUnits?: number;
|
|
50
52
|
};
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
@@ -96,23 +98,104 @@ export interface TimebackAuthUser extends TimebackProfile {
|
|
|
96
98
|
claims: IdentityClaims;
|
|
97
99
|
}
|
|
98
100
|
/**
|
|
99
|
-
* Course selector
|
|
101
|
+
* Course selector by subject and grade (grade-based apps).
|
|
100
102
|
*
|
|
101
|
-
*
|
|
103
|
+
* Use this for traditional K-12 apps where courses are identified by subject + grade.
|
|
102
104
|
*/
|
|
103
|
-
export interface
|
|
105
|
+
export interface SubjectGradeCourseRef {
|
|
104
106
|
subject: TimebackSubject;
|
|
105
107
|
grade: TimebackGrade;
|
|
106
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Course selector by code (grade-less apps).
|
|
111
|
+
*
|
|
112
|
+
* Use this for apps without grade levels (e.g., CS platforms) where courses
|
|
113
|
+
* are identified by a unique course code.
|
|
114
|
+
*/
|
|
115
|
+
export interface CourseCodeRef {
|
|
116
|
+
code: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Course selector for activity tracking.
|
|
120
|
+
*
|
|
121
|
+
* This should correspond to a unique course entry in `timeback.config.json`.
|
|
122
|
+
*
|
|
123
|
+
* Two selector modes are supported:
|
|
124
|
+
* - **Grade-based**: `{ subject, grade }` — K-12 style
|
|
125
|
+
* - **Grade-less**: `{ code }` — CS/skill-based
|
|
126
|
+
*
|
|
127
|
+
* @example Grade-based
|
|
128
|
+
* ```typescript
|
|
129
|
+
* { subject: 'Math', grade: 3 }
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example Grade-less
|
|
133
|
+
* ```typescript
|
|
134
|
+
* { code: 'CS-101' }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export type ActivityCourseRef = SubjectGradeCourseRef | CourseCodeRef;
|
|
138
|
+
/**
|
|
139
|
+
* Type guard: Check if a course ref uses subject+grade identity.
|
|
140
|
+
*
|
|
141
|
+
* @param ref - Course reference to check
|
|
142
|
+
* @returns True if grade-based selector
|
|
143
|
+
*/
|
|
144
|
+
export declare function isSubjectGradeCourseRef(ref: ActivityCourseRef): ref is SubjectGradeCourseRef;
|
|
107
145
|
/**
|
|
108
146
|
* Activity start parameters.
|
|
147
|
+
*
|
|
148
|
+
* @remarks
|
|
149
|
+
* The `id` field is treated as a **slug** (not a URL). The SDK derives the
|
|
150
|
+
* canonical activity URL (`event.object.id`) from:
|
|
151
|
+
* - The configured sensor URL
|
|
152
|
+
* - The course selector (subject + grade or code)
|
|
153
|
+
* - This slug (URI-encoded)
|
|
154
|
+
*
|
|
155
|
+
* This allows upstream systems to process activities without requiring
|
|
156
|
+
* pre-synced OneRoster component resources.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* // Grade-based course
|
|
161
|
+
* timeback.activity.start({
|
|
162
|
+
* id: 'fractions-with-like-denominators', // slug
|
|
163
|
+
* name: 'Fractions with Like Denominators', // human-readable
|
|
164
|
+
* course: { subject: 'Math', grade: 3 },
|
|
165
|
+
* })
|
|
166
|
+
* // => object.id: https://sensor.example.com/activities/Math/g3/fractions-with-like-denominators
|
|
167
|
+
*
|
|
168
|
+
* // Grade-less course
|
|
169
|
+
* timeback.activity.start({
|
|
170
|
+
* id: 'intro-to-loops',
|
|
171
|
+
* name: 'Introduction to Loops',
|
|
172
|
+
* course: { code: 'CS-101' },
|
|
173
|
+
* })
|
|
174
|
+
* // => object.id: https://sensor.example.com/activities/CS-101/intro-to-loops
|
|
175
|
+
* ```
|
|
109
176
|
*/
|
|
110
177
|
export interface ActivityParams {
|
|
111
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* Activity slug (stable identifier for the learning object).
|
|
180
|
+
*
|
|
181
|
+
* This is used to construct the canonical activity URL sent to Caliper.
|
|
182
|
+
* Use a short, URL-safe slug like `"fractions-with-like-denominators"` or
|
|
183
|
+
* `"lesson-1"`. Special characters will be URI-encoded.
|
|
184
|
+
*
|
|
185
|
+
* @example 'fractions-with-like-denominators'
|
|
186
|
+
* @example 'ccss.math.content.3.nf.a.1'
|
|
187
|
+
* @example 'lesson-1'
|
|
188
|
+
*/
|
|
112
189
|
id: string;
|
|
113
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* Human-readable display name of the activity.
|
|
192
|
+
*
|
|
193
|
+
* This is sent as `object.activity.name` in Caliper events.
|
|
194
|
+
*
|
|
195
|
+
* @example 'Fractions with Like Denominators'
|
|
196
|
+
*/
|
|
114
197
|
name: string;
|
|
115
|
-
/** Course selector (must match a unique course in timeback.config.
|
|
198
|
+
/** Course selector (must match a unique course in timeback.config.json) */
|
|
116
199
|
course: ActivityCourseRef;
|
|
117
200
|
}
|
|
118
201
|
/**
|
|
@@ -130,13 +213,23 @@ export interface ActivityMetrics {
|
|
|
130
213
|
}
|
|
131
214
|
/**
|
|
132
215
|
* Activity state sent to the server when ending.
|
|
216
|
+
*
|
|
217
|
+
* @see {@link ActivityParams} for documentation on `id` and `name` semantics.
|
|
133
218
|
*/
|
|
134
219
|
export interface ActivityEndPayload {
|
|
135
|
-
/**
|
|
220
|
+
/**
|
|
221
|
+
* Activity slug (stable identifier for the learning object).
|
|
222
|
+
*
|
|
223
|
+
* @see {@link ActivityParams.id}
|
|
224
|
+
*/
|
|
136
225
|
id: string;
|
|
137
|
-
/**
|
|
226
|
+
/**
|
|
227
|
+
* Human-readable display name of the activity.
|
|
228
|
+
*
|
|
229
|
+
* @see {@link ActivityParams.name}
|
|
230
|
+
*/
|
|
138
231
|
name: string;
|
|
139
|
-
/** Course selector (must match a unique course in timeback.config.
|
|
232
|
+
/** Course selector (must match a unique course in timeback.config.json) */
|
|
140
233
|
course: ActivityCourseRef;
|
|
141
234
|
/** ISO 8601 timestamp when activity started */
|
|
142
235
|
startedAt: string;
|
|
@@ -148,6 +241,22 @@ export interface ActivityEndPayload {
|
|
|
148
241
|
pausedMs: number;
|
|
149
242
|
/** Activity metrics */
|
|
150
243
|
metrics: ActivityMetrics;
|
|
244
|
+
/**
|
|
245
|
+
* Attempt number for this activity (1-based).
|
|
246
|
+
*
|
|
247
|
+
* If provided, this is forwarded to Caliper events as `generated.attempt`.
|
|
248
|
+
*/
|
|
249
|
+
attemptNumber?: number;
|
|
250
|
+
/**
|
|
251
|
+
* App-reported course progress (per enrollment), as a percentage from 0–100.
|
|
252
|
+
*
|
|
253
|
+
* This is forwarded to Caliper events as `generated.extensions.pctCompleteApp`.
|
|
254
|
+
*
|
|
255
|
+
* @remarks
|
|
256
|
+
* - Scale: 0 to 100 (not 0 to 1)
|
|
257
|
+
* - Values outside 0–100 are clamped by the SDK server handler if present
|
|
258
|
+
*/
|
|
259
|
+
pctCompleteApp?: number;
|
|
151
260
|
}
|
|
152
261
|
/**
|
|
153
262
|
* Activity submission response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAErE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,yBAAyB;IACzB,MAAM,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;KACZ,CAAA;IAED,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,4BAA4B;IAC5B,EAAE,CAAC,EAAE;QACJ,sCAAsC;QACtC,KAAK,EAAE,MAAM,CAAA;QACb,0DAA0D;QAC1D,GAAG,EAAE,MAAM,CAAA;KACX,CAAA;IAED,uBAAuB;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACZ,CAAC,CAAA;IAEF,yBAAyB;IACzB,KAAK,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;CACD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACrC,eAAe,EACf,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAC5C,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACxD,8CAA8C;IAC9C,MAAM,EAAE,cAAc,CAAA;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timeback/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Timeback SDK for frontend and backend integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -12,10 +12,6 @@
|
|
|
12
12
|
"types": "./dist/client.d.ts",
|
|
13
13
|
"import": "./dist/client.js"
|
|
14
14
|
},
|
|
15
|
-
"./config": {
|
|
16
|
-
"types": "./dist/config.d.ts",
|
|
17
|
-
"import": "./dist/config.js"
|
|
18
|
-
},
|
|
19
15
|
"./identity": {
|
|
20
16
|
"types": "./dist/identity.d.ts",
|
|
21
17
|
"import": "./dist/identity.js"
|
|
@@ -81,12 +77,12 @@
|
|
|
81
77
|
"test": "bun test --no-env-file unit.test.ts"
|
|
82
78
|
},
|
|
83
79
|
"dependencies": {
|
|
84
|
-
"@timeback/core": "0.1.
|
|
85
|
-
"
|
|
80
|
+
"@timeback/core": "0.1.3",
|
|
81
|
+
"c12": "^3.3.3",
|
|
86
82
|
"zod": "^4.2.1"
|
|
87
83
|
},
|
|
88
84
|
"devDependencies": {
|
|
89
|
-
"@timeback/caliper": "0.1.
|
|
85
|
+
"@timeback/caliper": "0.1.2",
|
|
90
86
|
"@timeback/internal-cli-infra": "0.0.0",
|
|
91
87
|
"@timeback/internal-logger": "0.0.0",
|
|
92
88
|
"@timeback/internal-utils": "0.0.0",
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Activity Factory
|
|
3
|
-
*
|
|
4
|
-
* Factory function for creating activity trackers.
|
|
5
|
-
*/
|
|
6
|
-
import { Activity } from './activity.class';
|
|
7
|
-
import type { ActivityEndPayload, ActivityParams } from '../../../shared/types';
|
|
8
|
-
/**
|
|
9
|
-
* Create an activity tracker.
|
|
10
|
-
*
|
|
11
|
-
* @param params - Activity parameters
|
|
12
|
-
* @param sendActivity - Function to send activity to server
|
|
13
|
-
* @returns Activity handle
|
|
14
|
-
*/
|
|
15
|
-
export declare function createActivity(params: ActivityParams, sendActivity: (payload: ActivityEndPayload) => Promise<void>): Activity;
|
|
16
|
-
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/client/lib/activity/activity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE/E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1D,QAAQ,CAEV"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Types for `timeback.config.ts` (app configuration).
|
|
3
|
-
*
|
|
4
|
-
* This module is intended to be imported via the subpath export:
|
|
5
|
-
*
|
|
6
|
-
* ```ts
|
|
7
|
-
* import type { TimebackConfig } from '@timeback/sdk/config'
|
|
8
|
-
* ```
|
|
9
|
-
*
|
|
10
|
-
* Note: `TimebackConfig` here refers to the **app config file** shape, not the
|
|
11
|
-
* SDK initialization config exported from `timeback`'s main entrypoint.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* App configuration type used by `timeback.config.ts`.
|
|
15
|
-
*
|
|
16
|
-
* Alias of `AppConfig`, exported under the name commonly used by consumers.
|
|
17
|
-
*/
|
|
18
|
-
export type { AppConfig as TimebackConfig, AppConfig } from './server/types';
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;GAIG;AACH,YAAY,EAAE,SAAS,IAAI,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,CAAA"}
|
package/dist/config.js
DELETED
|
File without changes
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { ActivityCourseRef } from '../../shared/types';
|
|
2
|
-
import type { AppConfig } from '../types';
|
|
3
|
-
/**
|
|
4
|
-
* Resolve a course config entry from an activity course selector.
|
|
5
|
-
*
|
|
6
|
-
* @param courses - Configured courses from `timeback.config.ts`
|
|
7
|
-
* @param courseRef - Course selector sent from the client
|
|
8
|
-
* @returns Matched course config entry
|
|
9
|
-
* @throws {ActivityCourseResolutionError} When selector is unknown or ambiguous
|
|
10
|
-
*/
|
|
11
|
-
export declare function resolveActivityCourse(courses: AppConfig['courses'], courseRef: ActivityCourseRef): AppConfig['courses'][number];
|
|
12
|
-
/**
|
|
13
|
-
* Error thrown when a client-provided course selector cannot be resolved against config.
|
|
14
|
-
*/
|
|
15
|
-
export declare class ActivityCourseResolutionError extends Error {
|
|
16
|
-
readonly code: 'unknown_course' | 'ambiguous_course';
|
|
17
|
-
readonly subject: ActivityCourseRef['subject'];
|
|
18
|
-
readonly grade: ActivityCourseRef['grade'];
|
|
19
|
-
readonly count?: number;
|
|
20
|
-
constructor(code: ActivityCourseResolutionError['code'], courseRef: ActivityCourseRef, count?: number);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=resolve-activity-course.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-activity-course.d.ts","sourceRoot":"","sources":["../../../src/server/lib/resolve-activity-course.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,EAC7B,SAAS,EAAE,iBAAiB,GAC1B,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAc9B;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,KAAK;IACvD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEvB,YACC,IAAI,EAAE,6BAA6B,CAAC,MAAM,CAAC,EAC3C,SAAS,EAAE,iBAAiB,EAC5B,KAAK,CAAC,EAAE,MAAM,EAOd;CACD"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { TimebackUserResolutionError } from './resolve-timeback-user';
|
|
2
|
-
import type { TimebackClient } from '@timeback/core';
|
|
3
|
-
import type { ApiCredentials, Environment, IdentityConfig } from '../types';
|
|
4
|
-
/**
|
|
5
|
-
* Map a Timeback user resolution error code to an HTTP status for handlers.
|
|
6
|
-
*
|
|
7
|
-
* @param err - Timeback user resolution error
|
|
8
|
-
* @returns HTTP status code
|
|
9
|
-
*/
|
|
10
|
-
export declare function resolveStatusForUserResolutionError(err: TimebackUserResolutionError): number;
|
|
11
|
-
/**
|
|
12
|
-
* Resolve the canonical Timeback user ID for server-side activity submission.
|
|
13
|
-
*
|
|
14
|
-
* @param params - Resolution parameters
|
|
15
|
-
* @returns Timeback user ID
|
|
16
|
-
* @throws {TimebackUserResolutionError} When resolution fails
|
|
17
|
-
*/
|
|
18
|
-
export declare function resolveTimebackIdForActivity(params: {
|
|
19
|
-
env: Environment;
|
|
20
|
-
api: ApiCredentials;
|
|
21
|
-
identity: IdentityConfig;
|
|
22
|
-
user: {
|
|
23
|
-
id: string;
|
|
24
|
-
email: string;
|
|
25
|
-
};
|
|
26
|
-
client: TimebackClient;
|
|
27
|
-
}): Promise<string>;
|
|
28
|
-
//# sourceMappingURL=resolve-timeback-id.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-timeback-id.d.ts","sourceRoot":"","sources":["../../../src/server/lib/resolve-timeback-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAEjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE3E;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAE5F;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE;IAC1D,GAAG,EAAE,WAAW,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,MAAM,EAAE,cAAc,CAAA;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBlB"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Timeback User Resolution
|
|
3
|
-
*
|
|
4
|
-
* Resolves the Timeback user by email using server credentials.
|
|
5
|
-
*/
|
|
6
|
-
import { TimebackClient } from '@timeback/core';
|
|
7
|
-
import type { TimebackAuthUser } from '../../shared/types';
|
|
8
|
-
import type { ApiCredentials, Environment, OIDCUserInfo, TimebackUserResolutionErrorCode } from '../types';
|
|
9
|
-
/**
|
|
10
|
-
* Error thrown when Timeback user resolution fails.
|
|
11
|
-
*/
|
|
12
|
-
export declare class TimebackUserResolutionError extends Error {
|
|
13
|
-
readonly code: TimebackUserResolutionErrorCode;
|
|
14
|
-
constructor(message: string, code: TimebackUserResolutionErrorCode);
|
|
15
|
-
}
|
|
16
|
-
interface ResolveTimebackUserByEmailParams {
|
|
17
|
-
/** Environment (staging/production) */
|
|
18
|
-
env: Environment;
|
|
19
|
-
/** API credentials for Timeback API */
|
|
20
|
-
apiCredentials: ApiCredentials;
|
|
21
|
-
/** OIDC user info from the IdP */
|
|
22
|
-
userInfo: OIDCUserInfo;
|
|
23
|
-
/**
|
|
24
|
-
* Optional pre-configured Timeback client to use (e.g. `timeback.api`).
|
|
25
|
-
*
|
|
26
|
-
* When provided, this function will use it and will NOT close it.
|
|
27
|
-
*/
|
|
28
|
-
client?: TimebackClient;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Resolve a TimebackAuthUser by looking up the Timeback user via email.
|
|
32
|
-
*
|
|
33
|
-
* Uses server API credentials to query OneRoster for a user matching the IdP email.
|
|
34
|
-
* Strict mode: fails if no user found or if multiple users match (ambiguous).
|
|
35
|
-
*
|
|
36
|
-
* @param params - Resolution parameters
|
|
37
|
-
* @returns Resolved TimebackAuthUser with Timeback profile and IdP claims
|
|
38
|
-
* @throws {TimebackUserResolutionError} If resolution fails
|
|
39
|
-
*/
|
|
40
|
-
export declare function resolveTimebackUserByEmail(params: ResolveTimebackUserByEmailParams): Promise<TimebackAuthUser>;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=resolve-timeback-user.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-timeback-user.d.ts","sourceRoot":"","sources":["../../../src/server/lib/resolve-timeback-user.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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;AAIjB;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;aAGpC,IAAI,EAAE,+BAA+B;IAFtD,YACC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,+BAA+B,EAIrD;CACD;AAED,UAAU,gCAAgC;IACzC,uCAAuC;IACvC,GAAG,EAAE,WAAW,CAAA;IAChB,uCAAuC;IACvC,cAAc,EAAE,cAAc,CAAA;IAC9B,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAA;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAA;CACvB;AAkBD;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC/C,MAAM,EAAE,gCAAgC,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAuG3B"}
|