chore(deps): update dependency eslint-plugin-unicorn to v76 (#141)

Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
This commit is contained in:
renovate[bot]
2026-09-29 13:56:27 +02:00
committed by GitHub
co-authored by Daniel Dietzler
parent 79511fee1b
commit b6b72932d9
19 changed files with 109 additions and 225 deletions
+20 -19
View File
@@ -237,10 +237,13 @@ export class CloudflareMetricsCollector {
const zoneNames: string[] = []; const zoneNames: string[] = [];
for (const tag of cache.bulkZoneTags) { for (const tag of cache.bulkZoneTags) {
const name = cache.zones.get(tag); const name = cache.zones.get(tag);
if (name !== undefined) {
zoneTags.push(tag); if (name === undefined) {
zoneNames.push(name); continue;
} }
zoneTags.push(tag);
zoneNames.push(name);
} }
if (zoneTags.length === 0) { if (zoneTags.length === 0) {
this.metrics.push( this.metrics.push(
@@ -287,12 +290,14 @@ export class CloudflareMetricsCollector {
row.dimensions = { zoneTag }; row.dimensions = { zoneTag };
} }
const metric = buildMetric(dataset, row, this.accountTag, cache); const metric = buildMetric(dataset, row, this.accountTag, cache);
if (metric) { if (!metric) {
metric.addTag('zone_tag', zoneTag); continue;
metric.addTag('zone_name', zoneName);
this.metrics.pushRaw(metric);
totalPoints++;
} }
metric.addTag('zone_tag', zoneTag);
metric.addTag('zone_name', zoneName);
this.metrics.pushRaw(metric);
totalPoints++;
} }
} }
@@ -322,10 +327,12 @@ export class CloudflareMetricsCollector {
let emitted = 0; let emitted = 0;
for (const row of rows) { for (const row of rows) {
const metric = buildMetric(dataset, row, this.accountTag, cache); const metric = buildMetric(dataset, row, this.accountTag, cache);
if (metric) { if (!metric) {
this.metrics.pushRaw(metric); continue;
emitted++;
} }
this.metrics.pushRaw(metric);
emitted++;
} }
return emitted; return emitted;
} }
@@ -367,10 +374,7 @@ function errorMessage(error: unknown): string {
const body = error.responseBody?.slice(0, 200) ?? ''; const body = error.responseBody?.slice(0, 200) ?? '';
return body ? `${error.message}: ${body}` : error.message; return body ? `${error.message}: ${body}` : error.message;
} }
if (error instanceof Error) { return error instanceof Error ? error.message : String(error);
return error.message;
}
return String(error);
} }
function errorTag(error: unknown): string { function errorTag(error: unknown): string {
@@ -404,8 +408,5 @@ function errorTag(error: unknown): string {
Truncate a string for use as a metric tag value. Truncate a string for use as a metric tag value.
*/ */
function truncateTag(value: string, maxLength: number): string { function truncateTag(value: string, maxLength: number): string {
if (value.length <= maxLength) { return value.length <= maxLength ? value : value.slice(0, maxLength - 3) + '...';
return value;
}
return value.slice(0, maxLength - 3) + '...';
} }
+17 -23
View File
@@ -37,11 +37,13 @@ function getTagEnricher(dataset: DatasetQuery): TagEnricher {
case 'd1QueriesAdaptiveGroups': { case 'd1QueriesAdaptiveGroups': {
cached = (metric, row, cache) => { cached = (metric, row, cache) => {
const id = row.dimensions?.databaseId; const id = row.dimensions?.databaseId;
if (typeof id === 'string' && id !== '') { if (typeof id !== 'string' || id === '') {
const name = cache.d1Databases.get(id); return;
if (name) { }
metric.addTag('database_name', name);
} const name = cache.d1Databases.get(id);
if (name) {
metric.addTag('database_name', name);
} }
}; };
break; break;
@@ -50,11 +52,13 @@ function getTagEnricher(dataset: DatasetQuery): TagEnricher {
case 'queueBacklogAdaptiveGroups': { case 'queueBacklogAdaptiveGroups': {
cached = (metric, row, cache) => { cached = (metric, row, cache) => {
const id = row.dimensions?.queueId; const id = row.dimensions?.queueId;
if (typeof id === 'string' && id !== '') { if (typeof id !== 'string' || id === '') {
const name = cache.queues.get(id); return;
if (name) { }
metric.addTag('queue_name', name);
} const name = cache.queues.get(id);
if (name) {
metric.addTag('queue_name', name);
} }
}; };
break; break;
@@ -125,11 +129,7 @@ export function buildMetric(
hasField = true; hasField = true;
} }
if (!hasField) { return hasField ? metric : null;
return null;
}
return metric;
} }
export function resolveTimestamp(dataset: DatasetQuery, row: DatasetRow): Date | null { export function resolveTimestamp(dataset: DatasetQuery, row: DatasetRow): Date | null {
@@ -144,10 +144,7 @@ export function resolveTimestamp(dataset: DatasetQuery, row: DatasetRow): Date |
return new Date(`${str}T00:00:00Z`); return new Date(`${str}T00:00:00Z`);
} }
const date = new Date(str); const date = new Date(str);
if (Number.isNaN(date.getTime())) { return Number.isNaN(date.getTime()) ? null : date;
return null;
}
return date;
} }
export function normalizeTagValue(raw?: unknown): string | undefined { export function normalizeTagValue(raw?: unknown): string | undefined {
@@ -157,8 +154,5 @@ export function normalizeTagValue(raw?: unknown): string | undefined {
if (typeof raw === 'string') { if (typeof raw === 'string') {
return raw === '' ? undefined : raw; return raw === '' ? undefined : raw;
} }
if (typeof raw === 'number' || typeof raw === 'boolean') { return typeof raw === 'number' || typeof raw === 'boolean' ? String(raw) : undefined;
return String(raw);
}
return undefined;
} }
@@ -98,10 +98,12 @@ export function groupErrorsByAlias(
} }
for (const error of errors) { for (const error of errors) {
const alias = findAliasInPath(error.path); const alias = findAliasInPath(error.path);
if (alias) { if (!alias) {
const existing = result[alias]; continue;
result[alias] = existing ? `${existing}; ${error.message}` : error.message;
} }
const existing = result[alias];
result[alias] = existing ? `${existing}; ${error.message}` : error.message;
} }
return result; return result;
} }
@@ -117,10 +119,7 @@ function findAliasInPath(path: readonly (string | number)[] | undefined): string
// the `dimensions` / `sum` / etc. internals. // the `dimensions` / `sum` / etc. internals.
for (let i = 0; i < path.length; i++) { for (let i = 0; i < path.length; i++) {
const segment = path[i]; const segment = path[i];
if (typeof segment !== 'string') { if (typeof segment !== 'string' || ['viewer', 'accounts', 'zones'].includes(segment)) {
continue;
}
if (['viewer', 'accounts', 'zones'].includes(segment)) {
continue; continue;
} }
return segment; return segment;
@@ -132,8 +131,5 @@ function orderByClause(dataset: DatasetQuery): string {
const timestampDim = dataset.timestampDimension ?? 'datetimeMinute'; const timestampDim = dataset.timestampDimension ?? 'datetimeMinute';
// Grouping implicitly takes place on the dimensions, so orderBy helps // Grouping implicitly takes place on the dimensions, so orderBy helps
// make sure we get the most recent buckets within the limit. // make sure we get the most recent buckets within the limit.
if (dataset.dimensions.includes(timestampDim)) { return dataset.dimensions.includes(timestampDim) ? `, orderBy: [${timestampDim}_ASC]` : '';
return `, orderBy: [${timestampDim}_ASC]`;
}
return '';
} }
@@ -131,17 +131,11 @@ function computeWindowMs(isColdStart: boolean, lastSuccessfulEndMs: number | nul
// (scheduled - lag) - lastEnd. Using scheduled time (not wall clock) // (scheduled - lag) - lastEnd. Using scheduled time (not wall clock)
// so catch-up invocations compute the gap correctly. // so catch-up invocations compute the gap correctly.
const gapMs = scheduledMs - DEFAULT_LAG_MS - lastSuccessfulEndMs; const gapMs = scheduledMs - DEFAULT_LAG_MS - lastSuccessfulEndMs;
if (gapMs > DEFAULT_WINDOW_MS) { return gapMs > DEFAULT_WINDOW_MS ? Math.min(gapMs, MAX_BACKFILL_MS) : DEFAULT_WINDOW_MS;
return Math.min(gapMs, MAX_BACKFILL_MS);
}
return DEFAULT_WINDOW_MS;
} }
// Fresh isolate with no prior state — use a shorter backfill window // Fresh isolate with no prior state — use a shorter backfill window
// since cold-start ticks already do extra work resolving resource caches. // since cold-start ticks already do extra work resolving resource caches.
if (isColdStart) { return isColdStart ? 15 * 60 * 1000 : DEFAULT_WINDOW_MS;
return 15 * 60 * 1000;
}
return DEFAULT_WINDOW_MS;
} }
async function runCollection( async function runCollection(
@@ -96,10 +96,12 @@ describe.skipIf(!hasCredentials)('Cloudflare GraphQL integration', () => {
continue; continue;
} }
const blockData = (row as unknown as Record<string, Record<string, unknown> | undefined>)[block]; const blockData = (row as unknown as Record<string, Record<string, unknown> | undefined>)[block];
if (blockData && key in blockData) { if (!blockData || !(key in blockData)) {
const value = blockData[key]; continue;
expect(value === null || typeof value === 'number', `${dataset.key}.${block}.${key}`).toBe(true);
} }
const value = blockData[key];
expect(value === null || typeof value === 'number', `${dataset.key}.${block}.${key}`).toBe(true);
} }
} }
} }
+16 -22
View File
@@ -39,37 +39,31 @@ export class HeaderMetricsProvider implements IMetricsProviderRepository {
// Measurement: escape `,` and ` `. // Measurement: escape `,` and ` `.
// Tag key / tag value / field key: escape `,`, `=`, ` `. // Tag key / tag value / field key: escape `,`, `=`, ` `.
function escapeMeasurement(s: string): string { function escapeMeasurement(s: string): string {
if (!s.includes(',') && !s.includes(' ')) { return !s.includes(',') && !s.includes(' ') ? s : s.replaceAll(',', String.raw`\,`).replaceAll(' ', String.raw`\ `);
return s;
}
return s.replaceAll(',', String.raw`\,`).replaceAll(' ', String.raw`\ `);
} }
function escapeTagKey(s: string): string { function escapeTagKey(s: string): string {
if (!s.includes(',') && !s.includes('=') && !s.includes(' ')) { return !s.includes(',') && !s.includes('=') && !s.includes(' ')
return s; ? s
} : s
return s .replaceAll(',', String.raw`\,`)
.replaceAll(',', String.raw`\,`) .replaceAll('=', String.raw`\=`)
.replaceAll('=', String.raw`\=`) .replaceAll(' ', String.raw`\ `);
.replaceAll(' ', String.raw`\ `);
} }
function escapeTagValue(s: string): string { function escapeTagValue(s: string): string {
if (!s.includes(',') && !s.includes('=') && !s.includes(' ')) { return !s.includes(',') && !s.includes('=') && !s.includes(' ')
return s; ? s
} : s
return s .replaceAll(',', String.raw`\,`)
.replaceAll(',', String.raw`\,`) .replaceAll('=', String.raw`\=`)
.replaceAll('=', String.raw`\=`) .replaceAll(' ', String.raw`\ `);
.replaceAll(' ', String.raw`\ `);
} }
function getMetricsWriteUrl(environment: string): string { function getMetricsWriteUrl(environment: string): string {
if (environment === 'prod') { return environment === 'prod'
return 'https://cf-workers.monitoring.immich.cloud/write'; ? 'https://cf-workers.monitoring.immich.cloud/write'
} : `https://cf-workers.monitoring.${environment || 'dev'}.immich.cloud/write`;
return `https://cf-workers.monitoring.${environment || 'dev'}.immich.cloud/write`;
} }
export class InfluxMetricsProvider implements IMetricsProviderRepository { export class InfluxMetricsProvider implements IMetricsProviderRepository {
@@ -214,15 +214,9 @@ export class ResourceCacheService {
} }
function errorMessage(error: unknown): string { function errorMessage(error: unknown): string {
if (error instanceof Error) { return error instanceof Error ? error.message : String(error);
return error.message;
}
return String(error);
} }
function errorTag(error: unknown): string { function errorTag(error: unknown): string {
if (error instanceof Error) { return error instanceof Error ? error.name : 'unknown';
return error.name;
}
return 'unknown';
} }
@@ -14,15 +14,9 @@ const MAX_BACKFILL_MS = 30 * 60 * 1000;
function computeWindowMs(isColdStart: boolean, lastSuccessfulEndMs: number | null, scheduledMs: number): number { function computeWindowMs(isColdStart: boolean, lastSuccessfulEndMs: number | null, scheduledMs: number): number {
if (lastSuccessfulEndMs !== null) { if (lastSuccessfulEndMs !== null) {
const gapMs = scheduledMs - DEFAULT_LAG_MS - lastSuccessfulEndMs; const gapMs = scheduledMs - DEFAULT_LAG_MS - lastSuccessfulEndMs;
if (gapMs > DEFAULT_WINDOW_MS) { return gapMs > DEFAULT_WINDOW_MS ? Math.min(gapMs, MAX_BACKFILL_MS) : DEFAULT_WINDOW_MS;
return Math.min(gapMs, MAX_BACKFILL_MS);
}
return DEFAULT_WINDOW_MS;
} }
if (isColdStart) { return isColdStart ? 15 * 60 * 1000 : DEFAULT_WINDOW_MS;
return 15 * 60 * 1000;
}
return DEFAULT_WINDOW_MS;
} }
describe('computeWindowMs', () => { describe('computeWindowMs', () => {
+1 -4
View File
@@ -137,10 +137,7 @@ export class FakeRestClient implements ICloudflareRestClient {
// eslint-disable-next-line @typescript-eslint/require-await // eslint-disable-next-line @typescript-eslint/require-await
async getZone(zoneId: string) { async getZone(zoneId: string) {
this.zoneCalls.push(zoneId); this.zoneCalls.push(zoneId);
if (zoneId in this.individualZones) { return zoneId in this.individualZones ? this.individualZones[zoneId] : null;
return this.individualZones[zoneId];
}
return null;
} }
} }
+7 -5
View File
@@ -118,12 +118,14 @@ export class ApprovalValidator {
}; };
allReviews.push(reviewInfo); allReviews.push(reviewInfo);
if (review.state === 'APPROVED') { if (review.state !== 'APPROVED') {
const isAuthorized = authorizedApprovers.some((approver) => approver.id === userId); continue;
}
if (isAuthorized) { const isAuthorized = authorizedApprovers.some((approver) => approver.id === userId);
validApprovals.push(review.user.login);
} if (isAuthorized) {
validApprovals.push(review.user.login);
} }
} }
+1 -4
View File
@@ -5,10 +5,7 @@
export const CHECK_NAME = 'Approval Check'; export const CHECK_NAME = 'Approval Check';
export function getCheckName(environment?: string): string { export function getCheckName(environment?: string): string {
if (environment && environment !== 'prod') { return environment && environment !== 'prod' ? `${CHECK_NAME} (${environment})` : CHECK_NAME;
return `${CHECK_NAME} (${environment})`;
}
return CHECK_NAME;
} }
const GREPTILE = { username: 'greptile-apps[bot]', id: 165_735_046 }; const GREPTILE = { username: 'greptile-apps[bot]', id: 165_735_046 };
+3 -5
View File
@@ -24,9 +24,7 @@ export class DocsService {
function toDocsVersion(version: SemVer): DocsVersion { function toDocsVersion(version: SemVer): DocsVersion {
const label = `v${version.version}`; const label = `v${version.version}`;
if (gte(version, FIRST_DOCS_SUBDOMAIN)) { return gte(version, FIRST_DOCS_SUBDOMAIN)
return { label, url: `https://docs.${label}.archive.immich.app` }; ? { label, url: `https://docs.${label}.archive.immich.app` }
} : { label, url: `https://${label}.archive.immich.app`, rootPath: '/docs' };
return { label, url: `https://${label}.archive.immich.app`, rootPath: '/docs' };
} }
+1 -4
View File
@@ -60,10 +60,7 @@ export class GitHubRepository implements IGitHubRepository {
allReleases.sort((a, b) => { allReleases.sort((a, b) => {
const semverA = semver.parse(a.tag_name); const semverA = semver.parse(a.tag_name);
const semverB = semver.parse(b.tag_name); const semverB = semver.parse(b.tag_name);
if (!semverA || !semverB) { return !semverA || !semverB ? 0 : semver.compare(semverB, semverA);
return 0;
}
return semver.compare(semverB, semverA);
}); });
return allReleases; return allReleases;
+4 -4
View File
@@ -758,6 +758,7 @@ describe('Cron sync', () => {
const request = new Request(input, init); const request = new Request(input, init);
const url = new URL(request.url); const url = new URL(request.url);
// eslint-disable-next-line unicorn/prefer-ternary
if ( if (
request.method === 'GET' && request.method === 'GET' &&
url.origin === 'https://api.github.com' && url.origin === 'https://api.github.com' &&
@@ -836,10 +837,9 @@ describe('GitHubRepository', () => {
vi.spyOn(globalThis, 'fetch').mockImplementation((input, init) => { vi.spyOn(globalThis, 'fetch').mockImplementation((input, init) => {
const url = new URL(new Request(input, init).url); const url = new URL(new Request(input, init).url);
if (url.origin === 'https://api.github.com' && url.pathname === '/repos/immich-app/immich/releases') { return url.origin === 'https://api.github.com' && url.pathname === '/repos/immich-app/immich/releases'
return Promise.resolve(Response.json(githubReleases)); ? Promise.resolve(Response.json(githubReleases))
} : Promise.reject(new Error(`unexpected fetch: ${url.href}`));
return Promise.reject(new Error(`unexpected fetch: ${url.href}`));
}); });
const releases = await new GitHubRepository().fetchReleases(); const releases = await new GitHubRepository().fetchReleases();
+1 -4
View File
@@ -109,10 +109,7 @@ export default {
} }
const latest = await versionService.getLatestVersion(deferredRepository, channel); const latest = await versionService.getLatestVersion(deferredRepository, channel);
if (!latest) { return latest ? jsonResponse(latest) : errorResponse('No releases found', 404);
return errorResponse('No releases found', 404);
}
return jsonResponse(latest);
}, },
)(); )();
} }
+3 -4
View File
@@ -94,10 +94,9 @@ export class HeaderMetricsProvider implements IMetricsProviderRepository {
} }
function getMetricsWriteUrl(environment: string): string { function getMetricsWriteUrl(environment: string): string {
if (environment === 'prod') { return environment === 'prod'
return 'https://cf-workers.monitoring.immich.cloud/write'; ? 'https://cf-workers.monitoring.immich.cloud/write'
} : `https://cf-workers.monitoring.${environment || 'dev'}.immich.cloud/write`;
return `https://cf-workers.monitoring.${environment || 'dev'}.immich.cloud/write`;
} }
export class InfluxMetricsProvider implements IMetricsProviderRepository { export class InfluxMetricsProvider implements IMetricsProviderRepository {
+10 -8
View File
@@ -146,15 +146,17 @@ export class VersionService {
async emitLatestVersion(): Promise<void> { async emitLatestVersion(): Promise<void> {
const latest = await this.releaseRepository.getLatest(); const latest = await this.releaseRepository.getLatest();
if (latest) { if (!latest) {
const version = latest.tag_name.replace(/^v/, ''); return;
this.metrics.push(
Metric.create('latest_version')
.addTag('version', version)
.addTag('user_agent', `immich-server/${version}`)
.intField('count', 1),
);
} }
const version = latest.tag_name.replace(/^v/, '');
this.metrics.push(
Metric.create('latest_version')
.addTag('version', version)
.addTag('user_agent', `immich-server/${version}`)
.intField('count', 1),
);
} }
isValidChannel(channel: string): channel is ReleaseChannel { isValidChannel(channel: string): channel is ReleaseChannel {
+1 -1
View File
@@ -22,7 +22,7 @@
"eslint": "^10.0.0", "eslint": "^10.0.0",
"eslint-config-prettier": "^10.0.1", "eslint-config-prettier": "^10.0.1",
"eslint-plugin-prettier": "^5.5.4", "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-unicorn": "^74.0.0", "eslint-plugin-unicorn": "^76.0.0",
"globals": "^17.0.0", "globals": "^17.0.0",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.2.0", "prettier-plugin-organize-imports": "^4.2.0",
+6 -80
View File
@@ -36,8 +36,8 @@ importers:
specifier: ^5.5.4 specifier: ^5.5.4
version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.10.0(supports-color@10.2.2)))(eslint@10.10.0(supports-color@10.2.2))(prettier@3.9.6) version: 5.5.6(eslint-config-prettier@10.1.8(eslint@10.10.0(supports-color@10.2.2)))(eslint@10.10.0(supports-color@10.2.2))(prettier@3.9.6)
eslint-plugin-unicorn: eslint-plugin-unicorn:
specifier: ^74.0.0 specifier: ^76.0.0
version: 74.0.0(eslint@10.10.0(supports-color@10.2.2)) version: 76.0.0(eslint@10.10.0(supports-color@10.2.2))
globals: globals:
specifier: ^17.0.0 specifier: ^17.0.0
version: 17.12.0 version: 17.12.0
@@ -1161,10 +1161,6 @@ packages:
resolution: {integrity: sha512-AIi5H6p0xk5uknXcN3/rmhP8jgp69OfSe/JuKiQAFprJ7UGw7mwj7m4XcmDzlrnJDG+cGpphAINGdU3g3g7kDw==} resolution: {integrity: sha512-AIi5H6p0xk5uknXcN3/rmhP8jgp69OfSe/JuKiQAFprJ7UGw7mwj7m4XcmDzlrnJDG+cGpphAINGdU3g3g7kDw==}
engines: {node: '>=22'} engines: {node: '>=22'}
convert-hrtime@5.0.0:
resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
engines: {node: '>=12'}
convert-source-map@2.0.0: convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -1246,8 +1242,8 @@ packages:
eslint-config-prettier: eslint-config-prettier:
optional: true optional: true
eslint-plugin-unicorn@74.0.0: eslint-plugin-unicorn@76.0.0:
resolution: {integrity: sha512-AGnsGi2SxHg1HEAXxn9nSnZfyjvTWkxm8E8hpd/9tD6dLjBUdcD7+D6ZN64HmmCXTSXlrwVyUqe20Uyb2CaurA==} resolution: {integrity: sha512-3ywJrCMHKYhcBP5yFzGaOOX3dY7+iR3hvpuoS/0EnhRFgVWLejly+t4fOdJvWQxJdHZl1C+QBW7hybXPDld4Pw==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
eslint: '>=10.4' eslint: '>=10.4'
@@ -1344,10 +1340,6 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin] os: [darwin]
function-timeout@1.0.2:
resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==}
engines: {node: '>=18'}
glob-parent@6.0.2: glob-parent@6.0.2:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
@@ -1398,10 +1390,6 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
is-identifier@1.1.0:
resolution: {integrity: sha512-NhOds0mDx9lJu+1lBRO0xbwFo5nobA7GCk/0e5xjr6+6XugX985+0OyGX35BNrTkPAsdLcIKg02HUQJOK8D8kw==}
engines: {node: '>=18'}
isexe@2.0.0: isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -1511,10 +1499,6 @@ packages:
magic-string@0.30.21: magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
make-asynchronous@1.1.0:
resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==}
engines: {node: '>=18'}
mdn-data@2.29.0: mdn-data@2.29.0:
resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==} resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==}
@@ -1553,10 +1537,6 @@ packages:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
p-event@6.0.1:
resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==}
engines: {node: '>=16.17'}
p-limit@3.1.0: p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -1565,10 +1545,6 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'} engines: {node: '>=10'}
p-timeout@6.1.4:
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
engines: {node: '>=14.16'}
path-exists@4.0.0: path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -1680,10 +1656,6 @@ packages:
resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==}
engines: {node: '>=12'} engines: {node: '>=12'}
super-regex@1.1.0:
resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==}
engines: {node: '>=18'}
supports-color@10.2.2: supports-color@10.2.2:
resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
engines: {node: '>=18'} engines: {node: '>=18'}
@@ -1692,10 +1664,6 @@ packages:
resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
time-span@5.1.0:
resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
engines: {node: '>=12'}
tinybench@2.9.0: tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
@@ -1728,10 +1696,6 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
type-fest@4.41.0:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
typescript-eslint@8.70.0: typescript-eslint@8.70.0:
resolution: {integrity: sha512-P/W5cz70/cQAuKfY3xwQMWWTV7BvJ0mAQmi+9mBcsVPaBUpd6Ohpa+fECv9rBFrQcig86jAiNBFNWUqnTjr4pw==} resolution: {integrity: sha512-P/W5cz70/cQAuKfY3xwQMWWTV7BvJ0mAQmi+9mBcsVPaBUpd6Ohpa+fECv9rBFrQcig86jAiNBFNWUqnTjr4pw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1858,9 +1822,6 @@ packages:
jsdom: jsdom:
optional: true optional: true
web-worker@1.5.0:
resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
which@2.0.2: which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@@ -2809,8 +2770,6 @@ snapshots:
content-type@3.0.0: {} content-type@3.0.0: {}
convert-hrtime@5.0.0: {}
convert-source-map@2.0.0: {} convert-source-map@2.0.0: {}
cookie@1.1.1: {} cookie@1.1.1: {}
@@ -2891,7 +2850,7 @@ snapshots:
optionalDependencies: optionalDependencies:
eslint-config-prettier: 10.1.8(eslint@10.10.0(supports-color@10.2.2)) eslint-config-prettier: 10.1.8(eslint@10.10.0(supports-color@10.2.2))
eslint-plugin-unicorn@74.0.0(eslint@10.10.0(supports-color@10.2.2)): eslint-plugin-unicorn@76.0.0(eslint@10.10.0(supports-color@10.2.2)):
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(supports-color@10.2.2)) '@eslint-community/eslint-utils': 4.10.1(eslint@10.10.0(supports-color@10.2.2))
'@eslint/css-tree': 4.0.5 '@eslint/css-tree': 4.0.5
@@ -2904,9 +2863,9 @@ snapshots:
eslint: 10.10.0(supports-color@10.2.2) eslint: 10.10.0(supports-color@10.2.2)
find-up-simple: 1.0.1 find-up-simple: 1.0.1
globals: 17.12.0 globals: 17.12.0
identifier-regex: 1.1.0
indent-string: 5.0.0 indent-string: 5.0.0
is-builtin-module: 5.0.0 is-builtin-module: 5.0.0
is-identifier: 1.1.0
pluralize: 8.0.0 pluralize: 8.0.0
quote-js-string: 0.1.0 quote-js-string: 0.1.0
regjsparser: 0.13.2 regjsparser: 0.13.2
@@ -3019,8 +2978,6 @@ snapshots:
fsevents@2.3.3: fsevents@2.3.3:
optional: true optional: true
function-timeout@1.0.2: {}
glob-parent@6.0.2: glob-parent@6.0.2:
dependencies: dependencies:
is-glob: 4.0.3 is-glob: 4.0.3
@@ -3057,11 +3014,6 @@ snapshots:
dependencies: dependencies:
is-extglob: 2.1.1 is-extglob: 2.1.1
is-identifier@1.1.0:
dependencies:
identifier-regex: 1.1.0
super-regex: 1.1.0
isexe@2.0.0: {} isexe@2.0.0: {}
jsesc@3.1.0: {} jsesc@3.1.0: {}
@@ -3140,12 +3092,6 @@ snapshots:
dependencies: dependencies:
'@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/sourcemap-codec': 1.5.5
make-asynchronous@1.1.0:
dependencies:
p-event: 6.0.1
type-fest: 4.41.0
web-worker: 1.5.0
mdn-data@2.29.0: {} mdn-data@2.29.0: {}
miniflare@5.20260815.0-alpha: miniflare@5.20260815.0-alpha:
@@ -3195,10 +3141,6 @@ snapshots:
type-check: 0.4.0 type-check: 0.4.0
word-wrap: 1.2.5 word-wrap: 1.2.5
p-event@6.0.1:
dependencies:
p-timeout: 6.1.4
p-limit@3.1.0: p-limit@3.1.0:
dependencies: dependencies:
yocto-queue: 0.1.0 yocto-queue: 0.1.0
@@ -3207,8 +3149,6 @@ snapshots:
dependencies: dependencies:
p-limit: 3.1.0 p-limit: 3.1.0
p-timeout@6.1.4: {}
path-exists@4.0.0: {} path-exists@4.0.0: {}
path-key@3.1.1: {} path-key@3.1.1: {}
@@ -3327,22 +3267,12 @@ snapshots:
strip-indent@4.1.1: {} strip-indent@4.1.1: {}
super-regex@1.1.0:
dependencies:
function-timeout: 1.0.2
make-asynchronous: 1.1.0
time-span: 5.1.0
supports-color@10.2.2: {} supports-color@10.2.2: {}
synckit@0.11.13: synckit@0.11.13:
dependencies: dependencies:
'@pkgr/core': 0.3.6 '@pkgr/core': 0.3.6
time-span@5.1.0:
dependencies:
convert-hrtime: 5.0.0
tinybench@2.9.0: {} tinybench@2.9.0: {}
tinyexec@1.2.4: {} tinyexec@1.2.4: {}
@@ -3367,8 +3297,6 @@ snapshots:
dependencies: dependencies:
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-fest@4.41.0: {}
typescript-eslint@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2): typescript-eslint@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2):
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 8.70.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2) '@typescript-eslint/eslint-plugin': 8.70.0(@typescript-eslint/parser@8.70.0(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.10.0(supports-color@10.2.2))(supports-color@10.2.2)
@@ -3467,8 +3395,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- msw - msw
web-worker@1.5.0: {}
which@2.0.2: which@2.0.2:
dependencies: dependencies:
isexe: 2.0.0 isexe: 2.0.0