shipthis 0.1.41 → 0.1.43

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.
Files changed (93) hide show
  1. package/README.md +9 -7
  2. package/assets/markdown/confirm-change-android-build-method.md.ejs +13 -0
  3. package/dist/{AppleBundleIdDetails-BJC7GCx_.js → AppleBundleIdDetails-bMqPqmP0.js} +9 -7
  4. package/dist/{Command-Cj6F5B5a.js → Command-cqn3WLlP.js} +4 -3
  5. package/dist/{CommandGame-CuvuH-z6.js → CommandGame-DMQT0sL_.js} +2 -2
  6. package/dist/{Create-pfGYcKu4.js → Create-Cs9HG9xO.js} +5 -3
  7. package/dist/{GameStatus-ZSe-qG3y.js → GameStatus-lv2SW-6H.js} +4 -3
  8. package/dist/{Import-D046HBaF.js → Import-DOQrR8wW.js} +6 -4
  9. package/dist/{JobLogTail-Da8GuReK.js → JobLogTail-CWYxQTq4.js} +31 -17
  10. package/dist/JobProgress-B07Y2FLb.js +253 -0
  11. package/dist/{JobStatusTable-DVJjHw97.js → JobStatusTable-B0A1z1zq.js} +3 -4
  12. package/dist/{ProjectCredentialsTable-BJJz7W1P.js → ProjectCredentialsTable-CyJ7o8yD.js} +4 -3
  13. package/dist/{UserCredentialsTable-CSynIVHU.js → UserCredentialsTable-C8_skPFY.js} +4 -3
  14. package/dist/{baseAppleCommand-Aq-Eaw_K.js → baseAppleCommand-Cfoy8Tx_.js} +1 -1
  15. package/dist/{baseCommand-CTn3KGH3.js → baseCommand-B23l0hCp.js} +82 -111
  16. package/dist/{baseGameAndroidCommand-DRzVMKuG.js → baseGameAndroidCommand-Dh4xXVW1.js} +4 -3
  17. package/dist/{baseGameCommand-8VL7xe-O.js → baseGameCommand-P7Vyz2vZ.js} +5 -3
  18. package/dist/commands/apiKey/create.js +6 -6
  19. package/dist/commands/apiKey/list.js +6 -6
  20. package/dist/commands/apiKey/revoke.js +6 -6
  21. package/dist/commands/apple/apiKey/create.js +9 -9
  22. package/dist/commands/apple/apiKey/delete.js +7 -7
  23. package/dist/commands/apple/apiKey/export.js +8 -8
  24. package/dist/commands/apple/apiKey/import.js +8 -8
  25. package/dist/commands/apple/apiKey/status.js +7 -7
  26. package/dist/commands/apple/certificate/create.js +9 -9
  27. package/dist/commands/apple/certificate/delete.js +7 -7
  28. package/dist/commands/apple/certificate/export.js +8 -8
  29. package/dist/commands/apple/certificate/import.js +8 -8
  30. package/dist/commands/apple/certificate/status.js +7 -7
  31. package/dist/commands/apple/login.js +5 -5
  32. package/dist/commands/apple/status.js +6 -6
  33. package/dist/commands/dashboard.js +5 -5
  34. package/dist/commands/game/android/apiKey/connect.js +11 -11
  35. package/dist/commands/game/android/apiKey/create.js +13 -13
  36. package/dist/commands/game/android/apiKey/delete.js +7 -7
  37. package/dist/commands/game/android/apiKey/export.js +9 -9
  38. package/dist/commands/game/android/apiKey/import.js +9 -9
  39. package/dist/commands/game/android/apiKey/invite.js +6 -6
  40. package/dist/commands/game/android/apiKey/policy.js +6 -6
  41. package/dist/commands/game/android/apiKey/status.js +9 -9
  42. package/dist/commands/game/android/keyStore/create.js +10 -10
  43. package/dist/commands/game/android/keyStore/delete.js +7 -7
  44. package/dist/commands/game/android/keyStore/export.js +8 -8
  45. package/dist/commands/game/android/keyStore/import.js +11 -11
  46. package/dist/commands/game/android/keyStore/status.js +8 -8
  47. package/dist/commands/game/android/status.js +5 -5
  48. package/dist/commands/game/build/download.js +6 -6
  49. package/dist/commands/game/build/list.js +7 -7
  50. package/dist/commands/game/create.js +5 -5
  51. package/dist/commands/game/details.js +6 -6
  52. package/dist/commands/game/export.js +5 -5
  53. package/dist/commands/game/ios/app/addTester.js +7 -7
  54. package/dist/commands/game/ios/app/create.js +8 -7
  55. package/dist/commands/game/ios/app/status.js +9 -9
  56. package/dist/commands/game/ios/app/sync.js +7 -7
  57. package/dist/commands/game/ios/profile/create.js +9 -9
  58. package/dist/commands/game/ios/profile/delete.js +7 -7
  59. package/dist/commands/game/ios/profile/export.js +8 -8
  60. package/dist/commands/game/ios/profile/import.js +8 -8
  61. package/dist/commands/game/ios/profile/status.js +9 -9
  62. package/dist/commands/game/ios/status.js +11 -11
  63. package/dist/commands/game/ios/wizard.js +6 -6
  64. package/dist/commands/game/job/list.js +6 -6
  65. package/dist/commands/game/job/status.js +11 -11
  66. package/dist/commands/game/list.js +6 -6
  67. package/dist/commands/game/ship.js +32 -15
  68. package/dist/commands/game/status.js +8 -8
  69. package/dist/commands/game/wizard.js +80 -30
  70. package/dist/commands/internal/fastlane.js +5 -5
  71. package/dist/commands/internal/readme.js +5 -5
  72. package/dist/commands/login.js +5 -5
  73. package/dist/commands/status.js +6 -6
  74. package/dist/commands/util/android-build-method.js +67 -0
  75. package/dist/commands/util/glass.js +4 -4
  76. package/dist/{export-DtATljiz.js → export-BOuZFMT3.js} +1 -1
  77. package/dist/{import-Dk2ywOVU.js → import-P4KcAuAO.js} +1 -1
  78. package/dist/{index-cRnjcGxV.js → index-AUjBYrSG.js} +8 -6
  79. package/dist/{index-CuyVBHWc.js → index-BmRSqi8U.js} +7 -5
  80. package/dist/{index-BW7z-5sB.js → index-DMosmqi2.js} +1 -1
  81. package/dist/{upload-CHaDSvvi.js → upload-BvNeNQXc.js} +1 -1
  82. package/dist/{useAppleApp-CR847GWc.js → useAppleApp-fD92orhh.js} +1 -1
  83. package/dist/{useAppleBundleId-BnwPmVEu.js → useAppleBundleId-oONHtYgg.js} +2 -2
  84. package/dist/{useAppleProfiles-DY-H0420.js → useAppleProfiles-aMy844nZ.js} +3 -2
  85. package/dist/{useGoogleStatus-WqPgHteE.js → useGoogleStatus-rBDZt9tw.js} +2 -2
  86. package/dist/{useProjectCredentials-TvlolkId.js → useProjectCredentials-DLYLMlJh.js} +2 -2
  87. package/dist/{useWebSocket-MXDbQHcu.js → useWebSocket-Bvq2Wf7I.js} +1 -1
  88. package/docs/util/android-build-method.md +26 -0
  89. package/docs/util.md +2 -1
  90. package/npm-shrinkwrap.json +14182 -0
  91. package/oclif.manifest.json +2966 -0
  92. package/package.json +9 -6
  93. package/dist/JobProgress-DltCQpzA.js +0 -127
@@ -13,15 +13,15 @@ import 'node:readline';
13
13
  import 'node:url';
14
14
  import 'readline-sync';
15
15
  import 'isomorphic-git';
16
- import merge from 'deepmerge';
17
- import { parse } from 'ini';
16
+ import { getMajorVersion, loadExportPresets, findPreset, getBasePreset, saveExportPresets, mergePresets, ConfigFile } from 'godot-export-presets';
18
17
  import { QueryClient } from '@tanstack/react-query';
19
18
  import 'react';
20
19
  import 'fast-glob';
21
- import 'yazl';
22
20
  import 'socket.io-client';
23
21
  import 'fullscreen-ink';
24
22
  import 'ink';
23
+ import 'stream';
24
+ import 'yazl';
25
25
 
26
26
  const AUTH_ENV_VAR_NAME = "SHIPTHIS_TOKEN";
27
27
  const DOMAIN_ENV_VAR_NAME = "SHIPTHIS_DOMAIN";
@@ -444,8 +444,8 @@ const GODOT_CAPABILITIES = [
444
444
  { key: "capabilities/access_wifi", name: "Access WiFi", type: CapabilityType.ACCESS_WIFI },
445
445
  { key: "capabilities/push_notifications", name: "Push Notifications", type: CapabilityType.PUSH_NOTIFICATIONS }
446
446
  ];
447
- function getGodotProjectCapabilities(platform) {
448
- const exportPresets = getGodotExportPresets(platform);
447
+ async function getGodotProjectCapabilities(platform) {
448
+ const exportPresets = await getGodotExportPresets(platform);
449
449
  const options = exportPresets.options || {};
450
450
  const capabilities = [];
451
451
  for (const capability of GODOT_CAPABILITIES) {
@@ -458,29 +458,34 @@ function getGodotProjectConfig() {
458
458
  const cwd = process.cwd();
459
459
  const projectGodotPath = path__default.join(cwd, "project.godot");
460
460
  const projectGodotContent = fs__default.readFileSync(projectGodotPath, "utf8");
461
- return parse(projectGodotContent);
461
+ const configFile = new ConfigFile();
462
+ const error = configFile.parse(projectGodotContent);
463
+ if (error) {
464
+ throw error;
465
+ }
466
+ return configFile;
462
467
  }
463
468
  function getGodotProjectName() {
464
469
  try {
465
470
  const projectGodotConfig = getGodotProjectConfig();
466
- return projectGodotConfig.application["config/name"];
471
+ return projectGodotConfig.get_value("application", "config/name") || null;
467
472
  } catch {
468
473
  return null;
469
474
  }
470
475
  }
471
- function getGodotAppleBundleIdentifier() {
476
+ async function getGodotAppleBundleIdentifier() {
472
477
  try {
473
- const preset = getGodotExportPresets(Platform.IOS);
474
- return preset.options["application/bundle_identifier"];
478
+ const preset = await getGodotExportPresets(Platform.IOS);
479
+ return preset.options?.["application/bundle_identifier"] || null;
475
480
  } catch (error) {
476
481
  console.log(error);
477
482
  return null;
478
483
  }
479
484
  }
480
- function getGodotAndroidPackageName() {
485
+ async function getGodotAndroidPackageName() {
481
486
  try {
482
- const preset = getGodotExportPresets(Platform.ANDROID);
483
- return preset.options["package/unique_name"];
487
+ const preset = await getGodotExportPresets(Platform.ANDROID);
488
+ return preset.options?.["package/unique_name"] || null;
484
489
  } catch (error) {
485
490
  console.log(error);
486
491
  return null;
@@ -488,115 +493,81 @@ function getGodotAndroidPackageName() {
488
493
  }
489
494
  function getGodotVersion() {
490
495
  const projectGodotConfig = getGodotProjectConfig();
491
- if ("config/features" in projectGodotConfig.application) {
492
- const features = projectGodotConfig.application["config/features"];
493
- const match = features.match(/"(\d+\.\d+)"/);
494
- if (!match) throw new Error("Couldn't find Godot version in project.godot");
495
- return match[1];
496
+ const features = projectGodotConfig.get_value("application", "config/features");
497
+ if (!features || features.length === 0) {
498
+ return "3.6";
496
499
  }
497
- return "3.6";
500
+ const [version] = features;
501
+ return version;
498
502
  }
499
- function getGodotExportPresets(platform) {
500
- const { warn } = console;
501
- let presetConfig = platform === Platform.IOS ? getBaseExportPresets_iOS() : getBaseExportPresets_Android();
503
+ function getExportPresetsPath() {
502
504
  const cwd = process.cwd();
503
505
  const filename = "export_presets.cfg";
504
506
  const exportPresetsPath = path__default.join(cwd, filename);
507
+ return exportPresetsPath;
508
+ }
509
+ async function getGodotExportPresets(platform) {
510
+ const { warn } = console;
511
+ const godotVersion = getGodotVersion();
512
+ const majorVersion = getMajorVersion(godotVersion);
513
+ const godotPlatform = platform === Platform.IOS ? "iOS" : "Android";
514
+ let presetConfig = getBasePreset(godotPlatform, majorVersion);
515
+ const exportPresetsPath = getExportPresetsPath();
505
516
  const isFound = fs__default.existsSync(exportPresetsPath);
506
517
  if (isFound) {
507
- const exportPresetsContent = fs__default.readFileSync(exportPresetsPath, "utf8");
508
- const exportPresetsIni = parse(exportPresetsContent);
509
- const presetIndexes = Object.keys(exportPresetsIni.preset || {});
510
- const presetIndex = presetIndexes.find((index) => {
511
- const current = exportPresetsIni.preset[index];
512
- return `${current.name}`.toUpperCase() === platform;
513
- });
514
- if (presetIndex) {
515
- presetConfig = merge(presetConfig, exportPresetsIni.preset[presetIndex]);
516
- } else {
517
- warn(`Preset ${platform} not found in ${filename} - will use defaults`);
518
+ try {
519
+ const exportPresets = await loadExportPresets(exportPresetsPath);
520
+ const foundPreset = findPreset(exportPresets, { platform: godotPlatform });
521
+ if (foundPreset) {
522
+ presetConfig = mergePresets(presetConfig, foundPreset);
523
+ } else {
524
+ warn(`Preset ${platform} not found in ${exportPresetsPath} - will use defaults`);
525
+ }
526
+ } catch (error) {
527
+ warn(`Error loading ${exportPresetsPath}: ${error} - will use defaults`);
518
528
  }
519
529
  } else {
520
- warn(`${filename} not found at ${exportPresetsPath}`);
530
+ warn(`Export presets not found at ${exportPresetsPath} - will use defaults`);
521
531
  }
522
532
  return presetConfig;
523
533
  }
524
- function getBaseExportPresets_iOS() {
525
- return {
526
- custom_features: "",
527
- dedicated_server: false,
528
- encrypt_directory: false,
529
- encrypt_pck: false,
530
- encryption_exclude_filters: "",
531
- encryption_include_filters: "",
532
- exclude_filter: "",
533
- export_filter: "all_resources",
534
- export_path: "output",
535
- include_filter: "",
536
- name: "iOS",
537
- options: {
538
- "application/export_project_only": true,
539
- "application/icon_interpolation": "4",
540
- "application/launch_screens_interpolation": "4",
541
- "application/short_version": "1.0.0",
542
- // default version number
543
- "application/signature": "",
544
- "architectures/arm64": true,
545
- "capabilities/access_wifi": false,
546
- "capabilities/push_notifications": false,
547
- "custom_template/debug": "",
548
- "custom_template/release": "",
549
- "icons/app_store_1024x1024": "",
550
- "icons/ipad_76x76": "",
551
- "icons/ipad_152x152": "",
552
- "icons/ipad_167x167": "",
553
- "icons/iphone_120x120": "",
554
- "icons/iphone_180x180": "",
555
- "icons/notification_40x40": "",
556
- "icons/notification_60x60": "",
557
- "icons/settings_58x58": "",
558
- "icons/settings_87x87": "",
559
- "icons/spotlight_40x40": "",
560
- "icons/spotlight_80x80": "",
561
- "landscape_launch_screens/ipad_1024x768": "",
562
- "landscape_launch_screens/ipad_2048x1536": "",
563
- "landscape_launch_screens/iphone_2208x1242": "",
564
- "landscape_launch_screens/iphone_2436x1125": "",
565
- "portrait_launch_screens/ipad_768x1024": "",
566
- "portrait_launch_screens/ipad_1536x2048": "",
567
- "portrait_launch_screens/iphone_640x960": "",
568
- "portrait_launch_screens/iphone_640x1136": "",
569
- "portrait_launch_screens/iphone_750x1334": "",
570
- "portrait_launch_screens/iphone_1125x2436": "",
571
- "portrait_launch_screens/iphone_1242x2208": "",
572
- "privacy/camera_usage_description": "",
573
- "privacy/camera_usage_description_localized": "{}",
574
- "privacy/microphone_usage_description": "",
575
- "privacy/microphone_usage_description_localized": "{}",
576
- "privacy/photolibrary_usage_description": "",
577
- "privacy/photolibrary_usage_description_localized": "{}",
578
- "storyboard/custom_bg_color": "Color(0, 0, 0, 1)",
579
- "storyboard/custom_image@2x": "",
580
- "storyboard/custom_image@3x": "",
581
- "storyboard/image_scale_mode": "0",
582
- "storyboard/use_custom_bg_color": false,
583
- "storyboard/use_launch_screen_storyboard": true,
584
- "user_data/accessible_from_files_app": false,
585
- "user_data/accessible_from_itunes_sharing": false
586
- },
587
- platform: "iOS",
588
- runnable: true
589
- };
590
- }
591
- function getBaseExportPresets_Android() {
592
- return {
593
- name: "Android",
594
- // TODO
595
- options: {
596
- // TODO
597
- },
598
- platform: "Android"
599
- };
534
+ function getGradleBuildOptionKey(majorVersion) {
535
+ return majorVersion === 4 ? "gradle_build/use_gradle_build" : "custom_build/use_custom_build";
536
+ }
537
+ function getExportFormatOptionKey(majorVersion) {
538
+ return majorVersion === 4 ? "gradle_build/export_format" : "custom_build/export_format";
539
+ }
540
+ async function isGradleBuildEnabled() {
541
+ const godotVersion = getGodotVersion();
542
+ const majorVersion = getMajorVersion(godotVersion);
543
+ const preset = await getGodotExportPresets(Platform.ANDROID);
544
+ const buildOptionKey = getGradleBuildOptionKey(majorVersion);
545
+ const isEnabled = preset.options?.[buildOptionKey];
546
+ return isEnabled === true || isEnabled === "true";
547
+ }
548
+ async function setGradleBuildEnabled(value) {
549
+ const exportPresetsPath = getExportPresetsPath();
550
+ let exportPresets = { presets: [] };
551
+ if (fs__default.existsSync(exportPresetsPath)) {
552
+ exportPresets = await loadExportPresets(exportPresetsPath);
553
+ } else {
554
+ console.warn(`Export presets not found at ${exportPresetsPath} - creating new file`);
555
+ }
556
+ const godotVersion = getGodotVersion();
557
+ const majorVersion = getMajorVersion(godotVersion);
558
+ let androidPreset = findPreset(exportPresets, { platform: "Android" });
559
+ if (!androidPreset) {
560
+ androidPreset = getBasePreset("Android", majorVersion);
561
+ exportPresets.presets.push(androidPreset);
562
+ }
563
+ const buildOptionKey = getGradleBuildOptionKey(majorVersion);
564
+ androidPreset.options = androidPreset.options || {};
565
+ androidPreset.options[buildOptionKey] = value;
566
+ const exportFormatOptionKey = getExportFormatOptionKey(majorVersion);
567
+ if (value === false) {
568
+ androidPreset.options[exportFormatOptionKey] = 0;
569
+ }
570
+ await saveExportPresets(exportPresetsPath, exportPresets);
600
571
  }
601
572
 
602
573
  const queryClient = new QueryClient({
@@ -784,4 +755,4 @@ class BaseCommand extends Command {
784
755
  }
785
756
  }
786
757
 
787
- export { Auth as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, getProjectPlatformProgress as E, castArrayObjectDates as F, GODOT_CAPABILITIES as G, queryClient as H, WS_URL as I, JobStatus as J, getAuthToken as K, downloadBuildById as L, getGoogleStatus as M, getGodotAndroidPackageName as N, enforcePolicy as O, Platform as P, revokePolicy as Q, inviteServiceAccount as R, disconnectGoogle as S, getAPIKeys as T, UserRole as U, createAPIKey as V, WEB_URL as W, revokeAPIKey as X, getSingleUseUrl as Y, acceptTerms as Z, setAuthToken as _, ApiKeyType as a, getNewUploadTicket as a0, startJobsFromUpload as a1, LogLevel as a2, getShortAuthRequiredUrl as a3, castObjectDates as a4, getGoogleAuthUrl as a5, castJobDates as a6, getShortTime as a7, updateProject as a8, getShortDateTime as a9, getShortTimeDelta as aa, JobStage as ab, BuildType as ac, getSelf as ad, getTerms as ae, Certificate as b, getShortDate as c, getGodotAppleBundleIdentifier as d, BundleId as e, App as f, getProjects as g, CapabilityTypeOption as h, BetaGroup as i, isCWDGodotGame as j, getProject as k, CertificateType as l, Profile as m, ProfileType as n, API_URL as o, getAuthedHeaders as p, getGodotProjectCapabilities as q, CapabilityType as r, GameEngine as s, getGodotVersion as t, createProject as u, DEFAULT_SHIPPED_FILES_GLOBS as v, DEFAULT_IGNORED_FILES_GLOBS as w, getGodotProjectName as x, getProjectJobs as y, getJob as z };
758
+ export { acceptTerms as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, getProjectJobs as E, getJob as F, GODOT_CAPABILITIES as G, castArrayObjectDates as H, queryClient as I, JobStatus as J, WS_URL as K, getAuthToken as L, getProjectPlatformProgress as M, downloadBuildById as N, getGoogleStatus as O, Platform as P, getGodotAndroidPackageName as Q, enforcePolicy as R, revokePolicy as S, inviteServiceAccount as T, UserRole as U, disconnectGoogle as V, WEB_URL as W, getAPIKeys as X, createAPIKey as Y, revokeAPIKey as Z, getSingleUseUrl as _, ApiKeyType as a, setAuthToken as a0, Auth as a1, LogLevel as a2, getShortAuthRequiredUrl as a3, getNewUploadTicket as a4, startJobsFromUpload as a5, castObjectDates as a6, getGoogleAuthUrl as a7, castJobDates as a8, getShortTime as a9, updateProject as aa, BuildType as ab, getGradleBuildOptionKey as ac, getShortDateTime as ad, getShortTimeDelta as ae, JobStage as af, getSelf as ag, getTerms as ah, Certificate as b, getShortDate as c, getGodotAppleBundleIdentifier as d, BundleId as e, App as f, getProjects as g, CapabilityTypeOption as h, isGradleBuildEnabled as i, BetaGroup as j, isCWDGodotGame as k, getProject as l, CertificateType as m, Profile as n, ProfileType as o, API_URL as p, getAuthedHeaders as q, getGodotProjectCapabilities as r, setGradleBuildEnabled as s, CapabilityType as t, GameEngine as u, getGodotVersion as v, createProject as w, DEFAULT_SHIPPED_FILES_GLOBS as x, DEFAULT_IGNORED_FILES_GLOBS as y, getGodotProjectName as z };
@@ -1,5 +1,5 @@
1
- import { M as getGoogleStatus, N as getGodotAndroidPackageName } from './baseCommand-CTn3KGH3.js';
2
- import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-8VL7xe-O.js';
1
+ import { O as getGoogleStatus, Q as getGodotAndroidPackageName } from './baseCommand-B23l0hCp.js';
2
+ import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-P7Vyz2vZ.js';
3
3
 
4
4
  class BaseGameAndroidCommand extends BaseGameCommand {
5
5
  async checkGoogleAuth(waitForAuth = false) {
@@ -29,7 +29,8 @@ class BaseGameAndroidCommand extends BaseGameCommand {
29
29
  async getAndroidPackageName(gameId) {
30
30
  const game = await this.getGame();
31
31
  const generated = generatePackageName(game.name);
32
- const suggested = game.details?.iosBundleId || getGodotAndroidPackageName() || generated || "com.example.game";
32
+ const godotPackageName = await getGodotAndroidPackageName();
33
+ const suggested = game.details?.iosBundleId || godotPackageName || generated || "com.example.game";
33
34
  const question = `Please enter the Android Package Name, or press enter to use ${suggested}: `;
34
35
  const entered = await getInput(question);
35
36
  return entered || suggested;
@@ -1,5 +1,5 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { o as API_URL, p as getAuthedHeaders, P as Platform, a9 as getShortDateTime, F as castArrayObjectDates, J as JobStatus, aa as getShortTimeDelta, z as getJob, ab as JobStage, a2 as LogLevel, k as getProject, a3 as getShortAuthRequiredUrl, H as queryClient, ac as BuildType, W as WEB_URL, B as BaseCommand, ad as getSelf, ae as getTerms, a8 as updateProject } from './baseCommand-CTn3KGH3.js';
2
+ import { p as API_URL, q as getAuthedHeaders, P as Platform, ad as getShortDateTime, H as castArrayObjectDates, J as JobStatus, ae as getShortTimeDelta, F as getJob, af as JobStage, a2 as LogLevel, l as getProject, a3 as getShortAuthRequiredUrl, I as queryClient, ab as BuildType, W as WEB_URL, B as BaseCommand, ag as getSelf, ah as getTerms, aa as updateProject } from './baseCommand-B23l0hCp.js';
3
3
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
4
4
  import { useStdin, useInput, Text, Box } from 'ink';
5
5
  import Spinner from 'ink-spinner';
@@ -16,9 +16,10 @@ import { useQuery } from '@tanstack/react-query';
16
16
  import React, { useState, useEffect, useContext, useRef } from 'react';
17
17
  import 'fast-glob';
18
18
  import 'uuid';
19
- import 'yazl';
20
19
  import 'socket.io-client';
21
20
  import 'fullscreen-ink';
21
+ import 'stream';
22
+ import 'yazl';
22
23
  import 'string-length';
23
24
  import 'strip-ansi';
24
25
  import open from 'open';
@@ -29,6 +30,7 @@ import { setOptions, parse } from 'marked';
29
30
  import TerminalRenderer from 'marked-terminal';
30
31
  import 'qrcode';
31
32
  import 'crypto-js';
33
+ import 'godot-export-presets';
32
34
 
33
35
  const cacheKeys = {
34
36
  androidKeyTestResult: (props) => ["androidKeyTestResult", ...Object.values(props)],
@@ -1172,4 +1174,4 @@ class BaseGameCommand extends BaseAuthenticatedCommand {
1172
1174
  }
1173
1175
  }
1174
1176
 
1175
- export { CreateGooglePlayGame as A, BaseAuthenticatedCommand as B, CommandContext as C, GameContext as G, KeyTestStatus as K, Markdown as M, getRenderedMarkdown as a, getInput as b, BaseGameCommand as c, generatePackageName as d, getJobSummary as e, getJobStatusColor as f, getShortUUID as g, getStageColor as h, CommandProvider as i, GameProvider as j, cacheKeys as k, isValidSemVer as l, makeHumanReadable as m, fetchKeyTestResult as n, niceError as o, KeyTestError as p, ejs as q, getMaskedInput as r, getFileHash as s, getPlatformName as t, useBuilds as u, getBuildSummary as v, useSafeInput as w, useJob as x, getMessageColor as y, queryBuilds as z };
1177
+ export { CreateGooglePlayGame as A, BaseAuthenticatedCommand as B, CommandProvider as C, GameProvider as G, KeyTestStatus as K, Markdown as M, getRenderedMarkdown as a, getInput as b, BaseGameCommand as c, generatePackageName as d, getJobSummary as e, getJobStatusColor as f, getShortUUID as g, getStageColor as h, GameContext as i, CommandContext as j, cacheKeys as k, isValidSemVer as l, makeHumanReadable as m, fetchKeyTestResult as n, niceError as o, KeyTestError as p, ejs as q, getMaskedInput as r, getBuildSummary as s, useSafeInput as t, useBuilds as u, getFileHash as v, getPlatformName as w, getMessageColor as x, useJob as y, queryBuilds as z };
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
4
  import { v4 } from 'uuid';
5
- import { V as createAPIKey, c as getShortDate } from '../../baseCommand-CTn3KGH3.js';
6
- import { B as BaseAuthenticatedCommand, g as getShortUUID, a as getRenderedMarkdown } from '../../baseGameCommand-8VL7xe-O.js';
5
+ import { Y as createAPIKey, c as getShortDate } from '../../baseCommand-B23l0hCp.js';
6
+ import { B as BaseAuthenticatedCommand, g as getShortUUID, a as getRenderedMarkdown } from '../../baseGameCommand-P7Vyz2vZ.js';
7
7
  import 'node:fs';
8
8
  import 'node:path';
9
9
  import 'chalk';
@@ -13,7 +13,6 @@ import '@tanstack/react-query';
13
13
  import 'axios';
14
14
  import 'luxon';
15
15
  import 'fast-glob';
16
- import 'yazl';
17
16
  import 'socket.io-client';
18
17
  import 'fullscreen-ink';
19
18
  import 'string-length';
@@ -22,7 +21,9 @@ import 'open';
22
21
  import '@inkjs/ui';
23
22
  import 'qrcode';
24
23
  import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
25
- import { C as Command } from '../../Command-Cj6F5B5a.js';
24
+ import 'godot-export-presets';
25
+ import 'yazl';
26
+ import { C as Command } from '../../Command-cqn3WLlP.js';
26
27
  import 'crypto-js';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
@@ -30,8 +31,7 @@ import 'node:readline';
30
31
  import 'node:url';
31
32
  import 'readline-sync';
32
33
  import 'isomorphic-git';
33
- import 'deepmerge';
34
- import 'ini';
34
+ import 'stream';
35
35
  import 'fs';
36
36
  import 'path';
37
37
  import 'marked';
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
- import { T as getAPIKeys, c as getShortDate } from '../../baseCommand-CTn3KGH3.js';
5
- import { B as BaseAuthenticatedCommand, g as getShortUUID } from '../../baseGameCommand-8VL7xe-O.js';
4
+ import { X as getAPIKeys, c as getShortDate } from '../../baseCommand-B23l0hCp.js';
5
+ import { B as BaseAuthenticatedCommand, g as getShortUUID } from '../../baseGameCommand-P7Vyz2vZ.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'chalk';
@@ -14,7 +14,6 @@ import 'axios';
14
14
  import 'luxon';
15
15
  import 'fast-glob';
16
16
  import 'uuid';
17
- import 'yazl';
18
17
  import 'socket.io-client';
19
18
  import 'fullscreen-ink';
20
19
  import 'string-length';
@@ -24,7 +23,9 @@ import '@inkjs/ui';
24
23
  import 'marked';
25
24
  import 'marked-terminal';
26
25
  import 'qrcode';
27
- import { C as Command } from '../../Command-Cj6F5B5a.js';
26
+ import 'godot-export-presets';
27
+ import 'yazl';
28
+ import { C as Command } from '../../Command-cqn3WLlP.js';
28
29
  import 'crypto-js';
29
30
  import '@expo/apple-utils/build/index.js';
30
31
  import 'node:crypto';
@@ -32,8 +33,7 @@ import 'node:readline';
32
33
  import 'node:url';
33
34
  import 'readline-sync';
34
35
  import 'isomorphic-git';
35
- import 'deepmerge';
36
- import 'ini';
36
+ import 'stream';
37
37
  import 'fs';
38
38
  import 'path';
39
39
 
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { X as revokeAPIKey } from '../../baseCommand-CTn3KGH3.js';
5
- import { B as BaseAuthenticatedCommand, g as getShortUUID } from '../../baseGameCommand-8VL7xe-O.js';
4
+ import { Z as revokeAPIKey } from '../../baseCommand-B23l0hCp.js';
5
+ import { B as BaseAuthenticatedCommand, g as getShortUUID } from '../../baseGameCommand-P7Vyz2vZ.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'chalk';
@@ -13,7 +13,6 @@ import 'axios';
13
13
  import 'luxon';
14
14
  import 'fast-glob';
15
15
  import 'uuid';
16
- import 'yazl';
17
16
  import 'socket.io-client';
18
17
  import 'fullscreen-ink';
19
18
  import 'string-length';
@@ -24,7 +23,9 @@ import 'marked';
24
23
  import 'marked-terminal';
25
24
  import 'qrcode';
26
25
  import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
27
- import { C as Command } from '../../Command-Cj6F5B5a.js';
26
+ import 'godot-export-presets';
27
+ import 'yazl';
28
+ import { C as Command } from '../../Command-cqn3WLlP.js';
28
29
  import 'crypto-js';
29
30
  import '@expo/apple-utils/build/index.js';
30
31
  import 'node:crypto';
@@ -32,8 +33,7 @@ import 'node:readline';
32
33
  import 'node:url';
33
34
  import 'readline-sync';
34
35
  import 'isomorphic-git';
35
- import 'deepmerge';
36
- import 'ini';
36
+ import 'stream';
37
37
  import 'fs';
38
38
  import 'path';
39
39
 
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { g as getUserCredentials } from '../../../index-BW7z-5sB.js';
5
- import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../baseCommand-CTn3KGH3.js';
6
- import { B as BaseAppleCommand } from '../../../baseAppleCommand-Aq-Eaw_K.js';
4
+ import { g as getUserCredentials } from '../../../index-DMosmqi2.js';
5
+ import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../baseCommand-B23l0hCp.js';
6
+ import { B as BaseAppleCommand } from '../../../baseAppleCommand-Cfoy8Tx_.js';
7
7
  import 'node:fs';
8
8
  import 'axios';
9
9
  import 'crypto-js';
@@ -19,24 +19,24 @@ import 'isomorphic-git';
19
19
  import '@tanstack/react-query';
20
20
  import 'react';
21
21
  import 'fast-glob';
22
- import 'yazl';
23
22
  import 'socket.io-client';
24
23
  import 'fullscreen-ink';
24
+ import 'stream';
25
+ import 'yazl';
25
26
  import 'ink-spinner';
26
27
  import 'string-length';
27
28
  import 'strip-ansi';
28
29
  import 'open';
29
30
  import '@inkjs/ui';
30
- import '../../../baseGameCommand-8VL7xe-O.js';
31
+ import '../../../baseGameCommand-P7Vyz2vZ.js';
31
32
  import 'marked';
32
33
  import 'marked-terminal';
33
34
  import 'qrcode';
34
35
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
35
- import { C as Command } from '../../../Command-Cj6F5B5a.js';
36
- import { u as uploadUserCredentials } from '../../../upload-CHaDSvvi.js';
36
+ import 'godot-export-presets';
37
+ import { C as Command } from '../../../Command-cqn3WLlP.js';
38
+ import { u as uploadUserCredentials } from '../../../upload-BvNeNQXc.js';
37
39
  import '@expo/apple-utils/build/index.js';
38
- import 'deepmerge';
39
- import 'ini';
40
40
  import 'fs';
41
41
  import 'path';
42
42
 
@@ -1,22 +1,21 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { B as BaseAppleCommand } from '../../../baseAppleCommand-Aq-Eaw_K.js';
2
+ import { B as BaseAppleCommand } from '../../../baseAppleCommand-Cfoy8Tx_.js';
3
3
  import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
- import { P as Platform, C as CredentialsType, A as ApiKey } from '../../../baseCommand-CTn3KGH3.js';
7
+ import { P as Platform, C as CredentialsType, A as ApiKey } from '../../../baseCommand-B23l0hCp.js';
8
8
  import 'luxon';
9
- import { g as getUserCredentials, d as deleteUserCredential } from '../../../index-BW7z-5sB.js';
9
+ import { g as getUserCredentials, d as deleteUserCredential } from '../../../index-DMosmqi2.js';
10
10
  import 'node:path';
11
11
  import 'chalk';
12
- import { g as getShortUUID, a as getRenderedMarkdown, b as getInput } from '../../../baseGameCommand-8VL7xe-O.js';
12
+ import { g as getShortUUID, a as getRenderedMarkdown, b as getInput } from '../../../baseGameCommand-P7Vyz2vZ.js';
13
13
  import 'react/jsx-runtime';
14
14
  import 'ink';
15
15
  import 'ink-spinner';
16
16
  import 'react';
17
17
  import '@tanstack/react-query';
18
18
  import 'fast-glob';
19
- import 'yazl';
20
19
  import 'socket.io-client';
21
20
  import 'fullscreen-ink';
22
21
  import 'string-length';
@@ -24,14 +23,15 @@ import 'strip-ansi';
24
23
  import 'open';
25
24
  import '@inkjs/ui';
26
25
  import 'qrcode';
26
+ import 'godot-export-presets';
27
+ import 'yazl';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
29
30
  import 'node:readline';
30
31
  import 'node:url';
31
32
  import 'readline-sync';
32
33
  import 'isomorphic-git';
33
- import 'deepmerge';
34
- import 'ini';
34
+ import 'stream';
35
35
  import 'fs';
36
36
  import 'path';
37
37
  import 'marked';
@@ -2,14 +2,14 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { g as getUserCredentials } from '../../../index-BW7z-5sB.js';
6
- import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-8VL7xe-O.js';
5
+ import { g as getUserCredentials } from '../../../index-DMosmqi2.js';
6
+ import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-P7Vyz2vZ.js';
7
7
  import 'node:path';
8
8
  import 'chalk';
9
9
  import 'axios';
10
10
  import 'crypto-js';
11
11
  import 'uuid';
12
- import { P as Platform, C as CredentialsType } from '../../../baseCommand-CTn3KGH3.js';
12
+ import { P as Platform, C as CredentialsType } from '../../../baseCommand-B23l0hCp.js';
13
13
  import 'luxon';
14
14
  import 'node:crypto';
15
15
  import 'node:readline';
@@ -19,9 +19,10 @@ import 'isomorphic-git';
19
19
  import '@tanstack/react-query';
20
20
  import 'react';
21
21
  import 'fast-glob';
22
- import 'yazl';
23
22
  import 'socket.io-client';
24
23
  import 'fullscreen-ink';
24
+ import 'stream';
25
+ import 'yazl';
25
26
  import 'ink-spinner';
26
27
  import 'string-length';
27
28
  import 'strip-ansi';
@@ -31,13 +32,12 @@ import 'marked';
31
32
  import 'marked-terminal';
32
33
  import 'qrcode';
33
34
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
34
- import { C as Command } from '../../../Command-Cj6F5B5a.js';
35
- import { e as exportCredential } from '../../../export-DtATljiz.js';
35
+ import 'godot-export-presets';
36
+ import { C as Command } from '../../../Command-cqn3WLlP.js';
37
+ import { e as exportCredential } from '../../../export-BOuZFMT3.js';
36
38
  import 'fs';
37
39
  import 'path';
38
40
  import '@expo/apple-utils/build/index.js';
39
- import 'deepmerge';
40
- import 'ini';
41
41
 
42
42
  class AppleApiKeyExport extends BaseAuthenticatedCommand {
43
43
  static args = {
@@ -2,14 +2,14 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { g as getUserCredentials } from '../../../index-BW7z-5sB.js';
6
- import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-8VL7xe-O.js';
5
+ import { g as getUserCredentials } from '../../../index-DMosmqi2.js';
6
+ import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-P7Vyz2vZ.js';
7
7
  import 'node:path';
8
8
  import 'chalk';
9
9
  import 'axios';
10
10
  import 'crypto-js';
11
11
  import 'uuid';
12
- import { P as Platform, C as CredentialsType } from '../../../baseCommand-CTn3KGH3.js';
12
+ import { P as Platform, C as CredentialsType } from '../../../baseCommand-B23l0hCp.js';
13
13
  import 'luxon';
14
14
  import 'node:crypto';
15
15
  import 'node:readline';
@@ -19,9 +19,10 @@ import 'isomorphic-git';
19
19
  import '@tanstack/react-query';
20
20
  import 'react';
21
21
  import 'fast-glob';
22
- import 'yazl';
23
22
  import 'socket.io-client';
24
23
  import 'fullscreen-ink';
24
+ import 'stream';
25
+ import 'yazl';
25
26
  import 'ink-spinner';
26
27
  import 'string-length';
27
28
  import 'strip-ansi';
@@ -31,13 +32,12 @@ import 'marked';
31
32
  import 'marked-terminal';
32
33
  import 'qrcode';
33
34
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
34
- import { C as Command } from '../../../Command-Cj6F5B5a.js';
35
- import { i as importCredential } from '../../../import-Dk2ywOVU.js';
35
+ import 'godot-export-presets';
36
+ import { C as Command } from '../../../Command-cqn3WLlP.js';
37
+ import { i as importCredential } from '../../../import-P4KcAuAO.js';
36
38
  import 'fs';
37
39
  import 'path';
38
40
  import '@expo/apple-utils/build/index.js';
39
- import 'deepmerge';
40
- import 'ini';
41
41
 
42
42
  class AppleApiKeyImport extends BaseAuthenticatedCommand {
43
43
  static args = {