playcademy 0.23.0 → 0.23.1-beta.1

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/cli.js CHANGED
@@ -1065,7 +1065,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
1065
1065
  // ../better-auth/package.json
1066
1066
  var package_default = {
1067
1067
  name: "@playcademy/better-auth",
1068
- version: "0.0.15",
1068
+ version: "0.0.16-beta.1",
1069
1069
  type: "module",
1070
1070
  exports: {
1071
1071
  "./server": {
@@ -2920,7 +2920,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
2920
2920
  import { join as join13 } from "node:path";
2921
2921
 
2922
2922
  // src/version.ts
2923
- var cliVersion = false ? "0.0.0-dev" : "0.23.0";
2923
+ var cliVersion = false ? "0.0.0-dev" : "0.23.1-beta.1";
2924
2924
 
2925
2925
  // src/lib/init/database.ts
2926
2926
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
package/dist/constants.js CHANGED
@@ -20,7 +20,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
20
20
  // ../better-auth/package.json
21
21
  var package_default = {
22
22
  name: "@playcademy/better-auth",
23
- version: "0.0.15",
23
+ version: "0.0.16-beta.1",
24
24
  type: "module",
25
25
  exports: {
26
26
  "./server": {
package/dist/db.js CHANGED
@@ -36,7 +36,7 @@ var DEFAULT_API_ROUTES_DIRECTORY = join2(SERVER_ROOT_DIRECTORY, "api");
36
36
  // ../better-auth/package.json
37
37
  var package_default = {
38
38
  name: "@playcademy/better-auth",
39
- version: "0.0.15",
39
+ version: "0.0.16-beta.1",
40
40
  type: "module",
41
41
  exports: {
42
42
  "./server": {
package/dist/index.js CHANGED
@@ -326,7 +326,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
326
326
  // ../better-auth/package.json
327
327
  var package_default = {
328
328
  name: "@playcademy/better-auth",
329
- version: "0.0.15",
329
+ version: "0.0.16-beta.1",
330
330
  type: "module",
331
331
  exports: {
332
332
  "./server": {
@@ -536,7 +536,8 @@ var TIMEBACK_ROUTES = {
536
536
  GET_XP: "/integrations/timeback/xp",
537
537
  GET_MASTERY: "/integrations/timeback/mastery",
538
538
  HEARTBEAT: "/integrations/timeback/heartbeat",
539
- ADVANCE_COURSE: "/integrations/timeback/advance-course"
539
+ ADVANCE_COURSE: "/integrations/timeback/advance-course",
540
+ UNENROLL_COURSE: "/integrations/timeback/unenroll-course"
540
541
  };
541
542
  var TIMEBACK_ORG_SOURCED_ID = "PLAYCADEMY";
542
543
  var TIMEBACK_ORG_NAME = "Playcademy Studios";
@@ -4183,7 +4184,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, readFileSync as rea
4183
4184
  import { join as join13 } from "node:path";
4184
4185
 
4185
4186
  // src/version.ts
4186
- var cliVersion = false ? "0.0.0-dev" : "0.23.0";
4187
+ var cliVersion = false ? "0.0.0-dev" : "0.23.1-beta.1";
4187
4188
 
4188
4189
  // src/lib/init/database.ts
4189
4190
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -6626,7 +6627,8 @@ var ROUTES = {
6626
6627
  GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
6627
6628
  GET_MASTERY: `/api${TIMEBACK_ROUTES.GET_MASTERY}`,
6628
6629
  HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
6629
- ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
6630
+ ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`,
6631
+ UNENROLL_COURSE: `/api${TIMEBACK_ROUTES.UNENROLL_COURSE}`
6630
6632
  }
6631
6633
  };
6632
6634
 
@@ -145,7 +145,8 @@ var init_timeback2 = __esm({
145
145
  GET_XP: "/integrations/timeback/xp",
146
146
  GET_MASTERY: "/integrations/timeback/mastery",
147
147
  HEARTBEAT: "/integrations/timeback/heartbeat",
148
- ADVANCE_COURSE: "/integrations/timeback/advance-course"
148
+ ADVANCE_COURSE: "/integrations/timeback/advance-course",
149
+ UNENROLL_COURSE: "/integrations/timeback/unenroll-course"
149
150
  };
150
151
  TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
151
152
  xp: 1,
@@ -203,7 +204,8 @@ var init_constants = __esm({
203
204
  GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
204
205
  GET_MASTERY: `/api${TIMEBACK_ROUTES.GET_MASTERY}`,
205
206
  HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
206
- ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
207
+ ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`,
208
+ UNENROLL_COURSE: `/api${TIMEBACK_ROUTES.UNENROLL_COURSE}`
207
209
  }
208
210
  };
209
211
  }
@@ -260,7 +262,10 @@ function getTimebackRoutes(config) {
260
262
  return [
261
263
  { path: ROUTES.TIMEBACK.END_ACTIVITY, methods: ["POST"] },
262
264
  { path: ROUTES.TIMEBACK.GET_XP, methods: ["GET"] },
263
- { path: ROUTES.TIMEBACK.HEARTBEAT, methods: ["POST"] }
265
+ { path: ROUTES.TIMEBACK.GET_MASTERY, methods: ["GET"] },
266
+ { path: ROUTES.TIMEBACK.HEARTBEAT, methods: ["POST"] },
267
+ { path: ROUTES.TIMEBACK.ADVANCE_COURSE, methods: ["POST"] },
268
+ { path: ROUTES.TIMEBACK.UNENROLL_COURSE, methods: ["POST"] }
264
269
  ];
265
270
  }
266
271
  return [];
@@ -294,9 +299,9 @@ var init_routes = __esm({
294
299
  // ../edge-play/src/entry/metadata.ts
295
300
  function getRuntimeMetadata() {
296
301
  return {
297
- cliVersion: true ? "0.23.0" : "0.0.0-dev",
298
- sdkVersion: true ? "0.11.0" : "0.0.0-dev",
299
- buildId: true ? "4e6199553f2f" : "dev-source"
302
+ cliVersion: true ? "0.23.1-beta.1" : "0.0.0-dev",
303
+ sdkVersion: true ? "0.11.1-beta.1" : "0.0.0-dev",
304
+ buildId: true ? "cd8002571290" : "dev-source"
300
305
  };
301
306
  }
302
307
  var init_metadata = __esm({
@@ -838,6 +843,64 @@ var init_advance_course = __esm({
838
843
  }
839
844
  });
840
845
 
846
+ // ../edge-play/src/routes/integrations/timeback/unenroll-course.ts
847
+ var unenroll_course_exports = {};
848
+ __export(unenroll_course_exports, {
849
+ POST: () => POST4
850
+ });
851
+ async function POST4(c) {
852
+ try {
853
+ const user = c.get("playcademyUser");
854
+ if (!user) {
855
+ return c.json(buildErrorResponse(c, "Unauthorized", "Unauthorized"), 401);
856
+ }
857
+ if (!user.timeback_id) {
858
+ const message2 = "User does not have TimeBack integration";
859
+ console.error("[TimeBack Unenroll Course] Error:", message2);
860
+ return c.json(buildErrorResponse(c, message2, message2), 400);
861
+ }
862
+ const body = await c.req.json().catch(() => ({}));
863
+ const subject = body.subject;
864
+ const force = body.force;
865
+ if (subject !== void 0 && !isValidSubject(subject)) {
866
+ const message2 = "Invalid subject: must be one of the supported TimeBack subjects";
867
+ console.error("[TimeBack Unenroll Course] Error:", message2);
868
+ return c.json(buildErrorResponse(c, message2, message2), 400);
869
+ }
870
+ if (force !== void 0 && typeof force !== "boolean") {
871
+ const message2 = "Invalid force: must be a boolean";
872
+ console.error("[TimeBack Unenroll Course] Error:", message2);
873
+ return c.json(buildErrorResponse(c, message2, message2), 400);
874
+ }
875
+ assertTimebackIntegrated(c);
876
+ const sdk = c.get("sdk");
877
+ const result = await sdk.request(
878
+ "/api/timeback/unenroll-course",
879
+ "POST",
880
+ {
881
+ gameId: sdk.gameId,
882
+ studentId: user.timeback_id,
883
+ ...subject !== void 0 ? { subject } : {},
884
+ ...force !== void 0 ? { force } : {}
885
+ }
886
+ );
887
+ return c.json(result);
888
+ } catch (error) {
889
+ logError("TimeBack Unenroll Course", error);
890
+ return c.json(
891
+ buildErrorResponse(c, error, "Failed to unenroll student"),
892
+ getErrorStatus(error)
893
+ );
894
+ }
895
+ }
896
+ var init_unenroll_course = __esm({
897
+ "../edge-play/src/routes/integrations/timeback/unenroll-course.ts"() {
898
+ "use strict";
899
+ init_lib();
900
+ init_shared();
901
+ }
902
+ });
903
+
841
904
  // ../../node_modules/.bun/hono@4.10.7/node_modules/hono/dist/compose.js
842
905
  var compose = (middleware, onError, onNotFound) => {
843
906
  return (context, next) => {
@@ -4616,18 +4679,20 @@ async function registerBuiltinRoutes(app, integrations) {
4616
4679
  const health = await Promise.resolve().then(() => (init_health(), health_exports));
4617
4680
  app.get(ROUTES.HEALTH, health.GET);
4618
4681
  if (integrations?.timeback) {
4619
- const [endActivity, getXp, getMastery, heartbeat, advanceCourse] = await Promise.all([
4682
+ const [endActivity, getXp, getMastery, heartbeat, advanceCourse, unenrollCourse] = await Promise.all([
4620
4683
  Promise.resolve().then(() => (init_end_activity(), end_activity_exports)),
4621
4684
  Promise.resolve().then(() => (init_get_xp(), get_xp_exports)),
4622
4685
  Promise.resolve().then(() => (init_get_mastery(), get_mastery_exports)),
4623
4686
  Promise.resolve().then(() => (init_heartbeat(), heartbeat_exports)),
4624
- Promise.resolve().then(() => (init_advance_course(), advance_course_exports))
4687
+ Promise.resolve().then(() => (init_advance_course(), advance_course_exports)),
4688
+ Promise.resolve().then(() => (init_unenroll_course(), unenroll_course_exports))
4625
4689
  ]);
4626
4690
  app.post(ROUTES.TIMEBACK.END_ACTIVITY, endActivity.POST);
4627
4691
  app.get(ROUTES.TIMEBACK.GET_XP, getXp.GET);
4628
4692
  app.get(ROUTES.TIMEBACK.GET_MASTERY, getMastery.GET);
4629
4693
  app.post(ROUTES.TIMEBACK.HEARTBEAT, heartbeat.POST);
4630
4694
  app.post(ROUTES.TIMEBACK.ADVANCE_COURSE, advanceCourse.POST);
4695
+ app.post(ROUTES.TIMEBACK.UNENROLL_COURSE, unenrollCourse.POST);
4631
4696
  } else if (integrations?.timeback === null) {
4632
4697
  app.post(
4633
4698
  "/api/integrations/timeback/end-activity",
@@ -4670,6 +4735,17 @@ async function registerBuiltinRoutes(app, integrations) {
4670
4735
  __playcademyDevWarning: "timeback-not-configured"
4671
4736
  })
4672
4737
  );
4738
+ app.post(
4739
+ "/api/integrations/timeback/unenroll-course",
4740
+ async (c) => c.json({
4741
+ status: "ok",
4742
+ unenrollment: {
4743
+ status: "not-mastered",
4744
+ currentCourseId: "dev-stub"
4745
+ },
4746
+ __playcademyDevWarning: "timeback-not-configured"
4747
+ })
4748
+ );
4673
4749
  }
4674
4750
  }
4675
4751
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "cliVersion": "0.23.0",
3
- "sdkVersion": "0.11.0",
4
- "runtimeBuildId": "4e6199553f2f",
5
- "inputFingerprint": "4e6199553f2f033f3642c605e19fd300516bfdce6b9217ddd97aedfde1ca0151",
2
+ "cliVersion": "0.23.1-beta.1",
3
+ "sdkVersion": "0.11.1-beta.1",
4
+ "runtimeBuildId": "cd8002571290",
5
+ "inputFingerprint": "cd8002571290edf4afbd25b3cee6d9d4e296eccb85f13c6dfab9b61745352261",
6
6
  "entry": "index.js"
7
7
  }
package/dist/utils.js CHANGED
@@ -307,7 +307,8 @@ var TIMEBACK_ROUTES = {
307
307
  GET_XP: "/integrations/timeback/xp",
308
308
  GET_MASTERY: "/integrations/timeback/mastery",
309
309
  HEARTBEAT: "/integrations/timeback/heartbeat",
310
- ADVANCE_COURSE: "/integrations/timeback/advance-course"
310
+ ADVANCE_COURSE: "/integrations/timeback/advance-course",
311
+ UNENROLL_COURSE: "/integrations/timeback/unenroll-course"
311
312
  };
312
313
  var TIMEBACK_GAME_METRIC_DECIMAL_PLACES = {
313
314
  xp: 1,
@@ -357,7 +358,7 @@ var DEFAULT_API_ROUTES_DIRECTORY = join2(SERVER_ROOT_DIRECTORY, "api");
357
358
  // ../better-auth/package.json
358
359
  var package_default = {
359
360
  name: "@playcademy/better-auth",
360
- version: "0.0.15",
361
+ version: "0.0.16-beta.1",
361
362
  type: "module",
362
363
  exports: {
363
364
  "./server": {
@@ -1844,7 +1845,8 @@ var ROUTES = {
1844
1845
  GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
1845
1846
  GET_MASTERY: `/api${TIMEBACK_ROUTES.GET_MASTERY}`,
1846
1847
  HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
1847
- ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
1848
+ ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`,
1849
+ UNENROLL_COURSE: `/api${TIMEBACK_ROUTES.UNENROLL_COURSE}`
1848
1850
  }
1849
1851
  };
1850
1852
 
@@ -2468,7 +2470,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, writeFileSync as wr
2468
2470
  import { dirname as dirname4, join as join14 } from "node:path";
2469
2471
 
2470
2472
  // src/version.ts
2471
- var cliVersion = false ? "0.0.0-dev" : "0.23.0";
2473
+ var cliVersion = false ? "0.0.0-dev" : "0.23.1-beta.1";
2472
2474
 
2473
2475
  // src/lib/build/binary-resource.ts
2474
2476
  function writeFileTree(baseDir, files) {
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var cliVersion = false ? "0.0.0-dev" : "0.23.0";
2
+ var cliVersion = false ? "0.0.0-dev" : "0.23.1-beta.1";
3
3
  export {
4
4
  cliVersion
5
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "playcademy",
3
- "version": "0.23.0",
3
+ "version": "0.23.1-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {