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==}