playcademy 0.19.3-beta.2 → 0.19.3-beta.4
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 +85 -20
- 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.8-beta.
|
|
1068
|
+
version: "0.0.8-beta.4",
|
|
1069
1069
|
type: "module",
|
|
1070
1070
|
exports: {
|
|
1071
1071
|
"./server": {
|
|
@@ -3016,7 +3016,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
|
|
|
3016
3016
|
import { join as join13 } from "node:path";
|
|
3017
3017
|
|
|
3018
3018
|
// src/version.ts
|
|
3019
|
-
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.
|
|
3019
|
+
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.4";
|
|
3020
3020
|
|
|
3021
3021
|
// src/lib/init/database.ts
|
|
3022
3022
|
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.8-beta.
|
|
39
|
+
version: "0.0.8-beta.4",
|
|
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.8-beta.
|
|
329
|
+
version: "0.0.8-beta.4",
|
|
330
330
|
type: "module",
|
|
331
331
|
exports: {
|
|
332
332
|
"./server": {
|
|
@@ -673,7 +673,8 @@ var BADGES = {
|
|
|
673
673
|
var TIMEBACK_ROUTES = {
|
|
674
674
|
END_ACTIVITY: "/integrations/timeback/end-activity",
|
|
675
675
|
GET_XP: "/integrations/timeback/xp",
|
|
676
|
-
HEARTBEAT: "/integrations/timeback/heartbeat"
|
|
676
|
+
HEARTBEAT: "/integrations/timeback/heartbeat",
|
|
677
|
+
ADVANCE_COURSE: "/integrations/timeback/advance-course"
|
|
677
678
|
};
|
|
678
679
|
var TIMEBACK_ORG_SOURCED_ID = "PLAYCADEMY";
|
|
679
680
|
var TIMEBACK_ORG_NAME = "Playcademy Studios";
|
|
@@ -4018,7 +4019,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, readFileSync as rea
|
|
|
4018
4019
|
import { join as join13 } from "node:path";
|
|
4019
4020
|
|
|
4020
4021
|
// src/version.ts
|
|
4021
|
-
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.
|
|
4022
|
+
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.4";
|
|
4022
4023
|
|
|
4023
4024
|
// src/lib/init/database.ts
|
|
4024
4025
|
var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
|
|
@@ -6403,7 +6404,8 @@ var ROUTES = {
|
|
|
6403
6404
|
TIMEBACK: {
|
|
6404
6405
|
END_ACTIVITY: `/api${TIMEBACK_ROUTES.END_ACTIVITY}`,
|
|
6405
6406
|
GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
|
|
6406
|
-
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}
|
|
6407
|
+
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
|
|
6408
|
+
ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
|
|
6407
6409
|
}
|
|
6408
6410
|
};
|
|
6409
6411
|
|
|
@@ -214,7 +214,8 @@ var init_timeback = __esm({
|
|
|
214
214
|
TIMEBACK_ROUTES = {
|
|
215
215
|
END_ACTIVITY: "/integrations/timeback/end-activity",
|
|
216
216
|
GET_XP: "/integrations/timeback/xp",
|
|
217
|
-
HEARTBEAT: "/integrations/timeback/heartbeat"
|
|
217
|
+
HEARTBEAT: "/integrations/timeback/heartbeat",
|
|
218
|
+
ADVANCE_COURSE: "/integrations/timeback/advance-course"
|
|
218
219
|
};
|
|
219
220
|
}
|
|
220
221
|
});
|
|
@@ -259,7 +260,8 @@ var init_constants = __esm({
|
|
|
259
260
|
TIMEBACK: {
|
|
260
261
|
END_ACTIVITY: `/api${TIMEBACK_ROUTES.END_ACTIVITY}`,
|
|
261
262
|
GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
|
|
262
|
-
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}
|
|
263
|
+
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
|
|
264
|
+
ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
|
|
263
265
|
}
|
|
264
266
|
};
|
|
265
267
|
}
|
|
@@ -350,9 +352,9 @@ var init_routes = __esm({
|
|
|
350
352
|
// ../edge-play/src/entry/metadata.ts
|
|
351
353
|
function getRuntimeMetadata() {
|
|
352
354
|
return {
|
|
353
|
-
cliVersion: true ? "0.19.3-beta.
|
|
354
|
-
sdkVersion: true ? "0.6.1-beta.
|
|
355
|
-
buildId: true ? "
|
|
355
|
+
cliVersion: true ? "0.19.3-beta.4" : "0.0.0-dev",
|
|
356
|
+
sdkVersion: true ? "0.6.1-beta.4" : "0.0.0-dev",
|
|
357
|
+
buildId: true ? "90bd871d0c0c" : "dev-source"
|
|
356
358
|
};
|
|
357
359
|
}
|
|
358
360
|
var init_metadata = __esm({
|
|
@@ -554,12 +556,15 @@ var init_lib = __esm({
|
|
|
554
556
|
|
|
555
557
|
// ../edge-play/src/routes/integrations/timeback/shared.ts
|
|
556
558
|
function getConfig(c) {
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
559
|
+
return c.get("config");
|
|
560
|
+
}
|
|
561
|
+
function isTimebackIntegrated(c) {
|
|
562
|
+
return Boolean(getConfig(c)?.integrations?.timeback);
|
|
563
|
+
}
|
|
564
|
+
function assertTimebackIntegrated(c) {
|
|
565
|
+
if (!isTimebackIntegrated(c)) {
|
|
560
566
|
throw new Error("TimeBack integration not found");
|
|
561
567
|
}
|
|
562
|
-
return config;
|
|
563
568
|
}
|
|
564
569
|
function enrichActivityData(params) {
|
|
565
570
|
const { activityData, config, c } = params;
|
|
@@ -609,6 +614,7 @@ async function POST(c) {
|
|
|
609
614
|
masteredUnits,
|
|
610
615
|
extensions
|
|
611
616
|
} = await c.req.json();
|
|
617
|
+
assertTimebackIntegrated(c);
|
|
612
618
|
const config = getConfig(c);
|
|
613
619
|
const structuredActivityData = isActivityDataInput(activityData) ? activityData : void 0;
|
|
614
620
|
if (structuredActivityData && isValidGrade2(structuredActivityData.grade) && isValidSubject2(structuredActivityData.subject)) {
|
|
@@ -665,14 +671,6 @@ var get_xp_exports = {};
|
|
|
665
671
|
__export(get_xp_exports, {
|
|
666
672
|
GET: () => GET3
|
|
667
673
|
});
|
|
668
|
-
function getConfig2(c) {
|
|
669
|
-
const config = c.get("config");
|
|
670
|
-
const timebackConfig = config?.integrations?.timeback;
|
|
671
|
-
if (!timebackConfig) {
|
|
672
|
-
throw new Error("TimeBack integration not found");
|
|
673
|
-
}
|
|
674
|
-
return config;
|
|
675
|
-
}
|
|
676
674
|
async function GET3(c) {
|
|
677
675
|
try {
|
|
678
676
|
const user = c.get("playcademyUser");
|
|
@@ -684,7 +682,8 @@ async function GET3(c) {
|
|
|
684
682
|
console.error("[TimeBack Get XP] Error:", message);
|
|
685
683
|
return c.json(buildErrorResponse(c, message, message), 400);
|
|
686
684
|
}
|
|
687
|
-
|
|
685
|
+
assertTimebackIntegrated(c);
|
|
686
|
+
const config = getConfig(c);
|
|
688
687
|
const url = new URL(c.req.url);
|
|
689
688
|
const gradeParam = url.searchParams.get("grade");
|
|
690
689
|
const subjectParam = url.searchParams.get("subject");
|
|
@@ -731,6 +730,7 @@ var init_get_xp = __esm({
|
|
|
731
730
|
"../edge-play/src/routes/integrations/timeback/get-xp.ts"() {
|
|
732
731
|
"use strict";
|
|
733
732
|
init_lib();
|
|
733
|
+
init_shared();
|
|
734
734
|
}
|
|
735
735
|
});
|
|
736
736
|
|
|
@@ -766,6 +766,7 @@ async function POST2(c) {
|
|
|
766
766
|
console.error("[TimeBack Heartbeat] Error:", message);
|
|
767
767
|
return c.json(buildErrorResponse(c, message, message), 400);
|
|
768
768
|
}
|
|
769
|
+
assertTimebackIntegrated(c);
|
|
769
770
|
const config = getConfig(c);
|
|
770
771
|
const structuredActivityData = isActivityDataInput(activityData) ? activityData : void 0;
|
|
771
772
|
if (structuredActivityData && isValidGrade2(structuredActivityData.grade) && isValidSubject2(structuredActivityData.subject)) {
|
|
@@ -814,6 +815,57 @@ var init_heartbeat = __esm({
|
|
|
814
815
|
}
|
|
815
816
|
});
|
|
816
817
|
|
|
818
|
+
// ../edge-play/src/routes/integrations/timeback/advance-course.ts
|
|
819
|
+
var advance_course_exports = {};
|
|
820
|
+
__export(advance_course_exports, {
|
|
821
|
+
POST: () => POST3
|
|
822
|
+
});
|
|
823
|
+
async function POST3(c) {
|
|
824
|
+
try {
|
|
825
|
+
const user = c.get("playcademyUser");
|
|
826
|
+
if (!user) {
|
|
827
|
+
return c.json(buildErrorResponse(c, "Unauthorized", "Unauthorized"), 401);
|
|
828
|
+
}
|
|
829
|
+
if (!user.timeback_id) {
|
|
830
|
+
const message = "User does not have TimeBack integration";
|
|
831
|
+
console.error("[TimeBack Advance] Error:", message);
|
|
832
|
+
return c.json(buildErrorResponse(c, message, message), 400);
|
|
833
|
+
}
|
|
834
|
+
const body = await c.req.json().catch(() => ({}));
|
|
835
|
+
const subject = body.subject;
|
|
836
|
+
if (subject !== void 0 && !isValidSubject2(subject)) {
|
|
837
|
+
const message = "Invalid subject: must be one of the supported TimeBack subjects";
|
|
838
|
+
console.error("[TimeBack Advance] Error:", message);
|
|
839
|
+
return c.json(buildErrorResponse(c, message, message), 400);
|
|
840
|
+
}
|
|
841
|
+
assertTimebackIntegrated(c);
|
|
842
|
+
const sdk = c.get("sdk");
|
|
843
|
+
const result = await sdk.request(
|
|
844
|
+
"/api/timeback/advance-course",
|
|
845
|
+
"POST",
|
|
846
|
+
{
|
|
847
|
+
gameId: sdk.gameId,
|
|
848
|
+
studentId: user.timeback_id,
|
|
849
|
+
...subject !== void 0 ? { subject } : {}
|
|
850
|
+
}
|
|
851
|
+
);
|
|
852
|
+
return c.json(result);
|
|
853
|
+
} catch (error) {
|
|
854
|
+
logError("TimeBack Advance", error);
|
|
855
|
+
return c.json(
|
|
856
|
+
buildErrorResponse(c, error, "Failed to advance student"),
|
|
857
|
+
getErrorStatus(error)
|
|
858
|
+
);
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
var init_advance_course = __esm({
|
|
862
|
+
"../edge-play/src/routes/integrations/timeback/advance-course.ts"() {
|
|
863
|
+
"use strict";
|
|
864
|
+
init_lib();
|
|
865
|
+
init_shared();
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
|
|
817
869
|
// ../../node_modules/.bun/hono@4.10.7/node_modules/hono/dist/compose.js
|
|
818
870
|
var compose = (middleware, onError, onNotFound) => {
|
|
819
871
|
return (context, next) => {
|
|
@@ -3143,14 +3195,16 @@ async function registerBuiltinRoutes(app, integrations) {
|
|
|
3143
3195
|
const health = await Promise.resolve().then(() => (init_health(), health_exports));
|
|
3144
3196
|
app.get(ROUTES.HEALTH, health.GET);
|
|
3145
3197
|
if (integrations?.timeback) {
|
|
3146
|
-
const [endActivity, getXp, heartbeat] = await Promise.all([
|
|
3198
|
+
const [endActivity, getXp, heartbeat, advanceCourse] = await Promise.all([
|
|
3147
3199
|
Promise.resolve().then(() => (init_end_activity(), end_activity_exports)),
|
|
3148
3200
|
Promise.resolve().then(() => (init_get_xp(), get_xp_exports)),
|
|
3149
|
-
Promise.resolve().then(() => (init_heartbeat(), heartbeat_exports))
|
|
3201
|
+
Promise.resolve().then(() => (init_heartbeat(), heartbeat_exports)),
|
|
3202
|
+
Promise.resolve().then(() => (init_advance_course(), advance_course_exports))
|
|
3150
3203
|
]);
|
|
3151
3204
|
app.post(ROUTES.TIMEBACK.END_ACTIVITY, endActivity.POST);
|
|
3152
3205
|
app.get(ROUTES.TIMEBACK.GET_XP, getXp.GET);
|
|
3153
3206
|
app.post(ROUTES.TIMEBACK.HEARTBEAT, heartbeat.POST);
|
|
3207
|
+
app.post(ROUTES.TIMEBACK.ADVANCE_COURSE, advanceCourse.POST);
|
|
3154
3208
|
} else if (integrations?.timeback === null) {
|
|
3155
3209
|
app.post(
|
|
3156
3210
|
"/api/integrations/timeback/end-activity",
|
|
@@ -3174,6 +3228,17 @@ async function registerBuiltinRoutes(app, integrations) {
|
|
|
3174
3228
|
__playcademyDevWarning: "timeback-not-configured"
|
|
3175
3229
|
})
|
|
3176
3230
|
);
|
|
3231
|
+
app.post(
|
|
3232
|
+
"/api/integrations/timeback/advance-course",
|
|
3233
|
+
async (c) => c.json({
|
|
3234
|
+
status: "ok",
|
|
3235
|
+
promotion: {
|
|
3236
|
+
status: "no-next-course",
|
|
3237
|
+
currentCourseId: "dev-stub"
|
|
3238
|
+
},
|
|
3239
|
+
__playcademyDevWarning: "timeback-not-configured"
|
|
3240
|
+
})
|
|
3241
|
+
);
|
|
3177
3242
|
}
|
|
3178
3243
|
}
|
|
3179
3244
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cliVersion": "0.19.3-beta.
|
|
3
|
-
"sdkVersion": "0.6.1-beta.
|
|
4
|
-
"runtimeBuildId": "
|
|
5
|
-
"inputFingerprint": "
|
|
2
|
+
"cliVersion": "0.19.3-beta.4",
|
|
3
|
+
"sdkVersion": "0.6.1-beta.4",
|
|
4
|
+
"runtimeBuildId": "90bd871d0c0c",
|
|
5
|
+
"inputFingerprint": "90bd871d0c0cdddfc0f96c9b845f26ffa2000f54db3556473b6cdb4a52218818",
|
|
6
6
|
"entry": "index.js"
|
|
7
7
|
}
|
package/dist/utils.js
CHANGED
|
@@ -441,7 +441,8 @@ var BADGES = {
|
|
|
441
441
|
var TIMEBACK_ROUTES = {
|
|
442
442
|
END_ACTIVITY: "/integrations/timeback/end-activity",
|
|
443
443
|
GET_XP: "/integrations/timeback/xp",
|
|
444
|
-
HEARTBEAT: "/integrations/timeback/heartbeat"
|
|
444
|
+
HEARTBEAT: "/integrations/timeback/heartbeat",
|
|
445
|
+
ADVANCE_COURSE: "/integrations/timeback/advance-course"
|
|
445
446
|
};
|
|
446
447
|
|
|
447
448
|
// ../constants/src/workers.ts
|
|
@@ -478,7 +479,7 @@ var DEFAULT_API_ROUTES_DIRECTORY = join2(SERVER_ROOT_DIRECTORY, "api");
|
|
|
478
479
|
// ../better-auth/package.json
|
|
479
480
|
var package_default = {
|
|
480
481
|
name: "@playcademy/better-auth",
|
|
481
|
-
version: "0.0.8-beta.
|
|
482
|
+
version: "0.0.8-beta.4",
|
|
482
483
|
type: "module",
|
|
483
484
|
exports: {
|
|
484
485
|
"./server": {
|
|
@@ -1963,7 +1964,8 @@ var ROUTES = {
|
|
|
1963
1964
|
TIMEBACK: {
|
|
1964
1965
|
END_ACTIVITY: `/api${TIMEBACK_ROUTES.END_ACTIVITY}`,
|
|
1965
1966
|
GET_XP: `/api${TIMEBACK_ROUTES.GET_XP}`,
|
|
1966
|
-
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}
|
|
1967
|
+
HEARTBEAT: `/api${TIMEBACK_ROUTES.HEARTBEAT}`,
|
|
1968
|
+
ADVANCE_COURSE: `/api${TIMEBACK_ROUTES.ADVANCE_COURSE}`
|
|
1967
1969
|
}
|
|
1968
1970
|
};
|
|
1969
1971
|
|
|
@@ -2531,7 +2533,7 @@ import { existsSync as existsSync8, mkdirSync as mkdirSync2, writeFileSync as wr
|
|
|
2531
2533
|
import { dirname as dirname4, join as join13 } from "node:path";
|
|
2532
2534
|
|
|
2533
2535
|
// src/version.ts
|
|
2534
|
-
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.
|
|
2536
|
+
var cliVersion = false ? "0.0.0-dev" : "0.19.3-beta.4";
|
|
2535
2537
|
|
|
2536
2538
|
// src/lib/build/binary-resource.ts
|
|
2537
2539
|
function writeFileTree(baseDir, files) {
|
package/dist/version.js
CHANGED