From 7e216d90d7bad392f47892a33a114e521883f3d3 Mon Sep 17 00:00:00 2001 From: Innei Date: Sat, 10 Jan 2026 23:31:41 +0800 Subject: [PATCH] feat: introduce @afilmory/typing package and update imports across the codebase - Added a new package `@afilmory/typing` to centralize type definitions. - Updated various files to import types from `@afilmory/typing` instead of individual modules. - Adjusted package dependencies in `package.json` files for affected packages. - Modified `pnpm-lock.yaml` to include the new package and its dependencies. Signed-off-by: Innei --- apps/ssr/next-env.d.ts | 2 +- apps/web/package.json | 1 + apps/web/src/lib/histogram.ts | 2 +- packages/builder/package.json | 1 + packages/builder/src/builder/builder.ts | 4 +- packages/builder/src/image/exif.ts | 2 +- packages/builder/src/image/histogram.ts | 2 +- packages/builder/src/image/processor.ts | 2 +- packages/builder/src/image/thumbnail.ts | 2 +- packages/builder/src/index.ts | 11 ++- packages/builder/src/manifest/manager.ts | 3 +- packages/builder/src/manifest/migrate.ts | 3 +- .../src/manifest/migrations/v1-to-v6.ts | 3 +- .../src/manifest/migrations/v6-to-v7.ts | 3 +- .../src/manifest/migrations/v7-to-v8.ts | 3 +- .../src/manifest/migrations/v8-to-v9.ts | 3 +- .../src/manifest/migrations/v9-to-v10.ts | 2 +- packages/builder/src/manifest/version.ts | 2 +- packages/builder/src/photo/cache-manager.ts | 3 +- packages/builder/src/photo/data-processors.ts | 2 +- packages/builder/src/photo/geocoding.ts | 3 +- packages/builder/src/photo/image-pipeline.ts | 2 +- packages/builder/src/photo/info-extractor.ts | 3 +- packages/builder/src/photo/processor.ts | 3 +- packages/builder/src/plugins/geocoding.ts | 3 +- .../src/plugins/og-image-storage/index.ts | 2 +- packages/builder/src/plugins/types.ts | 4 +- packages/builder/src/runAsWorker.ts | 3 +- packages/typing/package.json | 13 +++ packages/typing/src/index.ts | 2 + .../src/types => typing/src}/manifest.ts | 3 +- .../src/types => typing/src}/photo.ts | 12 +-- packages/utils/package.json | 2 +- packages/utils/src/rss.ts | 2 +- pnpm-lock.yaml | 83 ++++--------------- 35 files changed, 87 insertions(+), 109 deletions(-) create mode 100644 packages/typing/package.json create mode 100644 packages/typing/src/index.ts rename packages/{builder/src/types => typing/src}/manifest.ts (91%) rename packages/{builder/src/types => typing/src}/photo.ts (100%) diff --git a/apps/ssr/next-env.d.ts b/apps/ssr/next-env.d.ts index c4e7c0eb..a3e4680c 100644 --- a/apps/ssr/next-env.d.ts +++ b/apps/ssr/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import './.next/types/routes.d.ts' +import './.next/dev/types/routes.d.ts' // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/web/package.json b/apps/web/package.json index d14e7068..ca0a7275 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -23,6 +23,7 @@ "@afilmory/data": "workspace:*", "@afilmory/hooks": "workspace:*", "@afilmory/sdk": "workspace:*", + "@afilmory/typing": "workspace:*", "@afilmory/ui": "workspace:*", "@afilmory/utils": "workspace:*", "@afilmory/webgl-viewer": "workspace:*", diff --git a/apps/web/src/lib/histogram.ts b/apps/web/src/lib/histogram.ts index 38ea0fa7..3974ab8e 100644 --- a/apps/web/src/lib/histogram.ts +++ b/apps/web/src/lib/histogram.ts @@ -1,4 +1,4 @@ -import type { CompressedHistogramData, HistogramData } from '@afilmory/builder/types/photo.js' +import type { CompressedHistogramData, HistogramData } from '@afilmory/typing' /** * 将压缩的直方图解压缩并插值到 256 点位 diff --git a/packages/builder/package.json b/packages/builder/package.json index cf747dbf..d3386d9d 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@afilmory/og-renderer": "workspace:*", + "@afilmory/typing": "workspace:*", "@resvg/resvg-js": "2.6.2", "@vingle/bmp-js": "^0.2.5", "blurhash": "2.0.5", diff --git a/packages/builder/src/builder/builder.ts b/packages/builder/src/builder/builder.ts index 6dad2182..886f413f 100644 --- a/packages/builder/src/builder/builder.ts +++ b/packages/builder/src/builder/builder.ts @@ -1,5 +1,7 @@ import path from 'node:path' +import type { AfilmoryManifest, CameraInfo, LensInfo, PhotoManifestItem, ProcessPhotoResult } from '@afilmory/typing' + import { thumbnailExists } from '../image/thumbnail.js' import { logger } from '../logger/index.js' import { handleDeletedPhotos, loadExistingManifest, needsUpdate, saveManifest } from '../manifest/manager.js' @@ -17,8 +19,6 @@ import type { StorageProviderFactory, StorageProviderRegistrationOptions } from import type { StorageConfig } from '../storage/index.js' import { StorageFactory, StorageManager } from '../storage/index.js' import type { BuilderConfig, UserBuilderSettings } from '../types/config.js' -import type { AfilmoryManifest, CameraInfo, LensInfo } from '../types/manifest.js' -import type { PhotoManifestItem, ProcessPhotoResult } from '../types/photo.js' import { ClusterPool } from '../worker/cluster-pool.js' import type { TaskCompletedPayload } from '../worker/pool.js' import { WorkerPool } from '../worker/pool.js' diff --git a/packages/builder/src/image/exif.ts b/packages/builder/src/image/exif.ts index 248b3840..8bd0d0dd 100644 --- a/packages/builder/src/image/exif.ts +++ b/packages/builder/src/image/exif.ts @@ -1,12 +1,12 @@ import { mkdir, unlink, writeFile } from 'node:fs/promises' import path from 'node:path' +import type { PickedExif } from '@afilmory/typing' import { isNil, noop } from 'es-toolkit' import type { ExifDateTime, Tags } from 'exiftool-vendored' import { ExifTool } from 'exiftool-vendored' import { getGlobalLoggers } from '../photo/logger-adapter.js' -import type { PickedExif } from '../types/photo.js' const exiftool = new ExifTool({ ...(process.env.EXIFTOOL_PATH ? { exiftoolPath: process.env.EXIFTOOL_PATH } : {}), diff --git a/packages/builder/src/image/histogram.ts b/packages/builder/src/image/histogram.ts index d232cf3e..8083e9b3 100644 --- a/packages/builder/src/image/histogram.ts +++ b/packages/builder/src/image/histogram.ts @@ -1,4 +1,4 @@ -import type { HistogramData, ToneAnalysis, ToneType } from '@afilmory/builder/types/photo.js' +import type { HistogramData, ToneAnalysis, ToneType } from '@afilmory/typing' import type sharp from 'sharp' import { getGlobalLoggers } from '../photo' diff --git a/packages/builder/src/image/processor.ts b/packages/builder/src/image/processor.ts index c1d1c7e9..aa7d4225 100644 --- a/packages/builder/src/image/processor.ts +++ b/packages/builder/src/image/processor.ts @@ -1,12 +1,12 @@ import path from 'node:path' +import type { ImageMetadata } from '@afilmory/typing' import * as bmp from '@vingle/bmp-js' import heicConvert from 'heic-convert' import sharp from 'sharp' import { HEIC_FORMATS } from '../constants/index.js' import { getGlobalLoggers } from '../photo/logger-adapter.js' -import type { ImageMetadata } from '../types/photo.js' // 获取图片元数据(复用 Sharp 实例) export async function getImageMetadataWithSharp(sharpInstance: sharp.Sharp): Promise { diff --git a/packages/builder/src/image/thumbnail.ts b/packages/builder/src/image/thumbnail.ts index 185dc629..561f8ce9 100644 --- a/packages/builder/src/image/thumbnail.ts +++ b/packages/builder/src/image/thumbnail.ts @@ -2,10 +2,10 @@ import fs from 'node:fs/promises' import path from 'node:path' import { workdir } from '@afilmory/builder/path.js' +import type { ThumbnailResult } from '@afilmory/typing' import sharp from 'sharp' import { getGlobalLoggers } from '../photo/logger-adapter.js' -import type { ThumbnailResult } from '../types/photo.js' import { generateBlurhash } from './blurhash.js' // 常量定义 diff --git a/packages/builder/src/index.ts b/packages/builder/src/index.ts index d94d50b6..b190e676 100644 --- a/packages/builder/src/index.ts +++ b/packages/builder/src/index.ts @@ -57,9 +57,16 @@ export { LOCAL_STORAGE_PROVIDERS, REMOTE_STORAGE_PROVIDERS } from './storage/ind export { StorageFactory, StorageManager } from './storage/index.js' export type { B2Config, ManagedStorageConfig, S3CompatibleConfig } from './storage/interfaces.js' export type { BuilderConfig, BuilderConfigInput } from './types/config.js' -export type { AfilmoryManifest, CameraInfo, LensInfo } from './types/manifest.js' -export type { FujiRecipe, PhotoManifestItem, PickedExif, ToneAnalysis } from './types/photo.js' export type { S3ObjectLike } from './types/s3.js' +export type { + AfilmoryManifest, + CameraInfo, + FujiRecipe, + LensInfo, + PhotoManifestItem, + PickedExif, + ToneAnalysis, +} from '@afilmory/typing' ///// Mirgation export { migrateManifest } from './manifest/migrate.js' diff --git a/packages/builder/src/manifest/manager.ts b/packages/builder/src/manifest/manager.ts index afa2c6b1..35dca95d 100644 --- a/packages/builder/src/manifest/manager.ts +++ b/packages/builder/src/manifest/manager.ts @@ -2,10 +2,9 @@ import fs from 'node:fs/promises' import path, { basename } from 'node:path' import { workdir } from '@afilmory/builder/path.js' +import type { AfilmoryManifest, CameraInfo, LensInfo, PhotoManifestItem } from '@afilmory/typing' import { logger } from '../logger/index.js' -import type { AfilmoryManifest, CameraInfo, LensInfo } from '../types/manifest.js' -import type { PhotoManifestItem } from '../types/photo.js' import type { S3ObjectLike } from '../types/s3.js' import { migrateManifestFileIfNeeded } from './migrate.js' import { CURRENT_MANIFEST_VERSION } from './version.js' diff --git a/packages/builder/src/manifest/migrate.ts b/packages/builder/src/manifest/migrate.ts index e3f88506..85b64aaf 100644 --- a/packages/builder/src/manifest/migrate.ts +++ b/packages/builder/src/manifest/migrate.ts @@ -2,11 +2,10 @@ import fs from 'node:fs/promises' import path from 'node:path' import { workdir } from '@afilmory/builder/path.js' +import type { AfilmoryManifest, ManifestVersion } from '@afilmory/typing' import { logger } from '../logger/index.js' -import type { AfilmoryManifest } from '../types/manifest.js' import { MIGRATION_STEPS } from './migrations/index.js' -import type { ManifestVersion } from './version.js' import { CURRENT_MANIFEST_VERSION } from './version.js' const manifestPath = path.join(workdir, 'src/data/photos-manifest.json') diff --git a/packages/builder/src/manifest/migrations/v1-to-v6.ts b/packages/builder/src/manifest/migrations/v1-to-v6.ts index 84f0ff86..1b59714c 100644 --- a/packages/builder/src/manifest/migrations/v1-to-v6.ts +++ b/packages/builder/src/manifest/migrations/v1-to-v6.ts @@ -1,5 +1,6 @@ +import type { AfilmoryManifest } from '@afilmory/typing' + import { logger } from '../../logger/index.js' -import type { AfilmoryManifest } from '../../types/manifest.js' import type { ManifestMigrator, MigrationContext } from '../migrate.js' /** diff --git a/packages/builder/src/manifest/migrations/v6-to-v7.ts b/packages/builder/src/manifest/migrations/v6-to-v7.ts index 906b842b..995c0c3d 100644 --- a/packages/builder/src/manifest/migrations/v6-to-v7.ts +++ b/packages/builder/src/manifest/migrations/v6-to-v7.ts @@ -1,4 +1,5 @@ -import type { AfilmoryManifest } from '../../types/manifest.js' +import type { AfilmoryManifest } from '@afilmory/typing' + import type { ManifestMigrator, MigrationContext } from '../migrate.js' /** diff --git a/packages/builder/src/manifest/migrations/v7-to-v8.ts b/packages/builder/src/manifest/migrations/v7-to-v8.ts index d30c9744..58d5875d 100644 --- a/packages/builder/src/manifest/migrations/v7-to-v8.ts +++ b/packages/builder/src/manifest/migrations/v7-to-v8.ts @@ -1,5 +1,6 @@ +import type { AfilmoryManifest } from '@afilmory/typing' + import { logger } from '../../logger/index.js' -import type { AfilmoryManifest } from '../../types/manifest.js' import type { ManifestMigrator, MigrationContext } from '../migrate.js' /** diff --git a/packages/builder/src/manifest/migrations/v8-to-v9.ts b/packages/builder/src/manifest/migrations/v8-to-v9.ts index 36bb1a5c..a4353506 100644 --- a/packages/builder/src/manifest/migrations/v8-to-v9.ts +++ b/packages/builder/src/manifest/migrations/v8-to-v9.ts @@ -1,6 +1,7 @@ import path from 'node:path' -import type { AfilmoryManifest } from '../../types/manifest.js' +import type { AfilmoryManifest } from '@afilmory/typing' + import type { ManifestMigrator, MigrationContext } from '../migrate.js' /** diff --git a/packages/builder/src/manifest/migrations/v9-to-v10.ts b/packages/builder/src/manifest/migrations/v9-to-v10.ts index 4842db33..bf6b4ed4 100644 --- a/packages/builder/src/manifest/migrations/v9-to-v10.ts +++ b/packages/builder/src/manifest/migrations/v9-to-v10.ts @@ -1,7 +1,7 @@ // exif.GPSAltitudeRef === 'Below Sea Level' => 1 // exif.GPSAltitudeRef === 'Above Sea Level' => 0 -import type { AfilmoryManifest } from '@afilmory/builder/types/manifest.js' +import type { AfilmoryManifest } from '@afilmory/typing' import type { ManifestMigrator, MigrationContext } from '../migrate' diff --git a/packages/builder/src/manifest/version.ts b/packages/builder/src/manifest/version.ts index 82f5a13a..a05426e9 100644 --- a/packages/builder/src/manifest/version.ts +++ b/packages/builder/src/manifest/version.ts @@ -1,3 +1,3 @@ -export type ManifestVersion = `v${number}` +import type { ManifestVersion } from '@afilmory/typing' export const CURRENT_MANIFEST_VERSION: ManifestVersion = 'v10' diff --git a/packages/builder/src/photo/cache-manager.ts b/packages/builder/src/photo/cache-manager.ts index f3964d4a..b25c8d8e 100644 --- a/packages/builder/src/photo/cache-manager.ts +++ b/packages/builder/src/photo/cache-manager.ts @@ -1,5 +1,6 @@ +import type { PhotoManifestItem } from '@afilmory/typing' + import { thumbnailExists } from '../image/thumbnail.js' -import type { PhotoManifestItem } from '../types/photo.js' import type { PhotoProcessorOptions } from './processor.js' export interface CacheableData { diff --git a/packages/builder/src/photo/data-processors.ts b/packages/builder/src/photo/data-processors.ts index ca16b715..181c8520 100644 --- a/packages/builder/src/photo/data-processors.ts +++ b/packages/builder/src/photo/data-processors.ts @@ -1,6 +1,7 @@ import fs from 'node:fs/promises' import path from 'node:path' +import type { PhotoManifestItem, PickedExif, ToneAnalysis } from '@afilmory/typing' import { decompressUint8Array } from '@afilmory/utils' import type sharp from 'sharp' @@ -9,7 +10,6 @@ import { extractExifData } from '../image/exif.js' import { calculateHistogramAndAnalyzeTone } from '../image/histogram.js' import { generateThumbnailAndBlurhash, thumbnailExists } from '../image/thumbnail.js' import { workdir } from '../path.js' -import type { PhotoManifestItem, PickedExif, ToneAnalysis } from '../types/photo.js' import { getGlobalLoggers } from './logger-adapter.js' import type { PhotoProcessorOptions } from './processor.js' diff --git a/packages/builder/src/photo/geocoding.ts b/packages/builder/src/photo/geocoding.ts index 25c90768..d224e8fa 100644 --- a/packages/builder/src/photo/geocoding.ts +++ b/packages/builder/src/photo/geocoding.ts @@ -3,7 +3,8 @@ import fs from 'node:fs/promises' import os from 'node:os' import path from 'node:path' -import type { LocationInfo, PickedExif } from '../types/photo.js' +import type { LocationInfo, PickedExif } from '@afilmory/typing' + import { getGlobalLoggers } from './logger-adapter.js' const sleep = (ms: number): Promise => new Promise((resolve) => setTimeout(resolve, ms)) diff --git a/packages/builder/src/photo/image-pipeline.ts b/packages/builder/src/photo/image-pipeline.ts index 03381cf9..865019b4 100644 --- a/packages/builder/src/photo/image-pipeline.ts +++ b/packages/builder/src/photo/image-pipeline.ts @@ -1,6 +1,7 @@ import crypto from 'node:crypto' import path from 'node:path' +import type { PhotoManifestItem, ProcessPhotoResult } from '@afilmory/typing' import { compressUint8Array } from '@afilmory/utils' import sharp from 'sharp' @@ -13,7 +14,6 @@ import { } from '../image/processor.js' import type { PluginRunState } from '../plugins/manager.js' import { THUMBNAIL_PLUGIN_DATA_KEY } from '../plugins/thumbnail-storage/shared.js' -import type { PhotoManifestItem, ProcessPhotoResult } from '../types/photo.js' import type { S3ObjectLike } from '../types/s3.js' import { shouldProcessPhoto } from './cache-manager.js' import { processExifData, processThumbnailAndBlurhash, processToneAnalysis } from './data-processors.js' diff --git a/packages/builder/src/photo/info-extractor.ts b/packages/builder/src/photo/info-extractor.ts index a15f6780..1c29b284 100644 --- a/packages/builder/src/photo/info-extractor.ts +++ b/packages/builder/src/photo/info-extractor.ts @@ -1,6 +1,7 @@ import path from 'node:path' -import type { PhotoInfo, PickedExif } from '../types/photo.js' +import type { PhotoInfo, PickedExif } from '@afilmory/typing' + import { getPhotoExecutionContext } from './execution-context.js' import { getGlobalLoggers } from './logger-adapter.js' diff --git a/packages/builder/src/photo/processor.ts b/packages/builder/src/photo/processor.ts index 4440e0b0..00a0e575 100644 --- a/packages/builder/src/photo/processor.ts +++ b/packages/builder/src/photo/processor.ts @@ -1,7 +1,8 @@ +import type { PhotoManifestItem, ProcessPhotoResult } from '@afilmory/typing' + import type { AfilmoryBuilder, BuilderOptions } from '../builder/builder.js' import { logger } from '../logger/index.js' import type { PluginRunState } from '../plugins/manager.js' -import type { PhotoManifestItem, ProcessPhotoResult } from '../types/photo.js' import type { S3ObjectLike } from '../types/s3.js' import { createStorageKeyNormalizer, runWithPhotoExecutionContext } from './execution-context.js' import type { PhotoProcessingContext } from './image-pipeline.js' diff --git a/packages/builder/src/plugins/geocoding.ts b/packages/builder/src/plugins/geocoding.ts index df9fa2f4..09228f93 100644 --- a/packages/builder/src/plugins/geocoding.ts +++ b/packages/builder/src/plugins/geocoding.ts @@ -1,3 +1,5 @@ +import type { LocationInfo, PhotoManifestItem, PickedExif } from '@afilmory/typing' + import type { AfilmoryBuilder } from '../builder/builder.js' import type { Logger } from '../logger/index.js' import { @@ -8,7 +10,6 @@ import { import type { GeocodingProvider } from '../photo/geocoding.js' import { createGeocodingProvider, extractLocationFromGPS, parseGPSCoordinates } from '../photo/geocoding.js' import { createPhotoProcessingLoggers } from '../photo/logger-adapter.js' -import type { LocationInfo, PhotoManifestItem, PickedExif } from '../types/photo.js' import type { BuilderPlugin } from './types.js' const PLUGIN_NAME = 'afilmory:geocoding' diff --git a/packages/builder/src/plugins/og-image-storage/index.ts b/packages/builder/src/plugins/og-image-storage/index.ts index f9c26455..88b0ead4 100644 --- a/packages/builder/src/plugins/og-image-storage/index.ts +++ b/packages/builder/src/plugins/og-image-storage/index.ts @@ -4,13 +4,13 @@ import { fileURLToPath } from 'node:url' import type { ExifInfo } from '@afilmory/og-renderer' import { renderOgImage } from '@afilmory/og-renderer' +import type { PhotoManifestItem } from '@afilmory/typing' import type { SatoriOptions } from 'satori' import type { Logger } from '../../logger/index.js' import { workdir } from '../../path.js' import { StorageManager } from '../../storage/index.js' import type { S3CompatibleConfig, StorageConfig } from '../../storage/interfaces.js' -import type { PhotoManifestItem } from '../../types/photo.js' import type { ThumbnailPluginData } from '../thumbnail-storage/shared.js' import { THUMBNAIL_PLUGIN_DATA_KEY } from '../thumbnail-storage/shared.js' import type { BuilderPlugin } from '../types.js' diff --git a/packages/builder/src/plugins/types.ts b/packages/builder/src/plugins/types.ts index 53488efe..942a0143 100644 --- a/packages/builder/src/plugins/types.ts +++ b/packages/builder/src/plugins/types.ts @@ -1,11 +1,11 @@ +import type { AfilmoryManifest, CameraInfo, LensInfo, PhotoManifestItem, ProcessPhotoResult } from '@afilmory/typing' + import type { AfilmoryBuilder, BuilderOptions, BuilderResult } from '../builder/builder.js' import type { Logger } from '../logger/index.js' import type { PhotoProcessingContext } from '../photo/image-pipeline.js' import type { PhotoProcessorOptions } from '../photo/processor.js' import type { StorageObject } from '../storage/interfaces.js' import type { BuilderConfig } from '../types/config.js' -import type { AfilmoryManifest, CameraInfo, LensInfo } from '../types/manifest.js' -import type { PhotoManifestItem, ProcessPhotoResult } from '../types/photo.js' export type BuilderPluginESMImporter = () => Promise<{ default: (() => BuilderPlugin | Promise) | BuilderPlugin diff --git a/packages/builder/src/runAsWorker.ts b/packages/builder/src/runAsWorker.ts index 9b81f8b0..86aa4c3d 100644 --- a/packages/builder/src/runAsWorker.ts +++ b/packages/builder/src/runAsWorker.ts @@ -1,12 +1,13 @@ import process from 'node:process' import { deserialize } from 'node:v8' +import type { PhotoManifestItem } from '@afilmory/typing' + import type { BuilderOptions } from './builder/builder.js' import { AfilmoryBuilder } from './builder/builder.js' import type { PluginRunState } from './plugins/manager.js' import type { StorageObject } from './storage/interfaces' import type { BuilderConfig } from './types/config.js' -import type { PhotoManifestItem } from './types/photo' import type { BatchTaskMessage, BatchTaskResult, TaskMessage, TaskResult } from './worker/cluster-pool' // 新增接口定义 diff --git a/packages/typing/package.json b/packages/typing/package.json new file mode 100644 index 00000000..ef942d06 --- /dev/null +++ b/packages/typing/package.json @@ -0,0 +1,13 @@ +{ + "name": "@afilmory/typing", + "type": "module", + "version": "0.0.1", + "private": true, + "exports": { + ".": "./src/index.ts", + "./*": "./src/*" + }, + "dependencies": { + "exiftool-vendored": "33.5.0" + } +} diff --git a/packages/typing/src/index.ts b/packages/typing/src/index.ts new file mode 100644 index 00000000..332afa58 --- /dev/null +++ b/packages/typing/src/index.ts @@ -0,0 +1,2 @@ +export * from './manifest' +export * from './photo' diff --git a/packages/builder/src/types/manifest.ts b/packages/typing/src/manifest.ts similarity index 91% rename from packages/builder/src/types/manifest.ts rename to packages/typing/src/manifest.ts index 08aa301b..995eaf20 100644 --- a/packages/builder/src/types/manifest.ts +++ b/packages/typing/src/manifest.ts @@ -1,6 +1,7 @@ -import type { ManifestVersion } from '../manifest/version' import type { PhotoManifestItem } from './photo' +export type ManifestVersion = `v${number}` + export interface CameraInfo { make: string // e.g., "Canon", "Sony", "Fujifilm" model: string // e.g., "EOS R5", "α7R V", "X-T5" diff --git a/packages/builder/src/types/photo.ts b/packages/typing/src/photo.ts similarity index 100% rename from packages/builder/src/types/photo.ts rename to packages/typing/src/photo.ts index 7f147486..fd0eb2e4 100644 --- a/packages/builder/src/types/photo.ts +++ b/packages/typing/src/photo.ts @@ -83,6 +83,12 @@ export interface ProcessPhotoResult { pluginData?: Record } +export interface ThumbnailResult { + thumbnailUrl: string | null + thumbnailBuffer: Buffer | null + thumbHash: Uint8Array | null +} + export interface PickedExif { // 时区和时间相关 zone?: string @@ -184,12 +190,6 @@ export interface PickedExif { MicroVideoPresentationTimestampUs?: Tags['MicroVideoPresentationTimestampUs'] } -export interface ThumbnailResult { - thumbnailUrl: string | null - thumbnailBuffer: Buffer | null - thumbHash: Uint8Array | null -} - export type FujiRecipe = { FilmMode: | 'F0/Standard (Provia)' diff --git a/packages/utils/package.json b/packages/utils/package.json index fa476182..ce024dc1 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -8,7 +8,7 @@ "./*": "./src/*" }, "dependencies": { - "@afilmory/builder": "workspace:*", + "@afilmory/typing": "workspace:*", "clsx": "^2.1.1", "tailwind-merge": "^3.4.0" }, diff --git a/packages/utils/src/rss.ts b/packages/utils/src/rss.ts index 54751354..62267c7e 100644 --- a/packages/utils/src/rss.ts +++ b/packages/utils/src/rss.ts @@ -1,4 +1,4 @@ -import type { PhotoManifestItem } from '@afilmory/builder' +import type { PhotoManifestItem } from '@afilmory/typing' const GENERATOR_NAME = 'Afilmory Feed Generator' const EXIF_NAMESPACE = 'https://afilmory.art/rss/exif' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0e6f3a1..495830b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -624,6 +624,9 @@ importers: '@afilmory/sdk': specifier: workspace:* version: link:../../packages/sdk + '@afilmory/typing': + specifier: workspace:* + version: link:../../packages/typing '@afilmory/ui': specifier: workspace:* version: link:../../packages/ui @@ -1440,6 +1443,9 @@ importers: '@afilmory/og-renderer': specifier: workspace:* version: link:../renderer + '@afilmory/typing': + specifier: workspace:* + version: link:../typing '@resvg/resvg-js': specifier: 2.6.2 version: 2.6.2 @@ -1536,6 +1542,12 @@ importers: specifier: 'catalog:' version: 4.2.1 + packages/typing: + dependencies: + exiftool-vendored: + specifier: 33.5.0 + version: 33.5.0 + packages/ui: dependencies: '@afilmory/hooks': @@ -1623,9 +1635,9 @@ importers: packages/utils: dependencies: - '@afilmory/builder': + '@afilmory/typing': specifier: workspace:* - version: link:../builder + version: link:../typing clsx: specifier: ^2.1.1 version: 2.1.1 @@ -3443,105 +3455,89 @@ packages: resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} @@ -3726,28 +3722,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@next/swc-linux-arm64-musl@16.0.10': resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@next/swc-linux-x64-gnu@16.0.10': resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@next/swc-linux-x64-musl@16.0.10': resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@next/swc-win32-arm64-msvc@16.0.10': resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==} @@ -3817,42 +3809,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -4831,28 +4817,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@resvg/resvg-js-linux-arm64-musl@2.6.2': resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@resvg/resvg-js-linux-x64-gnu@2.6.2': resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@resvg/resvg-js-linux-x64-musl@2.6.2': resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@resvg/resvg-js-win32-arm64-msvc@2.6.2': resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} @@ -4915,28 +4897,24 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} @@ -5051,67 +5029,56 @@ packages: resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.53.3': resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.53.3': resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.53.3': resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.3': resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.53.3': resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.53.3': resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.53.3': resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.53.3': resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.53.3': resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.53.3': resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openharmony-arm64@4.53.3': resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} @@ -5460,28 +5427,24 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [glibc] '@swc/core-linux-arm64-musl@1.15.5': resolution: {integrity: sha512-Of+wmVh5h47tTpN9ghHVjfL0CJrgn99XmaJjmzWFW7agPdVY6gTDgkk6zQ6q4hcDQ7hXb0BGw6YFpuanBzNPow==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - libc: [musl] '@swc/core-linux-x64-gnu@1.15.5': resolution: {integrity: sha512-98kuPS0lZVgjmc/2uTm39r1/OfwKM0PM13ZllOAWi5avJVjRd/j1xA9rKeUzHDWt+ocH9mTCQsAT1jjKSq45bg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [glibc] '@swc/core-linux-x64-musl@1.15.5': resolution: {integrity: sha512-Rk+OtNQP3W/dZExL74LlaakXAQn6/vbrgatmjFqJPO4RZkq+nLo5g7eDUVjyojuERh7R2yhqNvZ/ZZQe8JQqqA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - libc: [musl] '@swc/core-win32-arm64-msvc@1.15.5': resolution: {integrity: sha512-e3RTdJ769+PrN25iCAlxmsljEVu6iIWS7sE21zmlSiipftBQvSAOWuCDv2A8cH9lm5pSbZtwk8AUpIYCNsj2oQ==} @@ -5599,28 +5562,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.1.18': resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.1.18': resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.1.18': resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.1.18': resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} @@ -6134,49 +6093,41 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] - libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] - libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] - libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -6468,14 +6419,12 @@ packages: engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] autocorrect-node-linux-x64-musl@2.14.0: resolution: {integrity: sha512-3LifiLG61VIXBrOITpD/REcg/ZEUuLz/P2XUWMCfGqhzoUb8oFgM3o0A6extvIH2NefiHMndB9kNbfQjXCl3zA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] autocorrect-node-win32-x64-msvc@2.14.0: resolution: {integrity: sha512-OM6TeGUW0+4R9KtUYTYNEwlInd+b2kumw/B1HCbCzb1F7HpfaNxnZiMk1li0bdPPBDzD5YuzwM30VJZMCWIi5A==} @@ -8759,28 +8708,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.30.2: resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.30.2: resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.30.2: resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.30.2: resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}