@playcademy/sdk 0.2.4 → 0.2.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/dist/index.d.ts CHANGED
@@ -57,6 +57,7 @@ interface ErrorResponseBody {
57
57
  * ```
58
58
  */
59
59
  declare class ApiError extends Error {
60
+ /** HTTP status code */
60
61
  readonly status: number;
61
62
  /**
62
63
  * API error code (e.g., "NOT_FOUND", "VALIDATION_FAILED").
@@ -4253,9 +4253,6 @@ interface PlayerProfile {
4253
4253
  name: UserRow['name'];
4254
4254
  image?: UserRow['image'];
4255
4255
  role?: UserRow['role'];
4256
- level?: number;
4257
- experience?: number;
4258
- experienceToNextLevel?: number;
4259
4256
  characterCreated?: UserRow['characterCreated'];
4260
4257
  hasTimebackAccount?: boolean;
4261
4258
  }
@@ -4522,6 +4519,7 @@ interface ErrorResponseBody {
4522
4519
  * ```
4523
4520
  */
4524
4521
  declare class ApiError extends Error {
4522
+ /** HTTP status code */
4525
4523
  readonly status: number;
4526
4524
  /**
4527
4525
  * API error code (e.g., "NOT_FOUND", "VALIDATION_FAILED").
@@ -7012,7 +7010,6 @@ declare class PlaycademyInternalClient extends PlaycademyBaseClient {
7012
7010
  secrets: {
7013
7011
  set: (slug: string, secrets: Record<string, string>) => Promise<string[]>;
7014
7012
  list: (slug: string) => Promise<string[]>;
7015
- get: (slug: string) => Promise<Record<string, string>>;
7016
7013
  delete: (slug: string, key: string) => Promise<void>;
7017
7014
  };
7018
7015
  database: {
package/dist/internal.js CHANGED
@@ -1785,10 +1785,6 @@ function createDevNamespace(client) {
1785
1785
  const result = await client["request"](`/games/${slug}/secrets`, "GET");
1786
1786
  return result.keys;
1787
1787
  },
1788
- get: async (slug) => {
1789
- const result = await client["request"](`/games/${slug}/secrets/values`, "GET");
1790
- return result.secrets;
1791
- },
1792
1788
  delete: async (slug, key) => {
1793
1789
  await client["request"](`/games/${slug}/secrets/${key}`, "DELETE");
1794
1790
  }
package/dist/server.js CHANGED
@@ -1,3 +1,23 @@
1
+ // src/server/guards.ts
2
+ var VALID_GRADES = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
3
+ var VALID_SUBJECTS = [
4
+ "Reading",
5
+ "Language",
6
+ "Vocabulary",
7
+ "Social Studies",
8
+ "Writing",
9
+ "Science",
10
+ "FastMath",
11
+ "Math",
12
+ "None"
13
+ ];
14
+ function isValidGrade(value) {
15
+ return typeof value === "number" && Number.isInteger(value) && VALID_GRADES.includes(value);
16
+ }
17
+ function isValidSubject(value) {
18
+ return typeof value === "string" && VALID_SUBJECTS.includes(value);
19
+ }
20
+
1
21
  // src/server/namespaces/timeback.ts
2
22
  function createTimebackNamespace(client) {
3
23
  function enrichActivityData(data) {
@@ -8,11 +28,11 @@ function createTimebackNamespace(client) {
8
28
  }
9
29
  return {
10
30
  endActivity: async (studentId, payload) => {
11
- if (!payload.activityData.grade) {
12
- throw new Error("activityData.grade is required for TimeBack integration");
31
+ if (!isValidGrade(payload.activityData.grade)) {
32
+ throw new Error("activityData.grade must be a valid grade level (-1 to 13)");
13
33
  }
14
- if (!payload.activityData.subject) {
15
- throw new Error("activityData.subject is required for TimeBack integration");
34
+ if (!isValidSubject(payload.activityData.subject)) {
35
+ throw new Error("activityData.subject must be a valid subject");
16
36
  }
17
37
  const enrichedActivityData = enrichActivityData(payload.activityData);
18
38
  return client["request"]("/api/timeback/end-activity", "POST", {
package/dist/types.d.ts CHANGED
@@ -4130,9 +4130,6 @@ interface PlayerProfile {
4130
4130
  name: UserRow['name'];
4131
4131
  image?: UserRow['image'];
4132
4132
  role?: UserRow['role'];
4133
- level?: number;
4134
- experience?: number;
4135
- experienceToNextLevel?: number;
4136
4133
  characterCreated?: UserRow['characterCreated'];
4137
4134
  hasTimebackAccount?: boolean;
4138
4135
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playcademy/sdk",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -44,12 +44,12 @@
44
44
  "@playcademy/data": "0.0.1",
45
45
  "@playcademy/logger": "0.0.1",
46
46
  "@playcademy/types": "0.0.1",
47
- "@playcademy/sandbox": "0.3.8",
47
+ "@playcademy/sandbox": "0.3.9",
48
48
  "@playcademy/test": "0.0.1",
49
49
  "@playcademy/timeback": "0.0.1",
50
50
  "@playcademy/utils": "0.0.1",
51
51
  "@types/bun": "latest",
52
- "playcademy": "0.14.33",
52
+ "playcademy": "0.15.5",
53
53
  "rollup": "^4.50.2",
54
54
  "rollup-plugin-dts": "^6.2.3",
55
55
  "typescript": "^5.7.2"