ysk-server-core 1.1.18 → 1.1.20

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 (73) hide show
  1. package/dist/hosting/validators/ada-producer.d.ts +25 -0
  2. package/dist/hosting/validators/ada-producer.d.ts.map +1 -0
  3. package/dist/hosting/validators/ada-producer.js +163 -0
  4. package/dist/hosting/validators/ada-producer.js.map +1 -0
  5. package/dist/hosting/validators/adapters/ada.d.ts +2 -1
  6. package/dist/hosting/validators/adapters/ada.d.ts.map +1 -1
  7. package/dist/hosting/validators/adapters/ada.js +30 -9
  8. package/dist/hosting/validators/adapters/ada.js.map +1 -1
  9. package/dist/hosting/validators/adapters/avax.d.ts +2 -0
  10. package/dist/hosting/validators/adapters/avax.d.ts.map +1 -1
  11. package/dist/hosting/validators/adapters/avax.js +28 -10
  12. package/dist/hosting/validators/adapters/avax.js.map +1 -1
  13. package/dist/hosting/validators/adapters/eth-clients.d.ts +2 -0
  14. package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -1
  15. package/dist/hosting/validators/adapters/eth-clients.js +45 -14
  16. package/dist/hosting/validators/adapters/eth-clients.js.map +1 -1
  17. package/dist/hosting/validators/adapters/eth.d.ts.map +1 -1
  18. package/dist/hosting/validators/adapters/eth.js +5 -2
  19. package/dist/hosting/validators/adapters/eth.js.map +1 -1
  20. package/dist/hosting/validators/adapters/near.d.ts.map +1 -1
  21. package/dist/hosting/validators/adapters/near.js +11 -2
  22. package/dist/hosting/validators/adapters/near.js.map +1 -1
  23. package/dist/hosting/validators/adapters/p2p-public-ip.d.ts +6 -0
  24. package/dist/hosting/validators/adapters/p2p-public-ip.d.ts.map +1 -0
  25. package/dist/hosting/validators/adapters/p2p-public-ip.js +11 -0
  26. package/dist/hosting/validators/adapters/p2p-public-ip.js.map +1 -0
  27. package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -1
  28. package/dist/hosting/validators/adapters/phase2.js +75 -22
  29. package/dist/hosting/validators/adapters/phase2.js.map +1 -1
  30. package/dist/hosting/validators/compose-runner.d.ts +8 -0
  31. package/dist/hosting/validators/compose-runner.d.ts.map +1 -1
  32. package/dist/hosting/validators/compose-runner.js +74 -2
  33. package/dist/hosting/validators/compose-runner.js.map +1 -1
  34. package/dist/hosting/validators/disk.d.ts +2 -0
  35. package/dist/hosting/validators/disk.d.ts.map +1 -1
  36. package/dist/hosting/validators/disk.js +23 -0
  37. package/dist/hosting/validators/disk.js.map +1 -1
  38. package/dist/hosting/validators/extras.d.ts +58 -2
  39. package/dist/hosting/validators/extras.d.ts.map +1 -1
  40. package/dist/hosting/validators/extras.js +361 -6
  41. package/dist/hosting/validators/extras.js.map +1 -1
  42. package/dist/hosting/validators/index.d.ts +1 -0
  43. package/dist/hosting/validators/index.d.ts.map +1 -1
  44. package/dist/hosting/validators/index.js +1 -0
  45. package/dist/hosting/validators/index.js.map +1 -1
  46. package/dist/hosting/validators/manager.d.ts +10 -0
  47. package/dist/hosting/validators/manager.d.ts.map +1 -1
  48. package/dist/hosting/validators/manager.js +134 -5
  49. package/dist/hosting/validators/manager.js.map +1 -1
  50. package/dist/hosting/validators/ports.js +4 -4
  51. package/dist/hosting/validators/ports.js.map +1 -1
  52. package/dist/hosting/validators/registry.d.ts +7 -1
  53. package/dist/hosting/validators/registry.d.ts.map +1 -1
  54. package/dist/hosting/validators/registry.js +14 -3
  55. package/dist/hosting/validators/registry.js.map +1 -1
  56. package/dist/hosting/validators/releases.d.ts +66 -0
  57. package/dist/hosting/validators/releases.d.ts.map +1 -1
  58. package/dist/hosting/validators/releases.js +262 -21
  59. package/dist/hosting/validators/releases.js.map +1 -1
  60. package/dist/hosting/validators/runtime-status.d.ts.map +1 -1
  61. package/dist/hosting/validators/runtime-status.js +8 -3
  62. package/dist/hosting/validators/runtime-status.js.map +1 -1
  63. package/dist/hosting/validators/software-catalog.d.ts +10 -1
  64. package/dist/hosting/validators/software-catalog.d.ts.map +1 -1
  65. package/dist/hosting/validators/software-catalog.js +84 -3
  66. package/dist/hosting/validators/software-catalog.js.map +1 -1
  67. package/dist/hosting/validators/store.js +3 -0
  68. package/dist/hosting/validators/store.js.map +1 -1
  69. package/dist/hosting/validators/upgrade.d.ts +18 -0
  70. package/dist/hosting/validators/upgrade.d.ts.map +1 -1
  71. package/dist/hosting/validators/upgrade.js +25 -4
  72. package/dist/hosting/validators/upgrade.js.map +1 -1
  73. package/package.json +2 -2
@@ -5,6 +5,7 @@
5
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
6
6
  import { join } from 'node:path';
7
7
  import { parseVersionParts, tagIsNewer } from './versions.js';
8
+ import { findValidatorClient } from './registry.js';
8
9
  export const CLIENT_RELEASES = {
9
10
  reth: {
10
11
  github: 'paradigmxyz/reth',
@@ -55,11 +56,11 @@ export const CLIENT_RELEASES = {
55
56
  github: 'cosmos/gaia',
56
57
  changelog: 'https://github.com/cosmos/gaia/releases',
57
58
  },
58
- sui: {
59
+ 'sui-node': {
59
60
  github: 'MystenLabs/sui',
60
61
  changelog: 'https://github.com/MystenLabs/sui/releases',
61
62
  },
62
- aptos: {
63
+ 'aptos-node': {
63
64
  github: 'aptos-labs/aptos-core',
64
65
  changelog: 'https://github.com/aptos-labs/aptos-core/releases',
65
66
  },
@@ -67,10 +68,19 @@ export const CLIENT_RELEASES = {
67
68
  github: 'anza-xyz/agave',
68
69
  changelog: 'https://github.com/anza-xyz/agave/releases',
69
70
  },
71
+ polkadot: {
72
+ github: 'paritytech/polkadot-sdk',
73
+ changelog: 'https://github.com/paritytech/polkadot-sdk/releases',
74
+ },
70
75
  };
76
+ const OFFICIAL_CACHE_TTL_MS = 15 * 60_000;
77
+ const OFFICIAL_LIST_CAP = 12;
71
78
  function cachePath(dataDir) {
72
79
  return join(dataDir, 'validators', 'remote-tags.json');
73
80
  }
81
+ function releasesCachePath(dataDir) {
82
+ return join(dataDir, 'validators', 'remote-releases.json');
83
+ }
74
84
  export function loadRemoteClientTags(dataDir) {
75
85
  const p = cachePath(dataDir);
76
86
  if (!existsSync(p))
@@ -87,6 +97,246 @@ export function saveRemoteClientTags(dataDir, cache) {
87
97
  mkdirSync(join(dataDir, 'validators'), { recursive: true });
88
98
  writeFileSync(cachePath(dataDir), `${JSON.stringify(cache, null, 2)}\n`);
89
99
  }
100
+ export function loadRemoteReleases(dataDir) {
101
+ const p = releasesCachePath(dataDir);
102
+ if (!existsSync(p))
103
+ return { at: '', clients: {} };
104
+ try {
105
+ const raw = JSON.parse(readFileSync(p, 'utf8'));
106
+ const clients = raw.clients && typeof raw.clients === 'object' ? raw.clients : {};
107
+ return { at: String(raw.at ?? ''), clients };
108
+ }
109
+ catch {
110
+ return { at: '', clients: {} };
111
+ }
112
+ }
113
+ export function saveRemoteReleases(dataDir, cache) {
114
+ mkdirSync(join(dataDir, 'validators'), { recursive: true });
115
+ writeFileSync(releasesCachePath(dataDir), `${JSON.stringify(cache, null, 2)}\n`);
116
+ }
117
+ export function dockerRegistryHost(image) {
118
+ const first = String(image ?? '').trim().split('/')[0] ?? '';
119
+ if (first.includes('.') || first.includes(':'))
120
+ return first;
121
+ return 'docker.io';
122
+ }
123
+ /** Map an official GitHub tag onto the Docker tag we can pull. Null = do not offer. */
124
+ export function dockerTagFromGit(clientId, gitTag, network) {
125
+ const meta = CLIENT_RELEASES[clientId];
126
+ if (!meta)
127
+ return null;
128
+ const raw = String(gitTag ?? '').trim();
129
+ if (!raw || raw === 'latest' || /nightly/i.test(raw))
130
+ return null;
131
+ if (clientId === 'sui-node') {
132
+ if (/^testnet-v\d/.test(raw)) {
133
+ if (network && network !== 'testnet')
134
+ return null;
135
+ return raw;
136
+ }
137
+ if (/^mainnet-v\d/.test(raw)) {
138
+ if (network && network !== 'mainnet')
139
+ return null;
140
+ return raw;
141
+ }
142
+ const core = normalizeGithubTag(raw);
143
+ if (!core)
144
+ return null;
145
+ const v = core.startsWith('v') ? core : `v${core}`;
146
+ if (network === 'mainnet')
147
+ return `mainnet-${v}`;
148
+ if (network === 'testnet')
149
+ return `testnet-${v}`;
150
+ return null;
151
+ }
152
+ if (clientId === 'aptos-node') {
153
+ if (/^aptos-node-v\d/.test(raw))
154
+ return raw;
155
+ const core = normalizeGithubTag(raw);
156
+ if (!core)
157
+ return null;
158
+ const v = core.startsWith('v') ? core : `v${core}`;
159
+ return `aptos-node-${v}`;
160
+ }
161
+ if (clientId === 'polkadot') {
162
+ return normalizeGithubTag(raw);
163
+ }
164
+ return normalizeGithubTag(raw, meta.tagPrefix);
165
+ }
166
+ export function compareOfficialVersions(a, b) {
167
+ if (a.prerelease !== b.prerelease)
168
+ return a.prerelease ? 1 : -1;
169
+ if (tagIsNewer(a.dockerTag, b.dockerTag))
170
+ return 1;
171
+ if (tagIsNewer(b.dockerTag, a.dockerTag))
172
+ return -1;
173
+ return 0;
174
+ }
175
+ export function officialLatestDockerTag(items, pin = '') {
176
+ const latest = items.find((v) => !v.prerelease)?.dockerTag ?? items[0]?.dockerTag ?? '';
177
+ return latest || pin;
178
+ }
179
+ export function mergeOfficialVersions(input) {
180
+ const byTag = new Map();
181
+ const pin = String(input.pin ?? '').trim();
182
+ if (pin) {
183
+ byTag.set(pin, {
184
+ gitTag: pin,
185
+ dockerTag: pin,
186
+ prerelease: /rc|alpha|beta|preview/i.test(pin),
187
+ htmlUrl: input.pinHtmlUrl ?? '',
188
+ });
189
+ }
190
+ for (const extra of input.extraTags ?? []) {
191
+ const t = String(extra ?? '').trim();
192
+ if (!t || byTag.has(t))
193
+ continue;
194
+ byTag.set(t, {
195
+ gitTag: t,
196
+ dockerTag: t,
197
+ prerelease: /rc|alpha|beta|preview/i.test(t),
198
+ htmlUrl: '',
199
+ });
200
+ }
201
+ let fetched = 0;
202
+ for (const item of input.fetched) {
203
+ if (!item.dockerTag || byTag.has(item.dockerTag))
204
+ continue;
205
+ if (fetched >= OFFICIAL_LIST_CAP)
206
+ break;
207
+ byTag.set(item.dockerTag, item);
208
+ fetched += 1;
209
+ }
210
+ return [...byTag.values()].sort(compareOfficialVersions);
211
+ }
212
+ export async function fetchGithubReleaseList(repo, fetchFn = fetch) {
213
+ const url = `https://api.github.com/repos/${repo}/releases?per_page=30`;
214
+ const res = await fetchFn(url, {
215
+ headers: {
216
+ Accept: 'application/vnd.github+json',
217
+ 'User-Agent': 'ysk-server-validators',
218
+ },
219
+ });
220
+ if (!res.ok)
221
+ return [];
222
+ const body = (await res.json());
223
+ return Array.isArray(body) ? body : [];
224
+ }
225
+ function parseFetchedVersions(clientId, rows, network) {
226
+ const out = [];
227
+ const seen = new Set();
228
+ for (const row of rows) {
229
+ if (row.draft)
230
+ continue;
231
+ const gitTag = String(row.tag_name ?? '').trim();
232
+ const dockerTag = dockerTagFromGit(clientId, gitTag, network);
233
+ if (!dockerTag || seen.has(dockerTag))
234
+ continue;
235
+ seen.add(dockerTag);
236
+ out.push({
237
+ gitTag,
238
+ dockerTag,
239
+ prerelease: row.prerelease === true,
240
+ htmlUrl: String(row.html_url ?? ''),
241
+ });
242
+ }
243
+ return out;
244
+ }
245
+ /** Fetch GitHub tags for one client when missing, empty, stale, or forced. */
246
+ export async function ensureClientOfficialReleases(input) {
247
+ const prev = loadRemoteReleases(input.dataDir);
248
+ const row = prev.clients[input.clientId];
249
+ const at = row?.at || prev.at;
250
+ const age = at ? Date.now() - Date.parse(at) : Number.POSITIVE_INFINITY;
251
+ const empty = !row || row.items.length === 0;
252
+ const stale = !Number.isFinite(age) || age < 0 || age >= OFFICIAL_CACHE_TTL_MS;
253
+ if (!input.force && !empty && !stale)
254
+ return prev;
255
+ return refreshOfficialReleases({
256
+ dataDir: input.dataDir,
257
+ fetchFn: input.fetchFn,
258
+ clientIds: [input.clientId],
259
+ force: true,
260
+ });
261
+ }
262
+ export async function refreshOfficialReleases(input) {
263
+ const prev = loadRemoteReleases(input.dataDir);
264
+ const age = prev.at ? Date.now() - Date.parse(prev.at) : Number.POSITIVE_INFINITY;
265
+ const ids = input.clientIds?.length ? input.clientIds : Object.keys(CLIENT_RELEASES);
266
+ if (!input.force && Number.isFinite(age) && age >= 0 && age < OFFICIAL_CACHE_TTL_MS) {
267
+ return prev;
268
+ }
269
+ const fetchFn = input.fetchFn ?? fetch;
270
+ const clients = { ...prev.clients };
271
+ const notesAt = new Date().toISOString();
272
+ for (const id of ids) {
273
+ const meta = CLIENT_RELEASES[id];
274
+ if (!meta)
275
+ continue;
276
+ try {
277
+ const rows = await fetchGithubReleaseList(meta.github, fetchFn);
278
+ const items = parseFetchedVersions(id, rows);
279
+ clients[id] = { at: notesAt, items };
280
+ }
281
+ catch (e) {
282
+ const prevClient = clients[id];
283
+ clients[id] = {
284
+ at: prevClient?.at ?? notesAt,
285
+ items: prevClient?.items ?? [],
286
+ error: e instanceof Error ? e.message : 'fetch failed',
287
+ };
288
+ }
289
+ }
290
+ const cache = { at: notesAt, clients };
291
+ saveRemoteReleases(input.dataDir, cache);
292
+ const tags = {};
293
+ const tagNotes = [];
294
+ for (const [id, row] of Object.entries(clients)) {
295
+ const newest = row.items[0]?.dockerTag;
296
+ if (newest)
297
+ tags[id] = newest;
298
+ else if (row.error)
299
+ tagNotes.push(`${id}: ${row.error}`);
300
+ }
301
+ saveRemoteClientTags(input.dataDir, { at: notesAt, tags, notes: tagNotes });
302
+ return cache;
303
+ }
304
+ export function listOfficialClientVersions(input) {
305
+ const clientId = String(input.clientId ?? '').trim();
306
+ const cat = findValidatorClient(clientId);
307
+ const meta = CLIENT_RELEASES[clientId];
308
+ const pin = cat?.tag ?? '';
309
+ const image = cat?.image ?? '';
310
+ const cache = loadRemoteReleases(input.dataDir);
311
+ const row = cache.clients[clientId];
312
+ let fetched = row?.items ?? [];
313
+ if (input.network) {
314
+ fetched = fetched.filter((item) => dockerTagFromGit(clientId, item.gitTag, input.network));
315
+ }
316
+ const versions = mergeOfficialVersions({
317
+ pin,
318
+ extraTags: input.extraTags,
319
+ fetched,
320
+ pinHtmlUrl: meta ? `https://github.com/${meta.github}/releases/tag/${pin}` : '',
321
+ });
322
+ const latest = officialLatestDockerTag(versions, pin) || null;
323
+ return {
324
+ clientId,
325
+ image,
326
+ pin,
327
+ latest,
328
+ github: meta?.github ?? null,
329
+ changelogUrl: meta?.changelog ?? null,
330
+ registryHost: dockerRegistryHost(image),
331
+ at: row?.at ?? (cache.at || null),
332
+ error: row?.error ?? null,
333
+ versions,
334
+ };
335
+ }
336
+ export function allowedDockerTagsForClient(input) {
337
+ const listed = listOfficialClientVersions(input);
338
+ return new Set(listed.versions.map((v) => v.dockerTag));
339
+ }
90
340
  export function normalizeGithubTag(raw, prefix) {
91
341
  const t = String(raw ?? '').trim();
92
342
  if (!t)
@@ -123,25 +373,16 @@ export async function fetchGithubReleaseTag(repo, fetchFn = fetch) {
123
373
  return String(body.tag_name ?? '').trim() || null;
124
374
  }
125
375
  export async function refreshRemoteClientTags(input) {
126
- const fetchFn = input.fetchFn ?? fetch;
127
- const tags = {};
128
- const notes = [];
129
- for (const [id, meta] of Object.entries(CLIENT_RELEASES)) {
130
- try {
131
- const raw = await fetchGithubReleaseTag(meta.github, fetchFn);
132
- const norm = raw ? normalizeGithubTag(raw, meta.tagPrefix) : null;
133
- if (norm)
134
- tags[id] = norm;
135
- else
136
- notes.push(`${id}: no tag`);
137
- }
138
- catch (e) {
139
- notes.push(`${id}: ${e instanceof Error ? e.message : 'fetch failed'}`);
140
- }
141
- }
142
- const cache = { at: new Date().toISOString(), tags, notes };
143
- saveRemoteClientTags(input.dataDir, cache);
144
- return cache;
376
+ const official = await refreshOfficialReleases({
377
+ dataDir: input.dataDir,
378
+ fetchFn: input.fetchFn,
379
+ force: true,
380
+ });
381
+ const tags = loadRemoteClientTags(input.dataDir);
382
+ const notes = Object.entries(official.clients)
383
+ .filter(([, row]) => row.error)
384
+ .map(([id, row]) => `${id}: ${row.error}`);
385
+ return { at: official.at, tags, notes };
145
386
  }
146
387
  export function changelogForClient(clientId) {
147
388
  return CLIENT_RELEASES[clientId]?.changelog;
@@ -1 +1 @@
1
- {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../../src/hosting/validators/releases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS9D,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,SAAS,EAAE,8CAA8C;KAC1D;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,kDAAkD;KAC9D;IACD,UAAU,EAAE;QACV,MAAM,EAAE,0BAA0B;QAClC,SAAS,EAAE,sDAAsD;KAClE;IACD,UAAU,EAAE;QACV,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,6CAA6C;KACzD;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,SAAS,EAAE,gDAAgD;KAC5D;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;IACD,MAAM,EAAE;QACN,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,mDAAmD;QAC9D,SAAS,EAAE,YAAY;KACxB;IACD,WAAW,EAAE;QACX,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,kDAAkD;KAC9D;IACD,KAAK,EAAE;QACL,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,2CAA2C;KACvD;IACD,cAAc,EAAE;QACd,MAAM,EAAE,2BAA2B;QACnC,SAAS,EAAE,uDAAuD;KACnE;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,6CAA6C;KACzD;IACD,KAAK,EAAE;QACL,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,yCAAyC;KACrD;IACD,GAAG,EAAE;QACH,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;IACD,KAAK,EAAE;QACL,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,mDAAmD;KAC/D;IACD,KAAK,EAAE;QACL,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;CACF,CAAC;AAQF,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC3E,OAAO,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,KAAqB;IACzE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAe;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;IACvC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAC5C,IAAI,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAC/C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,UAAwB,KAAK;IAE7B,MAAM,GAAG,GAAG,gCAAgC,IAAI,kBAAkB,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,EAAE;YACP,MAAM,EAAE,6BAA6B;YACrC,YAAY,EAAE,uBAAuB;SACtC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAG7C;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;IACvC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,IAAI,IAAI;gBAAE,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;;gBACrB,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAmB,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5E,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,eAAe,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../../src/hosting/validators/releases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AASpD,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,IAAI,EAAE;QACJ,MAAM,EAAE,kBAAkB;QAC1B,SAAS,EAAE,8CAA8C;KAC1D;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,kDAAkD;KAC9D;IACD,UAAU,EAAE;QACV,MAAM,EAAE,0BAA0B;QAClC,SAAS,EAAE,sDAAsD;KAClE;IACD,UAAU,EAAE;QACV,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,6CAA6C;KACzD;IACD,KAAK,EAAE;QACL,MAAM,EAAE,oBAAoB;QAC5B,SAAS,EAAE,gDAAgD;KAC5D;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;IACD,MAAM,EAAE;QACN,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,mDAAmD;QAC9D,SAAS,EAAE,YAAY;KACxB;IACD,WAAW,EAAE;QACX,MAAM,EAAE,sBAAsB;QAC9B,SAAS,EAAE,kDAAkD;KAC9D;IACD,KAAK,EAAE;QACL,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,2CAA2C;KACvD;IACD,cAAc,EAAE;QACd,MAAM,EAAE,2BAA2B;QACnC,SAAS,EAAE,uDAAuD;KACnE;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,iBAAiB;QACzB,SAAS,EAAE,6CAA6C;KACzD;IACD,KAAK,EAAE;QACL,MAAM,EAAE,aAAa;QACrB,SAAS,EAAE,yCAAyC;KACrD;IACD,UAAU,EAAE;QACV,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,mDAAmD;KAC/D;IACD,KAAK,EAAE;QACL,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,4CAA4C;KACxD;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,yBAAyB;QACjC,SAAS,EAAE,qDAAqD;KACjE;CACF,CAAC;AAkBF,MAAM,qBAAqB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1C,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC3E,OAAO,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,KAAqB;IACzE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAiC,CAAC;QAChF,MAAM,OAAO,GACX,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,KAA0B;IAC5E,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,MAAc,EACd,OAAgB;IAEhB,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElE,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAClD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAClD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC,EAAE,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACnD,OAAO,cAAc,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,CAAsB,EACtB,CAAsB;IAEtB,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;QAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA4B,EAAE,GAAG,GAAG,EAAE;IAC5E,MAAM,MAAM,GACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3E,OAAO,MAAM,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAKrC;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACb,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9C,OAAO,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QACjC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;YACX,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,SAAS;QAC3D,IAAI,OAAO,IAAI,iBAAiB;YAAE,MAAM;QACxC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC3D,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,UAAwB,KAAK;IAE7B,MAAM,GAAG,GAAG,gCAAgC,IAAI,uBAAuB,CAAC;IACxE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,EAAE;YACP,MAAM,EAAE,6BAA6B;YACrC,YAAY,EAAE,uBAAuB;SACtC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,IAAwB,EACxB,OAAgB;IAEhB,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,KAAK;YAAE,SAAS;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAChD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC;YACP,MAAM;YACN,SAAS;YACT,UAAU,EAAE,GAAG,CAAC,UAAU,KAAK,IAAI;YACnC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,KAKlD;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACxE,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,qBAAqB,CAAC;IAC/E,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,uBAAuB,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3B,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAK7C;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAClF,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrF,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,qBAAqB,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO,CAAC,EAAE,CAAC,GAAG;gBACZ,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,OAAO;gBAC7B,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;gBAC9B,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;aACvD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAwB,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC5D,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;QACvC,IAAI,MAAM;YAAE,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;aACzB,IAAI,GAAG,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAK1C;IAYC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC;QACrC,GAAG;QACH,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;KAChF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;IAC9D,OAAO;QACL,QAAQ;QACR,KAAK;QACL,GAAG;QACH,MAAM;QACN,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI;QAC5B,YAAY,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI;QACrC,YAAY,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACvC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC;QACjC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI;QACzB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAI1C;IACC,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAe;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;IACvC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAC5C,IAAI,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACjF,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAC/C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY,EACZ,UAAwB,KAAK;IAE7B,MAAM,GAAG,GAAG,gCAAgC,IAAI,kBAAkB,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QAC7B,OAAO,EAAE;YACP,MAAM,EAAE,6BAA6B;YACrC,YAAY,EAAE,uBAAuB;SACtC;KACF,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAG7C;IACC,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC;QAC7C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,eAAe,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;AAC9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-status.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAQhE,sEAAsE;AACtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAUzE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAMtF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,sBAAsB,CAUzB"}
1
+ {"version":3,"file":"runtime-status.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAchE,sEAAsE;AACtE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAUzE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAMtF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,sBAAsB,CAUzB"}
@@ -1,9 +1,14 @@
1
- const FATAL_CONTAINER_RE = /permission denied|unexpected token|executable file not found|pull access denied|no such file|cannot allocate|fatal|error: command line|address already in use|failed to bind|not found|dns error|no address associated with hostname|temporary failure in name resolution/i;
1
+ const FATAL_CONTAINER_RE = /permission denied|unexpected token|unexpected argument|unknown argument|executable file not found|pull access denied|no such file|cannot allocate|fatal|error: command line|error: unexpected|address already in use|failed to bind|not found|dns error|no address associated with hostname|temporary failure in name resolution|initgenesis|nil pointer|invalid memory address|invalidssz|checkpoint state|failed to start beacon node|failed to connect to bootstrap|not connected to a minimum of 1 peer|not connected to enough stake/i;
2
+ function stripAnsi(s) {
3
+ return s
4
+ .replace(/\u001b\[[0-9;]*[A-Za-z]/g, '')
5
+ .replace(/\uFFFD\[[0-9;]*[A-Za-z]/g, '');
6
+ }
2
7
  const OOM_RE = /\bkilled\b|out of memory|\booms?k?ill|cannot allocate memory|exit \(137\)/i;
3
8
  const NOFILE_RE = /too many open files|ensure_max_open_files_limit|RLIMIT_NOFILE/i;
4
9
  /** First compose-log line that explains why a node is not healthy. */
5
10
  export function pickValidatorContainerHint(lines) {
6
- const trimmed = lines.map((l) => l.trim()).filter(Boolean);
11
+ const trimmed = lines.map((l) => stripAnsi(l).trim()).filter(Boolean);
7
12
  const oom = trimmed.find((l) => OOM_RE.test(l));
8
13
  if (oom)
9
14
  return oom.slice(0, 280);
@@ -26,7 +31,7 @@ export function isTransientValidatorProbeError(err) {
26
31
  const s = String(err || '').trim();
27
32
  if (!s)
28
33
  return false;
29
- return /rpc unreachable|unhealthy|econnrefused|econnreset|fetch failed|failed to fetch|networkerror|bad rpc|bad status|metrics unreachable|not ready|connection refused|socket hang up|timed? ?out|aborted|eai_again|unexpected end of json|unexpected token.*json|not valid json|unauthorized|forbidden|\b401\b|\b403\b|rpc auth|empty (rpc )?body/i.test(s);
34
+ return /rpc unreachable|unhealthy|econnrefused|econnreset|fetch failed|failed to fetch|networkerror|bad rpc|bad status|metrics unreachable|not ready|connection refused|socket hang up|timed? ?out|aborted|eai_again|unexpected end of json|unexpected token.*json|not valid json|unauthorized|forbidden|\b401\b|\b403\b|rpc auth|empty (rpc )?body|0 peers|not connected to a minimum of 1 peer|failed to connect to bootstrap/i.test(s);
30
35
  }
31
36
  export function deriveValidatorRuntimeStatus(input) {
32
37
  if (input.restarting)
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-status.js","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GACtB,4QAA4Q,CAAC;AAE/Q,MAAM,MAAM,GAAG,4EAA4E,CAAC;AAC5F,MAAM,SAAS,GAAG,gEAAgE,CAAC;AAEnF,sEAAsE;AACtE,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAA8B;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAA8B;IAClE,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,GAA8B;IAC3E,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,8UAA8U,CAAC,IAAI,CACxV,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAO5C;IACC,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"runtime-status.js","sourceRoot":"","sources":["../../../src/hosting/validators/runtime-status.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Pinned validator client images — catalog + local presence.
3
- * Pull is allowlisted to registry pins only (not a general Docker Hub).
3
+ * Pull is allowlisted to registry pins plus cached official tags.
4
4
  */
5
5
  import { type ValidatorSoftwareImageDto, type ValidatorSoftwareReportDto } from 'ysk-server-shared';
6
6
  import type { HostExecutor } from '../../host/executor.js';
@@ -13,6 +13,15 @@ export declare function parseValidatorImageRef(raw: string): {
13
13
  export declare function pinnedValidatorImageRefs(): Set<string>;
14
14
  export declare function isPinnedValidatorImage(ref: string): boolean;
15
15
  export declare function listPinnedValidatorImages(): ValidatorSoftwareImageDto[];
16
+ /** Pin ∪ cached official Docker tags for the same image repository. */
17
+ export declare function isAllowedValidatorImage(ref: string, dataDir?: string): boolean;
18
+ export declare function isAllowedClientTag(input: {
19
+ clientId: string;
20
+ tag: string;
21
+ dataDir: string;
22
+ extraTags?: string[];
23
+ network?: string;
24
+ }): boolean;
16
25
  export declare function collectValidatorSoftware(input: {
17
26
  host: HostExecutor;
18
27
  dataDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"software-catalog.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQzF;AAED,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,CAStD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED,wBAAgB,yBAAyB,IAAI,yBAAyB,EAAE,CAiBvE;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAiDtC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,kDAuBnD"}
1
+ {"version":3,"file":"software-catalog.d.ts","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAWlE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQzF;AAED,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,CAStD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3D;AAgBD,wBAAgB,yBAAyB,IAAI,yBAAyB,EAAE,CAkBvE;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAa9E;AAWD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAaV;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAuEtC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,kDAuBnD"}
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Pinned validator client images — catalog + local presence.
3
- * Pull is allowlisted to registry pins only (not a general Docker Hub).
3
+ * Pull is allowlisted to registry pins plus cached official tags.
4
4
  */
5
5
  import { tl, } from 'ysk-server-shared';
6
6
  import { listDockerImages, probeDockerEngine } from '../docker/manager.js';
7
7
  import { dockerPull } from '../docker/manager.js';
8
- import { listValidatorChains, suiNodeImagePins } from './registry.js';
8
+ import { findValidatorClient, listValidatorChains, suiNodeImagePins } from './registry.js';
9
+ import { allowedDockerTagsForClient, CLIENT_RELEASES, dockerRegistryHost, listOfficialClientVersions, loadRemoteReleases, } from './releases.js';
9
10
  import { listValidatorInstances } from './store.js';
10
11
  export function validatorImageRef(image, tag) {
11
12
  return `${String(image).trim()}:${String(tag).trim()}`;
@@ -38,6 +39,19 @@ export function isPinnedValidatorImage(ref) {
38
39
  return false;
39
40
  return pinnedValidatorImageRefs().has(validatorImageRef(parsed.image, parsed.tag));
40
41
  }
42
+ function emptySource(clientId, image) {
43
+ const meta = CLIENT_RELEASES[clientId];
44
+ return {
45
+ registryHost: dockerRegistryHost(image),
46
+ sourceGithub: meta?.github ?? null,
47
+ changelogUrl: meta?.changelog ?? null,
48
+ officialTag: null,
49
+ officialDockerTag: null,
50
+ officialAt: null,
51
+ officialError: null,
52
+ staleInstances: [],
53
+ };
54
+ }
41
55
  export function listPinnedValidatorImages() {
42
56
  return listValidatorChains().flatMap((chain) => chain.clients.map((client) => {
43
57
  const ref = validatorImageRef(client.image, client.tag);
@@ -51,9 +65,56 @@ export function listPinnedValidatorImages() {
51
65
  present: null,
52
66
  size: null,
53
67
  usedBy: [],
68
+ ...emptySource(client.id, client.image),
54
69
  };
55
70
  }));
56
71
  }
72
+ /** Pin ∪ cached official Docker tags for the same image repository. */
73
+ export function isAllowedValidatorImage(ref, dataDir) {
74
+ const parsed = parseValidatorImageRef(ref);
75
+ if (!parsed)
76
+ return false;
77
+ if (parsed.tag === 'latest' || /nightly/i.test(parsed.tag))
78
+ return false;
79
+ if (isPinnedValidatorImage(ref))
80
+ return true;
81
+ if (!dataDir)
82
+ return false;
83
+ const catalog = findValidatorClientByImage(parsed.image);
84
+ if (!catalog)
85
+ return false;
86
+ const allowed = allowedDockerTagsForClient({
87
+ clientId: catalog.clientId,
88
+ dataDir,
89
+ });
90
+ return allowed.has(parsed.tag);
91
+ }
92
+ function findValidatorClientByImage(image) {
93
+ const img = String(image ?? '').trim();
94
+ for (const chain of listValidatorChains()) {
95
+ const c = chain.clients.find((x) => x.image === img);
96
+ if (c)
97
+ return { clientId: c.id };
98
+ }
99
+ return null;
100
+ }
101
+ export function isAllowedClientTag(input) {
102
+ const tag = String(input.tag ?? '').trim();
103
+ if (!tag || tag === 'latest' || /nightly/i.test(tag))
104
+ return false;
105
+ const cat = findValidatorClient(input.clientId);
106
+ if (!cat)
107
+ return false;
108
+ if (tag === cat.tag)
109
+ return true;
110
+ const listed = listOfficialClientVersions({
111
+ clientId: input.clientId,
112
+ dataDir: input.dataDir,
113
+ network: input.network,
114
+ extraTags: input.extraTags,
115
+ });
116
+ return listed.versions.some((v) => v.dockerTag === tag);
117
+ }
57
118
  export async function collectValidatorSoftware(input) {
58
119
  const probe = await probeDockerEngine(input.host);
59
120
  const pins = listPinnedValidatorImages();
@@ -81,13 +142,32 @@ export async function collectValidatorSoftware(input) {
81
142
  }
82
143
  }
83
144
  const dockerKnown = probe.installed && probe.daemonActive;
145
+ const official = loadRemoteReleases(input.dataDir);
84
146
  const images = pins.map((pin) => {
85
147
  const hit = local.get(pin.ref);
148
+ const listed = listOfficialClientVersions({
149
+ clientId: pin.clientId,
150
+ dataDir: input.dataDir,
151
+ });
152
+ const newest = official.clients[pin.clientId]?.items[0];
153
+ const staleInstances = instances
154
+ .flatMap((inst) => Object.values(inst.clients ?? {})
155
+ .filter((c) => c.id === pin.clientId && c.tag !== pin.tag)
156
+ .map((c) => ({ id: inst.id, tag: c.tag })))
157
+ .filter((row, i, all) => all.findIndex((x) => x.id === row.id && x.tag === row.tag) === i);
86
158
  return {
87
159
  ...pin,
88
160
  present: dockerKnown ? Boolean(hit) : null,
89
161
  size: hit?.size ?? null,
90
162
  usedBy: usedBy.get(pin.ref) ?? [],
163
+ registryHost: listed.registryHost,
164
+ sourceGithub: listed.github,
165
+ changelogUrl: listed.changelogUrl,
166
+ officialTag: newest?.gitTag ?? null,
167
+ officialDockerTag: newest?.dockerTag ?? null,
168
+ officialAt: listed.at,
169
+ officialError: listed.error,
170
+ staleInstances,
91
171
  };
92
172
  });
93
173
  return {
@@ -97,6 +177,7 @@ export async function collectValidatorSoftware(input) {
97
177
  dockerVersion: probe.version,
98
178
  composeVersion: probe.composeVersion,
99
179
  images,
180
+ officialAt: official.at || null,
100
181
  executeEnabled: input.host.executeEnabled(),
101
182
  isRoot: input.host.isRoot(),
102
183
  };
@@ -105,7 +186,7 @@ export async function pullPinnedValidatorImage(input) {
105
186
  const raw = input.tag
106
187
  ? validatorImageRef(input.image, input.tag)
107
188
  : String(input.image ?? '').trim();
108
- if (!isPinnedValidatorImage(raw)) {
189
+ if (!isAllowedValidatorImage(raw, input.dataDir) && !isPinnedValidatorImage(raw)) {
109
190
  return {
110
191
  ok: false,
111
192
  blocked: true,
@@ -1 +1 @@
1
- {"version":3,"file":"software-catalog.js","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"software-catalog.js","sourceRoot":"","sources":["../../../src/hosting/validators/software-catalog.ts"],"names":[],"mappings":"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"}
@@ -175,6 +175,9 @@ function normalizeInstance(raw) {
175
175
  lastMithril: o.lastMithril && typeof o.lastMithril === 'object'
176
176
  ? o.lastMithril
177
177
  : undefined,
178
+ cardanoProducer: o.cardanoProducer && typeof o.cardanoProducer === 'object'
179
+ ? o.cardanoProducer
180
+ : undefined,
178
181
  limits: o.limits && typeof o.limits === 'object'
179
182
  ? o.limits
180
183
  : undefined,