playcademy 0.14.25 → 0.14.26

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.
@@ -30,3 +30,69 @@ export const TIMEBACK_ROUTES = {
30
30
  * This is the default organization sourcedId for Playcademy games
31
31
  */
32
32
  export const TIMEBACK_ORG_SOURCED_ID = 'PLAYCADEMY' as const
33
+
34
+ /**
35
+ * Default organization name for Playcademy games
36
+ */
37
+ export const TIMEBACK_ORG_NAME = 'Playcademy Studios' as const
38
+
39
+ /**
40
+ * Default organization type for Playcademy games
41
+ */
42
+ export const TIMEBACK_ORG_TYPE = 'department' as const
43
+
44
+ // ============================================================================
45
+ // TimeBack Resource Defaults
46
+ // ============================================================================
47
+
48
+ /**
49
+ * Default course configuration values
50
+ */
51
+ export const TIMEBACK_COURSE_DEFAULTS = {
52
+ gradingScheme: 'STANDARD',
53
+ level: {
54
+ elementary: 'Elementary',
55
+ middle: 'Middle',
56
+ high: 'High',
57
+ ap: 'AP',
58
+ },
59
+ goals: {
60
+ dailyXp: 50,
61
+ dailyLessons: 3,
62
+ },
63
+ metrics: {
64
+ totalXp: 1000,
65
+ totalLessons: 50,
66
+ },
67
+ } as const
68
+
69
+ /**
70
+ * Default resource configuration values
71
+ */
72
+ export const TIMEBACK_RESOURCE_DEFAULTS = {
73
+ vendorId: 'playcademy',
74
+ roles: ['primary'] as const,
75
+ importance: 'primary' as const,
76
+ metadata: {
77
+ type: 'interactive' as const,
78
+ toolProvider: 'Playcademy',
79
+ instructionalMethod: 'exploratory' as const,
80
+ language: 'en-US',
81
+ },
82
+ } as const
83
+
84
+ /**
85
+ * Default component configuration values
86
+ */
87
+ export const TIMEBACK_COMPONENT_DEFAULTS = {
88
+ sortOrder: 1,
89
+ prerequisiteCriteria: 'ALL' as const,
90
+ } as const
91
+
92
+ /**
93
+ * Default componentResource configuration values
94
+ */
95
+ export const TIMEBACK_COMPONENT_RESOURCE_DEFAULTS = {
96
+ sortOrder: 1,
97
+ lessonType: 'quiz',
98
+ } as const
package/dist/index.js CHANGED
@@ -4192,8 +4192,51 @@ var init_overworld2 = __esm2(() => {
4192
4192
  FIRST_GAME: ITEM_SLUGS2.FIRST_GAME_BADGE
4193
4193
  };
4194
4194
  });
4195
- var init_timeback2 = () => {
4196
- };
4195
+ var TIMEBACK_ORG_SOURCED_ID = "PLAYCADEMY";
4196
+ var TIMEBACK_ORG_NAME = "Playcademy Studios";
4197
+ var TIMEBACK_ORG_TYPE = "department";
4198
+ var TIMEBACK_COURSE_DEFAULTS;
4199
+ var TIMEBACK_RESOURCE_DEFAULTS;
4200
+ var TIMEBACK_COMPONENT_DEFAULTS;
4201
+ var TIMEBACK_COMPONENT_RESOURCE_DEFAULTS;
4202
+ var init_timeback2 = __esm2(() => {
4203
+ TIMEBACK_COURSE_DEFAULTS = {
4204
+ gradingScheme: "STANDARD",
4205
+ level: {
4206
+ elementary: "Elementary",
4207
+ middle: "Middle",
4208
+ high: "High",
4209
+ ap: "AP"
4210
+ },
4211
+ goals: {
4212
+ dailyXp: 50,
4213
+ dailyLessons: 3
4214
+ },
4215
+ metrics: {
4216
+ totalXp: 1e3,
4217
+ totalLessons: 50
4218
+ }
4219
+ };
4220
+ TIMEBACK_RESOURCE_DEFAULTS = {
4221
+ vendorId: "playcademy",
4222
+ roles: ["primary"],
4223
+ importance: "primary",
4224
+ metadata: {
4225
+ type: "interactive",
4226
+ toolProvider: "Playcademy",
4227
+ instructionalMethod: "exploratory",
4228
+ language: "en-US"
4229
+ }
4230
+ };
4231
+ TIMEBACK_COMPONENT_DEFAULTS = {
4232
+ sortOrder: 1,
4233
+ prerequisiteCriteria: "ALL"
4234
+ };
4235
+ TIMEBACK_COMPONENT_RESOURCE_DEFAULTS = {
4236
+ sortOrder: 1,
4237
+ lessonType: "quiz"
4238
+ };
4239
+ });
4197
4240
  var init_workers2 = () => {
4198
4241
  };
4199
4242
  var init_src2 = __esm2(() => {
@@ -4226,7 +4269,6 @@ var HTTP_DEFAULTS;
4226
4269
  var AUTH_DEFAULTS;
4227
4270
  var CACHE_DEFAULTS;
4228
4271
  var CONFIG_DEFAULTS;
4229
- var DEFAULT_PLAYCADEMY_ORGANIZATION_ID;
4230
4272
  var PLAYCADEMY_DEFAULTS;
4231
4273
  var RESOURCE_DEFAULTS;
4232
4274
  var HTTP_STATUS;
@@ -4373,54 +4415,26 @@ var init_constants = __esm2(() => {
4373
4415
  CONFIG_DEFAULTS = {
4374
4416
  fileNames: ["timeback.config.js", "timeback.config.json"]
4375
4417
  };
4376
- DEFAULT_PLAYCADEMY_ORGANIZATION_ID = process.env.TIMEBACK_ORG_SOURCE_ID || "PLAYCADEMY";
4377
4418
  PLAYCADEMY_DEFAULTS = {
4378
- organization: DEFAULT_PLAYCADEMY_ORGANIZATION_ID,
4419
+ organization: TIMEBACK_ORG_SOURCED_ID,
4379
4420
  launchBaseUrls: PLAYCADEMY_BASE_URLS2
4380
4421
  };
4381
4422
  RESOURCE_DEFAULTS = {
4382
4423
  organization: {
4383
- name: "Playcademy Studios",
4384
- type: "department"
4424
+ name: TIMEBACK_ORG_NAME,
4425
+ type: TIMEBACK_ORG_TYPE
4385
4426
  },
4386
4427
  course: {
4387
- gradingScheme: "STANDARD",
4388
- level: {
4389
- elementary: "Elementary",
4390
- middle: "Middle",
4391
- high: "High",
4392
- ap: "AP"
4393
- },
4394
- metadata: {
4395
- goals: {
4396
- dailyXp: 50,
4397
- dailyLessons: 3
4398
- },
4399
- metrics: {
4400
- totalXp: 1e3,
4401
- totalLessons: 50
4402
- }
4403
- }
4404
- },
4405
- component: {
4406
- sortOrder: 1,
4407
- prerequisiteCriteria: "ALL"
4408
- },
4409
- resource: {
4410
- vendorId: "playcademy",
4411
- roles: ["primary"],
4412
- importance: "primary",
4428
+ gradingScheme: TIMEBACK_COURSE_DEFAULTS.gradingScheme,
4429
+ level: TIMEBACK_COURSE_DEFAULTS.level,
4413
4430
  metadata: {
4414
- type: "interactive",
4415
- toolProvider: "Playcademy",
4416
- instructionalMethod: "exploratory",
4417
- language: "en-US"
4431
+ goals: TIMEBACK_COURSE_DEFAULTS.goals,
4432
+ metrics: TIMEBACK_COURSE_DEFAULTS.metrics
4418
4433
  }
4419
4434
  },
4420
- componentResource: {
4421
- sortOrder: 1,
4422
- lessonType: "quiz"
4423
- }
4435
+ component: TIMEBACK_COMPONENT_DEFAULTS,
4436
+ resource: TIMEBACK_RESOURCE_DEFAULTS,
4437
+ componentResource: TIMEBACK_COMPONENT_RESOURCE_DEFAULTS
4424
4438
  };
4425
4439
  HTTP_STATUS = {
4426
4440
  CLIENT_ERROR_MIN: 400,
@@ -4476,8 +4490,51 @@ var init_overworld3 = __esm3(() => {
4476
4490
  FIRST_GAME: ITEM_SLUGS3.FIRST_GAME_BADGE
4477
4491
  };
4478
4492
  });
4479
- var init_timeback3 = () => {
4480
- };
4493
+ var TIMEBACK_ORG_SOURCED_ID2 = "PLAYCADEMY";
4494
+ var TIMEBACK_ORG_NAME2 = "Playcademy Studios";
4495
+ var TIMEBACK_ORG_TYPE2 = "department";
4496
+ var TIMEBACK_COURSE_DEFAULTS2;
4497
+ var TIMEBACK_RESOURCE_DEFAULTS2;
4498
+ var TIMEBACK_COMPONENT_DEFAULTS2;
4499
+ var TIMEBACK_COMPONENT_RESOURCE_DEFAULTS2;
4500
+ var init_timeback3 = __esm3(() => {
4501
+ TIMEBACK_COURSE_DEFAULTS2 = {
4502
+ gradingScheme: "STANDARD",
4503
+ level: {
4504
+ elementary: "Elementary",
4505
+ middle: "Middle",
4506
+ high: "High",
4507
+ ap: "AP"
4508
+ },
4509
+ goals: {
4510
+ dailyXp: 50,
4511
+ dailyLessons: 3
4512
+ },
4513
+ metrics: {
4514
+ totalXp: 1e3,
4515
+ totalLessons: 50
4516
+ }
4517
+ };
4518
+ TIMEBACK_RESOURCE_DEFAULTS2 = {
4519
+ vendorId: "playcademy",
4520
+ roles: ["primary"],
4521
+ importance: "primary",
4522
+ metadata: {
4523
+ type: "interactive",
4524
+ toolProvider: "Playcademy",
4525
+ instructionalMethod: "exploratory",
4526
+ language: "en-US"
4527
+ }
4528
+ };
4529
+ TIMEBACK_COMPONENT_DEFAULTS2 = {
4530
+ sortOrder: 1,
4531
+ prerequisiteCriteria: "ALL"
4532
+ };
4533
+ TIMEBACK_COMPONENT_RESOURCE_DEFAULTS2 = {
4534
+ sortOrder: 1,
4535
+ lessonType: "quiz"
4536
+ };
4537
+ });
4481
4538
  var init_workers3 = () => {
4482
4539
  };
4483
4540
  var init_src3 = __esm3(() => {
@@ -4510,7 +4567,6 @@ var HTTP_DEFAULTS2;
4510
4567
  var AUTH_DEFAULTS2;
4511
4568
  var CACHE_DEFAULTS2;
4512
4569
  var CONFIG_DEFAULTS2;
4513
- var DEFAULT_PLAYCADEMY_ORGANIZATION_ID2;
4514
4570
  var PLAYCADEMY_DEFAULTS2;
4515
4571
  var RESOURCE_DEFAULTS2;
4516
4572
  var HTTP_STATUS2;
@@ -4657,54 +4713,26 @@ var init_constants2 = __esm3(() => {
4657
4713
  CONFIG_DEFAULTS2 = {
4658
4714
  fileNames: ["timeback.config.js", "timeback.config.json"]
4659
4715
  };
4660
- DEFAULT_PLAYCADEMY_ORGANIZATION_ID2 = process.env.TIMEBACK_ORG_SOURCE_ID || "PLAYCADEMY";
4661
4716
  PLAYCADEMY_DEFAULTS2 = {
4662
- organization: DEFAULT_PLAYCADEMY_ORGANIZATION_ID2,
4717
+ organization: TIMEBACK_ORG_SOURCED_ID2,
4663
4718
  launchBaseUrls: PLAYCADEMY_BASE_URLS3
4664
4719
  };
4665
4720
  RESOURCE_DEFAULTS2 = {
4666
4721
  organization: {
4667
- name: "Playcademy Studios",
4668
- type: "department"
4722
+ name: TIMEBACK_ORG_NAME2,
4723
+ type: TIMEBACK_ORG_TYPE2
4669
4724
  },
4670
4725
  course: {
4671
- gradingScheme: "STANDARD",
4672
- level: {
4673
- elementary: "Elementary",
4674
- middle: "Middle",
4675
- high: "High",
4676
- ap: "AP"
4677
- },
4678
- metadata: {
4679
- goals: {
4680
- dailyXp: 50,
4681
- dailyLessons: 3
4682
- },
4683
- metrics: {
4684
- totalXp: 1e3,
4685
- totalLessons: 50
4686
- }
4687
- }
4688
- },
4689
- component: {
4690
- sortOrder: 1,
4691
- prerequisiteCriteria: "ALL"
4692
- },
4693
- resource: {
4694
- vendorId: "playcademy",
4695
- roles: ["primary"],
4696
- importance: "primary",
4726
+ gradingScheme: TIMEBACK_COURSE_DEFAULTS2.gradingScheme,
4727
+ level: TIMEBACK_COURSE_DEFAULTS2.level,
4697
4728
  metadata: {
4698
- type: "interactive",
4699
- toolProvider: "Playcademy",
4700
- instructionalMethod: "exploratory",
4701
- language: "en-US"
4729
+ goals: TIMEBACK_COURSE_DEFAULTS2.goals,
4730
+ metrics: TIMEBACK_COURSE_DEFAULTS2.metrics
4702
4731
  }
4703
4732
  },
4704
- componentResource: {
4705
- sortOrder: 1,
4706
- lessonType: "quiz"
4707
- }
4733
+ component: TIMEBACK_COMPONENT_DEFAULTS2,
4734
+ resource: TIMEBACK_RESOURCE_DEFAULTS2,
4735
+ componentResource: TIMEBACK_COMPONENT_RESOURCE_DEFAULTS2
4708
4736
  };
4709
4737
  HTTP_STATUS2 = {
4710
4738
  CLIENT_ERROR_MIN: 400,
@@ -4744,7 +4772,7 @@ function deriveLevelFromGrades(grades) {
4744
4772
  }
4745
4773
  function deriveSourcedIds(courseId) {
4746
4774
  return {
4747
- organization: PLAYCADEMY_DEFAULTS.organization,
4775
+ organization: process.env.TIMEBACK_ORG_SOURCED_ID || PLAYCADEMY_DEFAULTS.organization,
4748
4776
  course: courseId,
4749
4777
  component: `${courseId}-component`,
4750
4778
  resource: `${courseId}-resource`,
@@ -4814,7 +4842,7 @@ function derivePlatformTimebackSetupRequest(config) {
4814
4842
  const defaultOrganization = {
4815
4843
  name: RESOURCE_DEFAULTS.organization.name,
4816
4844
  type: RESOURCE_DEFAULTS.organization.type,
4817
- identifier: PLAYCADEMY_DEFAULTS.organization
4845
+ identifier: process.env.TIMEBACK_ORG_SOURCED_ID || PLAYCADEMY_DEFAULTS.organization
4818
4846
  };
4819
4847
  const defaultComponent = {
4820
4848
  title: "",
@@ -5577,7 +5605,7 @@ import { join as join12 } from "path";
5577
5605
  // package.json
5578
5606
  var package_default2 = {
5579
5607
  name: "playcademy",
5580
- version: "0.14.24",
5608
+ version: "0.14.25",
5581
5609
  type: "module",
5582
5610
  exports: {
5583
5611
  ".": {
@@ -7010,42 +7038,6 @@ import { existsSync as existsSync16, mkdirSync as mkdirSync4, readFileSync as re
7010
7038
  import { createServer } from "node:net";
7011
7039
  import { homedir as homedir3 } from "node:os";
7012
7040
  import { join as join22 } from "node:path";
7013
- async function isPortAvailableOnHost(port, host) {
7014
- return new Promise((resolve11) => {
7015
- const server = createServer();
7016
- let resolved = false;
7017
- const cleanup = (result) => {
7018
- if (resolved) return;
7019
- resolved = true;
7020
- try {
7021
- server.close();
7022
- } catch {
7023
- }
7024
- resolve11(result);
7025
- };
7026
- const timeout = setTimeout(() => cleanup(true), 100);
7027
- server.once("error", (err) => {
7028
- clearTimeout(timeout);
7029
- if (err.code === "EAFNOSUPPORT" || err.code === "EADDRNOTAVAIL") {
7030
- cleanup(true);
7031
- } else {
7032
- cleanup(false);
7033
- }
7034
- });
7035
- server.once("listening", () => {
7036
- clearTimeout(timeout);
7037
- cleanup(true);
7038
- });
7039
- server.listen(port, host).unref();
7040
- });
7041
- }
7042
- async function findAvailablePort(startPort = 4321) {
7043
- if (await isPortAvailableOnHost(startPort, "0.0.0.0")) {
7044
- return startPort;
7045
- } else {
7046
- return findAvailablePort(startPort + 1);
7047
- }
7048
- }
7049
7041
  function getRegistryPath() {
7050
7042
  const home = homedir3();
7051
7043
  const dir = join22(home, ".playcademy");
@@ -7140,6 +7132,31 @@ function cleanupServerInfo(type, projectRoot, pid) {
7140
7132
  writeRegistry(registry);
7141
7133
  }
7142
7134
  }
7135
+ async function isPortInUse(port) {
7136
+ return new Promise((resolve11) => {
7137
+ const server = createServer();
7138
+ server.once("error", () => {
7139
+ resolve11(true);
7140
+ });
7141
+ server.once("listening", () => {
7142
+ server.close();
7143
+ resolve11(false);
7144
+ });
7145
+ server.listen(port);
7146
+ });
7147
+ }
7148
+ async function waitForPort(port, timeoutMs = 5e3) {
7149
+ const start = Date.now();
7150
+ while (await isPortInUse(port)) {
7151
+ if (Date.now() - start > timeoutMs) {
7152
+ throw new Error(
7153
+ `Port ${port} is already in use.
7154
+ Stop the other server or specify a different port with --port <number>.`
7155
+ );
7156
+ }
7157
+ await new Promise((resolve11) => setTimeout(resolve11, 100));
7158
+ }
7159
+ }
7143
7160
 
7144
7161
  // src/lib/deploy/bundle.ts
7145
7162
  import { existsSync as existsSync17 } from "fs";
@@ -7614,15 +7631,9 @@ var FilteredLog = class extends Log {
7614
7631
  }
7615
7632
  };
7616
7633
  async function startDevServer(options) {
7617
- const {
7618
- port: preferredPort,
7619
- config: providedConfig,
7620
- platformUrl,
7621
- logger: logger2 = true,
7622
- customLogger
7623
- } = options;
7624
- const port = await findAvailablePort(preferredPort);
7625
- const config = providedConfig ?? await loadConfig();
7634
+ const { port, config: _config, platformUrl, logger: logger2 = true, customLogger } = options;
7635
+ await waitForPort(port);
7636
+ const config = _config ?? await loadConfig();
7626
7637
  await ensurePlaycademyTypes();
7627
7638
  const hasSandboxTimebackCreds = !!process.env.TIMEBACK_API_CLIENT_ID;
7628
7639
  const devConfig = config.integrations?.timeback && !hasSandboxTimebackCreds ? { ...config, integrations: { ...config.integrations, timeback: null } } : config;
@@ -7638,7 +7649,7 @@ async function startDevServer(options) {
7638
7649
  const bucketDir = hasBucket ? await ensureBucketDirectory() : void 0;
7639
7650
  const workspace = getWorkspace();
7640
7651
  const envSecrets = await readEnvFile(workspace);
7641
- const log2 = logger2 ? new FilteredLog(LogLevel.INFO, customLogger) : new Log(LogLevel.NONE);
7652
+ const filteredLog = logger2 ? new FilteredLog(LogLevel.INFO, customLogger) : new Log(LogLevel.NONE);
7642
7653
  const sandboxInfo = readServerInfo("sandbox", workspace);
7643
7654
  const baseUrl = platformUrl ?? sandboxInfo?.url ?? process.env.PLAYCADEMY_BASE_URL ?? `http://localhost:${DEFAULT_PORTS.SANDBOX}`;
7644
7655
  const bindings = {
@@ -7651,7 +7662,7 @@ async function startDevServer(options) {
7651
7662
  }
7652
7663
  const mf = new Miniflare({
7653
7664
  port,
7654
- log: log2,
7665
+ log: filteredLog,
7655
7666
  modules: [
7656
7667
  {
7657
7668
  type: "ESModule",
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  // External integrations
4
- // See https://docs.playcademy.net/integrations/overview.html for more details
4
+ // See https://docs.playcademy.net/platform/vite-plugin for more details
5
5
  integrations: {
6
6
  {{INTEGRATIONS_CONTENT}}
7
7
  },
package/dist/utils.js CHANGED
@@ -3214,42 +3214,6 @@ import { existsSync as existsSync3, mkdirSync, readFileSync, writeFileSync } fro
3214
3214
  import { createServer } from "node:net";
3215
3215
  import { homedir } from "node:os";
3216
3216
  import { join as join7 } from "node:path";
3217
- async function isPortAvailableOnHost(port, host) {
3218
- return new Promise((resolve4) => {
3219
- const server = createServer();
3220
- let resolved = false;
3221
- const cleanup = (result) => {
3222
- if (resolved) return;
3223
- resolved = true;
3224
- try {
3225
- server.close();
3226
- } catch {
3227
- }
3228
- resolve4(result);
3229
- };
3230
- const timeout = setTimeout(() => cleanup(true), 100);
3231
- server.once("error", (err) => {
3232
- clearTimeout(timeout);
3233
- if (err.code === "EAFNOSUPPORT" || err.code === "EADDRNOTAVAIL") {
3234
- cleanup(true);
3235
- } else {
3236
- cleanup(false);
3237
- }
3238
- });
3239
- server.once("listening", () => {
3240
- clearTimeout(timeout);
3241
- cleanup(true);
3242
- });
3243
- server.listen(port, host).unref();
3244
- });
3245
- }
3246
- async function findAvailablePort(startPort = 4321) {
3247
- if (await isPortAvailableOnHost(startPort, "0.0.0.0")) {
3248
- return startPort;
3249
- } else {
3250
- return findAvailablePort(startPort + 1);
3251
- }
3252
- }
3253
3217
  function getRegistryPath() {
3254
3218
  const home = homedir();
3255
3219
  const dir = join7(home, ".playcademy");
@@ -3295,6 +3259,31 @@ function readServerInfo(type, projectRoot) {
3295
3259
  }
3296
3260
  return servers[0] || null;
3297
3261
  }
3262
+ async function isPortInUse(port) {
3263
+ return new Promise((resolve4) => {
3264
+ const server = createServer();
3265
+ server.once("error", () => {
3266
+ resolve4(true);
3267
+ });
3268
+ server.once("listening", () => {
3269
+ server.close();
3270
+ resolve4(false);
3271
+ });
3272
+ server.listen(port);
3273
+ });
3274
+ }
3275
+ async function waitForPort(port, timeoutMs = 5e3) {
3276
+ const start = Date.now();
3277
+ while (await isPortInUse(port)) {
3278
+ if (Date.now() - start > timeoutMs) {
3279
+ throw new Error(
3280
+ `Port ${port} is already in use.
3281
+ Stop the other server or specify a different port with --port <number>.`
3282
+ );
3283
+ }
3284
+ await new Promise((resolve4) => setTimeout(resolve4, 100));
3285
+ }
3286
+ }
3298
3287
 
3299
3288
  // src/lib/core/client.ts
3300
3289
  import { PlaycademyClient } from "@playcademy/sdk/internal";
@@ -4003,7 +3992,7 @@ import { join as join12 } from "path";
4003
3992
  // package.json
4004
3993
  var package_default2 = {
4005
3994
  name: "playcademy",
4006
- version: "0.14.24",
3995
+ version: "0.14.25",
4007
3996
  type: "module",
4008
3997
  exports: {
4009
3998
  ".": {
@@ -4386,15 +4375,9 @@ var FilteredLog = class extends Log {
4386
4375
  }
4387
4376
  };
4388
4377
  async function startDevServer(options) {
4389
- const {
4390
- port: preferredPort,
4391
- config: providedConfig,
4392
- platformUrl,
4393
- logger: logger2 = true,
4394
- customLogger
4395
- } = options;
4396
- const port = await findAvailablePort(preferredPort);
4397
- const config = providedConfig ?? await loadConfig();
4378
+ const { port, config: _config, platformUrl, logger: logger2 = true, customLogger } = options;
4379
+ await waitForPort(port);
4380
+ const config = _config ?? await loadConfig();
4398
4381
  await ensurePlaycademyTypes();
4399
4382
  const hasSandboxTimebackCreds = !!process.env.TIMEBACK_API_CLIENT_ID;
4400
4383
  const devConfig = config.integrations?.timeback && !hasSandboxTimebackCreds ? { ...config, integrations: { ...config.integrations, timeback: null } } : config;
@@ -4410,7 +4393,7 @@ async function startDevServer(options) {
4410
4393
  const bucketDir = hasBucket ? await ensureBucketDirectory() : void 0;
4411
4394
  const workspace = getWorkspace();
4412
4395
  const envSecrets = await readEnvFile(workspace);
4413
- const log2 = logger2 ? new FilteredLog(LogLevel.INFO, customLogger) : new Log(LogLevel.NONE);
4396
+ const filteredLog = logger2 ? new FilteredLog(LogLevel.INFO, customLogger) : new Log(LogLevel.NONE);
4414
4397
  const sandboxInfo = readServerInfo("sandbox", workspace);
4415
4398
  const baseUrl = platformUrl ?? sandboxInfo?.url ?? process.env.PLAYCADEMY_BASE_URL ?? `http://localhost:${DEFAULT_PORTS.SANDBOX}`;
4416
4399
  const bindings = {
@@ -4423,7 +4406,7 @@ async function startDevServer(options) {
4423
4406
  }
4424
4407
  const mf = new Miniflare({
4425
4408
  port,
4426
- log: log2,
4409
+ log: filteredLog,
4427
4410
  modules: [
4428
4411
  {
4429
4412
  type: "ESModule",
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // package.json
2
2
  var package_default = {
3
3
  name: "playcademy",
4
- version: "0.14.24",
4
+ version: "0.14.25",
5
5
  type: "module",
6
6
  exports: {
7
7
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "playcademy",
3
- "version": "0.14.25",
3
+ "version": "0.14.26",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {