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 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-beta.2",
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.20.1-beta.2";
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
@@ -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.12-beta.2",
23
+ version: "0.0.12",
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.12-beta.2",
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-beta.2",
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 templateVars = { grade, subject, appSlug, appName };
3238
+ const gradeLabel = formatGradeLabel(grade);
3239
+ const templateVars = { grade, gradeLabel, subject, appSlug, appName };
3221
3240
  const defaultCourseConfig = {
3222
- title: `${appName} - Grade {grade}`,
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} - Grade ${grade}`;
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.20.1-beta.2";
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", `${integration.grade}`, 1);
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(`Resources - ${r.integration.subject} (Grade ${r.integration.grade})`);
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", `${failing.integration.grade}`, 1);
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.20.1-beta.2" : "0.0.0-dev",
356
- sdkVersion: true ? "0.7.4-beta.2" : "0.0.0-dev",
357
- buildId: true ? "7a4311fd8644" : "dev-source"
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} (Grade ${c.grade})`).join(", ");
543
+ const configured = timebackConfig?.courses?.map((c) => `${c.subject} (${formatGradeLabel(c.grade)})`).join(", ");
522
544
  return {
523
- error: `Invalid grade/subject combination: ${subject} (Grade ${grade}). Configured courses: ${configured || "none"}`
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.20.1-beta.2",
3
- "sdkVersion": "0.7.4-beta.2",
4
- "runtimeBuildId": "7a4311fd8644",
5
- "inputFingerprint": "7a4311fd8644c6a01af499a8c6dc2da381347e3a6fc4f0fb377c27b678125407",
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-beta.2",
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.20.1-beta.2";
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
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var cliVersion = false ? "0.0.0-dev" : "0.20.1-beta.2";
2
+ var cliVersion = false ? "0.0.0-dev" : "0.21.0";
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.20.1-beta.2",
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.7.3",
53
+ "@playcademy/sdk": "0.8.0",
54
54
  "chokidar": "^4.0.3",
55
55
  "colorette": "^2.0.20",
56
56
  "commander": "^14.0.1",