playcademy 0.17.4-alpha.1 → 0.17.5

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/bin.js CHANGED
@@ -4,7 +4,7 @@
4
4
  import { spawnSync } from "node:child_process";
5
5
  import { existsSync } from "node:fs";
6
6
  import { homedir as homedir2 } from "node:os";
7
- import { join as join2 } from "node:path";
7
+ import { delimiter, join as join2 } from "node:path";
8
8
  import { green, red } from "colorette";
9
9
 
10
10
  // src/constants/paths.ts
@@ -29,8 +29,25 @@ var CLI_DEFAULT_OUTPUTS = {
29
29
 
30
30
  // src/bin.ts
31
31
  var exe = process.platform === "win32" ? "playcademy.exe" : "playcademy";
32
- var locations = [join2(CLI_USER_DIRECTORIES.BIN, exe), join2(homedir2(), ".local", "bin", exe)];
33
- var binary = locations.find((p) => existsSync(p));
32
+ function findBinary() {
33
+ const knownDirs = [CLI_USER_DIRECTORIES.BIN, join2(homedir2(), ".local", "bin")];
34
+ for (const dir of knownDirs) {
35
+ const p = join2(dir, exe);
36
+ if (existsSync(p)) {
37
+ return p;
38
+ }
39
+ }
40
+ const nmBin = join2("node_modules", ".bin");
41
+ for (const dir of (process.env.PATH ?? "").split(delimiter)) {
42
+ if (dir && !dir.endsWith(nmBin)) {
43
+ const p = join2(dir, exe);
44
+ if (existsSync(p)) {
45
+ return p;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ var binary = findBinary();
34
51
  if (binary) {
35
52
  const result = spawnSync(binary, process.argv.slice(2), { stdio: "inherit" });
36
53
  if (result.signal) {
package/dist/cli.js CHANGED
@@ -2330,31 +2330,29 @@ function displaySuccessMessage(context2) {
2330
2330
  const pm = getPackageManager();
2331
2331
  const isVite = context2.engineType === "vite";
2332
2332
  const isGodot = context2.engineType === "godot";
2333
- nextSteps.push(`1. Review your config file: <${context2.configFileName}>`);
2333
+ function nextStepNum() {
2334
+ return nextSteps.length + 1;
2335
+ }
2336
+ nextSteps.push(`${nextStepNum()}. Review your config file: <${context2.configFileName}>`);
2334
2337
  if (context2.hasDatabase) {
2335
- nextSteps.push(`3. Review schema: <db/schema/index.ts>`);
2336
- nextSteps.push("4. Start dev server: `playcademy dev`");
2337
- nextSteps.push(`5. Push your schema: \`${getRunCommand(pm, "db:push")}\``);
2338
+ nextSteps.push(`${nextStepNum()}. Review schema: <db/schema/index.ts>`);
2339
+ nextSteps.push(`${nextStepNum()}. Start dev server: \`playcademy dev\``);
2340
+ nextSteps.push(`${nextStepNum()}. Push your schema: \`${getRunCommand(pm, "db:push")}\``);
2338
2341
  }
2339
2342
  if (context2.hasAuth) {
2340
- const stepNum = context2.hasDatabase ? "6" : "2";
2341
- nextSteps.push(`${stepNum}. Review auth config: <server/lib/auth.ts>`);
2343
+ nextSteps.push(`${nextStepNum()}. Review auth config: <server/lib/auth.ts>`);
2342
2344
  }
2343
2345
  if (isVite) {
2344
2346
  const buildExample = getRunCommand(pm, "build");
2345
- const buildStepNum = nextSteps.length + 1;
2346
- nextSteps.push(`${buildStepNum}. Build your app: \`${buildExample}\``);
2347
+ nextSteps.push(`${nextStepNum()}. Build your app: \`${buildExample}\``);
2347
2348
  }
2348
2349
  if (isGodot) {
2349
- const stepNum = nextSteps.length + 1;
2350
- nextSteps.push(`${stepNum}. Open in Godot Editor`);
2350
+ nextSteps.push(`${nextStepNum()}. Open in Godot Editor`);
2351
2351
  }
2352
2352
  if (context2.apiDirectory) {
2353
- const stepNum = nextSteps.length + 1;
2354
- nextSteps.push(`${stepNum}. Customize API routes: <${context2.apiDirectory}>`);
2353
+ nextSteps.push(`${nextStepNum()}. Customize API routes: <${context2.apiDirectory}>`);
2355
2354
  }
2356
- const deployStep = nextSteps.length + 1;
2357
- nextSteps.push(`${deployStep}. Deploy: \`playcademy deploy\``);
2355
+ nextSteps.push(`${nextStepNum()}. Deploy: \`playcademy deploy\``);
2358
2356
  nextSteps.push("");
2359
2357
  nextSteps.push(`Learn more: <<${DOCS_URL}>>`);
2360
2358
  logger.admonition("tip", "Next Steps", nextSteps);
@@ -2816,6 +2814,7 @@ async function promptForProjectDirectory(projectDir) {
2816
2814
  }
2817
2815
  const targetDir = resolve5(process.cwd(), dir);
2818
2816
  if (existsSync9(targetDir)) {
2817
+ logger.newLine();
2819
2818
  logger.admonition("warning", "Directory Exists", [`Directory "${dir}" already exists.`]);
2820
2819
  logger.newLine();
2821
2820
  const shouldContinue = await confirm2({
@@ -2969,7 +2968,8 @@ function updateEnvForAuth(workspace, strategies) {
2969
2968
  }
2970
2969
  async function scaffoldAuthSetup(options = {}) {
2971
2970
  const workspace = getWorkspace();
2972
- const { strategies = [], appName } = options;
2971
+ const { strategies = [], appName, silent } = options;
2972
+ const stepOptions = silent ? { silent: true } : void 0;
2973
2973
  let packagesUpdated = false;
2974
2974
  await runStep(
2975
2975
  "Configuring authentication...",
@@ -2979,14 +2979,15 @@ async function scaffoldAuthSetup(options = {}) {
2979
2979
  scaffoldAuthRoutes(workspace);
2980
2980
  scaffoldAuthSchema(workspace);
2981
2981
  scaffoldProtectedExample(workspace);
2982
- packagesUpdated = await setupPackageJson(workspace);
2982
+ packagesUpdated = await setupPackageJson(workspace, stepOptions);
2983
2983
  updateEnvForAuth(workspace, strategies);
2984
2984
  },
2985
- "Authentication configured"
2985
+ "Authentication configured",
2986
+ stepOptions
2986
2987
  );
2987
2988
  return packagesUpdated;
2988
2989
  }
2989
- async function setupPackageJson(workspace) {
2990
+ async function setupPackageJson(workspace, stepOptions) {
2990
2991
  const pkgPath = join12(workspace, "package.json");
2991
2992
  const authDeps = {
2992
2993
  "@playcademy/better-auth": PLAYCADEMY_AUTH_VERSION,
@@ -3001,7 +3002,8 @@ async function setupPackageJson(workspace) {
3001
3002
  writeFileSync5(pkgPath, `${JSON.stringify(existing, null, 2)}
3002
3003
  `);
3003
3004
  },
3004
- "Updated package.json deps"
3005
+ "Updated package.json deps",
3006
+ stepOptions
3005
3007
  );
3006
3008
  return true;
3007
3009
  }
@@ -3013,7 +3015,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
3013
3015
  import { join as join13 } from "node:path";
3014
3016
 
3015
3017
  // src/version.ts
3016
- var cliVersion = false ? "0.0.0-dev" : "0.17.4-alpha.1";
3018
+ var cliVersion = false ? "0.0.0-dev" : "0.17.5";
3017
3019
 
3018
3020
  // src/lib/init/database.ts
3019
3021
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -3025,6 +3027,7 @@ var dbSeedTemplate = loadTemplateString("database/db-seed.ts");
3025
3027
  var packageTemplate = loadTemplateString("database/package.json");
3026
3028
  async function scaffoldDatabaseSetup(options) {
3027
3029
  const workspace = getWorkspace();
3030
+ const stepOptions = options.silent ? { silent: true } : void 0;
3028
3031
  let packagesUpdated = false;
3029
3032
  await runStep(
3030
3033
  "Configuring database...",
@@ -3049,13 +3052,14 @@ async function scaffoldDatabaseSetup(options) {
3049
3052
  writeFileSync6(dbSeedPath, dbSeedTemplate);
3050
3053
  const drizzleConfigPath = join13(workspace, DRIZZLE_CONFIG_FILES[0]);
3051
3054
  writeFileSync6(drizzleConfigPath, drizzleConfigTemplate);
3052
- packagesUpdated = await setupPackageJson2(workspace, options.appName);
3055
+ packagesUpdated = await setupPackageJson2(workspace, options.appName, stepOptions);
3053
3056
  },
3054
- "Database configured"
3057
+ "Database configured",
3058
+ stepOptions
3055
3059
  );
3056
3060
  return packagesUpdated;
3057
3061
  }
3058
- async function setupPackageJson2(workspace, appName) {
3062
+ async function setupPackageJson2(workspace, appName, stepOptions) {
3059
3063
  const pkgPath = join13(workspace, "package.json");
3060
3064
  const dbDeps = {
3061
3065
  "drizzle-orm": "^0.42.0",
@@ -3087,7 +3091,8 @@ async function setupPackageJson2(workspace, appName) {
3087
3091
  writeFileSync6(pkgPath, `${JSON.stringify(existing, null, 2)}
3088
3092
  `);
3089
3093
  },
3090
- "Updated package.json deps"
3094
+ "Updated package.json deps",
3095
+ stepOptions
3091
3096
  );
3092
3097
  return true;
3093
3098
  } else {
@@ -3139,7 +3144,7 @@ function ensurePlaycademyGitignore() {
3139
3144
  writeFileSync7(gitignorePath, playcademyGitignoreTemplate);
3140
3145
  }
3141
3146
  async function scaffoldIntegrations(appName, options) {
3142
- const { customRoutes, database, auth, kv, bucket } = options;
3147
+ const { customRoutes, database, auth, kv, bucket, silent } = options;
3143
3148
  let depsAdded = false;
3144
3149
  ensurePlaycademyGitignore();
3145
3150
  if (customRoutes) {
@@ -3165,13 +3170,13 @@ async function scaffoldIntegrations(appName, options) {
3165
3170
  await scaffoldApiDirectory(customRoutes.directory, sampleRoutes);
3166
3171
  }
3167
3172
  if (database) {
3168
- const dbDepsAdded = await scaffoldDatabaseSetup({ appName });
3173
+ const dbDepsAdded = await scaffoldDatabaseSetup({ appName, silent });
3169
3174
  if (dbDepsAdded) {
3170
3175
  depsAdded = true;
3171
3176
  }
3172
3177
  }
3173
3178
  if (auth) {
3174
- const authDepsAdded = await scaffoldAuthSetup({ ...auth, appName });
3179
+ const authDepsAdded = await scaffoldAuthSetup({ ...auth, appName, silent });
3175
3180
  if (authDepsAdded) {
3176
3181
  depsAdded = true;
3177
3182
  }
@@ -3753,7 +3758,10 @@ async function setupProjectFiles(dirInfo, engineSelection, projectName, integrat
3753
3758
  }
3754
3759
  }
3755
3760
  if (integrationOptions.customRoutes || integrationOptions.database || integrationOptions.auth) {
3756
- const scaffoldDepsAdded = await scaffoldIntegrations(projectName, integrationOptions);
3761
+ const scaffoldDepsAdded = await scaffoldIntegrations(projectName, {
3762
+ ...integrationOptions,
3763
+ silent: true
3764
+ });
3757
3765
  if (scaffoldDepsAdded) {
3758
3766
  depsAdded = true;
3759
3767
  }
package/dist/index.d.ts CHANGED
@@ -1202,8 +1202,8 @@ interface EmbeddedSourcePaths {
1202
1202
  constantsEntry: string;
1203
1203
  /** User's workspace node_modules */
1204
1204
  workspaceNodeModules: string;
1205
- /** Resolution roots: monorepo root in dev; playcademy package or .playcademy deps when published/binary */
1206
- cliNodeModules: string;
1205
+ /** Resolution root for CLI dependencies — monorepo root in dev (hoisted deps); specific node_modules when published/binary */
1206
+ cliDepsRoot: string;
1207
1207
  }
1208
1208
 
1209
1209
  /**
package/dist/index.js CHANGED
@@ -3941,7 +3941,8 @@ function updateEnvForAuth(workspace, strategies) {
3941
3941
  }
3942
3942
  async function scaffoldAuthSetup(options = {}) {
3943
3943
  const workspace = getWorkspace();
3944
- const { strategies = [], appName } = options;
3944
+ const { strategies = [], appName, silent } = options;
3945
+ const stepOptions = silent ? { silent: true } : void 0;
3945
3946
  let packagesUpdated = false;
3946
3947
  await runStep(
3947
3948
  "Configuring authentication...",
@@ -3951,14 +3952,15 @@ async function scaffoldAuthSetup(options = {}) {
3951
3952
  scaffoldAuthRoutes(workspace);
3952
3953
  scaffoldAuthSchema(workspace);
3953
3954
  scaffoldProtectedExample(workspace);
3954
- packagesUpdated = await setupPackageJson(workspace);
3955
+ packagesUpdated = await setupPackageJson(workspace, stepOptions);
3955
3956
  updateEnvForAuth(workspace, strategies);
3956
3957
  },
3957
- "Authentication configured"
3958
+ "Authentication configured",
3959
+ stepOptions
3958
3960
  );
3959
3961
  return packagesUpdated;
3960
3962
  }
3961
- async function setupPackageJson(workspace) {
3963
+ async function setupPackageJson(workspace, stepOptions) {
3962
3964
  const pkgPath = join12(workspace, "package.json");
3963
3965
  const authDeps = {
3964
3966
  "@playcademy/better-auth": PLAYCADEMY_AUTH_VERSION,
@@ -3973,7 +3975,8 @@ async function setupPackageJson(workspace) {
3973
3975
  writeFileSync3(pkgPath, `${JSON.stringify(existing, null, 2)}
3974
3976
  `);
3975
3977
  },
3976
- "Updated package.json deps"
3978
+ "Updated package.json deps",
3979
+ stepOptions
3977
3980
  );
3978
3981
  return true;
3979
3982
  }
@@ -4014,7 +4017,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, readFileSync as rea
4014
4017
  import { join as join13 } from "node:path";
4015
4018
 
4016
4019
  // src/version.ts
4017
- var cliVersion = false ? "0.0.0-dev" : "0.17.4-alpha.1";
4020
+ var cliVersion = false ? "0.0.0-dev" : "0.17.5";
4018
4021
 
4019
4022
  // src/lib/init/database.ts
4020
4023
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -4026,6 +4029,7 @@ var dbSeedTemplate = loadTemplateString("database/db-seed.ts");
4026
4029
  var packageTemplate = loadTemplateString("database/package.json");
4027
4030
  async function scaffoldDatabaseSetup(options) {
4028
4031
  const workspace = getWorkspace();
4032
+ const stepOptions = options.silent ? { silent: true } : void 0;
4029
4033
  let packagesUpdated = false;
4030
4034
  await runStep(
4031
4035
  "Configuring database...",
@@ -4050,13 +4054,14 @@ async function scaffoldDatabaseSetup(options) {
4050
4054
  writeFileSync4(dbSeedPath, dbSeedTemplate);
4051
4055
  const drizzleConfigPath = join13(workspace, DRIZZLE_CONFIG_FILES[0]);
4052
4056
  writeFileSync4(drizzleConfigPath, drizzleConfigTemplate);
4053
- packagesUpdated = await setupPackageJson2(workspace, options.appName);
4057
+ packagesUpdated = await setupPackageJson2(workspace, options.appName, stepOptions);
4054
4058
  },
4055
- "Database configured"
4059
+ "Database configured",
4060
+ stepOptions
4056
4061
  );
4057
4062
  return packagesUpdated;
4058
4063
  }
4059
- async function setupPackageJson2(workspace, appName) {
4064
+ async function setupPackageJson2(workspace, appName, stepOptions) {
4060
4065
  const pkgPath = join13(workspace, "package.json");
4061
4066
  const dbDeps = {
4062
4067
  "drizzle-orm": "^0.42.0",
@@ -4088,7 +4093,8 @@ async function setupPackageJson2(workspace, appName) {
4088
4093
  writeFileSync4(pkgPath, `${JSON.stringify(existing, null, 2)}
4089
4094
  `);
4090
4095
  },
4091
- "Updated package.json deps"
4096
+ "Updated package.json deps",
4097
+ stepOptions
4092
4098
  );
4093
4099
  return true;
4094
4100
  } else {
@@ -4157,7 +4163,7 @@ function ensurePlaycademyGitignore() {
4157
4163
  writeFileSync5(gitignorePath, playcademyGitignoreTemplate);
4158
4164
  }
4159
4165
  async function scaffoldIntegrations(appName, options) {
4160
- const { customRoutes, database, auth, kv, bucket } = options;
4166
+ const { customRoutes, database, auth, kv, bucket, silent } = options;
4161
4167
  let depsAdded = false;
4162
4168
  ensurePlaycademyGitignore();
4163
4169
  if (customRoutes) {
@@ -4183,13 +4189,13 @@ async function scaffoldIntegrations(appName, options) {
4183
4189
  await scaffoldApiDirectory(customRoutes.directory, sampleRoutes);
4184
4190
  }
4185
4191
  if (database) {
4186
- const dbDepsAdded = await scaffoldDatabaseSetup({ appName });
4192
+ const dbDepsAdded = await scaffoldDatabaseSetup({ appName, silent });
4187
4193
  if (dbDepsAdded) {
4188
4194
  depsAdded = true;
4189
4195
  }
4190
4196
  }
4191
4197
  if (auth) {
4192
- const authDepsAdded = await scaffoldAuthSetup({ ...auth, appName });
4198
+ const authDepsAdded = await scaffoldAuthSetup({ ...auth, appName, silent });
4193
4199
  if (authDepsAdded) {
4194
4200
  depsAdded = true;
4195
4201
  }
@@ -4452,31 +4458,29 @@ function displaySuccessMessage(context2) {
4452
4458
  const pm = getPackageManager();
4453
4459
  const isVite = context2.engineType === "vite";
4454
4460
  const isGodot = context2.engineType === "godot";
4455
- nextSteps.push(`1. Review your config file: <${context2.configFileName}>`);
4461
+ function nextStepNum() {
4462
+ return nextSteps.length + 1;
4463
+ }
4464
+ nextSteps.push(`${nextStepNum()}. Review your config file: <${context2.configFileName}>`);
4456
4465
  if (context2.hasDatabase) {
4457
- nextSteps.push(`3. Review schema: <db/schema/index.ts>`);
4458
- nextSteps.push("4. Start dev server: `playcademy dev`");
4459
- nextSteps.push(`5. Push your schema: \`${getRunCommand(pm, "db:push")}\``);
4466
+ nextSteps.push(`${nextStepNum()}. Review schema: <db/schema/index.ts>`);
4467
+ nextSteps.push(`${nextStepNum()}. Start dev server: \`playcademy dev\``);
4468
+ nextSteps.push(`${nextStepNum()}. Push your schema: \`${getRunCommand(pm, "db:push")}\``);
4460
4469
  }
4461
4470
  if (context2.hasAuth) {
4462
- const stepNum = context2.hasDatabase ? "6" : "2";
4463
- nextSteps.push(`${stepNum}. Review auth config: <server/lib/auth.ts>`);
4471
+ nextSteps.push(`${nextStepNum()}. Review auth config: <server/lib/auth.ts>`);
4464
4472
  }
4465
4473
  if (isVite) {
4466
4474
  const buildExample = getRunCommand(pm, "build");
4467
- const buildStepNum = nextSteps.length + 1;
4468
- nextSteps.push(`${buildStepNum}. Build your app: \`${buildExample}\``);
4475
+ nextSteps.push(`${nextStepNum()}. Build your app: \`${buildExample}\``);
4469
4476
  }
4470
4477
  if (isGodot) {
4471
- const stepNum = nextSteps.length + 1;
4472
- nextSteps.push(`${stepNum}. Open in Godot Editor`);
4478
+ nextSteps.push(`${nextStepNum()}. Open in Godot Editor`);
4473
4479
  }
4474
4480
  if (context2.apiDirectory) {
4475
- const stepNum = nextSteps.length + 1;
4476
- nextSteps.push(`${stepNum}. Customize API routes: <${context2.apiDirectory}>`);
4481
+ nextSteps.push(`${nextStepNum()}. Customize API routes: <${context2.apiDirectory}>`);
4477
4482
  }
4478
- const deployStep = nextSteps.length + 1;
4479
- nextSteps.push(`${deployStep}. Deploy: \`playcademy deploy\``);
4483
+ nextSteps.push(`${nextStepNum()}. Deploy: \`playcademy deploy\``);
4480
4484
  nextSteps.push("");
4481
4485
  nextSteps.push(`Learn more: <<${DOCS_URL}>>`);
4482
4486
  logger.admonition("tip", "Next Steps", nextSteps);
@@ -5937,6 +5941,7 @@ async function promptForProjectDirectory(projectDir) {
5937
5941
  }
5938
5942
  const targetDir = resolve8(process.cwd(), dir);
5939
5943
  if (existsSync18(targetDir)) {
5944
+ logger.newLine();
5940
5945
  logger.admonition("warning", "Directory Exists", [`Directory "${dir}" already exists.`]);
5941
5946
  logger.newLine();
5942
5947
  const shouldContinue = await confirm4({
@@ -6025,7 +6030,10 @@ async function setupProjectFiles(dirInfo, engineSelection, projectName, integrat
6025
6030
  }
6026
6031
  }
6027
6032
  if (integrationOptions.customRoutes || integrationOptions.database || integrationOptions.auth) {
6028
- const scaffoldDepsAdded = await scaffoldIntegrations(projectName, integrationOptions);
6033
+ const scaffoldDepsAdded = await scaffoldIntegrations(projectName, {
6034
+ ...integrationOptions,
6035
+ silent: true
6036
+ });
6029
6037
  if (scaffoldDepsAdded) {
6030
6038
  depsAdded = true;
6031
6039
  }
@@ -6840,7 +6848,7 @@ function resolveEmbeddedSourcePaths() {
6840
6848
  edgePlaySrc: edgePlaySrc2,
6841
6849
  constantsEntry: constantsEntry2,
6842
6850
  workspaceNodeModules: workspaceNodeModules2,
6843
- cliNodeModules: playcademyNodeModules
6851
+ cliDepsRoot: playcademyNodeModules
6844
6852
  };
6845
6853
  }
6846
6854
  const distDir = new URL(".", import.meta.url).pathname;
@@ -6850,7 +6858,7 @@ function resolveEmbeddedSourcePaths() {
6850
6858
  const monorepoEdgeSrc = join28(monorepoRoot, "packages/edge-play/src");
6851
6859
  const edgePlaySrc = isBuiltPackage ? embeddedEdgeSrc : monorepoEdgeSrc;
6852
6860
  const cliPackageRoot = isBuiltPackage ? join28(distDir, "../../..") : join28(monorepoRoot, "packages/cli");
6853
- const cliNodeModules = isBuiltPackage ? join28(cliPackageRoot, "node_modules") : monorepoRoot;
6861
+ const cliDepsRoot = isBuiltPackage ? join28(cliPackageRoot, "node_modules") : monorepoRoot;
6854
6862
  const workspaceNodeModules = join28(workspace, "node_modules");
6855
6863
  const constantsEntry = isBuiltPackage ? join28(embeddedEdgeSrc, "..", "..", "constants", "src", "index.ts") : join28(monorepoRoot, "packages", "constants", "src", "index.ts");
6856
6864
  return {
@@ -6858,12 +6866,12 @@ function resolveEmbeddedSourcePaths() {
6858
6866
  edgePlaySrc,
6859
6867
  constantsEntry,
6860
6868
  workspaceNodeModules,
6861
- cliNodeModules
6869
+ cliDepsRoot
6862
6870
  };
6863
6871
  }
6864
6872
  function createEsbuildConfig(entryCode, paths, bundleConfig, customRoutesDir, options) {
6865
6873
  const workspace = getWorkspace();
6866
- const { edgePlaySrc, constantsEntry, workspaceNodeModules, cliNodeModules } = paths;
6874
+ const { edgePlaySrc, constantsEntry, workspaceNodeModules, cliDepsRoot } = paths;
6867
6875
  return {
6868
6876
  // ──── Input Configuration ────
6869
6877
  stdin: {
@@ -6894,7 +6902,7 @@ function createEsbuildConfig(entryCode, paths, bundleConfig, customRoutesDir, op
6894
6902
  // Dev: workspace node_modules + monorepo root (hoisted deps)
6895
6903
  // Published: workspace node_modules + same (user's project)
6896
6904
  // Binary: workspace node_modules + .playcademy/node_modules (hono lives there)
6897
- nodePaths: [workspaceNodeModules, cliNodeModules],
6905
+ nodePaths: [workspaceNodeModules, cliDepsRoot],
6898
6906
  // ──── Build-time Constants ────
6899
6907
  // Inject the Playcademy config as a global constant
6900
6908
  // Code can access it via: const config = PLAYCADEMY_CONFIG
@@ -10849,10 +10857,10 @@ var INSTALL_SCRIPT_URL = "https://playcademy.net/cli";
10849
10857
  import { execSync as execSync8 } from "node:child_process";
10850
10858
  var PACKAGE_MANAGERS = ["bun", "pnpm", "yarn", "npm"];
10851
10859
  var GLOBAL_LIST_COMMANDS = {
10852
- npm: "npm list -g --depth=0 2>/dev/null",
10853
- bun: "bun pm ls -g 2>/dev/null",
10854
- pnpm: "pnpm list -g --depth=0 2>/dev/null",
10855
- yarn: "yarn global list 2>/dev/null"
10860
+ npm: "npm list -g --depth=0",
10861
+ bun: "bun pm ls -g",
10862
+ pnpm: "pnpm list -g --depth=0",
10863
+ yarn: "yarn global list"
10856
10864
  };
10857
10865
  function runCommand(cmd) {
10858
10866
  try {
package/dist/utils.js CHANGED
@@ -2458,7 +2458,7 @@ import { existsSync as existsSync7, mkdirSync as mkdirSync2, writeFileSync as wr
2458
2458
  import { dirname as dirname4, join as join12 } from "node:path";
2459
2459
 
2460
2460
  // src/version.ts
2461
- var cliVersion = false ? "0.0.0-dev" : "0.17.4-alpha.1";
2461
+ var cliVersion = false ? "0.0.0-dev" : "0.17.5";
2462
2462
 
2463
2463
  // src/lib/deploy/embedded-sources.ts
2464
2464
  var EMBEDDED_SOURCES = null;
@@ -2524,7 +2524,7 @@ function resolveEmbeddedSourcePaths() {
2524
2524
  edgePlaySrc: edgePlaySrc2,
2525
2525
  constantsEntry: constantsEntry2,
2526
2526
  workspaceNodeModules: workspaceNodeModules2,
2527
- cliNodeModules: playcademyNodeModules
2527
+ cliDepsRoot: playcademyNodeModules
2528
2528
  };
2529
2529
  }
2530
2530
  const distDir = new URL(".", import.meta.url).pathname;
@@ -2534,7 +2534,7 @@ function resolveEmbeddedSourcePaths() {
2534
2534
  const monorepoEdgeSrc = join13(monorepoRoot, "packages/edge-play/src");
2535
2535
  const edgePlaySrc = isBuiltPackage ? embeddedEdgeSrc : monorepoEdgeSrc;
2536
2536
  const cliPackageRoot = isBuiltPackage ? join13(distDir, "../../..") : join13(monorepoRoot, "packages/cli");
2537
- const cliNodeModules = isBuiltPackage ? join13(cliPackageRoot, "node_modules") : monorepoRoot;
2537
+ const cliDepsRoot = isBuiltPackage ? join13(cliPackageRoot, "node_modules") : monorepoRoot;
2538
2538
  const workspaceNodeModules = join13(workspace, "node_modules");
2539
2539
  const constantsEntry = isBuiltPackage ? join13(embeddedEdgeSrc, "..", "..", "constants", "src", "index.ts") : join13(monorepoRoot, "packages", "constants", "src", "index.ts");
2540
2540
  return {
@@ -2542,12 +2542,12 @@ function resolveEmbeddedSourcePaths() {
2542
2542
  edgePlaySrc,
2543
2543
  constantsEntry,
2544
2544
  workspaceNodeModules,
2545
- cliNodeModules
2545
+ cliDepsRoot
2546
2546
  };
2547
2547
  }
2548
2548
  function createEsbuildConfig(entryCode, paths, bundleConfig, customRoutesDir, options) {
2549
2549
  const workspace = getWorkspace();
2550
- const { edgePlaySrc, constantsEntry, workspaceNodeModules, cliNodeModules } = paths;
2550
+ const { edgePlaySrc, constantsEntry, workspaceNodeModules, cliDepsRoot } = paths;
2551
2551
  return {
2552
2552
  // ──── Input Configuration ────
2553
2553
  stdin: {
@@ -2578,7 +2578,7 @@ function createEsbuildConfig(entryCode, paths, bundleConfig, customRoutesDir, op
2578
2578
  // Dev: workspace node_modules + monorepo root (hoisted deps)
2579
2579
  // Published: workspace node_modules + same (user's project)
2580
2580
  // Binary: workspace node_modules + .playcademy/node_modules (hono lives there)
2581
- nodePaths: [workspaceNodeModules, cliNodeModules],
2581
+ nodePaths: [workspaceNodeModules, cliDepsRoot],
2582
2582
  // ──── Build-time Constants ────
2583
2583
  // Inject the Playcademy config as a global constant
2584
2584
  // Code can access it via: const config = PLAYCADEMY_CONFIG
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var cliVersion = false ? "0.0.0-dev" : "0.17.4-alpha.1";
2
+ var cliVersion = false ? "0.0.0-dev" : "0.17.5";
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.17.4-alpha.1",
3
+ "version": "0.17.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {