@superbuilders/primer-tives 0.9.0 → 1.0.0
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 +244 -68
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +3 -3
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/server/create-server.d.ts +21 -19
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/exchange.d.ts +10 -5
- package/dist/server/exchange.d.ts.map +1 -1
- package/dist/server/hints.d.ts +25 -0
- package/dist/server/hints.d.ts.map +1 -0
- package/dist/server/index.d.ts +4 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +354 -79
- package/dist/server/index.js.map +9 -8
- package/dist/server/students.d.ts +3 -5
- package/dist/server/students.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,40 +1,42 @@
|
|
|
1
|
-
import type { GradeLevel } from "../grade-level";
|
|
2
1
|
import type { PrimerLogger } from "../logger";
|
|
3
|
-
import { type SessionToken } from "./exchange";
|
|
2
|
+
import { type SessionToken, type TimebackSession } from "./exchange";
|
|
3
|
+
import { type PlacementHints, type PlacementHintsResult } from "./hints";
|
|
4
4
|
interface PrimerServerConfig {
|
|
5
5
|
readonly origin: string;
|
|
6
6
|
readonly secretKey: string;
|
|
7
7
|
readonly fetch?: typeof globalThis.fetch;
|
|
8
8
|
readonly abort?: AbortController;
|
|
9
|
-
readonly logger
|
|
9
|
+
readonly logger: PrimerLogger;
|
|
10
10
|
}
|
|
11
11
|
interface PrimerServer {
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* Provisions a frontend-owned Primer student and returns the stable
|
|
14
|
+
* student id you persist in your own DB keyed by your user. Native
|
|
15
|
+
* students are created hint-less; call `setStudentHints` at least
|
|
16
|
+
* once (with a `gradeLevel`) before the student's first session, or
|
|
17
|
+
* the first `/advance` call will 500.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
createStudent(): Promise<string>;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* Partial update of a student's placement-routing hints. Pass only
|
|
22
|
+
* the fields you want to set; omitted fields are left untouched.
|
|
23
|
+
* Returns the persisted state after upsert. Today the only hint is
|
|
24
|
+
* `gradeLevel`; future hint kinds (raw context, interests, etc.)
|
|
25
|
+
* will appear as additional optional fields.
|
|
23
26
|
*/
|
|
24
|
-
|
|
27
|
+
setStudentHints(studentId: string, hints: PlacementHints): Promise<PlacementHintsResult>;
|
|
25
28
|
/**
|
|
26
|
-
*
|
|
29
|
+
* Exchanges a frontend-owned native/manual student id for a short-lived
|
|
27
30
|
* access token. Pass `accessToken` from the returned `SessionToken` to
|
|
28
31
|
* `create()` on the browser SDK.
|
|
29
32
|
*/
|
|
30
|
-
|
|
33
|
+
exchangeStudentForAccessToken(studentId: string): Promise<SessionToken>;
|
|
31
34
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* to `create()` on the browser SDK.
|
|
35
|
+
* Verifies the learner against live Timeback authority, resolves or
|
|
36
|
+
* provisions the corresponding frontend-owned Primer student, and
|
|
37
|
+
* returns both the stable student id and a short-lived access token.
|
|
36
38
|
*/
|
|
37
|
-
exchangeTimebackStudentForAccessToken(sourcedId: string): Promise<
|
|
39
|
+
exchangeTimebackStudentForAccessToken(sourcedId: string): Promise<TimebackSession>;
|
|
38
40
|
}
|
|
39
41
|
declare function createPrimerServer(config: PrimerServerConfig): PrimerServer;
|
|
40
42
|
export type { PrimerServer, PrimerServerConfig };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,eAAe,EAGpB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAEzB,MAAM,0CAA0C,CAAA;AAGjD,UAAU,kBAAkB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC7B;AAED,UAAU,YAAY;IACrB;;;;;;OAMG;IACH,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IAEhC;;;;;;OAMG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAExF;;;;OAIG;IACH,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAEvE;;;;OAIG;IACH,qCAAqC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;CAClF;AAED,iBAAS,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAepE;AAED,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import type { PrimerLogger } from "../logger";
|
|
2
|
-
type Provider = "native" | "timeback";
|
|
3
2
|
interface ExchangeConfig {
|
|
4
3
|
readonly origin: string;
|
|
5
4
|
readonly secretKey: string;
|
|
6
5
|
readonly fetch?: typeof globalThis.fetch;
|
|
7
6
|
readonly abort?: AbortController;
|
|
8
|
-
readonly logger
|
|
7
|
+
readonly logger: PrimerLogger;
|
|
9
8
|
}
|
|
10
9
|
interface SessionToken {
|
|
11
10
|
readonly accessToken: string;
|
|
12
11
|
readonly expiresInSeconds: number;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
interface TimebackSession {
|
|
14
|
+
readonly studentId: string;
|
|
15
|
+
readonly accessToken: string;
|
|
16
|
+
readonly expiresInSeconds: number;
|
|
17
|
+
}
|
|
18
|
+
declare function exchangeStudent(config: ExchangeConfig, studentId: string): Promise<SessionToken>;
|
|
19
|
+
declare function exchangeTimebackStudent(config: ExchangeConfig, sourcedId: string): Promise<TimebackSession>;
|
|
20
|
+
export type { ExchangeConfig, SessionToken, TimebackSession };
|
|
21
|
+
export { exchangeStudent, exchangeTimebackStudent };
|
|
17
22
|
//# sourceMappingURL=exchange.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/server/exchange.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exchange.d.ts","sourceRoot":"","sources":["../../src/server/exchange.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAKtE,UAAU,cAAc;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC7B;AAED,UAAU,YAAY;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CACjC;AAED,UAAU,eAAe;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CACjC;AA8OD,iBAAe,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAmB/F;AAED,iBAAe,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CAmB1B;AAED,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type GradeLevel } from "../grade-level";
|
|
2
|
+
import type { PrimerLogger } from "../logger";
|
|
3
|
+
interface HintsConfig {
|
|
4
|
+
readonly origin: string;
|
|
5
|
+
readonly secretKey: string;
|
|
6
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
7
|
+
readonly abort?: AbortController;
|
|
8
|
+
readonly logger: PrimerLogger;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Partial update of a student's placement hints. Pass only the fields
|
|
12
|
+
* you want to set; omitted fields are left untouched. The server
|
|
13
|
+
* returns the persisted state after upsert.
|
|
14
|
+
*/
|
|
15
|
+
interface PlacementHints {
|
|
16
|
+
readonly gradeLevel?: GradeLevel;
|
|
17
|
+
}
|
|
18
|
+
interface PlacementHintsResult {
|
|
19
|
+
readonly studentId: string;
|
|
20
|
+
readonly gradeLevel: GradeLevel | null;
|
|
21
|
+
}
|
|
22
|
+
declare function setStudentHints(config: HintsConfig, studentId: string, hints: PlacementHints): Promise<PlacementHintsResult>;
|
|
23
|
+
export type { HintsConfig, PlacementHints, PlacementHintsResult };
|
|
24
|
+
export { setStudentHints };
|
|
25
|
+
//# sourceMappingURL=hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/server/hints.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAItE,UAAU,WAAW;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC7B;AAED;;;;GAIG;AACH,UAAU,cAAc;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAChC;AAED,UAAU,oBAAoB;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;CACtC;AAwKD,iBAAe,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,cAAc,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAkB/B;AAED,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { createPrimerServer } from "./create-server";
|
|
2
2
|
export type { PrimerServer, PrimerServerConfig } from "./create-server";
|
|
3
|
-
export type { SessionToken } from "./exchange";
|
|
4
|
-
export type {
|
|
3
|
+
export type { SessionToken, TimebackSession } from "./exchange";
|
|
4
|
+
export type { PlacementHints, PlacementHintsResult } from "./hints";
|
|
5
5
|
export type { GradeLevel } from "../grade-level";
|
|
6
6
|
export { GRADE_LEVELS } from "../grade-level";
|
|
7
|
-
export {
|
|
7
|
+
export type { PrimerLogger } from "../logger";
|
|
8
|
+
export { ErrBadRequest, ErrConflict, ErrExternalAuthorityRequired, ErrInvalidSecretKey, ErrJsonParse, ErrNetwork, ErrServerError, ErrStudentNotFound, ErrTimebackUnavailable, ErrTimeout, ErrUnsupportedGrade } from "../errors";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAA;AACrF,YAAY,EACX,YAAY,EACZ,kBAAkB,EAClB,MAAM,kDAAkD,CAAA;AAEzD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAA;AACrF,YAAY,EACX,YAAY,EACZ,kBAAkB,EAClB,MAAM,kDAAkD,CAAA;AAEzD,YAAY,EACX,YAAY,EACZ,eAAe,EACf,MAAM,6CAA6C,CAAA;AACpD,YAAY,EACX,cAAc,EACd,oBAAoB,EACpB,MAAM,0CAA0C,CAAA;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAEtE,OAAO,EACN,aAAa,EACb,WAAW,EACX,4BAA4B,EAC5B,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,mBAAmB,EACnB,MAAM,oCAAoC,CAAA"}
|