@quenty/nevermore-cli 4.47.0 → 4.47.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 (42) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/commands/batch-command/batch-deploy-command.d.ts.map +1 -1
  3. package/dist/commands/batch-command/batch-deploy-command.js +4 -3
  4. package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
  5. package/dist/utils/build/upload.d.ts.map +1 -1
  6. package/dist/utils/build/upload.js +4 -1
  7. package/dist/utils/build/upload.js.map +1 -1
  8. package/dist/utils/job-context/cloud-job-context.d.ts.map +1 -1
  9. package/dist/utils/job-context/cloud-job-context.js +5 -3
  10. package/dist/utils/job-context/cloud-job-context.js.map +1 -1
  11. package/dist/utils/open-cloud/open-cloud-client.d.ts +4 -4
  12. package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
  13. package/dist/utils/open-cloud/open-cloud-client.js +6 -5
  14. package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
  15. package/dist/utils/open-cloud/rate-limiter.d.ts +29 -2
  16. package/dist/utils/open-cloud/rate-limiter.d.ts.map +1 -1
  17. package/dist/utils/open-cloud/rate-limiter.js +98 -20
  18. package/dist/utils/open-cloud/rate-limiter.js.map +1 -1
  19. package/dist/utils/open-cloud/rate-limiter.test.js +64 -4
  20. package/dist/utils/open-cloud/rate-limiter.test.js.map +1 -1
  21. package/dist/utils/testing/parsers/batch-log-parser.test.js +1 -1
  22. package/dist/utils/testing/parsers/batch-log-parser.test.js.map +1 -1
  23. package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
  24. package/dist/utils/testing/runner/test-runner.js +8 -7
  25. package/dist/utils/testing/runner/test-runner.js.map +1 -1
  26. package/dist/utils/testing/runner/test-runner.test.js +1 -1
  27. package/dist/utils/testing/runner/test-runner.test.js.map +1 -1
  28. package/package.json +3 -3
  29. package/src/commands/batch-command/batch-deploy-command.ts +11 -3
  30. package/src/utils/build/upload.ts +5 -1
  31. package/src/utils/job-context/cloud-job-context.ts +24 -15
  32. package/src/utils/open-cloud/open-cloud-client.ts +25 -12
  33. package/src/utils/open-cloud/rate-limiter.test.ts +106 -4
  34. package/src/utils/open-cloud/rate-limiter.ts +150 -21
  35. package/src/utils/testing/parsers/batch-log-parser.test.ts +3 -3
  36. package/src/utils/testing/runner/test-runner.test.ts +1 -1
  37. package/src/utils/testing/runner/test-runner.ts +8 -9
  38. package/templates/batch-test-runner.lua +176 -172
  39. package/templates/game-template/src/scripts/Server/ServerMain.server.lua +3 -2
  40. package/templates/nevermore-library-package-template/test/scripts/Server/ServerMain.server.lua +3 -2
  41. package/templates/nevermore-service-package-template/test/scripts/Server/ServerMain.server.lua +3 -2
  42. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.test.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-runner.test.js","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/nevermore-cli",
3
- "version": "4.47.0",
3
+ "version": "4.47.2",
4
4
  "description": "CLI interface for Nevermore",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -29,7 +29,7 @@
29
29
  "@quenty/nevermore-cli-helpers": "1.19.0",
30
30
  "@quenty/nevermore-deploy": "1.1.1",
31
31
  "@quenty/nevermore-template-helpers": "1.20.0",
32
- "@quenty/studio-bridge": "0.21.0",
32
+ "@quenty/studio-bridge": "0.21.1",
33
33
  "execa": "^9.6.1",
34
34
  "find-git-root": "^1.0.4",
35
35
  "inquirer": "^13.2.0",
@@ -60,5 +60,5 @@
60
60
  "engines": {
61
61
  "node": ">=16"
62
62
  },
63
- "gitHead": "6b26147a6b432f17270769342498b4f2f08f60b1"
63
+ "gitHead": "e209b95fe15e7490d4d74c32497382d1ef9f74fc"
64
64
  }
@@ -26,7 +26,10 @@ import {
26
26
  injectDeployMetadataAsync,
27
27
  } from '../../utils/deploy/deploy-metadata.js';
28
28
  import { OpenCloudClient } from '../../utils/open-cloud/open-cloud-client.js';
29
- import { RateLimiter } from '../../utils/open-cloud/rate-limiter.js';
29
+ import {
30
+ RateLimiter,
31
+ reportRateLimitWait,
32
+ } from '../../utils/open-cloud/rate-limiter.js';
30
33
  import { CloudJobContext } from '../../utils/job-context/cloud-job-context.js';
31
34
  import {
32
35
  createBasePlaceResolver,
@@ -546,12 +549,16 @@ async function _runSmokeTestAsync(
546
549
  throw new Error(`Smoke test script not found: ${SMOKE_TEST_SCRIPT_PATH}`);
547
550
  }
548
551
 
552
+ const onRateLimitWait = reportRateLimitWait(reporter, packageName);
553
+
549
554
  reporter.onPackagePhaseChange(packageName, 'scheduling');
550
555
  const task = await client.createExecutionTaskAsync(
551
556
  universeId,
552
557
  placeId,
553
558
  version,
554
- scriptContent
559
+ scriptContent,
560
+ undefined,
561
+ onRateLimitWait
555
562
  );
556
563
 
557
564
  const completedTask = await client.pollTaskCompletionAsync(
@@ -560,7 +567,8 @@ async function _runSmokeTestAsync(
560
567
  if (state === 'PROCESSING') {
561
568
  reporter.onPackagePhaseChange(packageName, 'executing');
562
569
  }
563
- }
570
+ },
571
+ onRateLimitWait
564
572
  );
565
573
 
566
574
  const rawLogs = await client.getRawTaskLogsAsync(task.path);
@@ -4,6 +4,7 @@ import {
4
4
  } from '@quenty/nevermore-cli-helpers';
5
5
  import { type DeployTarget } from '@quenty/nevermore-deploy';
6
6
  import { OpenCloudClient } from '../open-cloud/open-cloud-client.js';
7
+ import { reportRateLimitWait } from '../open-cloud/rate-limiter.js';
7
8
  import { type BuiltPlace } from './build.js';
8
9
  import { type Reporter } from '@quenty/cli-output-helpers/reporting';
9
10
 
@@ -53,7 +54,10 @@ export async function uploadPlaceAsync(
53
54
  target.placeId,
54
55
  rbxlPath,
55
56
  args.publish,
56
- onProgress
57
+ onProgress,
58
+ reporter && packageName
59
+ ? reportRateLimitWait(reporter, packageName)
60
+ : undefined
57
61
  );
58
62
 
59
63
  return { client, apiKey, target, version };
@@ -4,6 +4,7 @@ import {
4
4
  type LuauTask,
5
5
  type OpenCloudClient,
6
6
  } from '../open-cloud/open-cloud-client.js';
7
+ import { reportRateLimitWait } from '../open-cloud/rate-limiter.js';
7
8
  import { tryRenamePlaceAsync } from '@quenty/nevermore-cli-helpers';
8
9
  import { buildPlaceNameAsync, timeoutAsync } from '../nevermore-cli-utils.js';
9
10
  import {
@@ -60,7 +61,8 @@ export class CloudJobContext extends BaseJobContext {
60
61
  transferredBytes: transferred,
61
62
  totalBytes: total,
62
63
  });
63
- }
64
+ },
65
+ reportRateLimitWait(this._reporter, packageName)
64
66
  );
65
67
 
66
68
  // Eagerly release build artifacts after upload (disposeAsync is safety net)
@@ -82,13 +84,16 @@ export class CloudJobContext extends BaseJobContext {
82
84
  const cloudDeployment = deployment as CloudDeployment;
83
85
  const { scriptContent, packageName, timeoutMs = 120_000 } = options;
84
86
 
87
+ const onRateLimitWait = reportRateLimitWait(this._reporter, packageName);
88
+
85
89
  this._reporter.onPackagePhaseChange(packageName, 'scheduling');
86
90
  const task = await this._openCloudClient!.createExecutionTaskAsync(
87
91
  cloudDeployment.universeId,
88
92
  cloudDeployment.placeId,
89
93
  cloudDeployment.version,
90
94
  scriptContent,
91
- timeoutMs
95
+ timeoutMs,
96
+ onRateLimitWait
92
97
  );
93
98
 
94
99
  // Give the server-side timeout a head start so we observe the cancelled
@@ -97,19 +102,23 @@ export class CloudJobContext extends BaseJobContext {
97
102
 
98
103
  let pollCount = 0;
99
104
  const completedTask = await Promise.race([
100
- this._openCloudClient!.pollTaskCompletionAsync(task.path, (state) => {
101
- pollCount++;
102
- if (state === 'PROCESSING') {
103
- this._reporter.onPackagePhaseChange(packageName, 'executing');
104
- }
105
- const label = state === 'QUEUED' ? 'queued' : `poll #${pollCount}`;
106
- this._reporter.onPackageProgressUpdate(packageName, {
107
- kind: 'steps',
108
- completed: pollCount,
109
- total: 0,
110
- label,
111
- });
112
- }),
105
+ this._openCloudClient!.pollTaskCompletionAsync(
106
+ task.path,
107
+ (state) => {
108
+ pollCount++;
109
+ if (state === 'PROCESSING') {
110
+ this._reporter.onPackagePhaseChange(packageName, 'executing');
111
+ }
112
+ const label = state === 'QUEUED' ? 'queued' : `poll #${pollCount}`;
113
+ this._reporter.onPackageProgressUpdate(packageName, {
114
+ kind: 'steps',
115
+ completed: pollCount,
116
+ total: 0,
117
+ label,
118
+ });
119
+ },
120
+ onRateLimitWait
121
+ ),
113
122
  timeoutAsync(
114
123
  timeoutMs + CLIENT_TIMEOUT_GRACE_MS,
115
124
  `Test timed out after ${timeoutMs / 1000}s`
@@ -3,7 +3,11 @@ import * as path from 'path';
3
3
  import { Readable, Transform } from 'node:stream';
4
4
  import nodeFetch from 'node-fetch';
5
5
  import { OutputHelper } from '@quenty/cli-output-helpers';
6
- import { RateLimiter, type FetchLike } from './rate-limiter.js';
6
+ import {
7
+ RateLimiter,
8
+ type FetchLike,
9
+ type RateLimitWait,
10
+ } from './rate-limiter.js';
7
11
  import {
8
12
  parseTestLogs,
9
13
  type ParsedTestLogs,
@@ -264,7 +268,8 @@ export class OpenCloudClient {
264
268
  placeId: number,
265
269
  rbxlPath: string,
266
270
  publish?: boolean,
267
- onProgress?: (transferredBytes: number, totalBytes: number) => void
271
+ onProgress?: (transferredBytes: number, totalBytes: number) => void,
272
+ onRateLimitWait?: (wait: RateLimitWait) => void
268
273
  ): Promise<number> {
269
274
  OutputHelper.verbose(
270
275
  `Uploading to https://www.roblox.com/games/${placeId}/place ...`
@@ -310,6 +315,7 @@ export class OpenCloudClient {
310
315
 
311
316
  const response = await this._rateLimiter.fetchAsync(url, makeUploadInit, {
312
317
  fetchImpl: nodeFetch as unknown as FetchLike,
318
+ onWait: onRateLimitWait,
313
319
  });
314
320
 
315
321
  if (!response.ok) {
@@ -362,7 +368,8 @@ export class OpenCloudClient {
362
368
  placeId: number,
363
369
  placeVersion: number,
364
370
  script: string,
365
- timeoutMs?: number
371
+ timeoutMs?: number,
372
+ onRateLimitWait?: (wait: RateLimitWait) => void
366
373
  ): Promise<LuauTask> {
367
374
  const apiKey = await this._resolveApiKeyAsync();
368
375
  const url = `https://apis.roblox.com/cloud/v2/universes/${universeId}/places/${placeId}/versions/${placeVersion}/luau-execution-session-tasks`;
@@ -386,14 +393,18 @@ export class OpenCloudClient {
386
393
  body.timeout = `${clampedSeconds}s`;
387
394
  }
388
395
 
389
- const response = await this._rateLimiter.fetchAsync(url, {
390
- method: 'POST',
391
- headers: {
392
- 'Content-Type': 'application/json',
393
- 'X-API-Key': apiKey,
396
+ const response = await this._rateLimiter.fetchAsync(
397
+ url,
398
+ {
399
+ method: 'POST',
400
+ headers: {
401
+ 'Content-Type': 'application/json',
402
+ 'X-API-Key': apiKey,
403
+ },
404
+ body: JSON.stringify(body),
394
405
  },
395
- body: JSON.stringify(body),
396
- });
406
+ { onWait: onRateLimitWait }
407
+ );
397
408
 
398
409
  if (!response.ok) {
399
410
  const text = await response.text();
@@ -422,7 +433,8 @@ export class OpenCloudClient {
422
433
 
423
434
  async pollTaskCompletionAsync(
424
435
  taskPath: string,
425
- onProgress?: (state: LuauTask['state']) => void
436
+ onProgress?: (state: LuauTask['state']) => void,
437
+ onRateLimitWait?: (wait: RateLimitWait) => void
426
438
  ): Promise<LuauTask> {
427
439
  const apiKey = await this._resolveApiKeyAsync();
428
440
  const pollIntervalMs = 3000;
@@ -435,7 +447,8 @@ export class OpenCloudClient {
435
447
  headers: {
436
448
  'X-API-Key': apiKey,
437
449
  },
438
- }
450
+ },
451
+ { onWait: onRateLimitWait }
439
452
  );
440
453
 
441
454
  if (!response.ok) {
@@ -5,10 +5,11 @@ vi.mock('@quenty/cli-output-helpers', () => ({
5
5
  warn: vi.fn(),
6
6
  info: vi.fn(),
7
7
  error: vi.fn(),
8
+ verbose: vi.fn(),
8
9
  },
9
10
  }));
10
11
 
11
- import { RateLimiter } from './rate-limiter.js';
12
+ import { formatRateLimitWait, RateLimiter } from './rate-limiter.js';
12
13
 
13
14
  interface Deferred<T> {
14
15
  promise: Promise<T>;
@@ -105,9 +106,10 @@ describe('RateLimiter', () => {
105
106
  expect(fetchMock).toHaveBeenCalledTimes(2);
106
107
  });
107
108
 
108
- it('blocks the next request when x-ratelimit-remaining hits 0 until reset elapses', async () => {
109
+ it('blocks the next request to the same endpoint when x-ratelimit-remaining hits 0 until reset elapses', async () => {
109
110
  vi.useFakeTimers();
110
111
  const limiter = new RateLimiter();
112
+ const onWait = vi.fn();
111
113
 
112
114
  fetchMock
113
115
  .mockResolvedValueOnce(
@@ -118,20 +120,83 @@ describe('RateLimiter', () => {
118
120
  )
119
121
  .mockResolvedValueOnce(makeResponse(200));
120
122
 
121
- await limiter.fetchAsync('https://apis.roblox.com/cloud/v2/a');
123
+ await limiter.fetchAsync(
124
+ 'https://apis.roblox.com/cloud/v2/universes/1/places/2/versions/3/luau-execution-session-tasks',
125
+ { method: 'POST' }
126
+ );
122
127
  expect(fetchMock).toHaveBeenCalledTimes(1);
123
128
 
124
- const second = limiter.fetchAsync('https://apis.roblox.com/cloud/v2/b');
129
+ const second = limiter.fetchAsync(
130
+ 'https://apis.roblox.com/cloud/v2/universes/1/places/2/versions/4/luau-execution-session-tasks',
131
+ { method: 'POST' },
132
+ { onWait }
133
+ );
125
134
 
126
135
  // Without advancing time, the second fetch is parked in _waitIfNeededAsync
127
136
  await vi.advanceTimersByTimeAsync(0);
128
137
  expect(fetchMock).toHaveBeenCalledTimes(1);
138
+ expect(onWait).toHaveBeenCalledWith(
139
+ expect.objectContaining({ reason: 'quota', waitMs: 5000 })
140
+ );
129
141
 
130
142
  await vi.advanceTimersByTimeAsync(5000);
131
143
  await second;
132
144
  expect(fetchMock).toHaveBeenCalledTimes(2);
133
145
  });
134
146
 
147
+ it('does not let a spent quota on one endpoint stall another', async () => {
148
+ // Open Cloud meters task creation (5/min) and task polling (200/min)
149
+ // separately; creation running dry must not park the poll.
150
+ vi.useFakeTimers();
151
+ const limiter = new RateLimiter();
152
+
153
+ fetchMock
154
+ .mockResolvedValueOnce(
155
+ makeResponse(200, {
156
+ 'x-ratelimit-remaining': '0',
157
+ 'x-ratelimit-reset': '60',
158
+ })
159
+ )
160
+ .mockResolvedValueOnce(makeResponse(200));
161
+
162
+ await limiter.fetchAsync(
163
+ 'https://apis.roblox.com/cloud/v2/universes/1/places/2/versions/3/luau-execution-session-tasks',
164
+ { method: 'POST' }
165
+ );
166
+
167
+ const poll = limiter.fetchAsync(
168
+ 'https://apis.roblox.com/cloud/v2/universes/1/places/2/versions/3/luau-execution-sessions/12b4bf19-8ddc-4885-9e54-fa40bb0faca8/tasks/12b4bf19-8ddc-4885-9e54-fa40bb0faca8',
169
+ { method: 'GET' }
170
+ );
171
+
172
+ await vi.advanceTimersByTimeAsync(0);
173
+ expect(fetchMock).toHaveBeenCalledTimes(2);
174
+ expect((await poll).status).toBe(200);
175
+ });
176
+
177
+ it('reports retry waits to onWait with the triggering status', async () => {
178
+ vi.useFakeTimers();
179
+ const limiter = new RateLimiter();
180
+ const onWait = vi.fn();
181
+
182
+ fetchMock
183
+ .mockResolvedValueOnce(makeResponse(429, { 'retry-after': '5' }))
184
+ .mockResolvedValueOnce(makeResponse(200));
185
+
186
+ const promise = limiter.fetchAsync(
187
+ 'https://apis.roblox.com/cloud/v2/a',
188
+ undefined,
189
+ { onWait }
190
+ );
191
+ await vi.advanceTimersByTimeAsync(5000);
192
+ await promise;
193
+
194
+ expect(onWait).toHaveBeenCalledTimes(1);
195
+ expect(onWait).toHaveBeenCalledWith(
196
+ expect.objectContaining({ reason: 'retry', status: 429, waitMs: 5000 })
197
+ );
198
+ });
199
+
135
200
  it('returns the last 429 response after exhausting all retries without sleeping past the final attempt', async () => {
136
201
  vi.useFakeTimers();
137
202
  const limiter = new RateLimiter({ maxRetries: 3 });
@@ -228,3 +293,40 @@ describe('RateLimiter', () => {
228
293
  expect(fetchMock).toHaveBeenCalledTimes(1);
229
294
  });
230
295
  });
296
+
297
+ describe('formatRateLimitWait', () => {
298
+ it('says whether the wait is a rate limit or a retry', () => {
299
+ expect(
300
+ formatRateLimitWait({ route: 'r', waitMs: 54_000, reason: 'quota' })
301
+ ).toBe('rate limited 54s');
302
+ expect(
303
+ formatRateLimitWait({
304
+ route: 'r',
305
+ waitMs: 5_500,
306
+ reason: 'retry',
307
+ status: 429,
308
+ })
309
+ ).toBe('rate limited 6s');
310
+ expect(
311
+ formatRateLimitWait({
312
+ route: 'r',
313
+ waitMs: 1_000,
314
+ reason: 'retry',
315
+ status: 503,
316
+ })
317
+ ).toBe('retrying in 1s');
318
+ expect(
319
+ formatRateLimitWait({ route: 'r', waitMs: 2_000, reason: 'retry' })
320
+ ).toBe('retrying in 2s');
321
+ });
322
+
323
+ it('fits the spinner status column while scheduling', () => {
324
+ // "◇ Scheduling " is 13 columns; the status cell is 32.
325
+ const longest = formatRateLimitWait({
326
+ route: 'r',
327
+ waitMs: 300_000,
328
+ reason: 'quota',
329
+ });
330
+ expect(`◇ Scheduling (${longest})`.length).toBeLessThanOrEqual(32);
331
+ });
332
+ });