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 +2 -2
- package/dist/constants.js +1 -1
- package/dist/db.js +1 -1
- package/dist/index.js +6 -4
- package/dist/runtime/backend-runtime/index.js +84 -8
- package/dist/runtime/backend-runtime/manifest.json +4 -4
- package/dist/utils.js +6 -4
- package/dist/version.js +1 -1
- package/package.json +1 -1
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.
|
|
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.
|
|
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
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
298
|
-
sdkVersion: true ? "0.11.
|
|
299
|
-
buildId: true ? "
|
|
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.
|
|
3
|
-
"sdkVersion": "0.11.
|
|
4
|
-
"runtimeBuildId": "
|
|
5
|
-
"inputFingerprint": "
|
|
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.
|
|
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.
|
|
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