playcademy 0.20.1-beta.2 → 0.21.0
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 +31 -10
- package/dist/runtime/backend-runtime/index.js +28 -5
- package/dist/runtime/backend-runtime/manifest.json +4 -4
- package/dist/utils.js +2 -2
- package/dist/version.js +1 -1
- package/package.json +2 -2
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.12
|
|
1068
|
+
version: "0.0.12",
|
|
1069
1069
|
type: "module",
|
|
1070
1070
|
exports: {
|
|
1071
1071
|
"./server": {
|
|
@@ -3024,7 +3024,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
|
|
|
3024
3024
|
import { join as join13 } from "node:path";
|
|
3025
3025
|
|
|
3026
3026
|
// src/version.ts
|
|
3027
|
-
var cliVersion = false ? "0.0.0-dev" : "0.
|
|
3027
|
+
var cliVersion = false ? "0.0.0-dev" : "0.21.0";
|
|
3028
3028
|
|
|
3029
3029
|
// src/lib/init/database.ts
|
|
3030
3030
|
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.12
|
|
39
|
+
version: "0.0.12",
|
|
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.12
|
|
329
|
+
version: "0.0.12",
|
|
330
330
|
type: "module",
|
|
331
331
|
exports: {
|
|
332
332
|
"./server": {
|
|
@@ -3053,6 +3053,24 @@ function isPlaycademyResourceMetadata(value) {
|
|
|
3053
3053
|
return isObject(value.mastery);
|
|
3054
3054
|
}
|
|
3055
3055
|
|
|
3056
|
+
// ../utils/src/timeback.ts
|
|
3057
|
+
function formatGradeLabel(grade) {
|
|
3058
|
+
switch (grade) {
|
|
3059
|
+
case -1: {
|
|
3060
|
+
return "Pre-K";
|
|
3061
|
+
}
|
|
3062
|
+
case 0: {
|
|
3063
|
+
return "Kindergarten";
|
|
3064
|
+
}
|
|
3065
|
+
case 13: {
|
|
3066
|
+
return "AP";
|
|
3067
|
+
}
|
|
3068
|
+
default: {
|
|
3069
|
+
return `Grade ${grade}`;
|
|
3070
|
+
}
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
|
|
3056
3074
|
// src/lib/config/timeback-derive.ts
|
|
3057
3075
|
function deriveLevelFromGrades(grades) {
|
|
3058
3076
|
const maxGrade = Math.max(...grades);
|
|
@@ -3080,7 +3098,7 @@ function deriveSourcedIds(courseId) {
|
|
|
3080
3098
|
};
|
|
3081
3099
|
}
|
|
3082
3100
|
function applyTemplates(value, vars) {
|
|
3083
|
-
return value.replace(/{grade}/g, vars.grade.toString()).replace(/{subject}/g, vars.subject).replace(/{appSlug}/g, vars.appSlug).replace(/{appName}/g, vars.appName);
|
|
3101
|
+
return value.replace(/{grade}/g, vars.grade.toString()).replace(/{gradeLabel}/g, vars.gradeLabel).replace(/{subject}/g, vars.subject).replace(/{appSlug}/g, vars.appSlug).replace(/{appName}/g, vars.appName);
|
|
3084
3102
|
}
|
|
3085
3103
|
function extractTotalXp(metadata) {
|
|
3086
3104
|
return metadata?.metrics?.totalXp;
|
|
@@ -3217,9 +3235,10 @@ function derivePlatformTimebackSetupRequest(config) {
|
|
|
3217
3235
|
};
|
|
3218
3236
|
const courses = tb.courses.map((courseConfig) => {
|
|
3219
3237
|
const { subject, grade } = courseConfig;
|
|
3220
|
-
const
|
|
3238
|
+
const gradeLabel = formatGradeLabel(grade);
|
|
3239
|
+
const templateVars = { grade, gradeLabel, subject, appSlug, appName };
|
|
3221
3240
|
const defaultCourseConfig = {
|
|
3222
|
-
title: `${appName} -
|
|
3241
|
+
title: `${appName} - {gradeLabel}`,
|
|
3223
3242
|
courseCode: `${appSlug}-g{grade}`,
|
|
3224
3243
|
level: deriveLevelFromGrades([grade])
|
|
3225
3244
|
};
|
|
@@ -3231,7 +3250,7 @@ function derivePlatformTimebackSetupRequest(config) {
|
|
|
3231
3250
|
...courseConfig.courseCode && { courseCode: courseConfig.courseCode },
|
|
3232
3251
|
...courseConfig.level && { level: courseConfig.level }
|
|
3233
3252
|
};
|
|
3234
|
-
const finalTitle = mergedCourseConfig.title ? applyTemplates(mergedCourseConfig.title, templateVars) : `${appName} -
|
|
3253
|
+
const finalTitle = mergedCourseConfig.title ? applyTemplates(mergedCourseConfig.title, templateVars) : `${appName} - ${gradeLabel}`;
|
|
3235
3254
|
const finalCourseCode = mergedCourseConfig.courseCode ? applyTemplates(mergedCourseConfig.courseCode, templateVars) : `${appSlug}-g${grade}`;
|
|
3236
3255
|
const finalTitleWithSuffix = titleSuffix ? `${finalTitle} ${titleSuffix}` : finalTitle;
|
|
3237
3256
|
const baseMetadata = tb.base?.course?.metadata;
|
|
@@ -4038,7 +4057,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, readFileSync as rea
|
|
|
4038
4057
|
import { join as join13 } from "node:path";
|
|
4039
4058
|
|
|
4040
4059
|
// src/version.ts
|
|
4041
|
-
var cliVersion = false ? "0.0.0-dev" : "0.
|
|
4060
|
+
var cliVersion = false ? "0.0.0-dev" : "0.21.0";
|
|
4042
4061
|
|
|
4043
4062
|
// src/lib/init/database.ts
|
|
4044
4063
|
var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
|
|
@@ -13048,7 +13067,7 @@ function displayIntegrationDetails(integration) {
|
|
|
13048
13067
|
logger.highlight("Verified Course");
|
|
13049
13068
|
logger.newLine();
|
|
13050
13069
|
logger.data("Subject", integration.subject, 1);
|
|
13051
|
-
logger.data("Grade",
|
|
13070
|
+
logger.data("Grade", formatGradeLabel(integration.grade), 1);
|
|
13052
13071
|
logger.data("Course ID", integration.courseId, 1);
|
|
13053
13072
|
logger.data(
|
|
13054
13073
|
"Last verified",
|
|
@@ -13088,7 +13107,7 @@ function displayIntegrationList(integrations, statusByCourseId, options) {
|
|
|
13088
13107
|
const row = {
|
|
13089
13108
|
"#": String(idx + 1),
|
|
13090
13109
|
Subject: integration.subject,
|
|
13091
|
-
Grade: ` ${integration.grade}`,
|
|
13110
|
+
Grade: ` ${formatGradeLabel(integration.grade)}`,
|
|
13092
13111
|
"Course ID": integration.courseId
|
|
13093
13112
|
};
|
|
13094
13113
|
if (showStatusColumn) {
|
|
@@ -13234,7 +13253,9 @@ function displayVerificationSummary(result, options) {
|
|
|
13234
13253
|
displayIntegrationList(integrations, statusByCourseId);
|
|
13235
13254
|
if (verbose) {
|
|
13236
13255
|
for (const r of result.results) {
|
|
13237
|
-
logger.highlight(
|
|
13256
|
+
logger.highlight(
|
|
13257
|
+
`Resources - ${r.integration.subject} (${formatGradeLabel(r.integration.grade)})`
|
|
13258
|
+
);
|
|
13238
13259
|
logger.newLine();
|
|
13239
13260
|
displayResourcesStatus(r.resources);
|
|
13240
13261
|
}
|
|
@@ -13244,7 +13265,7 @@ function displayVerificationSummary(result, options) {
|
|
|
13244
13265
|
logger.highlight("Failed Course Details");
|
|
13245
13266
|
logger.newLine();
|
|
13246
13267
|
logger.data("Subject", failing.integration.subject, 1);
|
|
13247
|
-
logger.data("Grade",
|
|
13268
|
+
logger.data("Grade", formatGradeLabel(failing.integration.grade), 1);
|
|
13248
13269
|
logger.data("Course ID", failing.integration.courseId, 1);
|
|
13249
13270
|
logger.newLine();
|
|
13250
13271
|
displayResourcesStatus(failing.resources);
|
|
@@ -352,9 +352,9 @@ var init_routes = __esm({
|
|
|
352
352
|
// ../edge-play/src/entry/metadata.ts
|
|
353
353
|
function getRuntimeMetadata() {
|
|
354
354
|
return {
|
|
355
|
-
cliVersion: true ? "0.
|
|
356
|
-
sdkVersion: true ? "0.
|
|
357
|
-
buildId: true ? "
|
|
355
|
+
cliVersion: true ? "0.21.0" : "0.0.0-dev",
|
|
356
|
+
sdkVersion: true ? "0.8.0" : "0.0.0-dev",
|
|
357
|
+
buildId: true ? "8f15cae30c82" : "dev-source"
|
|
358
358
|
};
|
|
359
359
|
}
|
|
360
360
|
var init_metadata = __esm({
|
|
@@ -504,6 +504,28 @@ var init_errors = __esm({
|
|
|
504
504
|
}
|
|
505
505
|
});
|
|
506
506
|
|
|
507
|
+
// ../utils/src/timeback.ts
|
|
508
|
+
function formatGradeLabel(grade) {
|
|
509
|
+
switch (grade) {
|
|
510
|
+
case -1: {
|
|
511
|
+
return "Pre-K";
|
|
512
|
+
}
|
|
513
|
+
case 0: {
|
|
514
|
+
return "Kindergarten";
|
|
515
|
+
}
|
|
516
|
+
case 13: {
|
|
517
|
+
return "AP";
|
|
518
|
+
}
|
|
519
|
+
default: {
|
|
520
|
+
return `Grade ${grade}`;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
var init_timeback2 = __esm({
|
|
525
|
+
"../utils/src/timeback.ts"() {
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
|
|
507
529
|
// ../edge-play/src/lib/validation.ts
|
|
508
530
|
function isValidGrade2(value) {
|
|
509
531
|
return typeof value === "number" && Number.isInteger(value) && VALID_GRADES2.includes(value);
|
|
@@ -518,9 +540,9 @@ function validateCourseConfig(params) {
|
|
|
518
540
|
(course) => course.grade === grade && course.subject === subject
|
|
519
541
|
);
|
|
520
542
|
if (!configuredCourse) {
|
|
521
|
-
const configured = timebackConfig?.courses?.map((c) => `${c.subject} (
|
|
543
|
+
const configured = timebackConfig?.courses?.map((c) => `${c.subject} (${formatGradeLabel(c.grade)})`).join(", ");
|
|
522
544
|
return {
|
|
523
|
-
error: `Invalid grade/subject combination: ${subject} (
|
|
545
|
+
error: `Invalid grade/subject combination: ${subject} (${formatGradeLabel(grade)}). Configured courses: ${configured || "none"}`
|
|
524
546
|
};
|
|
525
547
|
}
|
|
526
548
|
return null;
|
|
@@ -529,6 +551,7 @@ var VALID_GRADES2, VALID_SUBJECTS2;
|
|
|
529
551
|
var init_validation = __esm({
|
|
530
552
|
"../edge-play/src/lib/validation.ts"() {
|
|
531
553
|
"use strict";
|
|
554
|
+
init_timeback2();
|
|
532
555
|
VALID_GRADES2 = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
|
|
533
556
|
VALID_SUBJECTS2 = [
|
|
534
557
|
"Reading",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"cliVersion": "0.
|
|
3
|
-
"sdkVersion": "0.
|
|
4
|
-
"runtimeBuildId": "
|
|
5
|
-
"inputFingerprint": "
|
|
2
|
+
"cliVersion": "0.21.0",
|
|
3
|
+
"sdkVersion": "0.8.0",
|
|
4
|
+
"runtimeBuildId": "8f15cae30c82",
|
|
5
|
+
"inputFingerprint": "8f15cae30c8264c6e610e256ec1d2942be37da9bbdad8797ae1410a43e96113e",
|
|
6
6
|
"entry": "index.js"
|
|
7
7
|
}
|
package/dist/utils.js
CHANGED
|
@@ -481,7 +481,7 @@ var DEFAULT_API_ROUTES_DIRECTORY = join2(SERVER_ROOT_DIRECTORY, "api");
|
|
|
481
481
|
// ../better-auth/package.json
|
|
482
482
|
var package_default = {
|
|
483
483
|
name: "@playcademy/better-auth",
|
|
484
|
-
version: "0.0.12
|
|
484
|
+
version: "0.0.12",
|
|
485
485
|
type: "module",
|
|
486
486
|
exports: {
|
|
487
487
|
"./server": {
|
|
@@ -2591,7 +2591,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, writeFileSync as wr
|
|
|
2591
2591
|
import { dirname as dirname4, join as join14 } from "node:path";
|
|
2592
2592
|
|
|
2593
2593
|
// src/version.ts
|
|
2594
|
-
var cliVersion = false ? "0.0.0-dev" : "0.
|
|
2594
|
+
var cliVersion = false ? "0.0.0-dev" : "0.21.0";
|
|
2595
2595
|
|
|
2596
2596
|
// src/lib/build/binary-resource.ts
|
|
2597
2597
|
function writeFileTree(baseDir, files) {
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "playcademy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@inquirer/prompts": "^7.8.6",
|
|
53
|
-
"@playcademy/sdk": "0.
|
|
53
|
+
"@playcademy/sdk": "0.8.0",
|
|
54
54
|
"chokidar": "^4.0.3",
|
|
55
55
|
"colorette": "^2.0.20",
|
|
56
56
|
"commander": "^14.0.1",
|