@playdrop/playdrop-cli 0.3.4-build.1 → 0.3.5-build.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.
Files changed (141) hide show
  1. package/README.md +60 -23
  2. package/config/client-meta.json +5 -5
  3. package/dist/apps/upload.js +5 -3
  4. package/dist/assets/model-artifacts.js +1 -1
  5. package/dist/catalogue.d.ts +6 -0
  6. package/dist/catalogue.js +38 -1
  7. package/dist/commandContext.d.ts +1 -0
  8. package/dist/commandContext.js +45 -15
  9. package/dist/commands/browse.d.ts +16 -0
  10. package/dist/commands/browse.js +370 -0
  11. package/dist/commands/build.js +4 -9
  12. package/dist/commands/capture.js +24 -24
  13. package/dist/commands/captureRemote.d.ts +11 -0
  14. package/dist/commands/captureRemote.js +90 -0
  15. package/dist/commands/comments.d.ts +14 -0
  16. package/dist/commands/comments.js +189 -0
  17. package/dist/commands/create.js +112 -72
  18. package/dist/commands/creations.d.ts +49 -0
  19. package/dist/commands/creations.js +657 -0
  20. package/dist/commands/credits.d.ts +10 -0
  21. package/dist/commands/credits.js +91 -0
  22. package/dist/commands/detail.d.ts +2 -2
  23. package/dist/commands/detail.js +148 -290
  24. package/dist/commands/dev.js +24 -24
  25. package/dist/commands/devShared.js +2 -2
  26. package/dist/commands/documentation.d.ts +4 -1
  27. package/dist/commands/documentation.js +79 -104
  28. package/dist/commands/feedback.d.ts +12 -9
  29. package/dist/commands/feedback.js +125 -257
  30. package/dist/commands/format.js +6 -13
  31. package/dist/commands/generation.d.ts +11 -0
  32. package/dist/commands/generation.js +204 -42
  33. package/dist/commands/gettingStarted.d.ts +1 -0
  34. package/dist/commands/gettingStarted.js +26 -0
  35. package/dist/commands/init.js +26 -24
  36. package/dist/commands/login.js +9 -8
  37. package/dist/commands/logout.js +2 -1
  38. package/dist/commands/notifications.d.ts +14 -0
  39. package/dist/commands/notifications.js +179 -0
  40. package/dist/commands/search.d.ts +13 -0
  41. package/dist/commands/search.js +198 -0
  42. package/dist/commands/upload.js +20 -17
  43. package/dist/commands/validate.js +15 -1
  44. package/dist/commands/versionsBrowse.d.ts +7 -0
  45. package/dist/commands/versionsBrowse.js +209 -0
  46. package/dist/commands/whoami.js +9 -8
  47. package/dist/errors.d.ts +9 -0
  48. package/dist/errors.js +52 -0
  49. package/dist/externalAssetPackValidation.d.ts +2 -0
  50. package/dist/externalAssetPackValidation.js +115 -0
  51. package/dist/http.js +1 -1
  52. package/dist/index.js +570 -630
  53. package/dist/messages.js +11 -11
  54. package/dist/output.d.ts +5 -0
  55. package/dist/output.js +45 -0
  56. package/dist/playwright.js +1 -1
  57. package/dist/refs.d.ts +18 -0
  58. package/dist/refs.js +105 -0
  59. package/node_modules/@playdrop/ai-client/dist/index.d.ts +42 -15
  60. package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
  61. package/node_modules/@playdrop/ai-client/package.json +1 -0
  62. package/node_modules/@playdrop/api-client/dist/client.d.ts +39 -27
  63. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  64. package/node_modules/@playdrop/api-client/dist/client.js +280 -1669
  65. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts +9 -0
  66. package/node_modules/@playdrop/api-client/dist/core/errors.d.ts.map +1 -0
  67. package/node_modules/@playdrop/api-client/dist/core/errors.js +46 -0
  68. package/node_modules/@playdrop/api-client/dist/core/request.d.ts +27 -0
  69. package/node_modules/@playdrop/api-client/dist/core/request.d.ts.map +1 -0
  70. package/node_modules/@playdrop/api-client/dist/core/request.js +122 -0
  71. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +75 -0
  72. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -0
  73. package/node_modules/@playdrop/api-client/dist/domains/admin.js +282 -0
  74. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts +22 -0
  75. package/node_modules/@playdrop/api-client/dist/domains/ai.d.ts.map +1 -0
  76. package/node_modules/@playdrop/api-client/dist/domains/ai.js +15 -0
  77. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +60 -0
  78. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -0
  79. package/node_modules/@playdrop/api-client/dist/domains/apps.js +301 -0
  80. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +59 -0
  81. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -0
  82. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +297 -0
  83. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +62 -0
  84. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -0
  85. package/node_modules/@playdrop/api-client/dist/domains/assets.js +297 -0
  86. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts +28 -0
  87. package/node_modules/@playdrop/api-client/dist/domains/auth.d.ts.map +1 -0
  88. package/node_modules/@playdrop/api-client/dist/domains/auth.js +78 -0
  89. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts +29 -0
  90. package/node_modules/@playdrop/api-client/dist/domains/comments.d.ts.map +1 -0
  91. package/node_modules/@playdrop/api-client/dist/domains/comments.js +65 -0
  92. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts +24 -0
  93. package/node_modules/@playdrop/api-client/dist/domains/me.d.ts.map +1 -0
  94. package/node_modules/@playdrop/api-client/dist/domains/me.js +35 -0
  95. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +37 -0
  96. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -0
  97. package/node_modules/@playdrop/api-client/dist/domains/payments.js +148 -0
  98. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts +27 -0
  99. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -0
  100. package/node_modules/@playdrop/api-client/dist/domains/search.js +65 -0
  101. package/node_modules/@playdrop/api-client/dist/index.d.ts +33 -56
  102. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  103. package/node_modules/@playdrop/api-client/dist/index.js +103 -44
  104. package/node_modules/@playdrop/api-client/package.json +3 -2
  105. package/node_modules/@playdrop/boxel-core/package.json +1 -1
  106. package/node_modules/@playdrop/boxel-three/dist/test/glb-skinned.test.js +1 -1
  107. package/node_modules/@playdrop/boxel-three/dist/test/instantiate.test.js +1 -1
  108. package/node_modules/@playdrop/boxel-three/dist/test/skinned-mesh.test.js +1 -1
  109. package/node_modules/@playdrop/boxel-three/package.json +2 -1
  110. package/node_modules/@playdrop/config/client-meta.json +5 -5
  111. package/node_modules/@playdrop/config/dist/src/constants.d.ts +5 -0
  112. package/node_modules/@playdrop/config/dist/src/constants.d.ts.map +1 -1
  113. package/node_modules/@playdrop/config/dist/src/constants.js +5 -1
  114. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  115. package/node_modules/@playdrop/config/package.json +1 -1
  116. package/node_modules/@playdrop/types/dist/api.d.ts +178 -17
  117. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  118. package/node_modules/@playdrop/types/dist/api.js +30 -1
  119. package/node_modules/@playdrop/types/dist/app.d.ts +0 -14
  120. package/node_modules/@playdrop/types/dist/app.d.ts.map +1 -1
  121. package/node_modules/@playdrop/types/dist/app.js +0 -10
  122. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +11 -1
  123. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  124. package/node_modules/@playdrop/types/dist/asset.d.ts +65 -0
  125. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  126. package/node_modules/@playdrop/types/dist/realtime.d.ts +26 -26
  127. package/node_modules/@playdrop/types/dist/realtime.d.ts.map +1 -1
  128. package/node_modules/@playdrop/types/dist/version.d.ts +5 -0
  129. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  130. package/package.json +2 -3
  131. package/bin/playdrop-cli +0 -2
  132. package/dist/commands/asset-packs.d.ts +0 -27
  133. package/dist/commands/asset-packs.js +0 -508
  134. package/dist/commands/assets.d.ts +0 -35
  135. package/dist/commands/assets.js +0 -668
  136. package/dist/commands/list.d.ts +0 -7
  137. package/dist/commands/list.js +0 -347
  138. package/dist/commands/migrateCatalogueV2.d.ts +0 -1
  139. package/dist/commands/migrateCatalogueV2.js +0 -142
  140. package/dist/commands/versions.d.ts +0 -17
  141. package/dist/commands/versions.js +0 -384
@@ -1,384 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listVersions = listVersions;
4
- exports.setCurrentVersion = setCurrentVersion;
5
- exports.publishVersion = publishVersion;
6
- exports.unpublishVersion = unpublishVersion;
7
- exports.deleteVersion = deleteVersion;
8
- const types_1 = require("@playdrop/types");
9
- const http_1 = require("../http");
10
- const messages_1 = require("../messages");
11
- const commandContext_1 = require("../commandContext");
12
- function isNetworkError(error) {
13
- if (!error || typeof error !== 'object') {
14
- return false;
15
- }
16
- const candidate = error;
17
- if (candidate instanceof TypeError) {
18
- return true;
19
- }
20
- const code = typeof candidate.code === 'string' ? candidate.code : undefined;
21
- if (code === 'ECONNREFUSED' || code === 'ENOTFOUND') {
22
- return true;
23
- }
24
- const cause = candidate.cause;
25
- if (cause && typeof cause === 'object' && typeof cause.code === 'string') {
26
- const nestedCode = cause.code;
27
- return nestedCode === 'ECONNREFUSED' || nestedCode === 'ENOTFOUND';
28
- }
29
- return false;
30
- }
31
- async function fetchCurrentUsername(client) {
32
- try {
33
- const response = await client.me();
34
- const username = response?.user?.username;
35
- if (typeof username === 'string' && username.trim().length > 0) {
36
- return username.trim();
37
- }
38
- return null;
39
- }
40
- catch (error) {
41
- if (error instanceof types_1.UnsupportedClientError) {
42
- (0, http_1.handleUnsupportedError)(error, 'Versions');
43
- }
44
- if (error instanceof http_1.CLIUnsupportedClientError) {
45
- throw error;
46
- }
47
- if (error instanceof types_1.ApiError) {
48
- throw error;
49
- }
50
- throw error;
51
- }
52
- }
53
- function formatDate(isoDate) {
54
- try {
55
- const date = new Date(isoDate);
56
- return date.toLocaleDateString('en-US', {
57
- year: 'numeric',
58
- month: 'short',
59
- day: 'numeric',
60
- hour: '2-digit',
61
- minute: '2-digit',
62
- });
63
- }
64
- catch {
65
- return isoDate;
66
- }
67
- }
68
- function parseAppKey(appKey) {
69
- const parts = appKey.split('/');
70
- if (parts.length === 1) {
71
- const appName = parts[0]?.trim();
72
- if (!appName) {
73
- return null;
74
- }
75
- return { appName, creatorFromKey: null };
76
- }
77
- if (parts.length === 3) {
78
- const creatorFromKey = parts[0]?.trim();
79
- const appName = parts[2]?.trim();
80
- if (!creatorFromKey || !appName) {
81
- return null;
82
- }
83
- return { appName, creatorFromKey };
84
- }
85
- return null;
86
- }
87
- async function resolveCreatorForAppKey(client, appKey, explicitCreator) {
88
- const parsed = parseAppKey(appKey);
89
- if (!parsed) {
90
- return {
91
- error: 'Invalid app key format. Use app name (e.g., "myapp") or full key (e.g., "creator/game/myapp").',
92
- };
93
- }
94
- const explicit = typeof explicitCreator === 'string' ? explicitCreator.trim() : '';
95
- let creatorUsername = null;
96
- if (explicit) {
97
- if (explicit.toLowerCase() === 'me') {
98
- creatorUsername = await fetchCurrentUsername(client);
99
- }
100
- else {
101
- creatorUsername = explicit;
102
- }
103
- }
104
- if (parsed.creatorFromKey) {
105
- if (creatorUsername && creatorUsername.toLowerCase() !== parsed.creatorFromKey.toLowerCase()) {
106
- return {
107
- error: `Creator mismatch between app key "${parsed.creatorFromKey}" and --creator "${creatorUsername}".`,
108
- };
109
- }
110
- creatorUsername = parsed.creatorFromKey;
111
- }
112
- if (!creatorUsername) {
113
- creatorUsername = await fetchCurrentUsername(client);
114
- }
115
- if (!creatorUsername) {
116
- return { error: 'Could not determine creator username. Run "playdrop-cli login" or pass --creator.' };
117
- }
118
- return {
119
- appName: parsed.appName,
120
- creatorUsername,
121
- };
122
- }
123
- async function resolveCreatorForCommand(client, appKey, explicitCreator, command) {
124
- try {
125
- const target = await resolveCreatorForAppKey(client, appKey, explicitCreator);
126
- if ('error' in target) {
127
- (0, messages_1.printErrorWithHelp)(target.error, ['Run "playdrop-cli login" to authenticate, or pass --creator <username>.'], { command });
128
- process.exitCode = 1;
129
- return null;
130
- }
131
- return target;
132
- }
133
- catch (error) {
134
- if (error instanceof http_1.CLIUnsupportedClientError) {
135
- return null;
136
- }
137
- if (error instanceof types_1.ApiError) {
138
- (0, messages_1.printErrorWithHelp)(`Failed to resolve your account (status ${error.status}).`, ['Run "playdrop-cli login" to refresh your session, then try again.'], { command });
139
- process.exitCode = 1;
140
- return null;
141
- }
142
- if (isNetworkError(error)) {
143
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', command);
144
- process.exitCode = 1;
145
- return null;
146
- }
147
- throw error;
148
- }
149
- }
150
- async function listVersions(appKey, options = {}) {
151
- await (0, commandContext_1.withEnvironment)('versions list', 'Listing versions', async ({ client }) => {
152
- const target = await resolveCreatorForCommand(client, appKey, options.creator, 'versions list');
153
- if (!target) {
154
- return;
155
- }
156
- const { appName, creatorUsername } = target;
157
- try {
158
- const response = await client.listAppVersions(creatorUsername, appName);
159
- const versions = response?.versions ?? [];
160
- if (options.format === 'json') {
161
- console.log(JSON.stringify({ versions }, null, 2));
162
- return;
163
- }
164
- if (versions.length === 0) {
165
- console.log(`No versions found for app "${appName}".`);
166
- return;
167
- }
168
- console.log(`Versions for ${creatorUsername}/${appName}:\n`);
169
- for (const v of versions) {
170
- const currentBadge = v.isCurrent ? ' [CURRENT]' : '';
171
- const visibility = v.visibility === 'PRIVATE' ? ' [PRIVATE]' : '';
172
- const notes = v.releaseNotes ? ` - ${v.releaseNotes.slice(0, 50)}${v.releaseNotes.length > 50 ? '...' : ''}` : '';
173
- console.log(` ${v.version}${currentBadge}${visibility} (${formatDate(v.createdAt)})${notes}`);
174
- }
175
- }
176
- catch (error) {
177
- if (error instanceof http_1.CLIUnsupportedClientError) {
178
- return;
179
- }
180
- if (error instanceof types_1.UnsupportedClientError) {
181
- (0, http_1.handleUnsupportedError)(error, 'Versions list');
182
- }
183
- if (error instanceof types_1.ApiError) {
184
- if (error.status === 404) {
185
- (0, messages_1.printErrorWithHelp)(`App "${appName}" not found.`, ['Check the app name and try again.', 'Use "playdrop-cli list --creator me" to see your apps.'], { command: 'versions list' });
186
- }
187
- else {
188
- (0, messages_1.printErrorWithHelp)(`Request failed (status ${error.status}).`, ['Retry in a moment.', 'If the problem persists, contact the Playdrop team.'], { command: 'versions list' });
189
- }
190
- process.exitCode = 1;
191
- return;
192
- }
193
- if (isNetworkError(error)) {
194
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', 'versions list');
195
- process.exitCode = 1;
196
- return;
197
- }
198
- throw error;
199
- }
200
- });
201
- }
202
- // ============================================================================
203
- // Set Current Version Command
204
- // ============================================================================
205
- async function setCurrentVersion(appKey, version, options = {}) {
206
- await (0, commandContext_1.withEnvironment)('versions set-current', 'Setting current version', async ({ client }) => {
207
- const target = await resolveCreatorForCommand(client, appKey, options.creator, 'versions set-current');
208
- if (!target) {
209
- return;
210
- }
211
- const { appName, creatorUsername } = target;
212
- try {
213
- console.log(`Setting version ${version} as current for app "${creatorUsername}/${appName}"...`);
214
- await client.updateAppVersion(appName, version, { setAsCurrent: true }, { creatorUsername });
215
- console.log(`Version ${version} is now the current version.`);
216
- }
217
- catch (error) {
218
- if (error instanceof http_1.CLIUnsupportedClientError) {
219
- return;
220
- }
221
- if (error instanceof types_1.UnsupportedClientError) {
222
- (0, http_1.handleUnsupportedError)(error, 'Set current version');
223
- }
224
- if (error instanceof types_1.ApiError) {
225
- const detail = error.message?.trim();
226
- if (error.status === 400) {
227
- (0, messages_1.printErrorWithHelp)(`Cannot set version as current: ${detail || 'validation failed'}`, ['Only PUBLIC versions can be set as current.'], { command: 'versions set-current' });
228
- }
229
- else if (error.status === 404) {
230
- (0, messages_1.printErrorWithHelp)(`Version "${version}" for app "${creatorUsername}/${appName}" not found.`, ['Check the app name and version, then try again.'], { command: 'versions set-current' });
231
- }
232
- else {
233
- (0, messages_1.printErrorWithHelp)(`Request failed (status ${error.status}): ${detail || 'unknown error'}`, ['Retry in a moment.'], { command: 'versions set-current' });
234
- }
235
- process.exitCode = 1;
236
- return;
237
- }
238
- if (isNetworkError(error)) {
239
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', 'versions set-current');
240
- process.exitCode = 1;
241
- return;
242
- }
243
- throw error;
244
- }
245
- });
246
- }
247
- // ============================================================================
248
- // Publish Version Command
249
- // ============================================================================
250
- async function publishVersion(appKey, version, options = {}) {
251
- await (0, commandContext_1.withEnvironment)('versions publish', 'Publishing version', async ({ client }) => {
252
- const target = await resolveCreatorForCommand(client, appKey, options.creator, 'versions publish');
253
- if (!target) {
254
- return;
255
- }
256
- const { appName, creatorUsername } = target;
257
- try {
258
- console.log(`Publishing version ${version} for app "${creatorUsername}/${appName}"...`);
259
- await client.updateAppVersion(appName, version, { visibility: 'PUBLIC' }, { creatorUsername });
260
- console.log(`Version ${version} is now PUBLIC.`);
261
- }
262
- catch (error) {
263
- if (error instanceof http_1.CLIUnsupportedClientError) {
264
- return;
265
- }
266
- if (error instanceof types_1.UnsupportedClientError) {
267
- (0, http_1.handleUnsupportedError)(error, 'Publish version');
268
- }
269
- if (error instanceof types_1.ApiError) {
270
- const detail = error.message?.trim();
271
- if (error.status === 404) {
272
- (0, messages_1.printErrorWithHelp)(`Version "${version}" for app "${creatorUsername}/${appName}" not found.`, ['Check the app name and version, then try again.'], { command: 'versions publish' });
273
- }
274
- else {
275
- (0, messages_1.printErrorWithHelp)(`Request failed (status ${error.status}): ${detail || 'unknown error'}`, ['Retry in a moment.'], { command: 'versions publish' });
276
- }
277
- process.exitCode = 1;
278
- return;
279
- }
280
- if (isNetworkError(error)) {
281
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', 'versions publish');
282
- process.exitCode = 1;
283
- return;
284
- }
285
- throw error;
286
- }
287
- });
288
- }
289
- // ============================================================================
290
- // Unpublish Version Command
291
- // ============================================================================
292
- async function unpublishVersion(appKey, version, options = {}) {
293
- await (0, commandContext_1.withEnvironment)('versions unpublish', 'Unpublishing version', async ({ client }) => {
294
- const target = await resolveCreatorForCommand(client, appKey, options.creator, 'versions unpublish');
295
- if (!target) {
296
- return;
297
- }
298
- const { appName, creatorUsername } = target;
299
- try {
300
- console.log(`Unpublishing version ${version} for app "${creatorUsername}/${appName}"...`);
301
- await client.updateAppVersion(appName, version, { visibility: 'PRIVATE' }, { creatorUsername });
302
- console.log(`Version ${version} is now PRIVATE.`);
303
- }
304
- catch (error) {
305
- if (error instanceof http_1.CLIUnsupportedClientError) {
306
- return;
307
- }
308
- if (error instanceof types_1.UnsupportedClientError) {
309
- (0, http_1.handleUnsupportedError)(error, 'Unpublish version');
310
- }
311
- if (error instanceof types_1.ApiError) {
312
- const detail = error.message?.trim();
313
- if (error.status === 400) {
314
- (0, messages_1.printErrorWithHelp)(`Cannot unpublish version: ${detail || 'validation failed'}`, ['Cannot unpublish the current version. Set a different version as current first.'], { command: 'versions unpublish' });
315
- }
316
- else if (error.status === 404) {
317
- (0, messages_1.printErrorWithHelp)(`Version "${version}" for app "${creatorUsername}/${appName}" not found.`, ['Check the app name and version, then try again.'], { command: 'versions unpublish' });
318
- }
319
- else {
320
- (0, messages_1.printErrorWithHelp)(`Request failed (status ${error.status}): ${detail || 'unknown error'}`, ['Retry in a moment.'], { command: 'versions unpublish' });
321
- }
322
- process.exitCode = 1;
323
- return;
324
- }
325
- if (isNetworkError(error)) {
326
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', 'versions unpublish');
327
- process.exitCode = 1;
328
- return;
329
- }
330
- throw error;
331
- }
332
- });
333
- }
334
- // ============================================================================
335
- // Delete Version Command
336
- // ============================================================================
337
- async function deleteVersion(appKey, version, options = {}) {
338
- await (0, commandContext_1.withEnvironment)('versions delete', 'Deleting version', async ({ client }) => {
339
- const target = await resolveCreatorForCommand(client, appKey, options.creator, 'versions delete');
340
- if (!target) {
341
- return;
342
- }
343
- const { appName, creatorUsername } = target;
344
- try {
345
- console.log(`Deleting version ${version} for app "${creatorUsername}/${appName}"...`);
346
- const response = await client.deleteAppVersion(appName, version, { creatorUsername });
347
- if (response?.success) {
348
- console.log(`Version ${version} deleted successfully.`);
349
- }
350
- else {
351
- console.error('Delete request completed but success was not confirmed.');
352
- process.exitCode = 1;
353
- }
354
- }
355
- catch (error) {
356
- if (error instanceof http_1.CLIUnsupportedClientError) {
357
- return;
358
- }
359
- if (error instanceof types_1.UnsupportedClientError) {
360
- (0, http_1.handleUnsupportedError)(error, 'Delete version');
361
- }
362
- if (error instanceof types_1.ApiError) {
363
- const detail = error.message?.trim();
364
- if (error.status === 400) {
365
- (0, messages_1.printErrorWithHelp)(`Cannot delete version: ${detail || 'validation failed'}`, ['Cannot delete the current version. Set a different version as current first.'], { command: 'versions delete' });
366
- }
367
- else if (error.status === 404) {
368
- (0, messages_1.printErrorWithHelp)(`Version "${version}" for app "${creatorUsername}/${appName}" not found.`, ['Check the app name and version, then try again.'], { command: 'versions delete' });
369
- }
370
- else {
371
- (0, messages_1.printErrorWithHelp)(`Request failed (status ${error.status}): ${detail || 'unknown error'}`, ['Retry in a moment.'], { command: 'versions delete' });
372
- }
373
- process.exitCode = 1;
374
- return;
375
- }
376
- if (isNetworkError(error)) {
377
- (0, messages_1.printNetworkIssue)('Could not reach the Playdrop API.', 'versions delete');
378
- process.exitCode = 1;
379
- return;
380
- }
381
- throw error;
382
- }
383
- });
384
- }