@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.
Files changed (172) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/args/global-args.d.ts +13 -0
  3. package/dist/args/global-args.d.ts.map +1 -1
  4. package/dist/commands/batch-command/batch-deploy-command.d.ts +3 -0
  5. package/dist/commands/batch-command/batch-deploy-command.d.ts.map +1 -1
  6. package/dist/commands/batch-command/batch-deploy-command.js +90 -1
  7. package/dist/commands/batch-command/batch-deploy-command.js.map +1 -1
  8. package/dist/commands/batch-command/batch-test-command.d.ts.map +1 -1
  9. package/dist/commands/batch-command/batch-test-command.js +7 -2
  10. package/dist/commands/batch-command/batch-test-command.js.map +1 -1
  11. package/dist/commands/deploy-command/deploy-init.js +1 -1
  12. package/dist/commands/deploy-command/deploy-init.js.map +1 -1
  13. package/dist/commands/deploy-command/index.d.ts +3 -0
  14. package/dist/commands/deploy-command/index.d.ts.map +1 -1
  15. package/dist/commands/deploy-command/index.js +301 -60
  16. package/dist/commands/deploy-command/index.js.map +1 -1
  17. package/dist/commands/deploy-command/select-target.js +1 -1
  18. package/dist/commands/deploy-command/select-target.js.map +1 -1
  19. package/dist/commands/deploy-command/version-command.d.ts.map +1 -1
  20. package/dist/commands/deploy-command/version-command.js +138 -12
  21. package/dist/commands/deploy-command/version-command.js.map +1 -1
  22. package/dist/commands/test-command/test-command.d.ts.map +1 -1
  23. package/dist/commands/test-command/test-command.js +17 -7
  24. package/dist/commands/test-command/test-command.js.map +1 -1
  25. package/dist/nevermore.js +17 -0
  26. package/dist/nevermore.js.map +1 -1
  27. package/dist/utils/batch/changed-packages-utils.d.ts +1 -1
  28. package/dist/utils/batch/changed-packages-utils.d.ts.map +1 -1
  29. package/dist/utils/batch/changed-packages-utils.js +1 -1
  30. package/dist/utils/batch/changed-packages-utils.js.map +1 -1
  31. package/dist/utils/build/base-place-resolver-factory.d.ts +25 -0
  32. package/dist/utils/build/base-place-resolver-factory.d.ts.map +1 -0
  33. package/dist/utils/build/base-place-resolver-factory.js +40 -0
  34. package/dist/utils/build/base-place-resolver-factory.js.map +1 -0
  35. package/dist/utils/build/build.d.ts +13 -2
  36. package/dist/utils/build/build.d.ts.map +1 -1
  37. package/dist/utils/build/build.js.map +1 -1
  38. package/dist/utils/build/upload.d.ts +1 -1
  39. package/dist/utils/build/upload.d.ts.map +1 -1
  40. package/dist/utils/deploy/deploy-metadata.d.ts +1 -1
  41. package/dist/utils/deploy/deploy-metadata.d.ts.map +1 -1
  42. package/dist/utils/job-context/base-job-context.d.ts +3 -1
  43. package/dist/utils/job-context/base-job-context.d.ts.map +1 -1
  44. package/dist/utils/job-context/base-job-context.js +45 -6
  45. package/dist/utils/job-context/base-job-context.js.map +1 -1
  46. package/dist/utils/job-context/batch-script-job-context.d.ts +6 -0
  47. package/dist/utils/job-context/batch-script-job-context.d.ts.map +1 -1
  48. package/dist/utils/job-context/batch-script-job-context.js +13 -0
  49. package/dist/utils/job-context/batch-script-job-context.js.map +1 -1
  50. package/dist/utils/job-context/cloud-job-context.d.ts +2 -1
  51. package/dist/utils/job-context/cloud-job-context.d.ts.map +1 -1
  52. package/dist/utils/job-context/cloud-job-context.js +2 -2
  53. package/dist/utils/job-context/cloud-job-context.js.map +1 -1
  54. package/dist/utils/job-context/local-job-context.d.ts +2 -1
  55. package/dist/utils/job-context/local-job-context.d.ts.map +1 -1
  56. package/dist/utils/job-context/local-job-context.js +2 -2
  57. package/dist/utils/job-context/local-job-context.js.map +1 -1
  58. package/dist/utils/open-cloud/open-cloud-client.d.ts +20 -2
  59. package/dist/utils/open-cloud/open-cloud-client.d.ts.map +1 -1
  60. package/dist/utils/open-cloud/open-cloud-client.js +74 -20
  61. package/dist/utils/open-cloud/open-cloud-client.js.map +1 -1
  62. package/dist/utils/open-cloud/open-cloud-client.test.js +89 -12
  63. package/dist/utils/open-cloud/open-cloud-client.test.js.map +1 -1
  64. package/dist/utils/testing/runner/combined-project-generator.d.ts +1 -1
  65. package/dist/utils/testing/runner/combined-project-generator.d.ts.map +1 -1
  66. package/dist/utils/testing/runner/test-runner.d.ts +1 -1
  67. package/dist/utils/testing/runner/test-runner.d.ts.map +1 -1
  68. package/dist/utils/watch/github-context.d.ts +50 -0
  69. package/dist/utils/watch/github-context.d.ts.map +1 -0
  70. package/dist/utils/watch/github-context.js +125 -0
  71. package/dist/utils/watch/github-context.js.map +1 -0
  72. package/dist/utils/watch/github-context.test.d.ts +2 -0
  73. package/dist/utils/watch/github-context.test.d.ts.map +1 -0
  74. package/dist/utils/watch/github-context.test.js +112 -0
  75. package/dist/utils/watch/github-context.test.js.map +1 -0
  76. package/dist/utils/watch/http-watch-registry.d.ts +40 -0
  77. package/dist/utils/watch/http-watch-registry.d.ts.map +1 -0
  78. package/dist/utils/watch/http-watch-registry.js +262 -0
  79. package/dist/utils/watch/http-watch-registry.js.map +1 -0
  80. package/dist/utils/watch/http-watch-registry.test.d.ts +2 -0
  81. package/dist/utils/watch/http-watch-registry.test.d.ts.map +1 -0
  82. package/dist/utils/watch/http-watch-registry.test.js +211 -0
  83. package/dist/utils/watch/http-watch-registry.test.js.map +1 -0
  84. package/dist/utils/watch/local-watch-loop.d.ts +50 -0
  85. package/dist/utils/watch/local-watch-loop.d.ts.map +1 -0
  86. package/dist/utils/watch/local-watch-loop.js +103 -0
  87. package/dist/utils/watch/local-watch-loop.js.map +1 -0
  88. package/dist/utils/watch/local-watch-loop.test.d.ts +2 -0
  89. package/dist/utils/watch/local-watch-loop.test.d.ts.map +1 -0
  90. package/dist/utils/watch/local-watch-loop.test.js +170 -0
  91. package/dist/utils/watch/local-watch-loop.test.js.map +1 -0
  92. package/dist/utils/watch/register-notify-watches.d.ts +41 -0
  93. package/dist/utils/watch/register-notify-watches.d.ts.map +1 -0
  94. package/dist/utils/watch/register-notify-watches.js +159 -0
  95. package/dist/utils/watch/register-notify-watches.js.map +1 -0
  96. package/dist/utils/watch/register-notify-watches.test.d.ts +2 -0
  97. package/dist/utils/watch/register-notify-watches.test.d.ts.map +1 -0
  98. package/dist/utils/watch/register-notify-watches.test.js +225 -0
  99. package/dist/utils/watch/register-notify-watches.test.js.map +1 -0
  100. package/dist/utils/watch/register-watches.d.ts +68 -0
  101. package/dist/utils/watch/register-watches.d.ts.map +1 -0
  102. package/dist/utils/watch/register-watches.js +221 -0
  103. package/dist/utils/watch/register-watches.js.map +1 -0
  104. package/dist/utils/watch/register-watches.test.d.ts +2 -0
  105. package/dist/utils/watch/register-watches.test.d.ts.map +1 -0
  106. package/dist/utils/watch/register-watches.test.js +576 -0
  107. package/dist/utils/watch/register-watches.test.js.map +1 -0
  108. package/dist/utils/watch/stream-watch-loop.d.ts +54 -0
  109. package/dist/utils/watch/stream-watch-loop.d.ts.map +1 -0
  110. package/dist/utils/watch/stream-watch-loop.js +282 -0
  111. package/dist/utils/watch/stream-watch-loop.js.map +1 -0
  112. package/dist/utils/watch/stream-watch-loop.test.d.ts +2 -0
  113. package/dist/utils/watch/stream-watch-loop.test.d.ts.map +1 -0
  114. package/dist/utils/watch/stream-watch-loop.test.js +392 -0
  115. package/dist/utils/watch/stream-watch-loop.test.js.map +1 -0
  116. package/dist/utils/watch/websocket-watch-stream.d.ts +25 -0
  117. package/dist/utils/watch/websocket-watch-stream.d.ts.map +1 -0
  118. package/dist/utils/watch/websocket-watch-stream.js +306 -0
  119. package/dist/utils/watch/websocket-watch-stream.js.map +1 -0
  120. package/dist/utils/watch/websocket-watch-stream.test.d.ts +2 -0
  121. package/dist/utils/watch/websocket-watch-stream.test.d.ts.map +1 -0
  122. package/dist/utils/watch/websocket-watch-stream.test.js +475 -0
  123. package/dist/utils/watch/websocket-watch-stream.test.js.map +1 -0
  124. package/package.json +7 -4
  125. package/src/args/global-args.ts +13 -0
  126. package/src/commands/batch-command/batch-deploy-command.ts +105 -1
  127. package/src/commands/batch-command/batch-test-command.ts +8 -2
  128. package/src/commands/deploy-command/deploy-init.ts +1 -1
  129. package/src/commands/deploy-command/index.ts +331 -32
  130. package/src/commands/deploy-command/select-target.ts +1 -1
  131. package/src/commands/deploy-command/version-command.ts +215 -21
  132. package/src/commands/test-command/test-command.ts +24 -18
  133. package/src/nevermore.ts +19 -0
  134. package/src/utils/batch/changed-packages-utils.ts +1 -1
  135. package/src/utils/build/base-place-resolver-factory.ts +49 -0
  136. package/src/utils/build/build.ts +13 -2
  137. package/src/utils/build/upload.ts +1 -1
  138. package/src/utils/deploy/deploy-metadata.ts +1 -1
  139. package/src/utils/job-context/base-job-context.ts +68 -6
  140. package/src/utils/job-context/batch-script-job-context.ts +18 -0
  141. package/src/utils/job-context/cloud-job-context.ts +7 -2
  142. package/src/utils/job-context/local-job-context.ts +7 -2
  143. package/src/utils/open-cloud/open-cloud-client.test.ts +133 -14
  144. package/src/utils/open-cloud/open-cloud-client.ts +127 -34
  145. package/src/utils/testing/runner/combined-project-generator.ts +1 -1
  146. package/src/utils/testing/runner/test-runner.ts +1 -1
  147. package/src/utils/watch/github-context.test.ts +154 -0
  148. package/src/utils/watch/github-context.ts +184 -0
  149. package/src/utils/watch/http-watch-registry.test.ts +330 -0
  150. package/src/utils/watch/http-watch-registry.ts +341 -0
  151. package/src/utils/watch/local-watch-loop.test.ts +197 -0
  152. package/src/utils/watch/local-watch-loop.ts +190 -0
  153. package/src/utils/watch/register-notify-watches.test.ts +282 -0
  154. package/src/utils/watch/register-notify-watches.ts +226 -0
  155. package/src/utils/watch/register-watches.test.ts +696 -0
  156. package/src/utils/watch/register-watches.ts +369 -0
  157. package/src/utils/watch/stream-watch-loop.test.ts +625 -0
  158. package/src/utils/watch/stream-watch-loop.ts +411 -0
  159. package/src/utils/watch/websocket-watch-stream.test.ts +581 -0
  160. package/src/utils/watch/websocket-watch-stream.ts +403 -0
  161. package/tsconfig.json +19 -6
  162. package/tsconfig.tsbuildinfo +1 -1
  163. package/dist/utils/build/deploy-config.d.ts +0 -71
  164. package/dist/utils/build/deploy-config.d.ts.map +0 -1
  165. package/dist/utils/build/deploy-config.js +0 -164
  166. package/dist/utils/build/deploy-config.js.map +0 -1
  167. package/dist/utils/build/deploy-config.test.d.ts +0 -2
  168. package/dist/utils/build/deploy-config.test.d.ts.map +0 -1
  169. package/dist/utils/build/deploy-config.test.js +0 -126
  170. package/dist/utils/build/deploy-config.test.js.map +0 -1
  171. package/src/utils/build/deploy-config.test.ts +0 -149
  172. 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.getLatestPlaceVersionAsync', () => {
148
+ describe('OpenCloudClient.resolveLatestPlaceVersionAsync', () => {
149
149
  afterEach(() => {
150
150
  vi.restoreAllMocks();
151
151
  });
152
- it('returns the numeric revisionId from the Assets API', async () => {
153
- const urls = [];
154
- const fakeLimiter = {
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
- return new Response(JSON.stringify({ assetId: '22', revisionId: '5781' }), { status: 200 });
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: fakeLimiter,
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
- const version = await client.getLatestPlaceVersionAsync(1, 22);
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('throws when the Assets API omits a revisionId', async () => {
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({ assetId: '22' }), { status: 200 })),
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.getLatestPlaceVersionAsync(1, 22)).rejects.toThrowError(/no revisionId/);
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":"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"}
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,gDAAgD,EAAE,GAAG,EAAE;IAC9D,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,SAAS,mBAAmB,CAC1B,KAA6D,EAC7D,OAAiB,EAAE;QAEnB,OAAO;YACL,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAiB,EAAE,EAAE;gBAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1C,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAClC,IAAI,EAAE,sBAAsB,KAAK,CAAC,OAAO,EAAE;wBAC3C,iEAAiE;wBACjE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAChD,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;wBAC5B,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE;wBAC3C,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;YACJ,CAAC,CAAC;SACuB,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAC9B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EACzD,IAAI,CACL;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CACtE,IAAI,CACL,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClB,qEAAqE,CACtE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAAC;gBAC/B;oBACE,EAAE,OAAO,EAAE,IAAI,EAAE;oBACjB,EAAE,OAAO,EAAE,IAAI,EAAE;oBACjB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;iBACnC;aACF,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,CACJ,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAChE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAC9B;gBACE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACpC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACrD,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACpC,EACD,IAAI,CACL;SACF,CAAC,CAAC;QAEH,MAAM,CACJ,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAChE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACrE,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAC1D,CAAC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAAC;gBAC/B,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAClD,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAC1D,CAAC,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAAC;gBAC/B,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aACjD,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CACtD,CAAC,OAAO,CAAC,YAAY,CAAC,+BAA+B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CACnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACxE,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,MAAM,CACV,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAC1D,CAAC,OAAO,CAAC,YAAY,CAAC,kCAAkC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,WAAW,GAAG;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CACf,KAAK,IAAI,EAAE,CACT,IAAI,QAAQ,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;aACjD,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,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CACtD,CAAC,OAAO,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BuildContext } from '@quenty/nevermore-template-helpers';
2
- import { type DeployTarget } from '../../build/deploy-config.js';
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,8BAA8B,CAAC;AACjE,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
+ {"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 '../../build/deploy-config.js';
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,8BAA8B,CAAC;AACjE,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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=github-context.test.d.ts.map
@@ -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"}