@timeback/sdk 0.1.7 → 0.1.9
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 +97 -8
- package/dist/chunk-07j8zre9.js +2 -0
- package/dist/chunk-5171mkp2.js +2 -0
- package/dist/chunk-63afdp3y.js +8 -0
- package/dist/chunk-8gg8n8v9.js +2 -0
- package/dist/chunk-9se82640.js +1 -0
- package/dist/chunk-agpf1x3g.js +16 -0
- package/dist/chunk-hnf0tart.js +2 -0
- package/dist/chunk-qr0bbnsr.js +1 -0
- package/dist/chunk-whc53e0y.js +11 -0
- package/dist/chunk-x9gvef7q.js +1 -0
- package/dist/client/adapters/react/hooks/types.d.ts +80 -0
- package/dist/client/adapters/react/hooks/types.d.ts.map +1 -1
- package/dist/client/adapters/react/hooks/useTimebackProfile.d.ts +42 -0
- package/dist/client/adapters/react/hooks/useTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts +17 -5
- package/dist/client/adapters/react/hooks/useTimebackVerification.d.ts.map +1 -1
- package/dist/client/adapters/react/index.d.ts +2 -1
- package/dist/client/adapters/react/index.d.ts.map +1 -1
- package/dist/client/adapters/react/index.js +2 -494
- package/dist/client/adapters/react/provider.d.ts.map +1 -1
- package/dist/client/adapters/solid/index.d.ts +3 -0
- package/dist/client/adapters/solid/index.d.ts.map +1 -1
- package/dist/client/adapters/solid/index.ts +12 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.d.ts +58 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/solid/primitives/createTimebackProfile.ts +209 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts +38 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.d.ts.map +1 -0
- package/dist/client/adapters/solid/primitives/createTimebackVerification.ts +173 -0
- package/dist/client/adapters/solid/types.d.ts +109 -0
- package/dist/client/adapters/solid/types.d.ts.map +1 -0
- package/dist/client/adapters/solid/types.ts +110 -0
- package/dist/client/adapters/svelte/index.d.ts +2 -1
- package/dist/client/adapters/svelte/index.d.ts.map +1 -1
- package/dist/client/adapters/svelte/index.ts +11 -2
- package/dist/client/adapters/svelte/{stores.d.ts → stores/client.d.ts} +11 -9
- package/dist/client/adapters/svelte/stores/client.d.ts.map +1 -0
- package/dist/client/adapters/svelte/{stores.ts → stores/client.ts} +24 -52
- package/dist/client/adapters/svelte/stores/index.d.ts +10 -0
- package/dist/client/adapters/svelte/stores/index.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/index.ts +22 -0
- package/dist/client/adapters/svelte/stores/profile.d.ts +66 -0
- package/dist/client/adapters/svelte/stores/profile.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/profile.ts +168 -0
- package/dist/client/adapters/svelte/stores/verification.d.ts +43 -0
- package/dist/client/adapters/svelte/stores/verification.d.ts.map +1 -0
- package/dist/client/adapters/svelte/stores/verification.ts +208 -0
- package/dist/client/adapters/svelte/types.d.ts +35 -0
- package/dist/client/adapters/svelte/types.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.d.ts +51 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackProfile.ts +186 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts +46 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.d.ts.map +1 -0
- package/dist/client/adapters/vue/composables/useTimebackVerification.ts +169 -0
- package/dist/client/adapters/vue/index.d.ts +3 -0
- package/dist/client/adapters/vue/index.d.ts.map +1 -1
- package/dist/client/adapters/vue/index.ts +12 -1
- package/dist/client/adapters/vue/types.d.ts +109 -0
- package/dist/client/adapters/vue/types.d.ts.map +1 -0
- package/dist/client/adapters/vue/types.ts +110 -0
- package/dist/client/lib/activity/activity.class.d.ts +5 -5
- package/dist/client/lib/activity/activity.class.d.ts.map +1 -1
- package/dist/client/lib/user-cache.d.ts +39 -0
- package/dist/client/lib/user-cache.d.ts.map +1 -0
- package/dist/client/lib/user-cache.ts +168 -0
- package/dist/client/lib/utils.d.ts +15 -0
- package/dist/client/lib/utils.d.ts.map +1 -1
- package/dist/client/namespaces/activity.d.ts +2 -3
- package/dist/client/namespaces/activity.d.ts.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -257
- package/dist/edge.js +1 -86271
- package/dist/identity.js +1 -86131
- package/dist/index.d.ts +2 -2
- package/dist/index.js +22 -104883
- package/dist/server/adapters/express.js +1 -85973
- package/dist/server/adapters/native.js +2 -221
- package/dist/server/adapters/nextjs.js +1 -233
- package/dist/server/adapters/nuxt.js +1 -86046
- package/dist/server/adapters/solid-start.js +1 -85945
- package/dist/server/adapters/svelte-kit.js +1 -279
- package/dist/server/adapters/tanstack-start.js +1 -85918
- package/dist/server/handlers/activity/attempts.d.ts +51 -0
- package/dist/server/handlers/activity/attempts.d.ts.map +1 -0
- package/dist/server/handlers/activity/caliper.d.ts +46 -5
- package/dist/server/handlers/activity/caliper.d.ts.map +1 -1
- package/dist/server/handlers/activity/completion.d.ts +43 -0
- package/dist/server/handlers/activity/completion.d.ts.map +1 -0
- package/dist/server/handlers/activity/handler.d.ts +18 -1
- package/dist/server/handlers/activity/handler.d.ts.map +1 -1
- package/dist/server/handlers/activity/progress.d.ts +47 -0
- package/dist/server/handlers/activity/progress.d.ts.map +1 -0
- package/dist/server/handlers/activity/schema.d.ts +1 -2
- package/dist/server/handlers/activity/schema.d.ts.map +1 -1
- package/dist/server/handlers/activity/types.d.ts +1 -2
- package/dist/server/handlers/activity/types.d.ts.map +1 -1
- package/dist/server/lib/index.d.ts +1 -1
- package/dist/server/lib/index.d.ts.map +1 -1
- package/dist/server/lib/utils.d.ts +61 -0
- package/dist/server/lib/utils.d.ts.map +1 -1
- package/dist/server/timeback.d.ts +2 -2
- package/dist/server/timeback.d.ts.map +1 -1
- package/dist/server/types.d.ts +7 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +19 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/types.d.ts +62 -8
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/xp-calculator.d.ts +25 -0
- package/dist/shared/xp-calculator.d.ts.map +1 -0
- package/package.json +6 -4
- package/dist/client/adapters/svelte/stores.d.ts.map +0 -1
- package/dist/server/handlers/activity/gradebook.d.ts +0 -56
- package/dist/server/handlers/activity/gradebook.d.ts.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity Attempt Resolution (for process: true)
|
|
3
|
+
*
|
|
4
|
+
* Resolves attempt numbers for Caliper ActivityEvents when using `process: true`.
|
|
5
|
+
*
|
|
6
|
+
* When `process: true` is set, timeback-api-2 creates assessment line items and results
|
|
7
|
+
* using a specific ID format. This module computes the same line item ID so the SDK can
|
|
8
|
+
* query existing results and determine the correct attempt number before sending the event.
|
|
9
|
+
*
|
|
10
|
+
* Line Item ID formula (matches timeback-api-2's handleExternalUrl):
|
|
11
|
+
* `caliper_${sha256(objectId + "_" + courseSourcedId)}`
|
|
12
|
+
*
|
|
13
|
+
* Attempt semantics:
|
|
14
|
+
* - `attempt` is 1-based, stored in `metadata.attempt` on assessment results
|
|
15
|
+
* - Retry detection: if `endedAt` matches an existing result's `metadata.endedAt`,
|
|
16
|
+
* the same attempt number is reused (idempotent retry)
|
|
17
|
+
* - New attempt: if no matching `endedAt` is found, attempt is `max(existingAttempt) + 1`
|
|
18
|
+
*/
|
|
19
|
+
import type { TimebackClient } from '@timeback/core';
|
|
20
|
+
/**
|
|
21
|
+
* Compute the assessment line item sourcedId that timeback-api-2 creates for external URLs.
|
|
22
|
+
*
|
|
23
|
+
* This matches the logic in timeback-api-2's `handleExternalUrl` function:
|
|
24
|
+
* ```
|
|
25
|
+
* const idParts = [objectId, course.sourcedId].join("_")
|
|
26
|
+
* const hashedId = createHash("sha256").update(idParts).digest("hex")
|
|
27
|
+
* const sourcedId = `caliper_${hashedId}`
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param objectId - The canonical activity URL (`object.id` in the Caliper event)
|
|
31
|
+
* @param courseSourcedId - The OneRoster course sourcedId
|
|
32
|
+
* @returns The line item sourcedId that timeback-api-2 will create
|
|
33
|
+
*/
|
|
34
|
+
export declare function computeCaliperLineItemId(objectId: string, courseSourcedId: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve the attempt number for a Caliper ActivityEvent.
|
|
37
|
+
*
|
|
38
|
+
* This queries assessment results created by timeback-api-2 to determine
|
|
39
|
+
* the correct attempt number before sending the Caliper event.
|
|
40
|
+
*
|
|
41
|
+
* - If an existing result has `endedAt` matching the payload, return its attempt (retry).
|
|
42
|
+
* - Otherwise, return `max(metadata.attempt) + 1` (new attempt).
|
|
43
|
+
*
|
|
44
|
+
* @param client - Timeback client
|
|
45
|
+
* @param lineItemId - The assessment line item sourcedId (computed via `computeCaliperLineItemId`)
|
|
46
|
+
* @param timebackId - The student's Timeback user sourcedId
|
|
47
|
+
* @param endedAt - The activity end timestamp from the client payload
|
|
48
|
+
* @returns The attempt number to use (1-based)
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveCaliperAttemptNumber(client: TimebackClient, lineItemId: string, timebackId: string, endedAt: string): Promise<number>;
|
|
51
|
+
//# sourceMappingURL=attempts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attempts.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/attempts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AASpD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAG1F;AAgED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA4DjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActivityCompletedEvent, TimebackActivityContext, TimebackActivityMetric, TimeSpentEvent, TimeSpentMetric } from '@timeback/caliper';
|
|
2
|
-
import type { TimebackClient } from '@timeback/core';
|
|
2
|
+
import type { Environment, TimebackClient } from '@timeback/core';
|
|
3
3
|
import type { ActivityCourseRef, ActivityMetrics } from '../../../shared/types';
|
|
4
4
|
import type { ActivityBeforeSendData, AppConfig } from '../../types';
|
|
5
5
|
import type { ValidatedActivityPayload } from './types';
|
|
@@ -13,8 +13,8 @@ import type { ValidatedActivityPayload } from './types';
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class MissingSyncedCourseIdError extends Error {
|
|
15
15
|
readonly course: AppConfig['courses'][number];
|
|
16
|
-
readonly env:
|
|
17
|
-
constructor(course: AppConfig['courses'][number], env:
|
|
16
|
+
readonly env: Environment;
|
|
17
|
+
constructor(course: AppConfig['courses'][number], env: Environment);
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Error thrown when the sensor URL is invalid.
|
|
@@ -23,6 +23,44 @@ export declare class InvalidSensorUrlError extends Error {
|
|
|
23
23
|
readonly sensor: string;
|
|
24
24
|
constructor(sensor: string);
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Build a canonical activity URL from sensor, course selector, and activity slug.
|
|
28
|
+
*
|
|
29
|
+
* The resulting URL uniquely identifies the activity and allows upstream systems
|
|
30
|
+
* to process it as an "external URL" activity without requiring pre-synced
|
|
31
|
+
* OneRoster component resources.
|
|
32
|
+
*
|
|
33
|
+
* URL structure:
|
|
34
|
+
* - Grade-based: `{sensor}/activities/{subject}/g{grade}/{slug}`
|
|
35
|
+
* - Grade-less: `{sensor}/activities/{code}/{slug}`
|
|
36
|
+
*
|
|
37
|
+
* @param sensor - Sensor URL (must be a valid absolute URL)
|
|
38
|
+
* @param selector - Course selector from activity payload
|
|
39
|
+
* @param slug - Activity slug (will be URI-encoded)
|
|
40
|
+
* @returns Canonical activity URL
|
|
41
|
+
* @throws {InvalidSensorUrlError} If sensor is not a valid absolute URL
|
|
42
|
+
*
|
|
43
|
+
* @example Grade-based
|
|
44
|
+
* ```typescript
|
|
45
|
+
* buildCanonicalActivityUrl(
|
|
46
|
+
* 'https://sensor.example.com',
|
|
47
|
+
* { subject: 'Math', grade: 3 },
|
|
48
|
+
* 'fractions-with-like-denominators'
|
|
49
|
+
* )
|
|
50
|
+
* // => 'https://sensor.example.com/activities/Math/g3/fractions-with-like-denominators'
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example Grade-less
|
|
54
|
+
* ```typescript
|
|
55
|
+
* buildCanonicalActivityUrl(
|
|
56
|
+
* 'https://sensor.example.com',
|
|
57
|
+
* { code: 'CS-101' },
|
|
58
|
+
* 'intro-to-loops'
|
|
59
|
+
* )
|
|
60
|
+
* // => 'https://sensor.example.com/activities/CS-101/intro-to-loops'
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildCanonicalActivityUrl(sensor: string, selector: ActivityCourseRef, slug: string): string;
|
|
26
64
|
/**
|
|
27
65
|
* Build a Timeback activity context for Caliper events.
|
|
28
66
|
*
|
|
@@ -43,13 +81,14 @@ export declare class InvalidSensorUrlError extends Error {
|
|
|
43
81
|
* @param appName - Timeback app display name
|
|
44
82
|
* @param apiEnv - Target Timeback API environment
|
|
45
83
|
* @param sensor - Sensor URL for building the canonical activity URL
|
|
84
|
+
* @param onerosterBaseUrl - OneRoster API base URL for building course URL
|
|
46
85
|
* @returns Caliper activity context payload
|
|
47
86
|
*/
|
|
48
87
|
export declare function buildActivityContext(payload: {
|
|
49
88
|
id: string;
|
|
50
89
|
name: string;
|
|
51
90
|
course: ActivityCourseRef;
|
|
52
|
-
}, course: AppConfig['courses'][number], appName: string, apiEnv:
|
|
91
|
+
}, course: AppConfig['courses'][number], appName: string, apiEnv: Environment, sensor: string, onerosterBaseUrl: string): TimebackActivityContext;
|
|
53
92
|
/**
|
|
54
93
|
* Build Caliper activity metrics from the client payload.
|
|
55
94
|
*
|
|
@@ -78,7 +117,9 @@ export declare function buildActivityEvents(params: {
|
|
|
78
117
|
payload: ValidatedActivityPayload;
|
|
79
118
|
course: AppConfig['courses'][number];
|
|
80
119
|
appName: string;
|
|
81
|
-
apiEnv:
|
|
120
|
+
apiEnv: Environment;
|
|
121
|
+
onerosterBaseUrl: string;
|
|
122
|
+
attempt?: number;
|
|
82
123
|
}): ActivityBeforeSendData;
|
|
83
124
|
/**
|
|
84
125
|
* Send a batch of Caliper events as a single envelope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caliper.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/caliper.ts"],"names":[],"mappings":"AAEA,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;
|
|
1
|
+
{"version":3,"file":"caliper.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/caliper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EAEtB,cAAc,EACd,eAAe,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAEvD;;;;GAIG;AAMH;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IAEzB,YAAY,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAWjE;CACD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,YAAY,MAAM,EAAE,MAAM,EAMzB;CACD;AAuGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,MAAM,GACV,MAAM,CAoBR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,EAChE,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,GACtB,uBAAuB,CAuBzB;AAMD;;;;;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;AA2DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,sBAAsB,CAkDzB;AAMD;;;;;;;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,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mastery Completion Entry
|
|
3
|
+
*
|
|
4
|
+
* Creates a special "mastery-completion" line item + result when course mastery is achieved.
|
|
5
|
+
* This line item IS connected to `componentResource`, which triggers course completion
|
|
6
|
+
* on dashboards — unlike regular activity line items which intentionally omit the link
|
|
7
|
+
* to prevent premature completion.
|
|
8
|
+
*
|
|
9
|
+
* @see Playcademy's MasteryTracker.createCompletionEntry for the original pattern
|
|
10
|
+
*/
|
|
11
|
+
import type { TimebackClient } from '@timeback/core';
|
|
12
|
+
/**
|
|
13
|
+
* Parameters for maybeWriteCompletionEntry.
|
|
14
|
+
*/
|
|
15
|
+
interface CompletionEntryParams {
|
|
16
|
+
/** Timeback client instance */
|
|
17
|
+
client: TimebackClient;
|
|
18
|
+
/** Course sourcedId (synced from config) */
|
|
19
|
+
courseId: string;
|
|
20
|
+
/** Student's Timeback user ID */
|
|
21
|
+
timebackId: string;
|
|
22
|
+
/** Computed percentage complete (0-100) */
|
|
23
|
+
pctComplete: number | undefined;
|
|
24
|
+
/** Application name for metadata */
|
|
25
|
+
appName: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a mastery completion entry if the student has achieved 100% completion.
|
|
29
|
+
*
|
|
30
|
+
* This is a workaround for OneRoster/dashboard completion detection:
|
|
31
|
+
* - Regular line items are NOT connected to the component resource
|
|
32
|
+
* (to prevent the first fully-graded result from marking the course complete)
|
|
33
|
+
* - This special "mastery-completion" line item IS connected to the component resource
|
|
34
|
+
* - When mastery is achieved (pctComplete === 100), we create this line item + a fully graded result
|
|
35
|
+
* - This triggers course completion while allowing XP to aggregate normally
|
|
36
|
+
*
|
|
37
|
+
* XXX: errors are logged but do not fail the overall request.
|
|
38
|
+
*
|
|
39
|
+
* @param params - Completion entry parameters
|
|
40
|
+
*/
|
|
41
|
+
export declare function maybeWriteCompletionEntry(params: CompletionEntryParams): Promise<void>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD;;GAEG;AACH,UAAU,qBAAqB;IAC9B,+BAA+B;IAC/B,MAAM,EAAE,cAAc,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF5F"}
|
|
@@ -4,12 +4,29 @@
|
|
|
4
4
|
* HTTP route handler for activity submissions.
|
|
5
5
|
* Orchestrates validation, user resolution, gradebook writes, and Caliper event sending.
|
|
6
6
|
*/
|
|
7
|
+
import { maybeWriteCompletionEntry as maybeWriteCompletionEntryImpl } from './completion';
|
|
8
|
+
import { computeProgress as computeProgressImpl } from './progress';
|
|
7
9
|
import type { ActivityHandler, ActivityHandlerConfig } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Internal dependencies for handler.
|
|
12
|
+
*
|
|
13
|
+
* This interface enables unit tests to inject mock implementations of
|
|
14
|
+
* computeProgress and maybeWriteCompletionEntry without mocking the entire
|
|
15
|
+
* TimebackClient.
|
|
16
|
+
*
|
|
17
|
+
* Not part of the public API - only exposed for testing purposes.
|
|
18
|
+
*/
|
|
19
|
+
interface ActivityHandlerDeps {
|
|
20
|
+
computeProgress: typeof computeProgressImpl;
|
|
21
|
+
maybeWriteCompletionEntry: typeof maybeWriteCompletionEntryImpl;
|
|
22
|
+
}
|
|
8
23
|
/**
|
|
9
24
|
* Create the activity POST handler.
|
|
10
25
|
*
|
|
11
26
|
* @param config - Handler configuration
|
|
27
|
+
* @param deps - Internal dependencies (for testing only, not part of public API)
|
|
12
28
|
* @returns The activity request handler
|
|
13
29
|
*/
|
|
14
|
-
export declare function createActivityHandler(config: ActivityHandlerConfig): ActivityHandler;
|
|
30
|
+
export declare function createActivityHandler(config: ActivityHandlerConfig, deps?: ActivityHandlerDeps): ActivityHandler;
|
|
31
|
+
export {};
|
|
15
32
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,EAAE,yBAAyB,IAAI,6BAA6B,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,eAAe,IAAI,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAKnE,OAAO,KAAK,EACX,eAAe,EACf,qBAAqB,EAGrB,MAAM,SAAS,CAAA;AAQhB;;;;;;;;GAQG;AACH,UAAU,mBAAmB;IAC5B,eAAe,EAAE,OAAO,mBAAmB,CAAA;IAC3C,yBAAyB,EAAE,OAAO,6BAA6B,CAAA;CAC/D;AA+HD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,IAAI,GAAE,mBAAiC,GACrC,eAAe,CAuLjB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Activity Progress Computation
|
|
3
|
+
*
|
|
4
|
+
* Computes `pctComplete` by aggregating historical mastered units from EduBridge
|
|
5
|
+
* enrollment analytics and combining with the current submission's mastered units.
|
|
6
|
+
*/
|
|
7
|
+
import type { TimebackClient } from '@timeback/core';
|
|
8
|
+
import type { AppConfig, Environment } from '../../types';
|
|
9
|
+
import type { ValidatedActivityPayload } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Result of progress computation.
|
|
12
|
+
*/
|
|
13
|
+
interface ProgressResult {
|
|
14
|
+
/** Computed percentage (0-100) */
|
|
15
|
+
pctComplete: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the total lessons denominator from course config.
|
|
19
|
+
*
|
|
20
|
+
* Checks env-specific overrides first, then falls back to base metadata.
|
|
21
|
+
*
|
|
22
|
+
* @param course - Course config
|
|
23
|
+
* @param env - Target environment
|
|
24
|
+
* @returns Total lessons count, or undefined if not configured
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveTotalLessons(course: AppConfig['courses'][number], env: Environment): number | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Compute pctComplete for an activity submission.
|
|
29
|
+
*
|
|
30
|
+
* Only computes when:
|
|
31
|
+
* - `totalLessons` is configured (> 0) for the course
|
|
32
|
+
* - `metrics.masteredUnits` is present and > 0 in the payload
|
|
33
|
+
* - `pctComplete` is not already provided by the client
|
|
34
|
+
*
|
|
35
|
+
* @param params - Computation parameters
|
|
36
|
+
* @returns Progress result with pctComplete, or undefined if conditions not met
|
|
37
|
+
*/
|
|
38
|
+
export declare function computeProgress(params: {
|
|
39
|
+
client: TimebackClient;
|
|
40
|
+
courseId: string;
|
|
41
|
+
timebackId: string;
|
|
42
|
+
payload: ValidatedActivityPayload;
|
|
43
|
+
course: AppConfig['courses'][number];
|
|
44
|
+
env: Environment;
|
|
45
|
+
}): Promise<ProgressResult | undefined>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAIvD;;GAEG;AACH,UAAU,cAAc;IACvB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACpC,GAAG,EAAE,WAAW,GACd,MAAM,GAAG,SAAS,CAMpB;AAcD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,GAAG,EAAE,WAAW,CAAA;CAChB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAkLtC"}
|
|
@@ -37,8 +37,7 @@ export declare const activityPayloadSchema: z.ZodObject<{
|
|
|
37
37
|
xpEarned: z.ZodOptional<z.ZodNumber>;
|
|
38
38
|
masteredUnits: z.ZodOptional<z.ZodNumber>;
|
|
39
39
|
}, z.core.$strip>;
|
|
40
|
-
|
|
41
|
-
pctCompleteApp: z.ZodPipe<z.ZodOptional<z.ZodNumber>, z.ZodTransform<number | undefined, number | undefined>>;
|
|
40
|
+
pctComplete: z.ZodPipe<z.ZodOptional<z.ZodNumber>, z.ZodTransform<number | undefined, number | undefined>>;
|
|
42
41
|
}, z.core.$strip>;
|
|
43
42
|
/**
|
|
44
43
|
* Validate the activity request body and resolve config dependencies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/server/handlers/activity/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAWxB,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AA0E/C,mDAAmD;AACnD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAA;AAmBF;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,WAAW,GACd,gBAAgB,CAiHlB"}
|
|
@@ -26,8 +26,7 @@ export interface ValidatedActivityPayload {
|
|
|
26
26
|
xpEarned?: number;
|
|
27
27
|
masteredUnits?: number;
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
pctCompleteApp?: number;
|
|
29
|
+
pctComplete?: number;
|
|
31
30
|
}
|
|
32
31
|
/** Result of request validation - either valid data or an error response. */
|
|
33
32
|
export type ValidationResult = {
|
|
@@ -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;AAMpB,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,
|
|
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;AAMpB,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,aAAa,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAMD,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,GACzB;IACA,EAAE,EAAE,IAAI,CAAA;IACR,OAAO,EAAE,wBAAwB,CAAA;IACjC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;CACb,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAA;AAMpC,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,WAAW,CAAA;IAChB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;CAC/B;AAED,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Shared utilities for the server SDK.
|
|
5
5
|
*/
|
|
6
6
|
export { getIssuer, buildAuthorizationUrl, exchangeCodeForTokens, getUserInfo } from './oidc';
|
|
7
|
-
export { jsonResponse, redirectResponse, encodeBase64Url, decodeBase64Url, mapEnvForApi, normalizeEnv, safeIdSegment, hashSuffix64Base36, } from './utils';
|
|
7
|
+
export { deriveCourseStructureIds, jsonResponse, redirectResponse, encodeBase64Url, decodeBase64Url, mapEnvForApi, normalizeEnv, safeIdSegment, sameInstant, hashSuffix64Base36, sha256Hex, } from './utils';
|
|
8
8
|
export { ssoLog, oidcLog, createScopedLogger } from './logger';
|
|
9
9
|
export { lookupTimebackIdByEmail, resolveStatusForUserResolutionError, resolveTimebackUserByEmail, TimebackUserResolutionError, } from './resolve';
|
|
10
10
|
export { buildErrorContext, computeRedirectUri, handleIdpError, handleMissingCode, initiateSignIn, parseCallback, tryDecodeState, } from './sso';
|
|
@@ -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,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,kBAAkB,
|
|
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;AAC9D,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"}
|
|
@@ -4,6 +4,47 @@
|
|
|
4
4
|
* Internal utility functions for the server SDK.
|
|
5
5
|
*/
|
|
6
6
|
import type { Environment, EnvironmentInput } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Derived resource IDs for a course structure.
|
|
9
|
+
*/
|
|
10
|
+
interface CourseStructureIds {
|
|
11
|
+
/** Course sourcedId (unchanged) */
|
|
12
|
+
course: string;
|
|
13
|
+
/** Derived component ID: `${courseId}-component` */
|
|
14
|
+
component: string;
|
|
15
|
+
/** Derived resource ID: `${courseId}-resource` */
|
|
16
|
+
resource: string;
|
|
17
|
+
/** Derived componentResource ID: `${courseId}-cr` */
|
|
18
|
+
componentResource: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Derive all resource IDs from the allocated courseId.
|
|
22
|
+
*
|
|
23
|
+
* This follows the SDK pattern where child IDs are deterministic
|
|
24
|
+
* suffixes of the course ID, keeping config files clean.
|
|
25
|
+
*
|
|
26
|
+
* NOTE: This function is intentionally duplicated in `packages/cli/src/lib/course-structure.ts`.
|
|
27
|
+
*
|
|
28
|
+
* We accept the duplication because: (1) it's a tiny pure function with no dependencies,
|
|
29
|
+
* (2) the ID derivation pattern is stable and unlikely to change, and (3) extracting to a
|
|
30
|
+
* shared package would add cross-package dependency overhead for minimal benefit.
|
|
31
|
+
* If you modify this, update the CLI copy as well.
|
|
32
|
+
*
|
|
33
|
+
* @param courseId - The allocated OneRoster course ID
|
|
34
|
+
* @returns Derived IDs for all child resources
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const ids = deriveCourseStructureIds('abc-123')
|
|
39
|
+
* // {
|
|
40
|
+
* // course: 'abc-123',
|
|
41
|
+
* // component: 'abc-123-component',
|
|
42
|
+
* // resource: 'abc-123-resource',
|
|
43
|
+
* // componentResource: 'abc-123-cr'
|
|
44
|
+
* // }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function deriveCourseStructureIds(courseId: string): CourseStructureIds;
|
|
7
48
|
/**
|
|
8
49
|
* Build a safe ID segment from a string (URL-safe, no colons).
|
|
9
50
|
*
|
|
@@ -16,6 +57,16 @@ import type { Environment, EnvironmentInput } from '../types';
|
|
|
16
57
|
* @returns A safe ID segment
|
|
17
58
|
*/
|
|
18
59
|
export declare function safeIdSegment(value: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Compare two datetime strings, tolerating minor formatting differences.
|
|
62
|
+
*
|
|
63
|
+
* Falls back to string equality if either value is not parseable.
|
|
64
|
+
*
|
|
65
|
+
* @param a - First datetime string
|
|
66
|
+
* @param b - Second datetime string
|
|
67
|
+
* @returns True if both represent the same instant
|
|
68
|
+
*/
|
|
69
|
+
export declare function sameInstant(a: string, b: string): boolean;
|
|
19
70
|
/**
|
|
20
71
|
* Create a compact deterministic hash suffix for IDs.
|
|
21
72
|
*
|
|
@@ -26,6 +77,15 @@ export declare function safeIdSegment(value: string): string;
|
|
|
26
77
|
* @returns Base36 hash suffix (lowercase alphanumeric)
|
|
27
78
|
*/
|
|
28
79
|
export declare function hashSuffix64Base36(value: string): string;
|
|
80
|
+
/**
|
|
81
|
+
* Create a SHA256 hex digest of a string.
|
|
82
|
+
*
|
|
83
|
+
* Used for deterministic IDs that must match timeback-api-2's hashing.
|
|
84
|
+
*
|
|
85
|
+
* @param value - String to hash
|
|
86
|
+
* @returns 64-character lowercase hex string
|
|
87
|
+
*/
|
|
88
|
+
export declare function sha256Hex(value: string): string;
|
|
29
89
|
/**
|
|
30
90
|
* Map SDK environment to the environment used for outbound Timeback API calls.
|
|
31
91
|
*
|
|
@@ -82,4 +142,5 @@ export declare function encodeBase64Url(data: unknown): string;
|
|
|
82
142
|
* @returns Decoded object
|
|
83
143
|
*/
|
|
84
144
|
export declare function decodeBase64Url<T>(encoded: string): T;
|
|
145
|
+
export {};
|
|
85
146
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/lib/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
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;AAM7D;;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;;;;;;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"}
|
|
@@ -33,8 +33,8 @@ import type { TimebackConfig, TimebackInstance } from './types';
|
|
|
33
33
|
* },
|
|
34
34
|
* identity: {
|
|
35
35
|
* mode: 'sso',
|
|
36
|
-
* clientId: process.env.
|
|
37
|
-
* clientSecret: process.env.
|
|
36
|
+
* clientId: process.env.TIMEBACK_SSO_CLIENT_ID!,
|
|
37
|
+
* clientSecret: process.env.TIMEBACK_SSO_CLIENT_SECRET!,
|
|
38
38
|
* onCallbackSuccess: async ({ user, state, redirect }) => {
|
|
39
39
|
* // user.id is the timebackId (canonical stable identifier)
|
|
40
40
|
* await setSession({ id: user.id, email: user.email })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeback.d.ts","sourceRoot":"","sources":["../../src/server/timeback.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"timeback.d.ts","sourceRoot":"","sources":["../../src/server/timeback.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAa,cAAc,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAyC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,wBAAsB,cAAc,CAAC,MAAM,GAAG,OAAO,EACpD,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAiFnC"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -406,6 +406,11 @@ type AppCourseMetadata = {
|
|
|
406
406
|
dailyAccuracy?: number;
|
|
407
407
|
dailyMasteredUnits?: number;
|
|
408
408
|
};
|
|
409
|
+
metrics?: {
|
|
410
|
+
totalXp?: number;
|
|
411
|
+
totalLessons?: number;
|
|
412
|
+
totalGrades?: number;
|
|
413
|
+
};
|
|
409
414
|
};
|
|
410
415
|
type AppCourseBase = {
|
|
411
416
|
subject: string;
|
|
@@ -471,7 +476,8 @@ type AppCourse = (AppCourseBase & {
|
|
|
471
476
|
*
|
|
472
477
|
* Sensor resolution:
|
|
473
478
|
* - Every course must have an effective sensor
|
|
474
|
-
* (`course.overrides[env].sensor ?? course.sensor ?? config.sensor`).
|
|
479
|
+
* (`course.overrides[env].sensor ?? course.sensor ?? config.sensor ?? derivedFromLaunchUrl`).
|
|
480
|
+
* - If no sensor is explicitly set, it's derived from the origin of the effective `launchUrl`.
|
|
475
481
|
* - This is enforced by zod validation at config load time.
|
|
476
482
|
*
|
|
477
483
|
* LaunchUrl (optional):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,4 +16,23 @@ export declare const ROUTES: {
|
|
|
16
16
|
readonly VERIFY: "/user/verify";
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Threshold for treating accuracy as "perfect" (handles floating point precision).
|
|
21
|
+
*
|
|
22
|
+
* Example: `10 / 10` can become `0.9999999999999999` due to IEEE754 rounding.
|
|
23
|
+
*/
|
|
24
|
+
export declare const PERFECT_ACCURACY_THRESHOLD = 0.999999;
|
|
25
|
+
/**
|
|
26
|
+
* Default number of retry attempts for verification.
|
|
27
|
+
*
|
|
28
|
+
* Retries help handle race conditions where the user may not be
|
|
29
|
+
* fully set up in the backend when verification first runs.
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_RETRY_ATTEMPTS = 3;
|
|
32
|
+
/**
|
|
33
|
+
* Default retry delays in milliseconds (exponential backoff).
|
|
34
|
+
*
|
|
35
|
+
* Each index corresponds to the delay before that retry attempt.
|
|
36
|
+
*/
|
|
37
|
+
export declare const DEFAULT_RETRY_DELAYS_MS: readonly [100, 300, 1000];
|
|
19
38
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,kBAAkB,CAAA;AAEhD,sBAAsB;AACtB,eAAO,MAAM,MAAM;;;;;;;;;;;CAWT,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,kBAAkB,CAAA;AAEhD,sBAAsB;AACtB,eAAO,MAAM,MAAM;;;;;;;;;;;CAWT,CAAA;AAEV;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,WAAW,CAAA;AAElD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,2BAA4B,CAAA"}
|