@playcademy/sdk 0.20.1-beta.1 → 0.20.1-beta.3

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.
@@ -10,13 +10,6 @@ var __export = (target, all) => {
10
10
  };
11
11
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
12
12
 
13
- // src/core/timeback/assessment-request.ts
14
- function canonicalAssessmentInput(input) {
15
- const request = { ...input };
16
- delete request.preparationReceipt;
17
- return request;
18
- }
19
-
20
13
  // ../constants/src/auth.ts
21
14
  var DEFAULT_PERSONAL_API_KEY_PERMISSIONS = {
22
15
  games: ["read", "write", "delete"],
@@ -27,6 +20,8 @@ var DEFAULT_PERSONAL_API_KEY_PERMISSIONS = {
27
20
  var PLAYCADEMY_BROWSER_TIME_ZONE_HEADER = "x-playcademy-browser-time-zone";
28
21
  var PLAYCADEMY_ASSESSMENT_ASSET_SHA256_HEADER = "x-playcademy-content-sha256";
29
22
  var ASSESSMENT_ASSET_MAX_BYTES = 4 * 1024 * 1024;
23
+ // ../constants/src/skills.ts
24
+ var SKILL_STATUS_MAX_SKILLS = 50;
30
25
  // ../constants/src/timeback.ts
31
26
  var TIMEBACK_ROUTES = {
32
27
  END_ACTIVITY: "/integrations/timeback/end-activity",
@@ -68,6 +63,44 @@ var TIMEBACK_GAME_METRIC_COMPARISON_TOLERANCE = {
68
63
  time: 60,
69
64
  score: 0.5 / 10 ** TIMEBACK_GAME_METRIC_DECIMAL_PLACES.score
70
65
  };
66
+ // ../utils/src/skills.ts
67
+ function normalizeSkillId(skill) {
68
+ return skill.trim().toLowerCase();
69
+ }
70
+ function normalizeSkillIds(skills2, max) {
71
+ const normalized = [...new Set(skills2.map(normalizeSkillId).filter((skill) => skill.length > 0))];
72
+ if (normalized.length === 0) {
73
+ return { ok: false, error: "At least one skill is required" };
74
+ }
75
+ if (normalized.length > max) {
76
+ return { ok: false, error: `At most ${max} skills can be requested at once` };
77
+ }
78
+ return { ok: true, skills: normalized };
79
+ }
80
+
81
+ // src/server/namespaces/skills.ts
82
+ function createSkillsNamespace(client) {
83
+ return {
84
+ getStatus: (request) => {
85
+ const normalized = normalizeSkillIds(request.skills, SKILL_STATUS_MAX_SKILLS);
86
+ if (!normalized.ok) {
87
+ throw new Error(normalized.error);
88
+ }
89
+ return client["request"]("/api/skills/status", "POST", {
90
+ game: request.game,
91
+ studentId: request.studentId,
92
+ skills: normalized.skills
93
+ });
94
+ }
95
+ };
96
+ }
97
+ // src/core/timeback/assessment-request.ts
98
+ function canonicalAssessmentInput(input) {
99
+ const request = { ...input };
100
+ delete request.preparationReceipt;
101
+ return request;
102
+ }
103
+
71
104
  // src/core/guards.ts
72
105
  var VALID_GRADES = TIMEBACK_GRADES;
73
106
  var VALID_SUBJECTS = TIMEBACK_SUBJECTS;
@@ -337,7 +370,7 @@ function extractApiErrorInfo(error) {
337
370
  }
338
371
 
339
372
  // src/version.ts
340
- var SDK_VERSION = "0.20.1-beta.1";
373
+ var SDK_VERSION = "0.20.1-beta.3";
341
374
 
342
375
  // src/server/request.ts
343
376
  async function makeApiRequest(opts) {
@@ -429,6 +462,7 @@ class PlaycademyClient {
429
462
  return this.state.config;
430
463
  }
431
464
  timeback = createTimebackNamespace(this);
465
+ skills = createSkillsNamespace(this);
432
466
  }
433
467
  // src/server/utils/verify-game-token.ts
434
468
  async function verifyGameToken(gameToken, options) {