playcademy 0.32.0 → 0.32.1-beta.2
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/bucket.js +1 -1
- package/dist/cli.js +57 -19
- package/dist/constants.js +1 -1
- package/dist/db.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +291 -239
- package/dist/runtime/dashboard-runtime/manifest.json +4 -4
- package/dist/runtime/game-runtime/index.js +256 -22
- package/dist/runtime/game-runtime/manifest.json +4 -4
- package/dist/templates/playcademy-env.d.ts.template +10 -0
- package/dist/utils.js +167 -121
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/dist/bucket.js
CHANGED
|
@@ -42,7 +42,7 @@ var GAME_API_ROUTES_DIRECTORY = `${GAME_SERVER_ROOT_DIRECTORY}/api`;
|
|
|
42
42
|
// ../better-auth/package.json
|
|
43
43
|
var package_default = {
|
|
44
44
|
name: "@playcademy/better-auth",
|
|
45
|
-
version: "0.0.
|
|
45
|
+
version: "0.0.25-beta.2",
|
|
46
46
|
type: "module",
|
|
47
47
|
exports: {
|
|
48
48
|
"./server": {
|
package/dist/cli.js
CHANGED
|
@@ -1208,7 +1208,7 @@ var SAMPLE_BUCKET_FILENAME = "bucket.ts";
|
|
|
1208
1208
|
// ../better-auth/package.json
|
|
1209
1209
|
var package_default = {
|
|
1210
1210
|
name: "@playcademy/better-auth",
|
|
1211
|
-
version: "0.0.
|
|
1211
|
+
version: "0.0.25-beta.2",
|
|
1212
1212
|
type: "module",
|
|
1213
1213
|
exports: {
|
|
1214
1214
|
"./server": {
|
|
@@ -3045,7 +3045,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
|
|
|
3045
3045
|
import { join as join12 } from "node:path";
|
|
3046
3046
|
|
|
3047
3047
|
// src/version.ts
|
|
3048
|
-
var cliVersion = false ? "0.0.0-dev" : "0.32.
|
|
3048
|
+
var cliVersion = false ? "0.0.0-dev" : "0.32.1-beta.2";
|
|
3049
3049
|
|
|
3050
3050
|
// src/lib/init/database.ts
|
|
3051
3051
|
var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
|
|
@@ -3448,8 +3448,8 @@ async function selectConfigFormat(hasPackageJson2) {
|
|
|
3448
3448
|
|
|
3449
3449
|
// src/lib/init/types.ts
|
|
3450
3450
|
import { execSync as execSync4 } from "node:child_process";
|
|
3451
|
-
import { existsSync as
|
|
3452
|
-
import { dirname as dirname5, join as
|
|
3451
|
+
import { existsSync as existsSync16, readFileSync as readFileSync9, writeFileSync as writeFileSync9 } from "node:fs";
|
|
3452
|
+
import { dirname as dirname5, join as join17, resolve as resolve8 } from "node:path";
|
|
3453
3453
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
3454
3454
|
|
|
3455
3455
|
// ../utils/src/error.ts
|
|
@@ -3458,25 +3458,53 @@ function errorMessage(err) {
|
|
|
3458
3458
|
}
|
|
3459
3459
|
|
|
3460
3460
|
// src/lib/bundle/game-backend.ts
|
|
3461
|
-
import { existsSync as
|
|
3462
|
-
import { join as
|
|
3461
|
+
import { existsSync as existsSync14 } from "node:fs";
|
|
3462
|
+
import { join as join15 } from "node:path";
|
|
3463
|
+
|
|
3464
|
+
// src/lib/bundle/game-metrics.ts
|
|
3465
|
+
var METRICS_RESOLVER_EXTENSIONS = [".ts", ".tsx", ".js", ".mjs", ".cjs"];
|
|
3466
|
+
var GAME_METRICS_RESOLVER_PATH = "server/lib/metrics";
|
|
3467
|
+
|
|
3468
|
+
// src/lib/bundle/game-skills.ts
|
|
3469
|
+
import { existsSync as existsSync13 } from "fs";
|
|
3470
|
+
import { join as join14 } from "path";
|
|
3471
|
+
var GAME_SKILLS_RESOLVER_PATH = "server/lib/skills";
|
|
3472
|
+
function discoverGameSkillsResolver(workspace = getWorkspace()) {
|
|
3473
|
+
for (const extension of METRICS_RESOLVER_EXTENSIONS) {
|
|
3474
|
+
const relativePath = `${GAME_SKILLS_RESOLVER_PATH}${extension}`;
|
|
3475
|
+
if (existsSync13(join14(workspace, relativePath))) {
|
|
3476
|
+
return { file: relativePath };
|
|
3477
|
+
}
|
|
3478
|
+
}
|
|
3479
|
+
return null;
|
|
3480
|
+
}
|
|
3481
|
+
|
|
3482
|
+
// src/lib/bundle/game-backend.ts
|
|
3463
3483
|
var HOOKS_EXTENSIONS = [".ts", ".tsx", ".js", ".mjs", ".cjs"];
|
|
3464
3484
|
function resolveGameRoutesDir(config) {
|
|
3465
3485
|
const customRoutes = config?.integrations?.customRoutes;
|
|
3466
3486
|
return typeof customRoutes === "object" && customRoutes.directory || GAME_API_ROUTES_DIRECTORY;
|
|
3467
3487
|
}
|
|
3468
3488
|
function getGameRoutesDirectory(projectPath, config) {
|
|
3469
|
-
return
|
|
3489
|
+
return join15(projectPath, resolveGameRoutesDir(config));
|
|
3470
3490
|
}
|
|
3471
3491
|
function hasGameCustomRoutes(projectPath, config) {
|
|
3472
3492
|
const customRoutesDir = getGameRoutesDirectory(projectPath, config);
|
|
3473
|
-
return
|
|
3493
|
+
return existsSync14(customRoutesDir);
|
|
3474
3494
|
}
|
|
3475
3495
|
function hasGameHooksModule(workspace) {
|
|
3476
3496
|
return HOOKS_EXTENSIONS.some(
|
|
3477
|
-
(ext) =>
|
|
3497
|
+
(ext) => existsSync14(join15(workspace, GAME_SERVER_ROOT_DIRECTORY, `${GAME_HOOKS_FILE}${ext}`))
|
|
3478
3498
|
);
|
|
3479
3499
|
}
|
|
3500
|
+
function hasGameMetricsResolverModule(workspace) {
|
|
3501
|
+
return METRICS_RESOLVER_EXTENSIONS.some(
|
|
3502
|
+
(ext) => existsSync14(join15(workspace, `${GAME_METRICS_RESOLVER_PATH}${ext}`))
|
|
3503
|
+
);
|
|
3504
|
+
}
|
|
3505
|
+
function hasGameSkillsResolverModule(workspace) {
|
|
3506
|
+
return discoverGameSkillsResolver(workspace) !== null;
|
|
3507
|
+
}
|
|
3480
3508
|
|
|
3481
3509
|
// src/lib/secrets/diff.ts
|
|
3482
3510
|
import { dim as dim4, green as green3, yellow as yellow4 } from "colorette";
|
|
@@ -3496,8 +3524,8 @@ function hasKVSetup(config) {
|
|
|
3496
3524
|
|
|
3497
3525
|
// src/lib/init/tsconfig.ts
|
|
3498
3526
|
init_file_loader();
|
|
3499
|
-
import { existsSync as
|
|
3500
|
-
import { join as
|
|
3527
|
+
import { existsSync as existsSync15, readFileSync as readFileSync8, writeFileSync as writeFileSync8 } from "fs";
|
|
3528
|
+
import { join as join16 } from "path";
|
|
3501
3529
|
function hasAllRequiredIncludes(config, required) {
|
|
3502
3530
|
if (!config.include) {
|
|
3503
3531
|
return false;
|
|
@@ -3568,8 +3596,8 @@ function addToIncludeArrayPreservingComments(content, required) {
|
|
|
3568
3596
|
}
|
|
3569
3597
|
async function ensureTsconfigIncludes(workspace, required = TSCONFIG_REQUIRED_INCLUDES) {
|
|
3570
3598
|
for (const filename of TSCONFIG_FILES) {
|
|
3571
|
-
const configPath =
|
|
3572
|
-
if (
|
|
3599
|
+
const configPath = join16(workspace, filename);
|
|
3600
|
+
if (existsSync15(configPath)) {
|
|
3573
3601
|
try {
|
|
3574
3602
|
const config = await loadFile(configPath, {
|
|
3575
3603
|
parseJson: true,
|
|
@@ -3613,6 +3641,7 @@ function detectBackendFeatures(workspace, config) {
|
|
|
3613
3641
|
hasRoutes: hasGameCustomRoutes(workspace, config),
|
|
3614
3642
|
hasQueues: hasQueueSetup(config),
|
|
3615
3643
|
hasHooks: hasGameHooksModule(workspace),
|
|
3644
|
+
hasResolvers: hasGameMetricsResolverModule(workspace) || hasGameSkillsResolverModule(workspace),
|
|
3616
3645
|
hasSecrets: hasEnvFile(workspace)
|
|
3617
3646
|
};
|
|
3618
3647
|
}
|
|
@@ -3641,8 +3670,8 @@ function getDepVersions() {
|
|
|
3641
3670
|
}
|
|
3642
3671
|
}
|
|
3643
3672
|
async function setupPlaycademyDependencies(workspace) {
|
|
3644
|
-
const playcademyDir =
|
|
3645
|
-
const playcademyPkgPath =
|
|
3673
|
+
const playcademyDir = join17(workspace, CLI_DIRECTORIES.WORKSPACE);
|
|
3674
|
+
const playcademyPkgPath = join17(playcademyDir, "package.json");
|
|
3646
3675
|
const { honoVersion, workersTypesVersion } = getDepVersions();
|
|
3647
3676
|
const playcademyPkg = {
|
|
3648
3677
|
private: true,
|
|
@@ -3676,8 +3705,17 @@ function generateBindingsTypeString(features, queueBindings = []) {
|
|
|
3676
3705
|
${bindings.join("\n")}` : "";
|
|
3677
3706
|
}
|
|
3678
3707
|
function generateAuthVariablesString(hasAuth, hasAuthFile) {
|
|
3679
|
-
const
|
|
3680
|
-
|
|
3708
|
+
const sdkImports = [
|
|
3709
|
+
"import type { UserInfo } from './node_modules/@playcademy/sdk/dist/types.d.ts'",
|
|
3710
|
+
"import type { PlaycademyClient, PlaycademyConfig } from './node_modules/@playcademy/sdk/dist/server.d.ts'"
|
|
3711
|
+
];
|
|
3712
|
+
const authImport = `
|
|
3713
|
+
${[...sdkImports, ...hasAuthFile ? ["import type { User } from './server/lib/auth'"] : []].join("\n")}`;
|
|
3714
|
+
const variableFields = [
|
|
3715
|
+
" sdk: PlaycademyClient",
|
|
3716
|
+
" config: PlaycademyConfig",
|
|
3717
|
+
" playcademyUser?: UserInfo"
|
|
3718
|
+
];
|
|
3681
3719
|
if (hasAuth && hasAuthFile) {
|
|
3682
3720
|
variableFields.push(" user?: User");
|
|
3683
3721
|
}
|
|
@@ -3738,14 +3776,14 @@ async function ensurePlaycademyTypes(options = {}) {
|
|
|
3738
3776
|
const bindingsStr = generateBindingsTypeString(features, queueBindings);
|
|
3739
3777
|
const secretsStr = await generateSecretsTypeString(workspace, verbose);
|
|
3740
3778
|
const hasAuth = Boolean(config.integrations?.auth);
|
|
3741
|
-
const hasAuthFile =
|
|
3779
|
+
const hasAuthFile = existsSync16(join17(workspace, "server/lib/auth.ts"));
|
|
3742
3780
|
const authVariablesString = generateAuthVariablesString(hasAuth, hasAuthFile);
|
|
3743
3781
|
let envContent = playcademyEnvTemplate.replace("{{BINDINGS}}", bindingsStr);
|
|
3744
3782
|
envContent = envContent.replace("{{SECRETS}}", secretsStr);
|
|
3745
3783
|
envContent = envContent.replace("{{AUTH_IMPORT}}", authVariablesString.authImport);
|
|
3746
3784
|
envContent = envContent.replace("{{VARIABLES}}", authVariablesString.variables);
|
|
3747
3785
|
envContent = envContent.replace("{{CONTEXT_VARS}}", authVariablesString.contextVars);
|
|
3748
|
-
const envPath =
|
|
3786
|
+
const envPath = join17(workspace, "playcademy-env.d.ts");
|
|
3749
3787
|
writeFileSync9(envPath, envContent);
|
|
3750
3788
|
if (verbose) {
|
|
3751
3789
|
logger.success("Generated `playcademy-env.d.ts`");
|
package/dist/constants.js
CHANGED
package/dist/db.js
CHANGED
|
@@ -2333,7 +2333,7 @@ var GAME_API_ROUTES_DIRECTORY = `${GAME_SERVER_ROOT_DIRECTORY}/api`;
|
|
|
2333
2333
|
// ../better-auth/package.json
|
|
2334
2334
|
var package_default = {
|
|
2335
2335
|
name: "@playcademy/better-auth",
|
|
2336
|
-
version: "0.0.
|
|
2336
|
+
version: "0.0.25-beta.2",
|
|
2337
2337
|
type: "module",
|
|
2338
2338
|
exports: {
|
|
2339
2339
|
"./server": {
|
package/dist/index.d.ts
CHANGED
|
@@ -178,6 +178,8 @@ interface GameBackendFeatures {
|
|
|
178
178
|
hasQueues: boolean;
|
|
179
179
|
/** server/hooks.ts exists */
|
|
180
180
|
hasHooks: boolean;
|
|
181
|
+
/** server/lib/metrics.ts or server/lib/skills.ts exists */
|
|
182
|
+
hasResolvers: boolean;
|
|
181
183
|
/** .env files exist */
|
|
182
184
|
hasSecrets: boolean;
|
|
183
185
|
}
|