@quenty/nevermore-cli 4.42.0 → 4.42.1-canary.783.30683606415.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/args/global-args.d.ts +13 -0
- package/dist/args/global-args.d.ts.map +1 -1
- package/dist/commands/batch-command/batch-deploy-command.d.ts +3 -0
- package/dist/commands/batch-command/batch-deploy-command.d.ts.map +1 -1
- package/dist/commands/batch-command/batch-deploy-command.js +90 -1
- package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
- package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
- package/dist/commands/batch-command/batch-test-command.js +7 -2
- package/dist/commands/batch-command/batch-test-command.js.map +1 -1
- package/dist/commands/deploy-command/deploy-init.js +1 -1
- package/dist/commands/deploy-command/deploy-init.js.map +1 -1
- package/dist/commands/deploy-command/index.d.ts +3 -0
- package/dist/commands/deploy-command/index.d.ts.map +1 -1
- package/dist/commands/deploy-command/index.js +301 -60
- package/dist/commands/deploy-command/index.js.map +1 -1
- package/dist/commands/deploy-command/select-target.js +1 -1
- package/dist/commands/deploy-command/select-target.js.map +1 -1
- package/dist/commands/deploy-command/version-command.d.ts.map +1 -1
- package/dist/commands/deploy-command/version-command.js +138 -12
- package/dist/commands/deploy-command/version-command.js.map +1 -1
- package/dist/commands/test-command/test-command.d.ts.map +1 -1
- package/dist/commands/test-command/test-command.js +17 -7
- package/dist/commands/test-command/test-command.js.map +1 -1
- package/dist/nevermore.js +17 -0
- package/dist/nevermore.js.map +1 -1
- package/dist/utils/batch/changed-packages-utils.d.ts +1 -1
- package/dist/utils/batch/changed-packages-utils.d.ts.map +1 -1
- package/dist/utils/batch/changed-packages-utils.js +1 -1
- package/dist/utils/batch/changed-packages-utils.js.map +1 -1
- package/dist/utils/build/base-place-resolver-factory.d.ts +25 -0
- package/dist/utils/build/base-place-resolver-factory.d.ts.map +1 -0
- package/dist/utils/build/base-place-resolver-factory.js +40 -0
- package/dist/utils/build/base-place-resolver-factory.js.map +1 -0
- package/dist/utils/build/build.d.ts +13 -2
- package/dist/utils/build/build.d.ts.map +1 -1
- package/dist/utils/build/build.js.map +1 -1
- package/dist/utils/build/upload.d.ts +1 -1
- package/dist/utils/build/upload.d.ts.map +1 -1
- package/dist/utils/deploy/deploy-metadata.d.ts +1 -1
- package/dist/utils/deploy/deploy-metadata.d.ts.map +1 -1
- package/dist/utils/job-context/base-job-context.d.ts +3 -1
- package/dist/utils/job-context/base-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/base-job-context.js +45 -6
- package/dist/utils/job-context/base-job-context.js.map +1 -1
- package/dist/utils/job-context/batch-script-job-context.d.ts +6 -0
- package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/batch-script-job-context.js +13 -0
- package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
- package/dist/utils/job-context/cloud-job-context.d.ts +2 -1
- package/dist/utils/job-context/cloud-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/cloud-job-context.js +2 -2
- package/dist/utils/job-context/cloud-job-context.js.map +1 -1
- package/dist/utils/job-context/local-job-context.d.ts +2 -1
- package/dist/utils/job-context/local-job-context.d.ts.map +1 -1
- package/dist/utils/job-context/local-job-context.js +2 -2
- package/dist/utils/job-context/local-job-context.js.map +1 -1
- package/dist/utils/open-cloud/open-cloud-client.d.ts +20 -2
- package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
- package/dist/utils/open-cloud/open-cloud-client.js +74 -20
- package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
- package/dist/utils/open-cloud/open-cloud-client.test.js +89 -12
- package/dist/utils/open-cloud/open-cloud-client.test.js.map +1 -1
- package/dist/utils/testing/runner/combined-project-generator.d.ts +1 -1
- package/dist/utils/testing/runner/combined-project-generator.d.ts.map +1 -1
- package/dist/utils/testing/runner/test-runner.d.ts +1 -1
- package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
- package/dist/utils/watch/github-context.d.ts +50 -0
- package/dist/utils/watch/github-context.d.ts.map +1 -0
- package/dist/utils/watch/github-context.js +125 -0
- package/dist/utils/watch/github-context.js.map +1 -0
- package/dist/utils/watch/github-context.test.d.ts +2 -0
- package/dist/utils/watch/github-context.test.d.ts.map +1 -0
- package/dist/utils/watch/github-context.test.js +112 -0
- package/dist/utils/watch/github-context.test.js.map +1 -0
- package/dist/utils/watch/http-watch-registry.d.ts +40 -0
- package/dist/utils/watch/http-watch-registry.d.ts.map +1 -0
- package/dist/utils/watch/http-watch-registry.js +262 -0
- package/dist/utils/watch/http-watch-registry.js.map +1 -0
- package/dist/utils/watch/http-watch-registry.test.d.ts +2 -0
- package/dist/utils/watch/http-watch-registry.test.d.ts.map +1 -0
- package/dist/utils/watch/http-watch-registry.test.js +211 -0
- package/dist/utils/watch/http-watch-registry.test.js.map +1 -0
- package/dist/utils/watch/local-watch-loop.d.ts +50 -0
- package/dist/utils/watch/local-watch-loop.d.ts.map +1 -0
- package/dist/utils/watch/local-watch-loop.js +103 -0
- package/dist/utils/watch/local-watch-loop.js.map +1 -0
- package/dist/utils/watch/local-watch-loop.test.d.ts +2 -0
- package/dist/utils/watch/local-watch-loop.test.d.ts.map +1 -0
- package/dist/utils/watch/local-watch-loop.test.js +170 -0
- package/dist/utils/watch/local-watch-loop.test.js.map +1 -0
- package/dist/utils/watch/register-notify-watches.d.ts +41 -0
- package/dist/utils/watch/register-notify-watches.d.ts.map +1 -0
- package/dist/utils/watch/register-notify-watches.js +159 -0
- package/dist/utils/watch/register-notify-watches.js.map +1 -0
- package/dist/utils/watch/register-notify-watches.test.d.ts +2 -0
- package/dist/utils/watch/register-notify-watches.test.d.ts.map +1 -0
- package/dist/utils/watch/register-notify-watches.test.js +225 -0
- package/dist/utils/watch/register-notify-watches.test.js.map +1 -0
- package/dist/utils/watch/register-watches.d.ts +68 -0
- package/dist/utils/watch/register-watches.d.ts.map +1 -0
- package/dist/utils/watch/register-watches.js +221 -0
- package/dist/utils/watch/register-watches.js.map +1 -0
- package/dist/utils/watch/register-watches.test.d.ts +2 -0
- package/dist/utils/watch/register-watches.test.d.ts.map +1 -0
- package/dist/utils/watch/register-watches.test.js +576 -0
- package/dist/utils/watch/register-watches.test.js.map +1 -0
- package/dist/utils/watch/stream-watch-loop.d.ts +54 -0
- package/dist/utils/watch/stream-watch-loop.d.ts.map +1 -0
- package/dist/utils/watch/stream-watch-loop.js +282 -0
- package/dist/utils/watch/stream-watch-loop.js.map +1 -0
- package/dist/utils/watch/stream-watch-loop.test.d.ts +2 -0
- package/dist/utils/watch/stream-watch-loop.test.d.ts.map +1 -0
- package/dist/utils/watch/stream-watch-loop.test.js +392 -0
- package/dist/utils/watch/stream-watch-loop.test.js.map +1 -0
- package/dist/utils/watch/websocket-watch-stream.d.ts +25 -0
- package/dist/utils/watch/websocket-watch-stream.d.ts.map +1 -0
- package/dist/utils/watch/websocket-watch-stream.js +306 -0
- package/dist/utils/watch/websocket-watch-stream.js.map +1 -0
- package/dist/utils/watch/websocket-watch-stream.test.d.ts +2 -0
- package/dist/utils/watch/websocket-watch-stream.test.d.ts.map +1 -0
- package/dist/utils/watch/websocket-watch-stream.test.js +475 -0
- package/dist/utils/watch/websocket-watch-stream.test.js.map +1 -0
- package/package.json +7 -4
- package/src/args/global-args.ts +13 -0
- package/src/commands/batch-command/batch-deploy-command.ts +105 -1
- package/src/commands/batch-command/batch-test-command.ts +8 -2
- package/src/commands/deploy-command/deploy-init.ts +1 -1
- package/src/commands/deploy-command/index.ts +331 -32
- package/src/commands/deploy-command/select-target.ts +1 -1
- package/src/commands/deploy-command/version-command.ts +215 -21
- package/src/commands/test-command/test-command.ts +24 -18
- package/src/nevermore.ts +19 -0
- package/src/utils/batch/changed-packages-utils.ts +1 -1
- package/src/utils/build/base-place-resolver-factory.ts +49 -0
- package/src/utils/build/build.ts +13 -2
- package/src/utils/build/upload.ts +1 -1
- package/src/utils/deploy/deploy-metadata.ts +1 -1
- package/src/utils/job-context/base-job-context.ts +68 -6
- package/src/utils/job-context/batch-script-job-context.ts +18 -0
- package/src/utils/job-context/cloud-job-context.ts +7 -2
- package/src/utils/job-context/local-job-context.ts +7 -2
- package/src/utils/open-cloud/open-cloud-client.test.ts +133 -14
- package/src/utils/open-cloud/open-cloud-client.ts +127 -34
- package/src/utils/testing/runner/combined-project-generator.ts +1 -1
- package/src/utils/testing/runner/test-runner.ts +1 -1
- package/src/utils/watch/github-context.test.ts +154 -0
- package/src/utils/watch/github-context.ts +184 -0
- package/src/utils/watch/http-watch-registry.test.ts +330 -0
- package/src/utils/watch/http-watch-registry.ts +341 -0
- package/src/utils/watch/local-watch-loop.test.ts +197 -0
- package/src/utils/watch/local-watch-loop.ts +190 -0
- package/src/utils/watch/register-notify-watches.test.ts +282 -0
- package/src/utils/watch/register-notify-watches.ts +226 -0
- package/src/utils/watch/register-watches.test.ts +696 -0
- package/src/utils/watch/register-watches.ts +369 -0
- package/src/utils/watch/stream-watch-loop.test.ts +625 -0
- package/src/utils/watch/stream-watch-loop.ts +411 -0
- package/src/utils/watch/websocket-watch-stream.test.ts +581 -0
- package/src/utils/watch/websocket-watch-stream.ts +403 -0
- package/tsconfig.json +19 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/build/deploy-config.d.ts +0 -71
- package/dist/utils/build/deploy-config.d.ts.map +0 -1
- package/dist/utils/build/deploy-config.js +0 -164
- package/dist/utils/build/deploy-config.js.map +0 -1
- package/dist/utils/build/deploy-config.test.d.ts +0 -2
- package/dist/utils/build/deploy-config.test.d.ts.map +0 -1
- package/dist/utils/build/deploy-config.test.js +0 -126
- package/dist/utils/build/deploy-config.test.js.map +0 -1
- package/src/utils/build/deploy-config.test.ts +0 -149
- package/src/utils/build/deploy-config.ts +0 -259
|
@@ -145,35 +145,112 @@ describe('OpenCloudClient.downloadPlaceAsync', () => {
|
|
|
145
145
|
await expect(client.downloadPlaceAsync(1, 22, undefined, 999999)).rejects.toThrowError(/no version 999999/);
|
|
146
146
|
});
|
|
147
147
|
});
|
|
148
|
-
describe('OpenCloudClient.
|
|
148
|
+
describe('OpenCloudClient.resolveLatestPlaceVersionAsync', () => {
|
|
149
149
|
afterEach(() => {
|
|
150
150
|
vi.restoreAllMocks();
|
|
151
151
|
});
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
/** Page the Assets API newest-first, as the real endpoint does. */
|
|
153
|
+
function makeVersionsLimiter(pages, urls = []) {
|
|
154
|
+
return {
|
|
155
155
|
fetchAsync: vi.fn(async (url) => {
|
|
156
156
|
urls.push(String(url));
|
|
157
|
-
|
|
157
|
+
const page = pages[urls.length - 1] ?? [];
|
|
158
|
+
return new Response(JSON.stringify({
|
|
159
|
+
assetVersions: page.map((entry) => ({
|
|
160
|
+
path: `assets/22/versions/${entry.version}`,
|
|
161
|
+
// The real API omits `published` entirely on save-only versions.
|
|
162
|
+
...(entry.published ? { published: true } : {}),
|
|
163
|
+
})),
|
|
164
|
+
...(urls.length < pages.length
|
|
165
|
+
? { nextPageToken: `token-${urls.length}` }
|
|
166
|
+
: {}),
|
|
167
|
+
}), { status: 200 });
|
|
158
168
|
}),
|
|
159
169
|
};
|
|
170
|
+
}
|
|
171
|
+
it('resolves "saved" to the newest version of any kind', async () => {
|
|
172
|
+
const urls = [];
|
|
160
173
|
const client = new OpenCloudClient({
|
|
161
174
|
apiKey: 'test-key',
|
|
162
|
-
rateLimiter:
|
|
175
|
+
rateLimiter: makeVersionsLimiter([[{ version: 5781 }, { version: 5780, published: true }]], urls),
|
|
176
|
+
});
|
|
177
|
+
expect(await client.resolveLatestPlaceVersionAsync(1, 22, 'saved')).toBe(5781);
|
|
178
|
+
expect(urls).toHaveLength(1);
|
|
179
|
+
expect(urls[0]).toBe('https://apis.roblox.com/assets/v1/assets/22/versions?maxPageSize=50');
|
|
180
|
+
});
|
|
181
|
+
it('resolves "published" past unpublished saves at the head', async () => {
|
|
182
|
+
const client = new OpenCloudClient({
|
|
183
|
+
apiKey: 'test-key',
|
|
184
|
+
rateLimiter: makeVersionsLimiter([
|
|
185
|
+
[
|
|
186
|
+
{ version: 5781 },
|
|
187
|
+
{ version: 5780 },
|
|
188
|
+
{ version: 5779, published: true },
|
|
189
|
+
],
|
|
190
|
+
]),
|
|
163
191
|
});
|
|
164
|
-
|
|
165
|
-
expect(version).toBe(5781);
|
|
166
|
-
expect(urls[0]).toBe('https://apis.roblox.com/assets/v1/assets/22');
|
|
192
|
+
expect(await client.resolveLatestPlaceVersionAsync(1, 22, 'published')).toBe(5779);
|
|
167
193
|
});
|
|
168
|
-
it('
|
|
194
|
+
it('pages only until the newest published version is found', async () => {
|
|
195
|
+
const urls = [];
|
|
196
|
+
const client = new OpenCloudClient({
|
|
197
|
+
apiKey: 'test-key',
|
|
198
|
+
rateLimiter: makeVersionsLimiter([
|
|
199
|
+
[{ version: 300 }, { version: 299 }],
|
|
200
|
+
[{ version: 298, published: true }, { version: 297 }],
|
|
201
|
+
[{ version: 296, published: true }],
|
|
202
|
+
], urls),
|
|
203
|
+
});
|
|
204
|
+
expect(await client.resolveLatestPlaceVersionAsync(1, 22, 'published')).toBe(298);
|
|
205
|
+
expect(urls).toHaveLength(2);
|
|
206
|
+
expect(urls[1]).toContain('pageToken=token-1');
|
|
207
|
+
});
|
|
208
|
+
it('throws when the place has never been published', async () => {
|
|
209
|
+
const client = new OpenCloudClient({
|
|
210
|
+
apiKey: 'test-key',
|
|
211
|
+
rateLimiter: makeVersionsLimiter([[{ version: 2 }, { version: 1 }]]),
|
|
212
|
+
});
|
|
213
|
+
await expect(client.resolveLatestPlaceVersionAsync(1, 22, 'published')).rejects.toThrowError(/no published version/);
|
|
214
|
+
});
|
|
215
|
+
it('refuses to guess when the API stops paging newest-first', async () => {
|
|
216
|
+
const client = new OpenCloudClient({
|
|
217
|
+
apiKey: 'test-key',
|
|
218
|
+
rateLimiter: makeVersionsLimiter([
|
|
219
|
+
[{ version: 1 }, { version: 2, published: true }],
|
|
220
|
+
]),
|
|
221
|
+
});
|
|
222
|
+
await expect(client.resolveLatestPlaceVersionAsync(1, 22, 'published')).rejects.toThrowError(/no longer paging newest-first/);
|
|
223
|
+
});
|
|
224
|
+
it('refuses a "saved" lookup when the page is not newest-first', async () => {
|
|
225
|
+
// "saved" answers from the first entry, so the ordering guard has to check
|
|
226
|
+
// the whole page before returning or this silently pins the oldest build.
|
|
227
|
+
const client = new OpenCloudClient({
|
|
228
|
+
apiKey: 'test-key',
|
|
229
|
+
rateLimiter: makeVersionsLimiter([
|
|
230
|
+
[{ version: 1 }, { version: 2 }, { version: 3 }],
|
|
231
|
+
]),
|
|
232
|
+
});
|
|
233
|
+
await expect(client.resolveLatestPlaceVersionAsync(1, 22, 'saved')).rejects.toThrowError(/no longer paging newest-first/);
|
|
234
|
+
});
|
|
235
|
+
it('reports the scan limit when every page is unpublished', async () => {
|
|
236
|
+
const pages = Array.from({ length: 25 }, (_, page) => Array.from({ length: 2 }, (_, i) => ({ version: 1000 - page * 2 - i })));
|
|
237
|
+
const client = new OpenCloudClient({
|
|
238
|
+
apiKey: 'test-key',
|
|
239
|
+
rateLimiter: makeVersionsLimiter(pages),
|
|
240
|
+
});
|
|
241
|
+
await expect(client.resolveLatestPlaceVersionAsync(1, 22, 'published')).rejects.toThrowError(/in its most recent 1000 versions/);
|
|
242
|
+
});
|
|
243
|
+
it('throws on an unparseable version path', async () => {
|
|
169
244
|
const fakeLimiter = {
|
|
170
|
-
fetchAsync: vi.fn(async () => new Response(JSON.stringify({
|
|
245
|
+
fetchAsync: vi.fn(async () => new Response(JSON.stringify({
|
|
246
|
+
assetVersions: [{ path: 'assets/22/versions/' }],
|
|
247
|
+
}), { status: 200 })),
|
|
171
248
|
};
|
|
172
249
|
const client = new OpenCloudClient({
|
|
173
250
|
apiKey: 'test-key',
|
|
174
251
|
rateLimiter: fakeLimiter,
|
|
175
252
|
});
|
|
176
|
-
await expect(client.
|
|
253
|
+
await expect(client.resolveLatestPlaceVersionAsync(1, 22, 'saved')).rejects.toThrowError(/unparseable version path/);
|
|
177
254
|
});
|
|
178
255
|
});
|
|
179
256
|
//# sourceMappingURL=open-cloud-client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-cloud-client.test.js","sourceRoot":"","sources":["../../../src/utils/open-cloud/open-cloud-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE;QACZ,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,SAAS,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;QAC3B,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;QAC5B,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;QAC7B,aAAa,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;KAChC;CACF,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAEtD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CACtC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAsB,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,YAAqC,CAAC;QAC1C,IAAI,iBAA0B,CAAC;QAC/B,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CACf,KAAK,EACH,IAAkB,EAClB,IAAwC,EACxC,OAAiC,EACjC,EAAE;gBACF,YAAY,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1D,iBAAiB,GAAG,OAAO,EAAE,SAAS,CAAC;gBACvC,qEAAqE;gBACrE,yDAAyD;gBACzD,MAAM,IAAI,GAAG,YAAY,EAAE,IAAiC,CAAC;gBAC7D,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBAChC,KAAK,MAAM,CAAC;gBACd,CAAC;gBACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE;oBACxD,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC,CACF;SACwB,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAC3C,CAAC,EACD,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAC5D,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,2EAA2E;QAC3E,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,yEAAyE;QACzE,MAAM,OAAO,GAAG,YAAY,EAAE,OAAiC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5C,0EAA0E;QAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CACf,KAAK,EAAE,GAAiB,EAAE,IAAwC,EAAE,EAAE;gBACpE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,kEAAkE;gBAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5D,MAAM,IAAI,GAAG,QAAQ,EAAE,IAA6C,CAAC;gBACrE,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;wBAChC,KAAK,MAAM,CAAC;oBACd,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE;oBACxD,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC,CACF;SACwB,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE9D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAiB,EAAE,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE;oBACjE,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC,CAAC;SACuB,CAAC;QAC5B,EAAE,CAAC,UAAU,CACX,OAAO,EACP,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CACzE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAiB,EAAE,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE;oBACjE,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC,CAAC;SACuB,CAAC;QAC5B,EAAE,CAAC,UAAU,CACX,OAAO,EACP,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CACnE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAEtD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,qEAAqE,CACtE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,uEAAuE;QACvE,gCAAgC;QAChC,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CACf,KAAK,IAAI,EAAE,CACT,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;aAChE,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CACJ;SACwB,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CACpD,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAiB,EAAE,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EACrD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC,CAAC;SACuB,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CACf,KAAK,IAAI,EAAE,CACT,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CACnE;SACwB,CAAC;QAE5B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CACzE,eAAe,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"open-cloud-client.test.js","sourceRoot":"","sources":["../../../src/utils/open-cloud/open-cloud-client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BuildContext } from '@quenty/nevermore-template-helpers';
|
|
2
|
-
import { type DeployTarget } from '
|
|
2
|
+
import { type DeployTarget } from '@quenty/nevermore-deploy';
|
|
3
3
|
import { type BatchTarget } from '../../batch/changed-packages-utils.js';
|
|
4
4
|
export interface CombinedProjectResult {
|
|
5
5
|
/** Absolute path to the combined .rbxl file. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combined-project-generator.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/combined-project-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAEb,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"combined-project-generator.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/combined-project-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAEb,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mFAAmF;IACnF,aAAa,EAAE,YAAY,CAAC;IAC5B,sFAAsF;IACtF,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,sBAAsB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,cAAc,CAAC,IAAI,IAAI,CAAC;IACxB,cAAc,CAAC,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/C;AASD;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyGjC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DeployTarget } from '
|
|
1
|
+
import { type DeployTarget } from '@quenty/nevermore-deploy';
|
|
2
2
|
import { type JobContext } from '../../job-context/job-context.js';
|
|
3
3
|
import { type ParsedTestCounts } from '../test-log-parser.js';
|
|
4
4
|
export interface SingleTestResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../../../src/utils/testing/runner/test-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,EAAE,CAOV;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CA6E3B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Everything the watch service needs to dispatch a workflow back at us. */
|
|
2
|
+
export interface GithubDispatchContext {
|
|
3
|
+
/** `owner/repo`. */
|
|
4
|
+
repository: string;
|
|
5
|
+
/** Git ref the dispatched workflow should run on. */
|
|
6
|
+
ref: string;
|
|
7
|
+
/** Token the service dispatches with; absent when none was provided. */
|
|
8
|
+
token?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GithubContextOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Read the token from the GitHub CLI when no environment variable supplies
|
|
13
|
+
* one.
|
|
14
|
+
*
|
|
15
|
+
* Off unless asked for, and that is the whole point. Registering sends a PAT
|
|
16
|
+
* to the watch service and creates a monitor against the repository, so the
|
|
17
|
+
* credential has to be one the user handed over — an env var is handing it
|
|
18
|
+
* over, reading whatever `gh` happens to be holding is not. Nearly every
|
|
19
|
+
* developer machine has a logged-in `gh`, so defaulting this on would turn a
|
|
20
|
+
* command that used to watch locally into one that quietly ships a token.
|
|
21
|
+
*/
|
|
22
|
+
useGhAuth?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type GithubContextResult = {
|
|
25
|
+
success: true;
|
|
26
|
+
context: GithubDispatchContext;
|
|
27
|
+
} | {
|
|
28
|
+
success: false;
|
|
29
|
+
reason: 'no_repository' | 'no_ref' | 'undispatchable_ref';
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Work out which repo and ref a watch should dispatch.
|
|
33
|
+
*
|
|
34
|
+
* Prefers the Actions environment, which is authoritative when we are already
|
|
35
|
+
* running inside the workflow being registered, and falls back to the git
|
|
36
|
+
* remote so `--watch <url>` also works from a developer's machine. Best-effort:
|
|
37
|
+
* outside a git repo with no Actions env there is simply nothing to dispatch.
|
|
38
|
+
*/
|
|
39
|
+
export declare function tryResolveGithubDispatchContext(options?: GithubContextOptions): GithubContextResult;
|
|
40
|
+
/** Human-facing explanation for a failed context resolution. */
|
|
41
|
+
export declare function describeGithubContextFailure(reason: 'no_repository' | 'no_ref' | 'undispatchable_ref'): string;
|
|
42
|
+
/** Hint printed when a cloud registration has no credential to hand over. */
|
|
43
|
+
export declare function describeMissingWatchToken(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Pull `owner/repo` out of a git remote URL. Handles the HTTPS, SCP-style, and
|
|
46
|
+
* ssh:// spellings git hands out, and ignores non-GitHub hosts — a watch
|
|
47
|
+
* registration names a GitHub workflow, so anything else is not dispatchable.
|
|
48
|
+
*/
|
|
49
|
+
export declare function parseGithubRepository(remoteUrl: string): string | undefined;
|
|
50
|
+
//# sourceMappingURL=github-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-context.d.ts","sourceRoot":"","sources":["../../../src/utils/watch/github-context.ts"],"names":[],"mappings":"AAUA,4EAA4E;AAC5E,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAA;CAAE,GACjD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,eAAe,GAAG,QAAQ,GAAG,oBAAoB,CAAC;CAC3D,CAAC;AAqBN;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAsBrB;AAED,gEAAgE;AAChE,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,eAAe,GAAG,QAAQ,GAAG,oBAAoB,GACxD,MAAM,CAoBR;AAED,6EAA6E;AAC7E,wBAAgB,yBAAyB,IAAI,MAAM,CAOlD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU3E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Env var holding the token the watch service dispatches with. Checked before
|
|
4
|
+
* `GITHUB_TOKEN` so a long-lived registration token can be kept separate from
|
|
5
|
+
* the short-lived one a workflow run is handed — an Actions `GITHUB_TOKEN`
|
|
6
|
+
* expires with its job, which would outlive nothing.
|
|
7
|
+
*/
|
|
8
|
+
const WATCH_TOKEN_ENV = 'NEVERMORE_WATCH_TOKEN';
|
|
9
|
+
/**
|
|
10
|
+
* A `pull_request` run exposes `GITHUB_REF_NAME` as `42/merge` — a synthetic
|
|
11
|
+
* merge ref that exists only for that check run. It is not a branch, so
|
|
12
|
+
* `workflow_dispatch` cannot run on it, and it disappears when the PR closes.
|
|
13
|
+
*/
|
|
14
|
+
const MERGE_REF_PATTERN = /^\d+\/(merge|head)$/;
|
|
15
|
+
/**
|
|
16
|
+
* Read an env var, treating empty as absent.
|
|
17
|
+
*
|
|
18
|
+
* CI sets a variable to the empty string when the secret behind it is missing
|
|
19
|
+
* (`FOO: ${{ secrets.ABSENT }}`), which `??` would accept as a real value —
|
|
20
|
+
* so the documented fallback to the next source would never fire.
|
|
21
|
+
*/
|
|
22
|
+
function _env(name) {
|
|
23
|
+
const value = process.env[name];
|
|
24
|
+
return value == null || value === '' ? undefined : value;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Work out which repo and ref a watch should dispatch.
|
|
28
|
+
*
|
|
29
|
+
* Prefers the Actions environment, which is authoritative when we are already
|
|
30
|
+
* running inside the workflow being registered, and falls back to the git
|
|
31
|
+
* remote so `--watch <url>` also works from a developer's machine. Best-effort:
|
|
32
|
+
* outside a git repo with no Actions env there is simply nothing to dispatch.
|
|
33
|
+
*/
|
|
34
|
+
export function tryResolveGithubDispatchContext(options = {}) {
|
|
35
|
+
const repository = _env('GITHUB_REPOSITORY') ?? _repositoryFromRemote();
|
|
36
|
+
if (!repository) {
|
|
37
|
+
return { success: false, reason: 'no_repository' };
|
|
38
|
+
}
|
|
39
|
+
const ref = _env('GITHUB_REF_NAME') ?? _git(['rev-parse', '--abbrev-ref', 'HEAD']);
|
|
40
|
+
// A detached HEAD gives "HEAD", which is not a ref a dispatch can run on.
|
|
41
|
+
if (!ref || ref === 'HEAD') {
|
|
42
|
+
return { success: false, reason: 'no_ref' };
|
|
43
|
+
}
|
|
44
|
+
if (MERGE_REF_PATTERN.test(ref)) {
|
|
45
|
+
return { success: false, reason: 'undispatchable_ref' };
|
|
46
|
+
}
|
|
47
|
+
const token = _env(WATCH_TOKEN_ENV) ??
|
|
48
|
+
_env('GITHUB_TOKEN') ??
|
|
49
|
+
(options.useGhAuth ? _githubCliToken() : undefined);
|
|
50
|
+
return { success: true, context: { repository, ref, token } };
|
|
51
|
+
}
|
|
52
|
+
/** Human-facing explanation for a failed context resolution. */
|
|
53
|
+
export function describeGithubContextFailure(reason) {
|
|
54
|
+
if (reason === 'no_repository') {
|
|
55
|
+
return ('Could not determine the GitHub repository to dispatch. Set ' +
|
|
56
|
+
'GITHUB_REPOSITORY (owner/repo), or run from a clone with a GitHub ' +
|
|
57
|
+
'"origin" remote.');
|
|
58
|
+
}
|
|
59
|
+
if (reason === 'undispatchable_ref') {
|
|
60
|
+
return ('Refusing to register a watch from a pull request merge ref. That ref ' +
|
|
61
|
+
'exists only for this check run, so a dispatch against it would fail ' +
|
|
62
|
+
'and it disappears when the PR closes. Register from a branch instead ' +
|
|
63
|
+
'(e.g. on push to main).');
|
|
64
|
+
}
|
|
65
|
+
return ('Could not determine the git ref to dispatch on. Set GITHUB_REF_NAME, or ' +
|
|
66
|
+
'check out a branch (a detached HEAD has no ref to run a workflow from).');
|
|
67
|
+
}
|
|
68
|
+
/** Hint printed when a cloud registration has no credential to hand over. */
|
|
69
|
+
export function describeMissingWatchToken() {
|
|
70
|
+
return [
|
|
71
|
+
'No GitHub token found. The watch service identifies you by repository, ' +
|
|
72
|
+
'so registering needs a token with "actions: write" on it. Either:',
|
|
73
|
+
` - Set: ${WATCH_TOKEN_ENV} (or GITHUB_TOKEN)`,
|
|
74
|
+
' - Pass: --watch-use-gh-auth, to use the token `gh` already holds',
|
|
75
|
+
].join('\n');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Pull `owner/repo` out of a git remote URL. Handles the HTTPS, SCP-style, and
|
|
79
|
+
* ssh:// spellings git hands out, and ignores non-GitHub hosts — a watch
|
|
80
|
+
* registration names a GitHub workflow, so anything else is not dispatchable.
|
|
81
|
+
*/
|
|
82
|
+
export function parseGithubRepository(remoteUrl) {
|
|
83
|
+
const trimmed = remoteUrl.trim();
|
|
84
|
+
const match = /^(?:https?:\/\/|ssh:\/\/)?(?:[^@/]+@)?github\.com[:/]+([^/]+)\/(.+?)(?:\.git)?\/?$/i.exec(trimmed);
|
|
85
|
+
if (!match) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
return `${match[1]}/${match[2]}`;
|
|
89
|
+
}
|
|
90
|
+
function _repositoryFromRemote() {
|
|
91
|
+
const remote = _git(['remote', 'get-url', 'origin']);
|
|
92
|
+
return remote == null ? undefined : parseGithubRepository(remote);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* The token `gh` is already holding, if it is installed and logged in.
|
|
96
|
+
*
|
|
97
|
+
* Only ever called when the caller opted in. Not stored anywhere by us on
|
|
98
|
+
* purpose: `gh` owns its own refresh, and copying a token into `~/.nevermore`
|
|
99
|
+
* would leave a stale duplicate to expire behind everyone's back — the point is
|
|
100
|
+
* reading the live one, for the one run that asked.
|
|
101
|
+
*/
|
|
102
|
+
function _githubCliToken() {
|
|
103
|
+
const token = _run('gh', ['auth', 'token']);
|
|
104
|
+
// A logged-out `gh` exits non-zero, but an odd version could print a notice
|
|
105
|
+
// on stdout instead; a token is never whitespace.
|
|
106
|
+
return token == null || /\s/.test(token) ? undefined : token;
|
|
107
|
+
}
|
|
108
|
+
function _git(args) {
|
|
109
|
+
return _run('git', args);
|
|
110
|
+
}
|
|
111
|
+
function _run(command, args) {
|
|
112
|
+
try {
|
|
113
|
+
const output = execSync(`${command} ${args.join(' ')}`, {
|
|
114
|
+
encoding: 'utf-8',
|
|
115
|
+
timeout: 5000,
|
|
116
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
117
|
+
}).trim();
|
|
118
|
+
return output === '' ? undefined : output;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Not installed, not logged in, or not a repo — all "no answer here".
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=github-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-context.js","sourceRoot":"","sources":["../../../src/utils/watch/github-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-context.test.d.ts","sourceRoot":"","sources":["../../../src/utils/watch/github-context.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
2
|
+
import { describeMissingWatchToken, parseGithubRepository, tryResolveGithubDispatchContext, } from './github-context.js';
|
|
3
|
+
// ESM exports cannot be spied on, so the module is mocked outright.
|
|
4
|
+
const execSyncMock = vi.hoisted(() => vi.fn());
|
|
5
|
+
vi.mock('child_process', () => ({ execSync: execSyncMock }));
|
|
6
|
+
afterEach(() => {
|
|
7
|
+
execSyncMock.mockReset();
|
|
8
|
+
vi.unstubAllEnvs();
|
|
9
|
+
});
|
|
10
|
+
/** Answers the subprocesses github-context shells out to. */
|
|
11
|
+
function stubCommands(answers) {
|
|
12
|
+
execSyncMock.mockImplementation((cmd) => {
|
|
13
|
+
for (const [prefix, answer] of Object.entries(answers)) {
|
|
14
|
+
if (cmd.startsWith(prefix)) {
|
|
15
|
+
if (answer instanceof Error) {
|
|
16
|
+
throw answer;
|
|
17
|
+
}
|
|
18
|
+
return answer;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`unstubbed command: ${cmd}`);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
describe('tryResolveGithubDispatchContext token', () => {
|
|
25
|
+
const REPO_AND_REF = {
|
|
26
|
+
'git remote get-url origin': 'git@github.com:Quenty/Nevermore.git',
|
|
27
|
+
'git rev-parse': 'main',
|
|
28
|
+
};
|
|
29
|
+
// Registering ships the token to the watch service, so it has to be one the
|
|
30
|
+
// user handed over. Nearly every dev machine has a logged-in `gh`, so reading
|
|
31
|
+
// it by default would turn a local watch into a silent credential send.
|
|
32
|
+
it('does not consult gh unless asked', () => {
|
|
33
|
+
vi.stubEnv('NEVERMORE_WATCH_TOKEN', '');
|
|
34
|
+
vi.stubEnv('GITHUB_TOKEN', '');
|
|
35
|
+
stubCommands({
|
|
36
|
+
...REPO_AND_REF,
|
|
37
|
+
'gh auth token': new Error('gh must not be consulted'),
|
|
38
|
+
});
|
|
39
|
+
const result = tryResolveGithubDispatchContext();
|
|
40
|
+
expect(result.success && result.context.token).toBeUndefined();
|
|
41
|
+
});
|
|
42
|
+
it('reads the GitHub CLI token when explicitly asked', () => {
|
|
43
|
+
vi.stubEnv('NEVERMORE_WATCH_TOKEN', '');
|
|
44
|
+
vi.stubEnv('GITHUB_TOKEN', '');
|
|
45
|
+
stubCommands({ ...REPO_AND_REF, 'gh auth token': 'gho_from_cli' });
|
|
46
|
+
const result = tryResolveGithubDispatchContext({ useGhAuth: true });
|
|
47
|
+
expect(result.success && result.context.token).toBe('gho_from_cli');
|
|
48
|
+
});
|
|
49
|
+
// CI sets the env var, and must never pay for the subprocess.
|
|
50
|
+
it('prefers the env var and does not shell out to gh', () => {
|
|
51
|
+
vi.stubEnv('NEVERMORE_WATCH_TOKEN', 'from-env');
|
|
52
|
+
stubCommands({
|
|
53
|
+
...REPO_AND_REF,
|
|
54
|
+
'gh auth token': new Error('gh should not be consulted'),
|
|
55
|
+
});
|
|
56
|
+
const result = tryResolveGithubDispatchContext({ useGhAuth: true });
|
|
57
|
+
expect(result.success && result.context.token).toBe('from-env');
|
|
58
|
+
});
|
|
59
|
+
it('reports no token when gh is missing or logged out', () => {
|
|
60
|
+
vi.stubEnv('NEVERMORE_WATCH_TOKEN', '');
|
|
61
|
+
vi.stubEnv('GITHUB_TOKEN', '');
|
|
62
|
+
stubCommands({
|
|
63
|
+
...REPO_AND_REF,
|
|
64
|
+
'gh auth token': new Error('gh: command not found'),
|
|
65
|
+
});
|
|
66
|
+
const result = tryResolveGithubDispatchContext({ useGhAuth: true });
|
|
67
|
+
expect(result.success && result.context.token).toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
// A logged-out `gh` exits non-zero, but a notice printed to stdout would sail
|
|
70
|
+
// through as a "token" and fail much later as a confusing 401.
|
|
71
|
+
it('refuses output that cannot be a token', () => {
|
|
72
|
+
vi.stubEnv('NEVERMORE_WATCH_TOKEN', '');
|
|
73
|
+
vi.stubEnv('GITHUB_TOKEN', '');
|
|
74
|
+
stubCommands({
|
|
75
|
+
...REPO_AND_REF,
|
|
76
|
+
'gh auth token': 'You are not logged in. Run gh auth login',
|
|
77
|
+
});
|
|
78
|
+
const result = tryResolveGithubDispatchContext({ useGhAuth: true });
|
|
79
|
+
expect(result.success && result.context.token).toBeUndefined();
|
|
80
|
+
});
|
|
81
|
+
it('names both ways of supplying a token when none is found', () => {
|
|
82
|
+
expect(describeMissingWatchToken()).toMatch(/NEVERMORE_WATCH_TOKEN/);
|
|
83
|
+
expect(describeMissingWatchToken()).toMatch(/--watch-use-gh-auth/);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('parseGithubRepository', () => {
|
|
87
|
+
it('parses an https remote', () => {
|
|
88
|
+
expect(parseGithubRepository('https://github.com/Quenty/Nevermore.git')).toBe('Quenty/Nevermore');
|
|
89
|
+
});
|
|
90
|
+
it('parses an https remote without the .git suffix', () => {
|
|
91
|
+
expect(parseGithubRepository('https://github.com/Quenty/Nevermore')).toBe('Quenty/Nevermore');
|
|
92
|
+
});
|
|
93
|
+
it('parses an scp-style ssh remote', () => {
|
|
94
|
+
expect(parseGithubRepository('git@github.com:Quenty/Nevermore.git')).toBe('Quenty/Nevermore');
|
|
95
|
+
});
|
|
96
|
+
it('parses an ssh:// remote', () => {
|
|
97
|
+
expect(parseGithubRepository('ssh://git@github.com/Quenty/Nevermore.git')).toBe('Quenty/Nevermore');
|
|
98
|
+
});
|
|
99
|
+
it('parses a remote with credentials embedded', () => {
|
|
100
|
+
expect(parseGithubRepository('https://user:token@github.com/Quenty/Nevermore.git')).toBe('Quenty/Nevermore');
|
|
101
|
+
});
|
|
102
|
+
it('tolerates surrounding whitespace and a trailing slash', () => {
|
|
103
|
+
expect(parseGithubRepository(' https://github.com/Quenty/Nevermore/ ')).toBe('Quenty/Nevermore');
|
|
104
|
+
});
|
|
105
|
+
it('ignores a non-GitHub host', () => {
|
|
106
|
+
expect(parseGithubRepository('https://gitlab.com/Quenty/Nevermore.git')).toBeUndefined();
|
|
107
|
+
});
|
|
108
|
+
it('ignores a local path remote', () => {
|
|
109
|
+
expect(parseGithubRepository('/srv/git/Nevermore.git')).toBeUndefined();
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=github-context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-context.test.js","sourceRoot":"","sources":["../../../src/utils/watch/github-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type WatchRegistrationRequest, type WatchRegistrationResult, type WatchRegistry, type WatchTriggerResult } from '@quenty/nevermore-deploy';
|
|
2
|
+
export interface HttpWatchRegistryOptions {
|
|
3
|
+
/** Full register endpoint, ending in the lease — `.../v1/register/7d/`. */
|
|
4
|
+
registerUrl: string;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
/** Injected in tests. Defaults to the global fetch. */
|
|
7
|
+
fetchImpl?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* `WatchRegistry` over the Roblox Analytics Watch API.
|
|
11
|
+
*
|
|
12
|
+
* One `POST /v1/register/{lease}` per invocation. The endpoint is whatever URL
|
|
13
|
+
* `--watch` resolved to, so nothing here assumes a host, and the lease is
|
|
14
|
+
* already the last path segment of that URL.
|
|
15
|
+
*
|
|
16
|
+
* The endpoint takes no `Authorization` header — the GitHub token travels in
|
|
17
|
+
* `auth.github.token`, because the service holds it to dispatch with later
|
|
18
|
+
* rather than using it to authenticate this call.
|
|
19
|
+
*/
|
|
20
|
+
export declare class HttpWatchRegistry implements WatchRegistry {
|
|
21
|
+
private _registerUrl;
|
|
22
|
+
private _timeoutMs;
|
|
23
|
+
private _fetch;
|
|
24
|
+
constructor(options: HttpWatchRegistryOptions);
|
|
25
|
+
registerAsync(request: WatchRegistrationRequest): Promise<WatchRegistrationResult>;
|
|
26
|
+
triggerAsync(monitorId: string, credential: string, options?: {
|
|
27
|
+
watchName?: string;
|
|
28
|
+
}): Promise<WatchTriggerResult>;
|
|
29
|
+
/**
|
|
30
|
+
* The API root, recovered from the register URL.
|
|
31
|
+
*
|
|
32
|
+
* `--watch` names the register endpoint because that is the one a user has to
|
|
33
|
+
* type; every other call is derived from it. The lease-bearing
|
|
34
|
+
* `/v1/register/<lease>/` suffix is the documented shape, so trimming it is
|
|
35
|
+
* how a single flag reaches the rest of the API.
|
|
36
|
+
*/
|
|
37
|
+
private _apiBase;
|
|
38
|
+
private _fetchWithTimeoutAsync;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=http-watch-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-watch-registry.d.ts","sourceRoot":"","sources":["../../../src/utils/watch/http-watch-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAIlC,MAAM,WAAW,wBAAwB;IACvC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAe;gBAEjB,OAAO,EAAE,wBAAwB;IAMvC,aAAa,CACjB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC;IAwE7B,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,kBAAkB,CAAC;IAmC9B;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;YAYF,sBAAsB;CAsBrC"}
|