playcademy 0.24.0 → 0.24.1-beta.1

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.16",
1068
+ version: "0.0.17-beta.1",
1069
1069
  type: "module",
1070
1070
  exports: {
1071
1071
  "./server": {
@@ -1137,6 +1137,7 @@ var TSCONFIG_REQUIRED_INCLUDES = [
1137
1137
 
1138
1138
  // src/constants/bucket.ts
1139
1139
  var BUCKET_ALWAYS_SKIP = [".git", ".DS_Store", ".gitignore", ...ENV_FILES];
1140
+ var PRESIGNED_UPLOAD_THRESHOLD = 4 * 1024 * 1024;
1140
1141
 
1141
1142
  // src/constants/cloudflare.ts
1142
1143
  var QUEUE_NAME_PREFIX = "playcademy";
@@ -2933,7 +2934,7 @@ import { existsSync as existsSync11, mkdirSync as mkdirSync5, readFileSync as re
2933
2934
  import { join as join13 } from "node:path";
2934
2935
 
2935
2936
  // src/version.ts
2936
- var cliVersion = false ? "0.0.0-dev" : "0.24.0";
2937
+ var cliVersion = false ? "0.0.0-dev" : "0.24.1-beta.1";
2937
2938
 
2938
2939
  // src/lib/init/database.ts
2939
2940
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -64,6 +64,7 @@ declare const AUTH_CONFIG_FILE = "auth.ts";
64
64
  * - .env* - Environment files (should never be uploaded to storage)
65
65
  */
66
66
  declare const BUCKET_ALWAYS_SKIP: readonly [".git", ".DS_Store", ".gitignore", ".env", ".env.development", ".env.local"];
67
+ declare const PRESIGNED_UPLOAD_THRESHOLD: number;
67
68
 
68
69
  /**
69
70
  * Cloudflare-related constants
@@ -344,4 +345,4 @@ declare const CONFIG_FILE_NAMES: string[];
344
345
  */
345
346
  declare const DOCS_URL = "https://docs.dev.playcademy.net/platform";
346
347
 
347
- export { AUTH_API_SUBDIRECTORY, AUTH_CONFIG_FILE, AUTH_PROVIDER_NAMES, BETTER_AUTH_VERSION, BUCKET_ALWAYS_SKIP, CALLBACK_PATH, CALLBACK_PORT, CLI_DEFAULT_OUTPUTS, CLI_DIRECTORIES, CLI_FILES, CLI_USER_DIRECTORIES, CLOUDFLARE_BINDINGS, CONFIG_FILE_NAMES, DB_FILES, DEFAULT_API_ROUTES_DIRECTORY, DEFAULT_DATABASE_DIRECTORY, DEFAULT_PORTS, DEFAULT_TEMPLATE_REF, DOCS_URL, DRIZZLE_CONFIG_FILES, ENV_EXAMPLE_FILE, ENV_FILES, GODOT_ADDON_URL, GODOT_BUILD_DIRECTORIES, GODOT_BUILD_OUTPUTS, GODOT_EXECUTABLE_PATTERNS, GODOT_EXPORT_PRESETS_FILE, GODOT_PROJECT_FILE, GODOT_WEB_PLATFORM, HOOKS_FILE, MINIFLARE_D1_DIRECTORY, OAUTH_CALLBACK_URL_PATTERN, PLACEHOLDER_APP_URL, PLAYCADEMY_AUTH_VERSION, PUBLIC_DIRECTORY, QUEUE_NAME_PREFIX, SAMPLE_API_SUBDIRECTORY, SAMPLE_BUCKET_FILENAME, SAMPLE_CUSTOM_FILENAME, SAMPLE_DATABASE_FILENAME, SAMPLE_KV_FILENAME, SCHEMA_SUBDIRECTORY, SELF_WORKER_NAME_BINDING, SERVER_LIB_DIRECTORY, SERVER_ROOT_DIRECTORY, SSO_AUTH_TIMEOUT_MS, TEMPLATE_RENAME_FILES, TEMPLATE_REPOS, TSCONFIG_APP_JSON, TSCONFIG_FILES, TSCONFIG_JSON, TSCONFIG_REQUIRED_INCLUDES, WORKSPACE_NAME, cacheVersionDir, nativeBinaryPath };
348
+ export { AUTH_API_SUBDIRECTORY, AUTH_CONFIG_FILE, AUTH_PROVIDER_NAMES, BETTER_AUTH_VERSION, BUCKET_ALWAYS_SKIP, CALLBACK_PATH, CALLBACK_PORT, CLI_DEFAULT_OUTPUTS, CLI_DIRECTORIES, CLI_FILES, CLI_USER_DIRECTORIES, CLOUDFLARE_BINDINGS, CONFIG_FILE_NAMES, DB_FILES, DEFAULT_API_ROUTES_DIRECTORY, DEFAULT_DATABASE_DIRECTORY, DEFAULT_PORTS, DEFAULT_TEMPLATE_REF, DOCS_URL, DRIZZLE_CONFIG_FILES, ENV_EXAMPLE_FILE, ENV_FILES, GODOT_ADDON_URL, GODOT_BUILD_DIRECTORIES, GODOT_BUILD_OUTPUTS, GODOT_EXECUTABLE_PATTERNS, GODOT_EXPORT_PRESETS_FILE, GODOT_PROJECT_FILE, GODOT_WEB_PLATFORM, HOOKS_FILE, MINIFLARE_D1_DIRECTORY, OAUTH_CALLBACK_URL_PATTERN, PLACEHOLDER_APP_URL, PLAYCADEMY_AUTH_VERSION, PRESIGNED_UPLOAD_THRESHOLD, PUBLIC_DIRECTORY, QUEUE_NAME_PREFIX, SAMPLE_API_SUBDIRECTORY, SAMPLE_BUCKET_FILENAME, SAMPLE_CUSTOM_FILENAME, SAMPLE_DATABASE_FILENAME, SAMPLE_KV_FILENAME, SCHEMA_SUBDIRECTORY, SELF_WORKER_NAME_BINDING, SERVER_LIB_DIRECTORY, SERVER_ROOT_DIRECTORY, SSO_AUTH_TIMEOUT_MS, TEMPLATE_RENAME_FILES, TEMPLATE_REPOS, TSCONFIG_APP_JSON, TSCONFIG_FILES, TSCONFIG_JSON, TSCONFIG_REQUIRED_INCLUDES, WORKSPACE_NAME, cacheVersionDir, nativeBinaryPath };
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.16",
23
+ version: "0.0.17-beta.1",
24
24
  type: "module",
25
25
  exports: {
26
26
  "./server": {
@@ -99,6 +99,7 @@ var TSCONFIG_REQUIRED_INCLUDES = [
99
99
 
100
100
  // src/constants/bucket.ts
101
101
  var BUCKET_ALWAYS_SKIP = [".git", ".DS_Store", ".gitignore", ...ENV_FILES];
102
+ var PRESIGNED_UPLOAD_THRESHOLD = 4 * 1024 * 1024;
102
103
 
103
104
  // src/constants/cloudflare.ts
104
105
  var CLOUDFLARE_BINDINGS = {
@@ -300,6 +301,7 @@ export {
300
301
  PLAYCADEMY_AUTH_VERSION,
301
302
  PLAYCADEMY_BASE_URLS,
302
303
  PLAYCADEMY_DOMAINS,
304
+ PRESIGNED_UPLOAD_THRESHOLD,
303
305
  PUBLIC_DIRECTORY,
304
306
  QUEUE_NAME_PREFIX,
305
307
  SAMPLE_API_SUBDIRECTORY,
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.16",
39
+ version: "0.0.17-beta.1",
40
40
  type: "module",
41
41
  exports: {
42
42
  "./server": {
@@ -91,6 +91,7 @@ var ENV_FILES = [
91
91
 
92
92
  // src/constants/bucket.ts
93
93
  var BUCKET_ALWAYS_SKIP = [".git", ".DS_Store", ".gitignore", ...ENV_FILES];
94
+ var PRESIGNED_UPLOAD_THRESHOLD = 4 * 1024 * 1024;
94
95
 
95
96
  // src/constants/cloudflare.ts
96
97
  var CLOUDFLARE_BINDINGS = {
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.16",
329
+ version: "0.0.17-beta.1",
330
330
  type: "module",
331
331
  exports: {
332
332
  "./server": {
@@ -398,6 +398,7 @@ var TSCONFIG_REQUIRED_INCLUDES = [
398
398
 
399
399
  // src/constants/bucket.ts
400
400
  var BUCKET_ALWAYS_SKIP = [".git", ".DS_Store", ".gitignore", ...ENV_FILES];
401
+ var PRESIGNED_UPLOAD_THRESHOLD = 4 * 1024 * 1024;
401
402
 
402
403
  // src/constants/cloudflare.ts
403
404
  var CLOUDFLARE_BINDINGS = {
@@ -4196,7 +4197,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, readFileSync as rea
4196
4197
  import { join as join13 } from "node:path";
4197
4198
 
4198
4199
  // src/version.ts
4199
- var cliVersion = false ? "0.0.0-dev" : "0.24.0";
4200
+ var cliVersion = false ? "0.0.0-dev" : "0.24.1-beta.1";
4200
4201
 
4201
4202
  // src/lib/init/database.ts
4202
4203
  var drizzleConfigTemplate = loadTemplateString("database/drizzle-config.ts");
@@ -12751,6 +12752,31 @@ function getBucketKey(relativePath, prefix) {
12751
12752
  }
12752
12753
 
12753
12754
  // src/lib/bucket/bulk.ts
12755
+ var R2_ERROR_HINTS = {
12756
+ ExpiredToken: "the credentials used to sign the upload URL have expired",
12757
+ TokenRefreshRequired: "the credentials used to sign the upload URL have expired",
12758
+ AccessDenied: "the presigned URL was rejected \u2014 the upload token may have expired",
12759
+ SignatureDoesNotMatch: "upload signature mismatch \u2014 likely a Content-Type header discrepancy"
12760
+ };
12761
+ async function parsePresignedUploadError(res, key) {
12762
+ try {
12763
+ const xml = await res.text();
12764
+ const code = xml.match(/<Code>(.+?)<\/Code>/)?.[1];
12765
+ const message = xml.match(/<Message>(.+?)<\/Message>/)?.[1];
12766
+ const hint = code ? R2_ERROR_HINTS[code] : void 0;
12767
+ if (hint) {
12768
+ return `Direct upload failed for ${key}: ${res.status} (${hint})`;
12769
+ }
12770
+ if (code && message) {
12771
+ return `Direct upload failed for ${key}: ${res.status} (${code}: ${message})`;
12772
+ }
12773
+ if (code) {
12774
+ return `Direct upload failed for ${key}: ${res.status} (${code})`;
12775
+ }
12776
+ } catch {
12777
+ }
12778
+ return `Direct upload failed for ${key}: ${res.status} ${res.statusText}`;
12779
+ }
12754
12780
  function collectBulkFiles(directory) {
12755
12781
  const gitignorePatterns = loadGitignorePatterns(directory);
12756
12782
  const files = collectFiles(directory, directory, gitignorePatterns);
@@ -12818,7 +12844,7 @@ function outputUploadResults({
12818
12844
  }
12819
12845
  logger.newLine();
12820
12846
  }
12821
- async function uploadFilesRemote(files, gameSlug, prefix, uploadFn) {
12847
+ async function uploadFilesRemote(files, gameSlug, prefix, uploadFn, initiateUploadFn) {
12822
12848
  const totalSize = files.reduce((sum, f) => sum + f.size, 0);
12823
12849
  await runStep(
12824
12850
  `Uploading ${files.length} files ${dim9(`[${formatBytes(totalSize)}]`)}`,
@@ -12827,7 +12853,19 @@ async function uploadFilesRemote(files, gameSlug, prefix, uploadFn) {
12827
12853
  const fileBuffer = readFileSync13(file.absolutePath);
12828
12854
  const contentType = getContentType(file.absolutePath);
12829
12855
  const key = getBucketKey(file.relativePath, prefix);
12830
- await uploadFn(gameSlug, key, fileBuffer, contentType);
12856
+ if (initiateUploadFn && file.size > PRESIGNED_UPLOAD_THRESHOLD) {
12857
+ const { presignedUrl } = await initiateUploadFn(gameSlug, key, contentType);
12858
+ const res = await fetch(presignedUrl, {
12859
+ method: "PUT",
12860
+ body: fileBuffer,
12861
+ headers: { "Content-Type": contentType }
12862
+ });
12863
+ if (!res.ok) {
12864
+ throw new Error(await parsePresignedUploadError(res, key));
12865
+ }
12866
+ } else {
12867
+ await uploadFn(gameSlug, key, fileBuffer, contentType);
12868
+ }
12831
12869
  }
12832
12870
  },
12833
12871
  `Uploaded ${files.length} files ${dim9(`[${formatBytes(totalSize)}]`)}`
@@ -14201,6 +14239,7 @@ export {
14201
14239
  normalizeVersion,
14202
14240
  outputDryRunResults,
14203
14241
  outputUploadResults,
14242
+ parsePresignedUploadError,
14204
14243
  persistChannel,
14205
14244
  prepareDeploymentContext,
14206
14245
  printDebugInfo,
@@ -327,9 +327,9 @@ var init_routes = __esm({
327
327
  // ../edge-play/src/entry/metadata.ts
328
328
  function getRuntimeMetadata() {
329
329
  return {
330
- cliVersion: true ? "0.24.0" : "0.0.0-dev",
331
- sdkVersion: true ? "0.12.0" : "0.0.0-dev",
332
- buildId: true ? "872f0fb94ddd" : "dev-source"
330
+ cliVersion: true ? "0.24.1-beta.1" : "0.0.0-dev",
331
+ sdkVersion: true ? "0.12.1-beta.1" : "0.0.0-dev",
332
+ buildId: true ? "aeaabde607c1" : "dev-source"
333
333
  };
334
334
  }
335
335
  var init_metadata = __esm({
@@ -1,7 +1,7 @@
1
1
  {
2
- "cliVersion": "0.24.0",
3
- "sdkVersion": "0.12.0",
4
- "runtimeBuildId": "872f0fb94ddd",
5
- "inputFingerprint": "872f0fb94ddd7e8c5c1085e283b03a247d3fb2007148274ab59d59ea4369d2ea",
2
+ "cliVersion": "0.24.1-beta.1",
3
+ "sdkVersion": "0.12.1-beta.1",
4
+ "runtimeBuildId": "aeaabde607c1",
5
+ "inputFingerprint": "aeaabde607c1b53a900e531d03920faccf02bb5286c3f27c50819124c62722a7",
6
6
  "entry": "index.js"
7
7
  }
package/dist/utils.js CHANGED
@@ -359,7 +359,7 @@ var DEFAULT_API_ROUTES_DIRECTORY = join2(SERVER_ROOT_DIRECTORY, "api");
359
359
  // ../better-auth/package.json
360
360
  var package_default = {
361
361
  name: "@playcademy/better-auth",
362
- version: "0.0.16",
362
+ version: "0.0.17-beta.1",
363
363
  type: "module",
364
364
  exports: {
365
365
  "./server": {
@@ -428,6 +428,7 @@ var TSCONFIG_REQUIRED_INCLUDES = [
428
428
 
429
429
  // src/constants/bucket.ts
430
430
  var BUCKET_ALWAYS_SKIP = [".git", ".DS_Store", ".gitignore", ...ENV_FILES];
431
+ var PRESIGNED_UPLOAD_THRESHOLD = 4 * 1024 * 1024;
431
432
 
432
433
  // src/constants/cloudflare.ts
433
434
  var CLOUDFLARE_BINDINGS = {
@@ -2485,7 +2486,7 @@ import { existsSync as existsSync9, mkdirSync as mkdirSync2, writeFileSync as wr
2485
2486
  import { dirname as dirname4, join as join14 } from "node:path";
2486
2487
 
2487
2488
  // src/version.ts
2488
- var cliVersion = false ? "0.0.0-dev" : "0.24.0";
2489
+ var cliVersion = false ? "0.0.0-dev" : "0.24.1-beta.1";
2489
2490
 
2490
2491
  // src/lib/build/binary-resource.ts
2491
2492
  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.24.0";
2
+ var cliVersion = false ? "0.0.0-dev" : "0.24.1-beta.1";
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.24.0",
3
+ "version": "0.24.1-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {