@minecraft-docker/shared 1.6.1 → 1.6.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.
Files changed (162) hide show
  1. package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts +41 -0
  2. package/dist/application/ports/inbound/IWorldManagementUseCase.d.ts.map +1 -1
  3. package/dist/application/ports/inbound/index.d.ts +1 -1
  4. package/dist/application/ports/inbound/index.d.ts.map +1 -1
  5. package/dist/application/ports/index.d.ts +2 -2
  6. package/dist/application/ports/index.d.ts.map +1 -1
  7. package/dist/application/ports/outbound/IModSourcePort.d.ts +71 -0
  8. package/dist/application/ports/outbound/IModSourcePort.d.ts.map +1 -0
  9. package/dist/application/ports/outbound/IModSourcePort.js +19 -0
  10. package/dist/application/ports/outbound/IModSourcePort.js.map +1 -0
  11. package/dist/application/ports/outbound/IPromptPort.d.ts +12 -0
  12. package/dist/application/ports/outbound/IPromptPort.d.ts.map +1 -1
  13. package/dist/application/ports/outbound/IServiceManagerPort.d.ts +115 -0
  14. package/dist/application/ports/outbound/IServiceManagerPort.d.ts.map +1 -0
  15. package/dist/application/ports/outbound/IServiceManagerPort.js +2 -0
  16. package/dist/application/ports/outbound/IServiceManagerPort.js.map +1 -0
  17. package/dist/application/ports/outbound/IShellPort.d.ts +10 -2
  18. package/dist/application/ports/outbound/IShellPort.d.ts.map +1 -1
  19. package/dist/application/ports/outbound/IUserRepository.d.ts +42 -0
  20. package/dist/application/ports/outbound/IUserRepository.d.ts.map +1 -0
  21. package/dist/application/ports/outbound/IUserRepository.js +2 -0
  22. package/dist/application/ports/outbound/IUserRepository.js.map +1 -0
  23. package/dist/application/ports/outbound/IWorldRepository.d.ts +19 -0
  24. package/dist/application/ports/outbound/IWorldRepository.d.ts.map +1 -1
  25. package/dist/application/ports/outbound/index.d.ts +4 -1
  26. package/dist/application/ports/outbound/index.d.ts.map +1 -1
  27. package/dist/application/use-cases/CreateServerUseCase.d.ts.map +1 -1
  28. package/dist/application/use-cases/CreateServerUseCase.js +2 -3
  29. package/dist/application/use-cases/CreateServerUseCase.js.map +1 -1
  30. package/dist/application/use-cases/DeleteServerUseCase.js +5 -5
  31. package/dist/application/use-cases/DeleteServerUseCase.js.map +1 -1
  32. package/dist/application/use-cases/WorldManagementUseCase.d.ts +18 -1
  33. package/dist/application/use-cases/WorldManagementUseCase.d.ts.map +1 -1
  34. package/dist/application/use-cases/WorldManagementUseCase.js +332 -0
  35. package/dist/application/use-cases/WorldManagementUseCase.js.map +1 -1
  36. package/dist/docker/index.d.ts +14 -0
  37. package/dist/docker/index.d.ts.map +1 -1
  38. package/dist/docker/index.js +26 -1
  39. package/dist/docker/index.js.map +1 -1
  40. package/dist/domain/entities/User.d.ts +77 -0
  41. package/dist/domain/entities/User.d.ts.map +1 -0
  42. package/dist/domain/entities/User.js +121 -0
  43. package/dist/domain/entities/User.js.map +1 -0
  44. package/dist/domain/entities/World.d.ts +7 -1
  45. package/dist/domain/entities/World.d.ts.map +1 -1
  46. package/dist/domain/entities/World.js +14 -1
  47. package/dist/domain/entities/World.js.map +1 -1
  48. package/dist/domain/entities/index.d.ts +1 -0
  49. package/dist/domain/entities/index.d.ts.map +1 -1
  50. package/dist/domain/entities/index.js +1 -0
  51. package/dist/domain/entities/index.js.map +1 -1
  52. package/dist/domain/index.d.ts +2 -2
  53. package/dist/domain/index.d.ts.map +1 -1
  54. package/dist/domain/index.js +4 -2
  55. package/dist/domain/index.js.map +1 -1
  56. package/dist/domain/mod/ModDependency.d.ts +18 -0
  57. package/dist/domain/mod/ModDependency.d.ts.map +1 -0
  58. package/dist/domain/mod/ModDependency.js +5 -0
  59. package/dist/domain/mod/ModDependency.js.map +1 -0
  60. package/dist/domain/mod/ModFile.d.ts +27 -0
  61. package/dist/domain/mod/ModFile.d.ts.map +1 -0
  62. package/dist/domain/mod/ModFile.js +5 -0
  63. package/dist/domain/mod/ModFile.js.map +1 -0
  64. package/dist/domain/mod/ModProject.d.ts +36 -0
  65. package/dist/domain/mod/ModProject.d.ts.map +1 -0
  66. package/dist/domain/mod/ModProject.js +5 -0
  67. package/dist/domain/mod/ModProject.js.map +1 -0
  68. package/dist/domain/mod/ModSearchResult.d.ts +18 -0
  69. package/dist/domain/mod/ModSearchResult.d.ts.map +1 -0
  70. package/dist/domain/mod/ModSearchResult.js +5 -0
  71. package/dist/domain/mod/ModSearchResult.js.map +1 -0
  72. package/dist/domain/mod/ModVersion.d.ts +36 -0
  73. package/dist/domain/mod/ModVersion.d.ts.map +1 -0
  74. package/dist/domain/mod/ModVersion.js +5 -0
  75. package/dist/domain/mod/ModVersion.js.map +1 -0
  76. package/dist/domain/mod/index.d.ts +11 -0
  77. package/dist/domain/mod/index.d.ts.map +1 -0
  78. package/dist/domain/mod/index.js +6 -0
  79. package/dist/domain/mod/index.js.map +1 -0
  80. package/dist/domain/mod/types.d.ts +43 -0
  81. package/dist/domain/mod/types.d.ts.map +1 -0
  82. package/dist/domain/mod/types.js +6 -0
  83. package/dist/domain/mod/types.js.map +1 -0
  84. package/dist/domain/value-objects/ProcessInfo.d.ts +99 -0
  85. package/dist/domain/value-objects/ProcessInfo.d.ts.map +1 -0
  86. package/dist/domain/value-objects/ProcessInfo.js +171 -0
  87. package/dist/domain/value-objects/ProcessInfo.js.map +1 -0
  88. package/dist/domain/value-objects/Role.d.ts +41 -0
  89. package/dist/domain/value-objects/Role.d.ts.map +1 -0
  90. package/dist/domain/value-objects/Role.js +66 -0
  91. package/dist/domain/value-objects/Role.js.map +1 -0
  92. package/dist/domain/value-objects/ServerType.d.ts +1 -0
  93. package/dist/domain/value-objects/ServerType.d.ts.map +1 -1
  94. package/dist/domain/value-objects/ServerType.js +8 -0
  95. package/dist/domain/value-objects/ServerType.js.map +1 -1
  96. package/dist/domain/value-objects/ServiceStatus.d.ts +64 -0
  97. package/dist/domain/value-objects/ServiceStatus.d.ts.map +1 -0
  98. package/dist/domain/value-objects/ServiceStatus.js +99 -0
  99. package/dist/domain/value-objects/ServiceStatus.js.map +1 -0
  100. package/dist/domain/value-objects/UserId.d.ts +21 -0
  101. package/dist/domain/value-objects/UserId.d.ts.map +1 -0
  102. package/dist/domain/value-objects/UserId.js +43 -0
  103. package/dist/domain/value-objects/UserId.js.map +1 -0
  104. package/dist/domain/value-objects/Username.d.ts +16 -0
  105. package/dist/domain/value-objects/Username.d.ts.map +1 -0
  106. package/dist/domain/value-objects/Username.js +46 -0
  107. package/dist/domain/value-objects/Username.js.map +1 -0
  108. package/dist/domain/value-objects/index.d.ts +5 -0
  109. package/dist/domain/value-objects/index.d.ts.map +1 -1
  110. package/dist/domain/value-objects/index.js +7 -0
  111. package/dist/domain/value-objects/index.js.map +1 -1
  112. package/dist/index.d.ts +3 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +6 -2
  115. package/dist/index.js.map +1 -1
  116. package/dist/infrastructure/adapters/ApiPromptAdapter.d.ts +115 -0
  117. package/dist/infrastructure/adapters/ApiPromptAdapter.d.ts.map +1 -0
  118. package/dist/infrastructure/adapters/ApiPromptAdapter.js +268 -0
  119. package/dist/infrastructure/adapters/ApiPromptAdapter.js.map +1 -0
  120. package/dist/infrastructure/adapters/ServerRepository.js +3 -3
  121. package/dist/infrastructure/adapters/ServerRepository.js.map +1 -1
  122. package/dist/infrastructure/adapters/ShellAdapter.d.ts +4 -2
  123. package/dist/infrastructure/adapters/ShellAdapter.d.ts.map +1 -1
  124. package/dist/infrastructure/adapters/ShellAdapter.js +15 -5
  125. package/dist/infrastructure/adapters/ShellAdapter.js.map +1 -1
  126. package/dist/infrastructure/adapters/SqliteUserRepository.d.ts +70 -0
  127. package/dist/infrastructure/adapters/SqliteUserRepository.d.ts.map +1 -0
  128. package/dist/infrastructure/adapters/SqliteUserRepository.js +149 -0
  129. package/dist/infrastructure/adapters/SqliteUserRepository.js.map +1 -0
  130. package/dist/infrastructure/adapters/WorldRepository.d.ts +12 -0
  131. package/dist/infrastructure/adapters/WorldRepository.d.ts.map +1 -1
  132. package/dist/infrastructure/adapters/WorldRepository.js +73 -3
  133. package/dist/infrastructure/adapters/WorldRepository.js.map +1 -1
  134. package/dist/infrastructure/adapters/YamlUserRepository.d.ts +67 -0
  135. package/dist/infrastructure/adapters/YamlUserRepository.d.ts.map +1 -0
  136. package/dist/infrastructure/adapters/YamlUserRepository.js +161 -0
  137. package/dist/infrastructure/adapters/YamlUserRepository.js.map +1 -0
  138. package/dist/infrastructure/adapters/index.d.ts +3 -0
  139. package/dist/infrastructure/adapters/index.d.ts.map +1 -1
  140. package/dist/infrastructure/adapters/index.js +3 -0
  141. package/dist/infrastructure/adapters/index.js.map +1 -1
  142. package/dist/infrastructure/config/Pm2EcosystemConfig.d.ts +192 -0
  143. package/dist/infrastructure/config/Pm2EcosystemConfig.d.ts.map +1 -0
  144. package/dist/infrastructure/config/Pm2EcosystemConfig.js +48 -0
  145. package/dist/infrastructure/config/Pm2EcosystemConfig.js.map +1 -0
  146. package/dist/infrastructure/config/index.d.ts +6 -0
  147. package/dist/infrastructure/config/index.d.ts.map +1 -0
  148. package/dist/infrastructure/config/index.js +6 -0
  149. package/dist/infrastructure/config/index.js.map +1 -0
  150. package/dist/infrastructure/factories/ModSourceFactory.d.ts +73 -0
  151. package/dist/infrastructure/factories/ModSourceFactory.d.ts.map +1 -0
  152. package/dist/infrastructure/factories/ModSourceFactory.js +98 -0
  153. package/dist/infrastructure/factories/ModSourceFactory.js.map +1 -0
  154. package/dist/infrastructure/factories/index.d.ts +5 -0
  155. package/dist/infrastructure/factories/index.d.ts.map +1 -0
  156. package/dist/infrastructure/factories/index.js +5 -0
  157. package/dist/infrastructure/factories/index.js.map +1 -0
  158. package/dist/infrastructure/index.d.ts +1 -0
  159. package/dist/infrastructure/index.d.ts.map +1 -1
  160. package/dist/infrastructure/index.js +1 -0
  161. package/dist/infrastructure/index.js.map +1 -1
  162. package/package.json +10 -2
@@ -0,0 +1,43 @@
1
+ /**
2
+ * UserId Value Object
3
+ * Represents a validated UUID-based user identifier
4
+ */
5
+ export class UserId {
6
+ _value;
7
+ static UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
8
+ constructor(_value) {
9
+ this._value = _value;
10
+ Object.freeze(this);
11
+ }
12
+ get value() {
13
+ return this._value;
14
+ }
15
+ /**
16
+ * Create a UserId from an existing UUID string
17
+ */
18
+ static create(value) {
19
+ const trimmed = value.trim().toLowerCase();
20
+ if (!trimmed) {
21
+ throw new Error('User ID cannot be empty');
22
+ }
23
+ if (!UserId.UUID_REGEX.test(trimmed)) {
24
+ throw new Error('User ID must be a valid UUID format');
25
+ }
26
+ return new UserId(trimmed);
27
+ }
28
+ /**
29
+ * Generate a new random UserId
30
+ */
31
+ static generate() {
32
+ // Use crypto.randomUUID() for UUID v4 generation
33
+ const uuid = crypto.randomUUID();
34
+ return new UserId(uuid.toLowerCase());
35
+ }
36
+ equals(other) {
37
+ return this._value === other._value;
38
+ }
39
+ toString() {
40
+ return this._value;
41
+ }
42
+ }
43
+ //# sourceMappingURL=UserId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserId.js","sourceRoot":"","sources":["../../../src/domain/value-objects/UserId.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,MAAM;IAIoB;IAH7B,MAAM,CAAU,UAAU,GAChC,4EAA4E,CAAC;IAE/E,YAAqC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ;QACb,iDAAiD;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Username Value Object
3
+ * Represents a validated username (3-50 characters, alphanumeric + underscore)
4
+ */
5
+ export declare class Username {
6
+ private readonly _value;
7
+ private static readonly MIN_LENGTH;
8
+ private static readonly MAX_LENGTH;
9
+ private static readonly PATTERN;
10
+ private constructor();
11
+ get value(): string;
12
+ static create(value: string): Username;
13
+ equals(other: Username): boolean;
14
+ toString(): string;
15
+ }
16
+ //# sourceMappingURL=Username.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Username.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/Username.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,QAAQ;IAMC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAL3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAK;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IAExC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAEpD,OAAO;IAIP,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAiCtC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAKhC,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Username Value Object
3
+ * Represents a validated username (3-50 characters, alphanumeric + underscore)
4
+ */
5
+ export class Username {
6
+ _value;
7
+ static MIN_LENGTH = 3;
8
+ static MAX_LENGTH = 50;
9
+ // Alphanumeric characters and underscores only
10
+ static PATTERN = /^[a-zA-Z0-9_]+$/;
11
+ constructor(_value) {
12
+ this._value = _value;
13
+ Object.freeze(this);
14
+ }
15
+ get value() {
16
+ return this._value;
17
+ }
18
+ static create(value) {
19
+ const trimmed = value.trim();
20
+ if (!trimmed) {
21
+ throw new Error('Username cannot be empty');
22
+ }
23
+ if (trimmed.length < Username.MIN_LENGTH) {
24
+ throw new Error(`Username must be at least ${Username.MIN_LENGTH} characters`);
25
+ }
26
+ if (trimmed.length > Username.MAX_LENGTH) {
27
+ throw new Error(`Username cannot exceed ${Username.MAX_LENGTH} characters`);
28
+ }
29
+ if (!Username.PATTERN.test(trimmed)) {
30
+ throw new Error('Username must contain only alphanumeric characters and underscores');
31
+ }
32
+ // Username must start with a letter
33
+ if (!/^[a-zA-Z]/.test(trimmed)) {
34
+ throw new Error('Username must start with a letter');
35
+ }
36
+ return new Username(trimmed);
37
+ }
38
+ equals(other) {
39
+ // Case-insensitive comparison for usernames
40
+ return this._value.toLowerCase() === other._value.toLowerCase();
41
+ }
42
+ toString() {
43
+ return this._value;
44
+ }
45
+ }
46
+ //# sourceMappingURL=Username.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Username.js","sourceRoot":"","sources":["../../../src/domain/value-objects/Username.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,QAAQ;IAMkB;IAL7B,MAAM,CAAU,UAAU,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IACxC,+CAA+C;IACvC,MAAM,CAAU,OAAO,GAAG,iBAAiB,CAAC;IAEpD,YAAqC,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,UAAU,aAAa,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,CAAC,UAAU,aAAa,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,4CAA4C;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC"}
@@ -3,4 +3,9 @@ export { ServerType, ServerTypeEnum, type ServerTypeInfo } from './ServerType.js
3
3
  export { McVersion } from './McVersion.js';
4
4
  export { Memory } from './Memory.js';
5
5
  export { WorldOptions, WorldSetupType, type WorldOptionsData } from './WorldOptions.js';
6
+ export { UserId } from './UserId.js';
7
+ export { Username } from './Username.js';
8
+ export { Role, RoleEnum } from './Role.js';
9
+ export { ServiceStatus, ServiceStatusEnum } from './ServiceStatus.js';
10
+ export { ProcessInfo, type ProcessInfoData, type ProcessMetrics } from './ProcessInfo.js';
6
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -3,4 +3,11 @@ export { ServerType, ServerTypeEnum } from './ServerType.js';
3
3
  export { McVersion } from './McVersion.js';
4
4
  export { Memory } from './Memory.js';
5
5
  export { WorldOptions, WorldSetupType } from './WorldOptions.js';
6
+ // User-related value objects
7
+ export { UserId } from './UserId.js';
8
+ export { Username } from './Username.js';
9
+ export { Role, RoleEnum } from './Role.js';
10
+ // Service management value objects
11
+ export { ServiceStatus, ServiceStatusEnum } from './ServiceStatus.js';
12
+ export { ProcessInfo } from './ProcessInfo.js';
6
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAyB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAyB,MAAM,mBAAmB,CAAC;AAExF,6BAA6B;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,WAAW,EAA6C,MAAM,kBAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  export { type ContainerStatus, type HealthStatus, type ServerInfo, type RouterInfo, type AvahiInfo, type PlatformStatus, type McctlConfig, type ServerType as LegacyServerType, type ServerConfig as LegacyServerConfig, type EnvConfig, type LockStatus, type WorldLock as LegacyWorldLock, type BackupInfo, type BackupStatus, type PlayerInfo, type CommandResult, type ContainerStats, type PlayerListResult, type DetailedServerInfo, type RouterDetailInfo, type RouteInfo, } from './types/index.js';
2
2
  export { Paths, Config, colors, log, getPackageRoot } from './utils/index.js';
3
3
  export { checkDocker, checkDockerCompose, getContainerStatus, getContainerHealth, containerExists, getContainerHostname, getMcContainers, getRunningMcContainers, getServerInfo, getRouterInfo, getAvahiStatus, getPlatformStatus, startContainer, stopContainer, getContainerLogs, execScript, execScriptInteractive, getContainerStats, getContainerUptime, getOnlinePlayers, getDetailedServerInfo, getDetailedServerInfoWithPlayers, getRouterDetailInfo, formatBytes, } from './docker/index.js';
4
- export { ServerName, ServerType, ServerTypeEnum, type ServerTypeInfo, McVersion, Memory, WorldOptions, WorldSetupType, type WorldOptionsData, Server, ServerStatus, type ServerConfig, World, WorldLockStatus, type WorldLock, } from './domain/index.js';
4
+ export { ServerName, ServerType, ServerTypeEnum, type ServerTypeInfo, McVersion, Memory, WorldOptions, WorldSetupType, type WorldOptionsData, UserId, Username, Role, RoleEnum, ServiceStatus, ServiceStatusEnum, ProcessInfo, type ProcessInfoData, type ProcessMetrics, Server, ServerStatus, type ServerConfig, World, WorldLockStatus, type WorldLock, User, type UserData, } from './domain/index.js';
5
+ export type { ModSideSupport, ModProjectType, ModVersionType, ModDependencyType, ModSearchIndex, ModSearchOptions, ModVersionOptions, ModProject, ModVersion, ModFile, ModFileHashes, ModDependency, ModSearchResult, } from './domain/mod/index.js';
6
+ export { ModSourceFactory } from './infrastructure/factories/index.js';
5
7
  export * from './application/index.js';
6
8
  export * from './infrastructure/index.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,gBAAgB,EACnC,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,IAAI,eAAe,EACjC,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAEL,UAAU,EACV,UAAU,EACV,cAAc,EACd,KAAK,cAAc,EACnB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,EAErB,MAAM,EACN,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,EACL,eAAe,EACf,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAG3B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,IAAI,gBAAgB,EACnC,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,IAAI,eAAe,EACjC,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EAErB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAEL,UAAU,EACV,UAAU,EACV,cAAc,EACd,KAAK,cAAc,EACnB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,EACrB,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,QAAQ,EAER,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,cAAc,EAEnB,MAAM,EACN,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,EACL,eAAe,EACf,KAAK,SAAS,EACd,IAAI,EACJ,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,OAAO,EACP,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE,cAAc,wBAAwB,CAAC;AAGvC,cAAc,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -7,9 +7,13 @@ getContainerStats, getContainerUptime, getOnlinePlayers, getDetailedServerInfo,
7
7
  // Re-export domain layer (Value Objects and Entities)
8
8
  export {
9
9
  // Value Objects
10
- ServerName, ServerType, ServerTypeEnum, McVersion, Memory, WorldOptions, WorldSetupType,
10
+ ServerName, ServerType, ServerTypeEnum, McVersion, Memory, WorldOptions, WorldSetupType, UserId, Username, Role, RoleEnum,
11
+ // Service management value objects
12
+ ServiceStatus, ServiceStatusEnum, ProcessInfo,
11
13
  // Entities
12
- Server, ServerStatus, World, WorldLockStatus, } from './domain/index.js';
14
+ Server, ServerStatus, World, WorldLockStatus, User, } from './domain/index.js';
15
+ // Re-export ModSourceFactory
16
+ export { ModSourceFactory } from './infrastructure/factories/index.js';
13
17
  // Re-export application layer (ports and use-cases)
14
18
  export * from './application/index.js';
15
19
  // Re-export infrastructure layer (adapters)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0BA,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9E,6BAA6B;AAC7B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,qBAAqB;AACrB,yBAAyB;AACzB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,sDAAsD;AACtD,OAAO;AACL,gBAAgB;AAChB,UAAU,EACV,UAAU,EACV,cAAc,EAEd,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc;AAEd,WAAW;AACX,MAAM,EACN,YAAY,EAEZ,KAAK,EACL,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAE3B,oDAAoD;AACpD,cAAc,wBAAwB,CAAC;AAEvC,4CAA4C;AAC5C,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA0BA,sBAAsB;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9E,6BAA6B;AAC7B,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,qBAAqB;AACrB,yBAAyB;AACzB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gCAAgC,EAChC,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,sDAAsD;AACtD,OAAO;AACL,gBAAgB;AAChB,UAAU,EACV,UAAU,EACV,cAAc,EAEd,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EAEd,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,QAAQ;AACR,mCAAmC;AACnC,aAAa,EACb,iBAAiB,EACjB,WAAW;AAGX,WAAW;AACX,MAAM,EACN,YAAY,EAEZ,KAAK,EACL,eAAe,EAEf,IAAI,GAEL,MAAM,mBAAmB,CAAC;AAmB3B,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,oDAAoD;AACpD,cAAc,wBAAwB,CAAC;AAEvC,4CAA4C;AAC5C,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { ServerName, ServerType, McVersion, Memory, WorldOptions, Server, World } from '../../domain/index.js';
2
+ import type { IPromptPort, TextPromptOptions, SelectPromptOptions, ConfirmPromptOptions, PasswordPromptOptions, Spinner } from '../../application/ports/outbound/IPromptPort.js';
3
+ import type { WorldWithServerStatus } from '../../application/ports/outbound/IWorldRepository.js';
4
+ /**
5
+ * World setup types for API options
6
+ */
7
+ export type WorldSetupType = 'new' | 'existing' | 'download';
8
+ /**
9
+ * Options for ApiPromptAdapter
10
+ * Pre-configured values that would normally be collected via interactive prompts
11
+ */
12
+ export interface ApiPromptOptions {
13
+ /** Server name (e.g., "myserver") */
14
+ serverName?: string;
15
+ /** Server type (e.g., "PAPER", "FORGE") */
16
+ serverType?: string;
17
+ /** Minecraft version (e.g., "1.21.1", "LATEST") */
18
+ mcVersion?: string;
19
+ /** Memory allocation (e.g., "4G", "2048M") */
20
+ memory?: string;
21
+ /** World setup type */
22
+ worldSetup?: WorldSetupType;
23
+ /** World name for existing world */
24
+ worldName?: string;
25
+ /** World seed for new world */
26
+ worldSeed?: string;
27
+ /** World download URL */
28
+ worldDownloadUrl?: string;
29
+ /** Password value for password prompts */
30
+ password?: string;
31
+ /** Default value for confirm prompts (defaults to true) */
32
+ confirmValue?: boolean;
33
+ }
34
+ /**
35
+ * Message types for collected output
36
+ */
37
+ export type MessageType = 'intro' | 'outro' | 'success' | 'error' | 'warn' | 'info' | 'note';
38
+ /**
39
+ * Collected message
40
+ */
41
+ export interface CollectedMessage {
42
+ type: MessageType;
43
+ message: string;
44
+ title?: string;
45
+ }
46
+ /**
47
+ * Error thrown when API mode operation is not supported
48
+ */
49
+ export declare class ApiModeError extends Error {
50
+ constructor(message: string);
51
+ }
52
+ /**
53
+ * ApiPromptAdapter
54
+ * Implements IPromptPort for API/non-interactive contexts.
55
+ * Returns pre-configured values instead of interactive prompts.
56
+ *
57
+ * Usage:
58
+ * ```typescript
59
+ * const adapter = new ApiPromptAdapter({
60
+ * serverName: 'myserver',
61
+ * serverType: 'PAPER',
62
+ * mcVersion: '1.21.1',
63
+ * memory: '4G',
64
+ * worldSetup: 'new',
65
+ * });
66
+ *
67
+ * // Use with UseCase
68
+ * const useCase = new CreateServerUseCase(adapter, shell, serverRepo);
69
+ * await useCase.execute({ mode: 'cli' }); // Uses pre-configured values
70
+ * ```
71
+ */
72
+ export declare class ApiPromptAdapter implements IPromptPort {
73
+ private readonly options;
74
+ private readonly messages;
75
+ constructor(options: ApiPromptOptions);
76
+ intro(message: string): void;
77
+ outro(message: string): void;
78
+ text(options: TextPromptOptions): Promise<string>;
79
+ select<T>(options: SelectPromptOptions<T>): Promise<T>;
80
+ confirm(_options: ConfirmPromptOptions): Promise<boolean>;
81
+ password(_options: PasswordPromptOptions): Promise<string>;
82
+ promptServerName(): Promise<ServerName>;
83
+ promptServerType(): Promise<ServerType>;
84
+ promptMcVersion(_serverType: ServerType): Promise<McVersion>;
85
+ promptMemory(): Promise<Memory>;
86
+ promptWorldOptions(): Promise<WorldOptions>;
87
+ promptServerSelection(servers: Server[]): Promise<Server>;
88
+ promptWorldSelection(worlds: World[]): Promise<World>;
89
+ promptExistingWorldSelection(worlds: WorldWithServerStatus[]): Promise<World | null>;
90
+ spinner(): Spinner;
91
+ success(message: string): void;
92
+ error(message: string): void;
93
+ warn(message: string): void;
94
+ info(message: string): void;
95
+ note(message: string, title?: string): void;
96
+ isCancel(_value: unknown): boolean;
97
+ handleCancel(): never;
98
+ /**
99
+ * Get all collected messages
100
+ */
101
+ getMessages(): CollectedMessage[];
102
+ /**
103
+ * Clear collected messages
104
+ */
105
+ clearMessages(): void;
106
+ /**
107
+ * Resolve text prompt value from options based on message context
108
+ */
109
+ private resolveTextValue;
110
+ /**
111
+ * Resolve select prompt value from options based on message context
112
+ */
113
+ private resolveSelectValue;
114
+ }
115
+ //# sourceMappingURL=ApiPromptAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiPromptAdapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ApiPromptAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ import { ServerName, ServerType, McVersion, Memory, WorldOptions, } from '../../domain/index.js';
2
+ /**
3
+ * Error thrown when API mode operation is not supported
4
+ */
5
+ export class ApiModeError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'ApiModeError';
9
+ }
10
+ }
11
+ /**
12
+ * ApiPromptAdapter
13
+ * Implements IPromptPort for API/non-interactive contexts.
14
+ * Returns pre-configured values instead of interactive prompts.
15
+ *
16
+ * Usage:
17
+ * ```typescript
18
+ * const adapter = new ApiPromptAdapter({
19
+ * serverName: 'myserver',
20
+ * serverType: 'PAPER',
21
+ * mcVersion: '1.21.1',
22
+ * memory: '4G',
23
+ * worldSetup: 'new',
24
+ * });
25
+ *
26
+ * // Use with UseCase
27
+ * const useCase = new CreateServerUseCase(adapter, shell, serverRepo);
28
+ * await useCase.execute({ mode: 'cli' }); // Uses pre-configured values
29
+ * ```
30
+ */
31
+ export class ApiPromptAdapter {
32
+ options;
33
+ messages = [];
34
+ constructor(options) {
35
+ this.options = options;
36
+ }
37
+ // ========================================
38
+ // Basic Prompts
39
+ // ========================================
40
+ intro(message) {
41
+ this.messages.push({ type: 'intro', message });
42
+ }
43
+ outro(message) {
44
+ this.messages.push({ type: 'outro', message });
45
+ }
46
+ async text(options) {
47
+ // Try to match the prompt message to a known option
48
+ const value = this.resolveTextValue(options.message);
49
+ if (value !== undefined) {
50
+ return value;
51
+ }
52
+ throw new ApiModeError(`Value for prompt "${options.message}" is required in API mode. ` +
53
+ 'Please provide the appropriate option when creating ApiPromptAdapter.');
54
+ }
55
+ async select(options) {
56
+ // Try to match based on message context
57
+ const value = this.resolveSelectValue(options.message);
58
+ if (value !== undefined) {
59
+ // Verify the value is in the options list
60
+ const found = options.options.find((opt) => {
61
+ if (typeof opt.value === 'string') {
62
+ return opt.value.toLowerCase() === String(value).toLowerCase();
63
+ }
64
+ return opt.value === value;
65
+ });
66
+ if (found) {
67
+ return found.value;
68
+ }
69
+ }
70
+ // Return first option as fallback if available
71
+ if (options.options.length > 0 && options.initialValue !== undefined) {
72
+ return options.initialValue;
73
+ }
74
+ throw new ApiModeError(`Selection for prompt "${options.message}" is required in API mode.`);
75
+ }
76
+ async confirm(_options) {
77
+ // Default to true in API mode unless explicitly configured
78
+ return this.options.confirmValue ?? true;
79
+ }
80
+ async password(_options) {
81
+ if (this.options.password !== undefined) {
82
+ return this.options.password;
83
+ }
84
+ throw new ApiModeError('Password is required in API mode.');
85
+ }
86
+ // ========================================
87
+ // Domain-Specific Prompts
88
+ // ========================================
89
+ async promptServerName() {
90
+ if (!this.options.serverName) {
91
+ throw new ApiModeError('serverName is required in API mode');
92
+ }
93
+ return ServerName.create(this.options.serverName);
94
+ }
95
+ async promptServerType() {
96
+ if (!this.options.serverType) {
97
+ throw new ApiModeError('serverType is required in API mode');
98
+ }
99
+ return ServerType.create(this.options.serverType);
100
+ }
101
+ async promptMcVersion(_serverType) {
102
+ if (!this.options.mcVersion) {
103
+ throw new ApiModeError('mcVersion is required in API mode');
104
+ }
105
+ return McVersion.create(this.options.mcVersion);
106
+ }
107
+ async promptMemory() {
108
+ if (!this.options.memory) {
109
+ throw new ApiModeError('memory is required in API mode');
110
+ }
111
+ return Memory.create(this.options.memory);
112
+ }
113
+ async promptWorldOptions() {
114
+ if (!this.options.worldSetup) {
115
+ throw new ApiModeError('worldSetup is required in API mode');
116
+ }
117
+ switch (this.options.worldSetup) {
118
+ case 'new':
119
+ return WorldOptions.newWorld(this.options.worldSeed);
120
+ case 'existing':
121
+ if (!this.options.worldName) {
122
+ throw new ApiModeError('worldName is required when worldSetup is "existing"');
123
+ }
124
+ return WorldOptions.existingWorld(this.options.worldName);
125
+ case 'download':
126
+ if (!this.options.worldDownloadUrl) {
127
+ throw new ApiModeError('worldDownloadUrl is required when worldSetup is "download"');
128
+ }
129
+ return WorldOptions.downloadWorld(this.options.worldDownloadUrl);
130
+ default:
131
+ throw new ApiModeError(`Invalid worldSetup: ${this.options.worldSetup}`);
132
+ }
133
+ }
134
+ async promptServerSelection(servers) {
135
+ if (!this.options.serverName) {
136
+ throw new ApiModeError('serverName is required in API mode for server selection');
137
+ }
138
+ const server = servers.find((s) => s.name.value.toLowerCase() === this.options.serverName.toLowerCase());
139
+ if (!server) {
140
+ throw new ApiModeError(`Server '${this.options.serverName}' not found`);
141
+ }
142
+ return server;
143
+ }
144
+ async promptWorldSelection(worlds) {
145
+ if (!this.options.worldName) {
146
+ throw new ApiModeError('worldName is required in API mode for world selection');
147
+ }
148
+ const world = worlds.find((w) => w.name.toLowerCase() === this.options.worldName.toLowerCase());
149
+ if (!world) {
150
+ throw new ApiModeError(`World '${this.options.worldName}' not found`);
151
+ }
152
+ return world;
153
+ }
154
+ async promptExistingWorldSelection(worlds) {
155
+ // If no worldName is configured, return null (no selection)
156
+ if (!this.options.worldName) {
157
+ return null;
158
+ }
159
+ const worldEntry = worlds.find((w) => w.world.name.toLowerCase() === this.options.worldName.toLowerCase());
160
+ if (!worldEntry) {
161
+ throw new ApiModeError(`World '${this.options.worldName}' not found`);
162
+ }
163
+ // In API mode, we don't warn about stopped servers - caller should check
164
+ return worldEntry.world;
165
+ }
166
+ // ========================================
167
+ // Status Display
168
+ // ========================================
169
+ spinner() {
170
+ // Return a no-op spinner for API mode
171
+ return {
172
+ start: (_message) => { },
173
+ stop: (_message) => { },
174
+ message: (_message) => { },
175
+ };
176
+ }
177
+ success(message) {
178
+ this.messages.push({ type: 'success', message });
179
+ }
180
+ error(message) {
181
+ this.messages.push({ type: 'error', message });
182
+ }
183
+ warn(message) {
184
+ this.messages.push({ type: 'warn', message });
185
+ }
186
+ info(message) {
187
+ this.messages.push({ type: 'info', message });
188
+ }
189
+ note(message, title) {
190
+ this.messages.push({ type: 'note', message, title });
191
+ }
192
+ // ========================================
193
+ // Utility
194
+ // ========================================
195
+ isCancel(_value) {
196
+ // In API mode, there's no user interaction to cancel
197
+ return false;
198
+ }
199
+ handleCancel() {
200
+ throw new ApiModeError('Cancel not supported in API mode');
201
+ }
202
+ // ========================================
203
+ // API-specific methods
204
+ // ========================================
205
+ /**
206
+ * Get all collected messages
207
+ */
208
+ getMessages() {
209
+ return [...this.messages];
210
+ }
211
+ /**
212
+ * Clear collected messages
213
+ */
214
+ clearMessages() {
215
+ this.messages.length = 0;
216
+ }
217
+ // ========================================
218
+ // Private Helpers
219
+ // ========================================
220
+ /**
221
+ * Resolve text prompt value from options based on message context
222
+ */
223
+ resolveTextValue(message) {
224
+ const lowerMessage = message.toLowerCase();
225
+ if (lowerMessage.includes('server name')) {
226
+ return this.options.serverName;
227
+ }
228
+ if (lowerMessage.includes('version')) {
229
+ return this.options.mcVersion;
230
+ }
231
+ if (lowerMessage.includes('memory')) {
232
+ return this.options.memory;
233
+ }
234
+ if (lowerMessage.includes('world') && lowerMessage.includes('name')) {
235
+ return this.options.worldName;
236
+ }
237
+ if (lowerMessage.includes('seed')) {
238
+ return this.options.worldSeed;
239
+ }
240
+ if (lowerMessage.includes('url')) {
241
+ return this.options.worldDownloadUrl;
242
+ }
243
+ if (lowerMessage.includes('password')) {
244
+ return this.options.password;
245
+ }
246
+ return undefined;
247
+ }
248
+ /**
249
+ * Resolve select prompt value from options based on message context
250
+ */
251
+ resolveSelectValue(message) {
252
+ const lowerMessage = message.toLowerCase();
253
+ if (lowerMessage.includes('server type') || lowerMessage.includes('type')) {
254
+ return this.options.serverType;
255
+ }
256
+ if (lowerMessage.includes('version')) {
257
+ return this.options.mcVersion;
258
+ }
259
+ if (lowerMessage.includes('memory')) {
260
+ return this.options.memory;
261
+ }
262
+ if (lowerMessage.includes('world') && lowerMessage.includes('setup')) {
263
+ return this.options.worldSetup;
264
+ }
265
+ return undefined;
266
+ }
267
+ }
268
+ //# sourceMappingURL=ApiPromptAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiPromptAdapter.js","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ApiPromptAdapter.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { readdir, readFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { Paths } from '../../utils/index.js';
5
- import { execScript } from '../../docker/index.js';
5
+ import { execCommandAsync } from '../../docker/index.js';
6
6
  import { Server, ServerStatus, ServerName, ServerType, McVersion, Memory, WorldOptions, } from '../../domain/index.js';
7
7
  /**
8
8
  * ServerRepository
@@ -87,12 +87,12 @@ export class ServerRepository {
87
87
  async getStatus(name) {
88
88
  try {
89
89
  const containerName = `mc-${name}`;
90
- const result = await execScript('docker', [
90
+ const result = await execCommandAsync('docker', [
91
91
  'inspect',
92
92
  '-f',
93
93
  '{{.State.Status}}',
94
94
  containerName,
95
- ], {});
95
+ ]);
96
96
  if (result.code !== 0) {
97
97
  return ServerStatus.STOPPED;
98
98
  }