diff --git a/package-lock.json b/package-lock.json index 18b2fc4f..3028c587 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aitube/broadway": "0.1.2", "@aitube/clap": "0.1.2", - "@aitube/clapper-services": "0.1.2", + "@aitube/clapper-services": "0.1.2-0", "@aitube/engine": "0.1.2", "@aitube/timeline": "0.1.2", "@fal-ai/serverless-client": "^0.13.0", @@ -163,9 +163,9 @@ } }, "node_modules/@aitube/clapper-services": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@aitube/clapper-services/-/clapper-services-0.1.2.tgz", - "integrity": "sha512-B/R1Dvg0uFyA8G6EZKg07OOu2gStixL+foqCBcVuIRaUF03FcibuIFH8jOxrGOCW3DfkjvviOcXgEOME6muqWw==", + "version": "0.1.2-0", + "resolved": "https://registry.npmjs.org/@aitube/clapper-services/-/clapper-services-0.1.2-0.tgz", + "integrity": "sha512-8rXuys53qBgIcbqCcpUcGFSkSkuNfQRUiZ8Wsw5YJsFtvJo+uqxfZZcfghaImnMNQVPrc72QVRj4o5Ph6e85Og==", "peerDependencies": { "@aitube/clap": "0.1.2", "@aitube/timeline": "0.1.2", @@ -2834,15 +2834,6 @@ "node": ">=14.14" } }, - "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", @@ -2866,70 +2857,6 @@ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", @@ -2946,424 +2873,136 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@fal-ai/serverless-client": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@fal-ai/serverless-client/-/serverless-client-0.13.0.tgz", + "integrity": "sha512-Nkb/5YXJIPQHzM79+fRb1LZ1zQLSSvNhDVL2l62sN6/H4XqAWueIOqAAvPF8ds39uSGn8nF1WQV1mt7raVMlWw==", + "dependencies": { + "@msgpack/msgpack": "^3.0.0-beta2", + "eventsource-parser": "^1.1.2", + "robot3": "^0.4.1", + "uuid-random": "^1.3.2" + }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@ffmpeg/ffmpeg": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.12.10.tgz", + "integrity": "sha512-lVtk8PW8e+NUzGZhPTWj2P1J4/NyuCrbDD3O9IGpSeLYtUZKBqZO8CNj1WYGghep/MXoM8e1qVY1GztTkf8YYQ==", + "dependencies": { + "@ffmpeg/types": "^0.12.2" + }, "engines": { - "node": ">=12" + "node": ">=18.x" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@ffmpeg/types": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@ffmpeg/types/-/types-0.12.2.tgz", + "integrity": "sha512-NJtxwPoLb60/z1Klv0ueshguWQ/7mNm106qdHkB4HL49LXszjhjCCiL+ldHJGQ9ai2Igx0s4F24ghigy//ERdA==", "engines": { - "node": ">=12" + "node": ">=16.x" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@ffmpeg/util": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@ffmpeg/util/-/util-0.12.1.tgz", + "integrity": "sha512-10jjfAKWaDyb8+nAkijcsi9wgz/y26LOc1NKJradNMyCIl6usQcBbhkjX5qhALrSBcOy6TOeksunTYa+a03qNQ==", "engines": { - "node": ">=12" + "node": ">=18.x" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@fal-ai/serverless-client": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@fal-ai/serverless-client/-/serverless-client-0.13.0.tgz", - "integrity": "sha512-Nkb/5YXJIPQHzM79+fRb1LZ1zQLSSvNhDVL2l62sN6/H4XqAWueIOqAAvPF8ds39uSGn8nF1WQV1mt7raVMlWw==", - "dependencies": { - "@msgpack/msgpack": "^3.0.0-beta2", - "eventsource-parser": "^1.1.2", - "robot3": "^0.4.1", - "uuid-random": "^1.3.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@ffmpeg/ffmpeg": { - "version": "0.12.10", - "resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.12.10.tgz", - "integrity": "sha512-lVtk8PW8e+NUzGZhPTWj2P1J4/NyuCrbDD3O9IGpSeLYtUZKBqZO8CNj1WYGghep/MXoM8e1qVY1GztTkf8YYQ==", - "dependencies": { - "@ffmpeg/types": "^0.12.2" - }, - "engines": { - "node": ">=18.x" - } - }, - "node_modules/@ffmpeg/types": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@ffmpeg/types/-/types-0.12.2.tgz", - "integrity": "sha512-NJtxwPoLb60/z1Klv0ueshguWQ/7mNm106qdHkB4HL49LXszjhjCCiL+ldHJGQ9ai2Igx0s4F24ghigy//ERdA==", - "engines": { - "node": ">=16.x" - } - }, - "node_modules/@ffmpeg/util": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@ffmpeg/util/-/util-0.12.1.tgz", - "integrity": "sha512-10jjfAKWaDyb8+nAkijcsi9wgz/y26LOc1NKJradNMyCIl6usQcBbhkjX5qhALrSBcOy6TOeksunTYa+a03qNQ==", - "engines": { - "node": ">=18.x" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", - "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", - "dependencies": { - "@floating-ui/utils": "^0.2.5" + "node_modules/@floating-ui/core": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", + "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", + "dependencies": { + "@floating-ui/utils": "^0.2.5" } }, "node_modules/@floating-ui/dom": { @@ -3443,457 +3082,69 @@ "node_modules/@huggingface/inference/node_modules/@huggingface/tasks": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.11.3.tgz", - "integrity": "sha512-IYq4OdlySdscjkFwm6iIqP1ZgKl4OGhvQFJWI7Yxpq2V8RmXcgIjiqk/65S6Ap7i+eyCdlOC4qweVy/ICNE0JA==" - }, - "node_modules/@huggingface/jinja": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz", - "integrity": "sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@huggingface/tasks": { - "version": "0.10.22", - "resolved": "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.10.22.tgz", - "integrity": "sha512-sCtp+A6sq6NXoUU7NXuXWoVNNjKddk1GTQIh3cJ6illF8S4zmFoerCVRvFf19BdgICGvF+RVZiv9sGGK9KRDTg==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.31", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } + "integrity": "sha512-IYq4OdlySdscjkFwm6iIqP1ZgKl4OGhvQFJWI7Yxpq2V8RmXcgIjiqk/65S6Ap7i+eyCdlOC4qweVy/ICNE0JA==" }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@huggingface/jinja": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz", + "integrity": "sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==", "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + "node": ">=18" } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", - "cpu": [ - "wasm32" - ], - "optional": true, + "node_modules/@huggingface/tasks": { + "version": "0.10.22", + "resolved": "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.10.22.tgz", + "integrity": "sha512-sCtp+A6sq6NXoUU7NXuXWoVNNjKddk1GTQIh3cJ6illF8S4zmFoerCVRvFf19BdgICGvF+RVZiv9sGGK9KRDTg==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, "dependencies": { - "@emnapi/runtime": "^1.1.1" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" }, "funding": { - "url": "https://opencollective.com/libvips" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@img/sharp-win32-ia32": { + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", + "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", "cpu": [ - "ia32" + "arm64" ], "optional": true, "os": [ - "win32" + "darwin" ], "engines": { + "glibc": ">=2.26", "node": "^18.17.0 || ^20.3.0 || >=21.0.0", "npm": ">=9.6.5", "pnpm": ">=7.1.0", @@ -3901,21 +3152,24 @@ }, "funding": { "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.2" } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", "cpu": [ - "x64" + "arm64" ], "optional": true, "os": [ - "win32" + "darwin" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "macos": ">=11", "npm": ">=9.6.5", "pnpm": ">=7.1.0", "yarn": ">=3.2.0" @@ -6498,32 +5752,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.0.tgz", - "integrity": "sha512-JlPfZ/C7yn5S5p0yKk7uhHTTnFlvTgLetl2VxqE518QgyM7C9bSfFTYvB/Q/ftkq0RIPY4ySxTz+/wKJ/dXC0w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.0.tgz", - "integrity": "sha512-RDxUSY8D1tWYfn00DDi5myxKgOk6RvWPxhmWexcICt/MEC6yEMr4HNCu1sXXYLw8iAsg0D44NuU+qNq7zVWCrw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.19.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.0.tgz", @@ -6537,175 +5765,6 @@ "darwin" ] }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.0.tgz", - "integrity": "sha512-fO28cWA1dC57qCd+D0rfLC4VPbh6EOJXrreBmFLWPGI9dpMlER2YwSPZzSGfq11XgcEpPukPTfEVFtw2q2nYJg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.0.tgz", - "integrity": "sha512-2Rn36Ubxdv32NUcfm0wB1tgKqkQuft00PtM23VqLuCUR4N5jcNWDoV5iBC9jeGdgS38WK66ElncprqgMUOyomw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.0.tgz", - "integrity": "sha512-gJuzIVdq/X1ZA2bHeCGCISe0VWqCoNT8BvkQ+BfsixXwTOndhtLUpOg0A1Fcx/+eA6ei6rMBzlOz4JzmiDw7JQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.0.tgz", - "integrity": "sha512-0EkX2HYPkSADo9cfeGFoQ7R0/wTKb7q6DdwI4Yn/ULFE1wuRRCHybxpl2goQrx4c/yzK3I8OlgtBu4xvted0ug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.0.tgz", - "integrity": "sha512-GlIQRj9px52ISomIOEUq/IojLZqzkvRpdP3cLgIE1wUWaiU5Takwlzpz002q0Nxxr1y2ZgxC2obWxjr13lvxNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.0.tgz", - "integrity": "sha512-N6cFJzssruDLUOKfEKeovCKiHcdwVYOT1Hs6dovDQ61+Y9n3Ek4zXvtghPPelt6U0AH4aDGnDLb83uiJMkWYzQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.0.tgz", - "integrity": "sha512-2DnD3mkS2uuam/alF+I7M84koGwvn3ZVD7uG+LEWpyzo/bq8+kKnus2EVCkcvh6PlNB8QPNFOz6fWd5N8o1CYg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.0.tgz", - "integrity": "sha512-D6pkaF7OpE7lzlTOFCB2m3Ngzu2ykw40Nka9WmKGUOTS3xcIieHe82slQlNq69sVB04ch73thKYIWz/Ian8DUA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.0.tgz", - "integrity": "sha512-HBndjQLP8OsdJNSxpNIN0einbDmRFg9+UQeZV1eiYupIRuZsDEoeGU43NQsS34Pp166DtwQOnpcbV/zQxM+rWA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.0.tgz", - "integrity": "sha512-HxfbvfCKJe/RMYJJn0a12eiOI9OOtAUF4G6ozrFUK95BNyoJaSiBjIOHjZskTUffUrB84IPKkFG9H9nEvJGW6A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.0.tgz", - "integrity": "sha512-HxDMKIhmcguGTiP5TsLNolwBUK3nGGUEoV/BO9ldUBoMLBssvh4J0X8pf11i1fTV7WShWItB1bKAKjX4RQeYmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.0.tgz", - "integrity": "sha512-xItlIAZZaiG/u0wooGzRsx11rokP4qyc/79LkAOdznGRAbOFc+SfEdfUOszG1odsHNgwippUJavag/+W/Etc6Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.0.tgz", - "integrity": "sha512-xNo5fV5ycvCCKqiZcpB65VMR11NJB+StnxHz20jdqRAktfdfzhgjTiJ2doTDQE/7dqGaV5I7ZGqKpgph6lCIag==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@rushstack/eslint-patch": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", @@ -6752,15 +5811,15 @@ } }, "node_modules/@smithy/core": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.8.tgz", - "integrity": "sha512-1Y0XX0Ucyg0LWTfTVLWpmvSRtFRniykUl3dQ0os1sTd03mKDudR6mVyX+2ak1phwPXx2aEWMAAdW52JNi0mc3A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.0.tgz", + "integrity": "sha512-tvSwf+PF5uurExeJsl+sSNn4bPsYShL86fJ/wcj63cioJ0IF131BxC5QxX8qkIISk7Pr7g2+UJH9ib4cCafvqw==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.5", - "@smithy/middleware-retry": "^3.0.11", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.12", "@smithy/middleware-serde": "^3.0.3", - "@smithy/protocol-http": "^4.0.4", - "@smithy/smithy-client": "^3.1.9", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.10", "@smithy/types": "^3.3.0", "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" @@ -6770,9 +5829,9 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.4.tgz", - "integrity": "sha512-NKyH01m97Xa5xf3pB2QOF3lnuE8RIK0hTVNU5zvZAwZU8uspYO4DHQVlK+Y5gwSrujTfHvbfd1D9UFJAc0iYKQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dependencies": { "@smithy/node-config-provider": "^3.1.4", "@smithy/property-provider": "^3.1.3", @@ -6818,11 +5877,11 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.2.tgz", - "integrity": "sha512-3LaWlBZObyGrOOd7e5MlacnAKEwFBmAeiW/TOj2eR9475Vnq30uS2510+tnKbxrGjROfNdOhQqGo5j3sqLT6bA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.3.tgz", + "integrity": "sha512-m4dzQeafWi5KKCCnDwGGHYk9lqcLs9LvlXZRB0J38DMectsEbxdiO/Rx1NaYYMIkath7AnjpR+r0clL+7dwclQ==", "dependencies": { - "@smithy/protocol-http": "^4.0.4", + "@smithy/protocol-http": "^4.1.0", "@smithy/querystring-builder": "^3.0.3", "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", @@ -6864,11 +5923,11 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.4.tgz", - "integrity": "sha512-wySGje/KfhsnF8YSh9hP16pZcl3C+X6zRsvSfItQGvCyte92LliilU3SD0nR7kTlxnAJwxY8vE/k4Eoezj847Q==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", "dependencies": { - "@smithy/protocol-http": "^4.0.4", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -6877,9 +5936,9 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.5.tgz", - "integrity": "sha512-V4acqqrh5tDxUEGVTOgf2lYMZqPQsoGntCrjrJZEeBzEzDry2d2vcI1QCXhGltXPPY+BMc6eksZMguA9fIY8vA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dependencies": { "@smithy/middleware-serde": "^3.0.3", "@smithy/node-config-provider": "^3.1.4", @@ -6894,14 +5953,14 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.11.tgz", - "integrity": "sha512-/TIRWmhwMpv99JCGuMhJPnH7ggk/Lah7s/uNDyr7faF02BxNsyD/fz9Tw7pgCf9tYOKgjimm2Qml1Aq1pbkt6g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.12.tgz", + "integrity": "sha512-CncrlzNiBzuZZYLJ49H4dC6FEz62hnv0Y0nJyl/oZ73FX/9CDHWkIRD4ZOf5ntB6QyYWx0G3mXAOHOcM5omlLg==", "dependencies": { "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.0.4", + "@smithy/protocol-http": "^4.1.0", "@smithy/service-error-classification": "^3.0.3", - "@smithy/smithy-client": "^3.1.9", + "@smithy/smithy-client": "^3.1.10", "@smithy/types": "^3.3.0", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -6951,12 +6010,12 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.3.tgz", - "integrity": "sha512-UiKZm8KHb/JeOPzHZtRUfyaRDO1KPKPpsd7iplhiwVGOeVdkiVJ5bVe7+NhWREMOKomrDIDdSZyglvMothLg0Q==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dependencies": { "@smithy/abort-controller": "^3.1.1", - "@smithy/protocol-http": "^4.0.4", + "@smithy/protocol-http": "^4.1.0", "@smithy/querystring-builder": "^3.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -6978,9 +6037,9 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.4.tgz", - "integrity": "sha512-fAA2O4EFyNRyYdFLVIv5xMMeRb+3fRKc/Rt2flh5k831vLvUmNFXcydeg7V3UeEhGURJI4c1asmGJBjvmF6j8Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -7038,11 +6097,12 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.0.0.tgz", - "integrity": "sha512-ervYjQ+ZvmNG51Ui77IOTPri7nOyo8Kembzt9uwwlmtXJPmFXvslOahbA1blvAVs7G0KlYMiOBog1rAt7RVXxg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", "@smithy/util-middleware": "^3.0.3", @@ -7055,15 +6115,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.9.tgz", - "integrity": "sha512-My2RaInZ4gSwJUPMaiLR/Nk82+c4LlvqpXA+n7lonGYgCZq23Tg+/xFhgmiejJ6XPElYJysTPyV90vKyp17+1g==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.10.tgz", + "integrity": "sha512-OLHJo0DAmhX69YUF3WbNfzzxGIncGdxao+v27o24msdhin2AWTxJMaBQ3iPGfIrWMjy+8YGMXUJ7PrkJlpznTw==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", "@smithy/middleware-stack": "^3.0.3", - "@smithy/protocol-http": "^4.0.4", + "@smithy/protocol-http": "^4.1.0", "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.1", + "@smithy/util-stream": "^3.1.2", "tslib": "^2.6.2" }, "engines": { @@ -7147,12 +6207,12 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.11.tgz", - "integrity": "sha512-O3s9DGb3bmRvEKmT8RwvSWK4A9r6svfd+MnJB+UMi9ZcCkAnoRtliulOnGF0qCMkKF9mwk2tkopBBstalPY/vg==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.12.tgz", + "integrity": "sha512-5b81UUPKjD61DMg7JBYzkSM1Vny/RfRRhnZYzuWjm25OyrEXsar3RgbbXYR+otdx+wrPR3QmuFtbDZmEgGpwVg==", "dependencies": { "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.9", + "@smithy/smithy-client": "^3.1.10", "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -7162,15 +6222,15 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.11.tgz", - "integrity": "sha512-qd4a9qtyOa/WY14aHHOkMafhh9z8D2QTwlcBoXMTPnEwtcY+xpe1JyFm9vya7VsB8hHsfn3XodEtwqREiu4ygQ==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.12.tgz", + "integrity": "sha512-g2NdtGDN67PepBs0t/mkrlQ2nVkhKUDJZCNmEJIarzYq2sK4mKO9t61Nzlv+gHEEC3ESfRaMCC/Ol3ZfCZYg7Q==", "dependencies": { "@smithy/config-resolver": "^3.0.5", - "@smithy/credential-provider-imds": "^3.1.4", + "@smithy/credential-provider-imds": "^3.2.0", "@smithy/node-config-provider": "^3.1.4", "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.9", + "@smithy/smithy-client": "^3.1.10", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -7228,12 +6288,12 @@ } }, "node_modules/@smithy/util-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.1.tgz", - "integrity": "sha512-EhRnVvl3AhoHAT2rGQ5o+oSDRM/BUSMPLZZdRJZLcNVUsFAjOs4vHaPdNQivTSzRcFxf5DA4gtO46WWU2zimaw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.2.tgz", + "integrity": "sha512-08zDzB7BqvybHfZKnav5lL1UniFDK6o6nZ3OWp60PKsi/na2LpU6OX8MCtDNVaPBpKpc8EH26fvFhNT6wvMlbw==", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.2", - "@smithy/node-http-handler": "^3.1.3", + "@smithy/fetch-http-handler": "^3.2.3", + "@smithy/node-http-handler": "^3.1.4", "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", diff --git a/package.json b/package.json index e58a6bdb..3519623a 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "dependencies": { "@aitube/broadway": "0.1.2", "@aitube/clap": "0.1.2", - "@aitube/clapper-services": "0.1.2", + "@aitube/clapper-services": "0.1.2-0", "@aitube/engine": "0.1.2", "@aitube/timeline": "0.1.2", "@fal-ai/serverless-client": "^0.13.0", diff --git a/src/components/editors/Editors.tsx b/src/components/editors/Editors.tsx index 29b105c8..a7a07eaa 100644 --- a/src/components/editors/Editors.tsx +++ b/src/components/editors/Editors.tsx @@ -9,6 +9,7 @@ import { useTheme } from '@/services/ui/useTheme' import { EntityEditor } from './EntityEditor' import { ProjectEditor } from './ProjectEditor' import { SegmentEditor } from './SegmentEditor' +import { WorkflowEditor } from './WorkflowEditor' export function Editors() { const theme = useTheme() @@ -31,6 +32,8 @@ export function Editors() { ) : view === EditorView.SEGMENT ? ( + ) : view === EditorView.WORKFLOW ? ( + ) : (
TODO
)} diff --git a/src/components/editors/ProjectEditor/index.tsx b/src/components/editors/ProjectEditor/index.tsx index e38039b3..d6523cba 100644 --- a/src/components/editors/ProjectEditor/index.tsx +++ b/src/components/editors/ProjectEditor/index.tsx @@ -21,7 +21,11 @@ export function ProjectEditor() { }, [clap?.meta, setCurrent]) if (!current) { - return
Loading..
+ return ( + + Loading project.. + + ) } // TODO: adapt the editor based on the kind of diff --git a/src/components/editors/SegmentEditor/index.tsx b/src/components/editors/SegmentEditor/index.tsx index 0a53a767..b3c7fd4a 100644 --- a/src/components/editors/SegmentEditor/index.tsx +++ b/src/components/editors/SegmentEditor/index.tsx @@ -23,7 +23,11 @@ export function SegmentEditor() { }, [setCurrent, selectedSegments.map((s) => s.id).join(',')]) if (!current) { - return
No segment selected
+ return ( + + No segment selected. + + ) } return ( diff --git a/src/components/editors/WorkflowEditor/index.tsx b/src/components/editors/WorkflowEditor/index.tsx new file mode 100644 index 00000000..768da4fd --- /dev/null +++ b/src/components/editors/WorkflowEditor/index.tsx @@ -0,0 +1,30 @@ +import { useEffect } from 'react' + +import { FormInput } from '@/components/forms/FormInput' +import { FormSection } from '@/components/forms/FormSection' +import { useWorkflowEditor } from '@/services/editors' + +export function WorkflowEditor() { + const current = useWorkflowEditor((s) => s.current) + const setCurrent = useWorkflowEditor((s) => s.setCurrent) + const history = useWorkflowEditor((s) => s.history) + const undo = useWorkflowEditor((s) => s.undo) + const redo = useWorkflowEditor((s) => s.redo) + + if (!current) { + return ( + + Workflows are not implemented yet. + + ) + } + + return ( + +
Should be a form to edit the parameters.
+
+ We can also display a link or an iframe with the actual workflow graph. +
+
+ ) +} diff --git a/src/components/toolbars/editors-menu/EditorsSideMenu.tsx b/src/components/toolbars/editors-menu/EditorsSideMenu.tsx index b61d8339..4b09af62 100644 --- a/src/components/toolbars/editors-menu/EditorsSideMenu.tsx +++ b/src/components/toolbars/editors-menu/EditorsSideMenu.tsx @@ -8,6 +8,7 @@ import { MdOutlineHistoryEdu, } from 'react-icons/md' import { LuClapperboard } from 'react-icons/lu' +import { PiTreeStructureBold } from 'react-icons/pi' import { IoFilmOutline } from 'react-icons/io5' import { EditorView } from '@aitube/clapper-services' @@ -39,15 +40,9 @@ export function EditorsSideMenu() { - - {/**/} - {/**/} - {/* */} - - {/**} - {/**/} - {/**/} - {/**/} + + + ) diff --git a/src/components/tree-browsers/stores/treeNodeStyles.ts b/src/components/tree-browsers/stores/treeNodeStyles.ts new file mode 100644 index 00000000..86468745 --- /dev/null +++ b/src/components/tree-browsers/stores/treeNodeStyles.ts @@ -0,0 +1,8 @@ +// TODO: this isn't the best place for this as this is style, +// and we are in a state manager +export const libraryClassName = 'text-base font-semibold' + +export const collectionClassName = `text-base font-normal` + +export const itemClassName = + 'text-sm font-light text-gray-200/60 hover:text-gray-200/100' diff --git a/src/components/tree-browsers/stores/useEntityLibrary.ts b/src/components/tree-browsers/stores/useEntityLibrary.ts index 69f8fd66..53d241c1 100644 --- a/src/components/tree-browsers/stores/useEntityLibrary.ts +++ b/src/components/tree-browsers/stores/useEntityLibrary.ts @@ -11,15 +11,11 @@ import { } from '../types' import { icons } from '@/components/icons' import { getAppropriateIcon } from '@/components/icons/getAppropriateIcon' - -// TODO: this isn't the best place for this as this is style, -// and we are in a state manager -const libraryClassName = 'text-base font-semibold' - -const collectionClassName = `text-base font-normal` - -const itemClassName = - 'text-sm font-light text-gray-200/60 hover:text-gray-200/100' +import { + collectionClassName, + itemClassName, + libraryClassName, +} from './treeNodeStyles' export const useEntityLibrary = create<{ teamLibraryTreeNodeId: string diff --git a/src/components/tree-browsers/stores/useFileLibrary.txt b/src/components/tree-browsers/stores/useFileLibrary.txt index 5f9b3613..da935382 100644 --- a/src/components/tree-browsers/stores/useFileLibrary.txt +++ b/src/components/tree-browsers/stores/useFileLibrary.txt @@ -8,14 +8,7 @@ import { icons } from "@/components/icons" import { getAppropriateIcon } from "@/components/icons/getAppropriateIcon" import { className } from "@/app/fonts" import { getCollectionItemTextColor } from "../utils/getCollectionItemTextColor" - -// TODO: this isn't the best place for this as this is style, -// and we are in a state manager -const libraryClassName = "text-base font-semibold" - -const collectionClassName = `text-base font-normal` - -const itemClassName = "text-sm font-light text-gray-200/60 hover:text-gray-200/100" +import { collectionClassName, itemClassName, libraryClassName } from './treeNodeStyles' export const useFileLibrary = create<{ localUserLibraryTreeNodeId: string diff --git a/src/components/tree-browsers/stores/useProjectLibrary.ts b/src/components/tree-browsers/stores/useProjectLibrary.ts index 6c59a43c..3bf532ed 100644 --- a/src/components/tree-browsers/stores/useProjectLibrary.ts +++ b/src/components/tree-browsers/stores/useProjectLibrary.ts @@ -6,15 +6,11 @@ import { ClapEntity, ClapSegmentCategory, UUID } from '@aitube/clap' import { icons } from '@/components/icons' import { LibraryNodeItem, LibraryNodeType, LibraryTreeNode } from '../types' - -// TODO: this isn't the best place for this as this is style, -// and we are in a state manager -const libraryClassName = 'text-base font-semibold' - -const collectionClassName = `text-base font-normal` - -const itemClassName = - 'text-sm font-light text-gray-200/60 hover:text-gray-200/100' +import { + collectionClassName, + itemClassName, + libraryClassName, +} from './treeNodeStyles' export const useProjectLibrary = create<{ libraryTreeRoot: LibraryTreeNode[] diff --git a/src/components/tree-browsers/stores/useWorkflowLibrary.ts b/src/components/tree-browsers/stores/useWorkflowLibrary.ts new file mode 100644 index 00000000..363adcba --- /dev/null +++ b/src/components/tree-browsers/stores/useWorkflowLibrary.ts @@ -0,0 +1,124 @@ +'use client' + +import { create } from 'zustand' +import { ClapEntity, UUID } from '@aitube/clap' +import { LibraryNodeItem, LibraryNodeType, LibraryTreeNode } from '../types' +import { icons } from '@/components/icons' +import { collectionClassName, libraryClassName } from './treeNodeStyles' + +export const useWorkflowLibrary = create<{ + builtInLibraryTreeNodeId: string + communityLibraryTreeNodeId: string + libraryTreeRoot: LibraryTreeNode[] + init: () => void + + /** + * Load built-in collections into the tree + * + * @param collections + * @returns + */ + //setBuiltInCollections: (collections: WorkflowCollection[]) => void + + /** + * Load community collections into the tree + * + * @param collections + * @returns + */ + //setCommunityCollections: (collections: WorkflowCollection[]) => void + + // we support those all selection modes for convenience - please keep them! + selectedNodeItem?: LibraryNodeItem + selectedNodeType?: LibraryNodeType + selectTreeNode: ( + treeNodeId?: string | null, + nodeType?: LibraryNodeType, + nodeItem?: LibraryNodeItem + ) => void + selectedTreeNodeId: string | null +}>((set, get) => ({ + builtInLibraryTreeNodeId: '', + communityLibraryTreeNodeId: '', + libraryTreeRoot: [], + init: () => { + const builtInLibrary: LibraryTreeNode = { + id: UUID(), + nodeType: 'LIB_NODE_WORKFLOWS', + label: 'Built-in workflows', + icon: icons.project, + className: libraryClassName, + isExpanded: true, + children: [ + { + id: UUID(), + nodeType: 'LIB_NODE_GENERIC_EMPTY', + label: 'A - 2', + icon: icons.project, + className: collectionClassName, + }, + ], + } + + const communityLibrary: LibraryTreeNode = { + id: UUID(), + nodeType: 'LIB_NODE_COMMUNITY_COLLECTION', + label: 'Community workflows', + icon: icons.community, + className: libraryClassName, + children: [ + { + id: UUID(), + nodeType: 'LIB_NODE_GENERIC_EMPTY', + label: 'A - 2', + icon: icons.community, + className: collectionClassName, + }, + ], + } + + const libraryTreeRoot = [builtInLibrary, communityLibrary] + + set({ + builtInLibraryTreeNodeId: builtInLibrary.id, + communityLibraryTreeNodeId: communityLibrary.id, + libraryTreeRoot, + selectedNodeItem: undefined, + selectedTreeNodeId: null, + }) + }, + + selectedNodeItem: undefined, + selectEntity: (entity?: ClapEntity) => { + if (entity) { + console.log( + 'TODO julian: change this code to search in the entity collections' + ) + const selectedTreeNode = get().libraryTreeRoot.find( + (node) => node.data?.id === entity.id + ) + + // set({ selectedTreeNode }) + set({ selectedTreeNodeId: selectedTreeNode?.id || null }) + set({ selectedNodeItem: entity }) + } else { + // set({ selectedTreeNode: undefined }) + set({ selectedTreeNodeId: null }) + set({ selectedNodeItem: undefined }) + } + }, + + // selectedTreeNode: undefined, + selectedTreeNodeId: null, + selectTreeNode: ( + treeNodeId?: string | null, + nodeType?: LibraryNodeType, + nodeItem?: LibraryNodeItem + ) => { + set({ selectedTreeNodeId: treeNodeId ? treeNodeId : undefined }) + set({ selectedNodeType: nodeType ? nodeType : undefined }) + set({ selectedNodeItem: nodeItem ? nodeItem : undefined }) + }, +})) + +useWorkflowLibrary.getState().init() diff --git a/src/components/tree-browsers/types.ts b/src/components/tree-browsers/types.ts index 5c782fd1..b4e29639 100644 --- a/src/components/tree-browsers/types.ts +++ b/src/components/tree-browsers/types.ts @@ -1,12 +1,16 @@ // note: we only keep simplified representations of provider data structures import { ScreenplaySequence } from '@aitube/broadway' -import { ClapEntity, ClapSegment } from '@aitube/clap' +import { ClapEntity, ClapSegment, ClapWorkflow } from '@aitube/clap' import { TreeNodeType } from '../core/tree/types' // not sure if we should also sort them into data type categories, // as vendors like to be on multiple kind of models +export type LibraryNodeHuggingFaceType = + | 'LIB_NODE_HUGGINGFACE_USER_COLLECTION' + | 'LIB_NODE_HUGGINGFACE_USER_DATASET' + export type LibraryNodeLocalFileType = | 'LIB_NODE_LOCAL_USER_FILE' | 'LIB_NODE_LOCAL_USER_FOLDER' @@ -19,9 +23,23 @@ export type LibraryNodeFileType = | LibraryNodeLocalFileType | LibraryNodeRemoteFileType +export type LibraryNodeWorkflowType = 'LIB_NODE_WORKFLOWS' | 'LIB_NODE_WORKFLOW' + +export type LibraryNodeProjectType = + | 'LIB_NODE_PROJECT_COLLECTION' + | 'LIB_NODE_PROJECT_ARCHIVE' + | 'LIB_NODE_PROJECT_ASSET' // image, sound file.. + | 'LIB_NODE_PROJECT_ENTITY_GENERIC' + | 'LIB_NODE_PROJECT_ENTITY_CHARACTER' + | 'LIB_NODE_PROJECT_ENTITY_LOCATION' + +export type LibraryNodeGenericType = + | 'LIB_NODE_GENERIC_COLLECTION' + | 'LIB_NODE_GENERIC_MODEL' + | 'LIB_NODE_GENERIC_ITEM' + | 'LIB_NODE_GENERIC_EMPTY' + /** - * a collection always correspond to the root category displayed in the tree menu - * * we could use "LIB_NODE_GENERIC_COLLECTION", * but I think it can also be useful to keep specific types, * that way we can show a custom collection UI panel on the right of the explorer @@ -29,15 +47,10 @@ export type LibraryNodeFileType = export type LibraryNodeType = | 'LIB_NODE_LOCAL_USER_COLLECTION' | LibraryNodeLocalFileType - | 'LIB_NODE_HUGGINGFACE_USER_COLLECTION' - | 'LIB_NODE_HUGGINGFACE_USER_DATASET' + | LibraryNodeHuggingFaceType | LibraryNodeRemoteFileType - | 'LIB_NODE_PROJECT_COLLECTION' - | 'LIB_NODE_PROJECT_ARCHIVE' - | 'LIB_NODE_PROJECT_ASSET' // image, sound file.. - | 'LIB_NODE_PROJECT_ENTITY_GENERIC' - | 'LIB_NODE_PROJECT_ENTITY_CHARACTER' - | 'LIB_NODE_PROJECT_ENTITY_LOCATION' + | LibraryNodeWorkflowType + | LibraryNodeProjectType | 'LIB_NODE_TEAM_COLLECTION' | 'LIB_NODE_TEAM_MODEL' | 'LIB_NODE_COMMUNITY_COLLECTION' @@ -48,10 +61,7 @@ export type LibraryNodeType = | 'LIB_NODE_REPLICATE_MODEL' | 'LIB_NODE_CIVITAI_COLLECTION' | 'LIB_NODE_CIVITAI_MODEL' - | 'LIB_NODE_GENERIC_COLLECTION' - | 'LIB_NODE_GENERIC_MODEL' - | 'LIB_NODE_GENERIC_ITEM' - | 'LIB_NODE_GENERIC_EMPTY' + | LibraryNodeGenericType // can be a file or folder export type LocalUserItem = { @@ -140,6 +150,13 @@ export type CivitaiCollection = { models: CivitaiModel[] } +export type WorkflowCollection = { + id: string + name: string + description: string + workflows: ClapWorkflow[] +} + // TODO unify this a bit, at least in the naming scheme export type LibraryNodeFileItem = LocalUserItem | HuggingFaceUserItem @@ -156,6 +173,8 @@ export type LibraryNodeItem = | HuggingFaceUserItem | ScreenplaySequence | ClapSegment + | WorkflowCollection + | ClapWorkflow // a model library is a collection of models // this collection can itself include sub-models diff --git a/src/components/tree-browsers/workflow-tree-browser/index.tsx b/src/components/tree-browsers/workflow-tree-browser/index.tsx new file mode 100644 index 00000000..578a8c45 --- /dev/null +++ b/src/components/tree-browsers/workflow-tree-browser/index.tsx @@ -0,0 +1,66 @@ +'use client' + +import { useEffect } from 'react' + +import { cn } from '@/lib/utils' +import { useEntityLibrary } from '../stores/useEntityLibrary' +import { LibraryNodeItem, LibraryNodeType } from '../types' +import { Tree } from '@/components/core/tree' + +import { isClapEntity, isReplicateCollection } from '../utils/isSomething' + +export function WorkflowTreeBrowser() { + const libraryTreeRoot = useEntityLibrary((s) => s.libraryTreeRoot) + const selectTreeNode = useEntityLibrary((s) => s.selectTreeNode) + const selectedTreeNodeId = useEntityLibrary((s) => s.selectedTreeNodeId) + + /** + * handle click on tree node + * yes, this is where the magic happens! + * + * @param id + * @param nodeType + * @param node + * @returns + */ + const handleOnChange = async ( + id: string | null, + nodeType?: LibraryNodeType, + nodeItem?: LibraryNodeItem + ) => { + console.log(`calling selectTreeNodeById(id)`) + selectTreeNode(id, nodeType, nodeItem) + + if (!nodeType || !nodeItem) { + console.log('tree-browser: clicked on an undefined node') + return + } + + if (isReplicateCollection(nodeType, nodeItem)) { + // ReplicateCollection + } else if (isClapEntity(nodeType, nodeItem)) { + // ClapEntity + } else { + console.log( + `tree-browser: no action attached to ${nodeType}, so skipping` + ) + return + } + console.log(`tree-browser: clicked on a ${nodeType}`, nodeItem) + } + + return ( +
+ + value={selectedTreeNodeId} + onChange={handleOnChange} + className="not-prose h-full w-full px-2 pt-8" + label="Model Library" + > + {libraryTreeRoot.map((node) => ( + + ))} + +
+ ) +} diff --git a/src/experiments/grading/applyColorGrading.ts b/src/experiments/grading/applyColorGrading.ts index d10fc878..b06aeae0 100644 --- a/src/experiments/grading/applyColorGrading.ts +++ b/src/experiments/grading/applyColorGrading.ts @@ -124,12 +124,10 @@ async function applyFilter( const uniformData: number[] = [] filter.parameters.forEach((param) => { if (param.type === 'number') { - uniformData.push( - (parameters?.[param.name] as number) ?? param.defaultValue - ) + uniformData.push((parameters?.[param.id] as number) ?? param.defaultValue) } else if (param.type === 'string') { // For string parameters, we'll use the index of the value in allowedValues - const value = (parameters?.[param.name] as string) ?? param.defaultValue + const value = (parameters?.[param.id] as string) ?? param.defaultValue const index = param.allowedValues.indexOf(value) uniformData.push(index) } diff --git a/src/experiments/grading/filters/DEPRECATED_analogFilm.ts b/src/experiments/grading/filters/DEPRECATED_analogFilm.ts index 407ce87b..d668c7c4 100644 --- a/src/experiments/grading/filters/DEPRECATED_analogFilm.ts +++ b/src/experiments/grading/filters/DEPRECATED_analogFilm.ts @@ -4,7 +4,8 @@ export const analogFilmSimulator: ColorGradingFilter = { name: 'Analog Film Simulator', parameters: [ { - name: 'preset', + id: 'preset', + label: 'Preset', description: 'Film preset', type: 'string', allowedValues: [ @@ -15,7 +16,8 @@ export const analogFilmSimulator: ColorGradingFilter = { defaultValue: 'Konica Centuria 200', }, { - name: 'saturation', + id: 'saturation', + label: 'Saturation', description: 'Color saturation', type: 'number', minValue: 0, @@ -23,7 +25,8 @@ export const analogFilmSimulator: ColorGradingFilter = { defaultValue: 1, }, { - name: 'noise', + id: 'noise', + label: 'Noise', description: 'Film grain intensity', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/analogLens.ts b/src/experiments/grading/filters/analogLens.ts index 94cc35dc..ccc35956 100644 --- a/src/experiments/grading/filters/analogLens.ts +++ b/src/experiments/grading/filters/analogLens.ts @@ -4,7 +4,8 @@ export const analogLensSimulator: ColorGradingFilter = { name: 'Analog Lens Simulator', parameters: [ { - name: 'chromaticAberration', + id: 'chromaticAberration', + label: 'Chromatic aberration', description: 'Chromatic aberration strength', type: 'number', minValue: 0, @@ -12,7 +13,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.002, }, { - name: 'vignetteStrength', + id: 'vignetteStrength', + label: 'Vignette strength', description: 'Vignette strength', type: 'number', minValue: 0, @@ -20,7 +22,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.3, }, { - name: 'vignetteRadius', + id: 'vignetteRadius', + label: 'Vignette radius', description: 'Vignette radius', type: 'number', minValue: 0, @@ -28,7 +31,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.75, }, { - name: 'distortion', + id: 'distortion', + label: 'Distortion', description: 'Lens distortion', type: 'number', minValue: -1, @@ -36,7 +40,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.1, }, { - name: 'bloomStrength', + id: 'bloomStrength', + label: 'Bloom strength', description: 'Bloom strength', type: 'number', minValue: 0, @@ -44,7 +49,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.1, }, { - name: 'bloomRadius', + id: 'bloomRadius', + label: 'Bloom radius', description: 'Bloom radius', type: 'number', minValue: 1, @@ -52,7 +58,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 3, }, { - name: 'dofFocusDistance', + id: 'dofFocusDistance', + label: 'DOF focus distance', description: 'Depth of field focus distance', type: 'number', minValue: 0, @@ -60,7 +67,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.5, }, { - name: 'dofFocusRange', + id: 'dofFocusRange', + label: 'DOF focus range', description: 'Depth of field focus range', type: 'number', minValue: 0.01, @@ -68,7 +76,8 @@ export const analogLensSimulator: ColorGradingFilter = { defaultValue: 0.1, }, { - name: 'dofBlurStrength', + id: 'dofBlurStrength', + label: 'DOF blur strength', description: 'Depth of field blur strength', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/cinematic.ts b/src/experiments/grading/filters/cinematic.ts index aa51a2d9..b12afa05 100644 --- a/src/experiments/grading/filters/cinematic.ts +++ b/src/experiments/grading/filters/cinematic.ts @@ -4,7 +4,8 @@ export const cinematic: ColorGradingFilter = { name: 'Cinematic Color Grading', parameters: [ { - name: 'preset', + id: 'preset', + label: 'Preset', description: 'Cinematic color preset', type: 'string', allowedValues: [ @@ -17,7 +18,8 @@ export const cinematic: ColorGradingFilter = { defaultValue: 'Blade Runner', }, { - name: 'intensity', + id: 'intensity', + label: 'Intensity', description: 'Intensity of the cinematic effect', type: 'number', minValue: 0, @@ -25,7 +27,8 @@ export const cinematic: ColorGradingFilter = { defaultValue: 0.5, }, { - name: 'contrast', + id: 'contrast', + label: 'Contrast', description: 'Image contrast', type: 'number', minValue: 0.5, diff --git a/src/experiments/grading/filters/colorMapping.ts b/src/experiments/grading/filters/colorMapping.ts index 82c97d29..23457034 100644 --- a/src/experiments/grading/filters/colorMapping.ts +++ b/src/experiments/grading/filters/colorMapping.ts @@ -5,7 +5,8 @@ export const colorMapping: ColorGradingFilter = { name: 'Color Mapping', parameters: [ { - name: 'redMultiplier', + id: 'redMultiplier', + label: 'Red multiplier', description: 'Red channel multiplier', type: 'number', minValue: 0, @@ -13,7 +14,8 @@ export const colorMapping: ColorGradingFilter = { defaultValue: 1, }, { - name: 'greenMultiplier', + id: 'greenMultiplier', + label: 'Green multiplier', description: 'Green channel multiplier', type: 'number', minValue: 0, @@ -21,7 +23,8 @@ export const colorMapping: ColorGradingFilter = { defaultValue: 1, }, { - name: 'blueMultiplier', + id: 'blueMultiplier', + label: 'Blue multiplier', description: 'Blue channel multiplier', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/colorTemperature.ts b/src/experiments/grading/filters/colorTemperature.ts index d2bff0be..b0c51d6c 100644 --- a/src/experiments/grading/filters/colorTemperature.ts +++ b/src/experiments/grading/filters/colorTemperature.ts @@ -4,7 +4,8 @@ export const colorTemperature: ColorGradingFilter = { name: 'Color Temperature Adjustment', parameters: [ { - name: 'temperature', + id: 'temperature', + label: 'Temperature', description: 'Color temperature in Kelvin', type: 'number', minValue: 1000, @@ -12,7 +13,8 @@ export const colorTemperature: ColorGradingFilter = { defaultValue: 6500, }, { - name: 'tint', + id: 'tint', + label: 'Tint', description: 'Green-Magenta tint', type: 'number', minValue: -100, diff --git a/src/experiments/grading/filters/crossProcessing.ts b/src/experiments/grading/filters/crossProcessing.ts index e21d9db1..f4561d68 100644 --- a/src/experiments/grading/filters/crossProcessing.ts +++ b/src/experiments/grading/filters/crossProcessing.ts @@ -4,7 +4,8 @@ export const crossProcessing: ColorGradingFilter = { name: 'Cross-Processing', parameters: [ { - name: 'intensity', + id: 'intensity', + label: 'Intensity', description: 'Intensity of the cross-processing effect', type: 'number', minValue: 0, @@ -12,7 +13,8 @@ export const crossProcessing: ColorGradingFilter = { defaultValue: 0.5, }, { - name: 'contrastBoost', + id: 'contrastBoost', + label: 'Contrast boost', description: 'Amount of contrast boost', type: 'number', minValue: 0, @@ -20,7 +22,8 @@ export const crossProcessing: ColorGradingFilter = { defaultValue: 0.3, }, { - name: 'colorShift', + id: 'colorShift', + label: 'Color shift', description: 'Direction of color shift', type: 'string', allowedValues: ['Cool', 'Warm'], diff --git a/src/experiments/grading/filters/filmDegradation.ts b/src/experiments/grading/filters/filmDegradation.ts index 4baa35d2..53eaf3a6 100644 --- a/src/experiments/grading/filters/filmDegradation.ts +++ b/src/experiments/grading/filters/filmDegradation.ts @@ -4,7 +4,8 @@ export const filmDegradation: ColorGradingFilter = { name: 'Film Degradation', parameters: [ { - name: 'scratchesIntensity', + id: 'scratchesIntensity', + label: 'Scratches intensity', description: 'Intensity of film scratches', type: 'number', minValue: 0, @@ -12,7 +13,8 @@ export const filmDegradation: ColorGradingFilter = { defaultValue: 0.3, }, { - name: 'dustIntensity', + id: 'dustIntensity', + label: 'Dust intensity', description: 'Intensity of dust and spots', type: 'number', minValue: 0, @@ -20,7 +22,8 @@ export const filmDegradation: ColorGradingFilter = { defaultValue: 0.2, }, { - name: 'colorFading', + id: 'colorFading', + label: 'Color fading', description: 'Color fading effect', type: 'number', minValue: 0, @@ -28,7 +31,8 @@ export const filmDegradation: ColorGradingFilter = { defaultValue: 0.3, }, { - name: 'lightLeakIntensity', + id: 'lightLeakIntensity', + label: 'Light leak intensity', description: 'Intensity of light leaks', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/infrared.ts b/src/experiments/grading/filters/infrared.ts index 1b1b0417..2597bfbb 100644 --- a/src/experiments/grading/filters/infrared.ts +++ b/src/experiments/grading/filters/infrared.ts @@ -4,7 +4,8 @@ export const infraredBlackAndWhite: ColorGradingFilter = { name: 'Infrared Black and White', parameters: [ { - name: 'contrast', + id: 'contrast', + label: 'Contrast', description: 'Image contrast', type: 'number', minValue: 0.5, @@ -12,7 +13,8 @@ export const infraredBlackAndWhite: ColorGradingFilter = { defaultValue: 1.2, }, { - name: 'grain', + id: 'grain', + label: 'Grain', description: 'Film grain intensity', type: 'number', minValue: 0, @@ -20,7 +22,8 @@ export const infraredBlackAndWhite: ColorGradingFilter = { defaultValue: 0.2, }, { - name: 'glow', + id: 'glow', + label: 'Glow', description: 'Infrared glow effect', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/lomography.ts b/src/experiments/grading/filters/lomography.ts index 9ec98773..e77c4e8d 100644 --- a/src/experiments/grading/filters/lomography.ts +++ b/src/experiments/grading/filters/lomography.ts @@ -4,7 +4,8 @@ export const lomography: ColorGradingFilter = { name: 'Lomography', parameters: [ { - name: 'saturation', + id: 'saturation', + label: 'Saturation', description: 'Color saturation', type: 'number', minValue: 0, @@ -12,7 +13,8 @@ export const lomography: ColorGradingFilter = { defaultValue: 1.3, }, { - name: 'contrast', + id: 'contrast', + label: 'Contrast', description: 'Image contrast', type: 'number', minValue: 0.5, @@ -20,7 +22,8 @@ export const lomography: ColorGradingFilter = { defaultValue: 1.2, }, { - name: 'vignetteIntensity', + id: 'vignetteIntensity', + label: 'Vignette intensity', description: 'Intensity of vignette effect', type: 'number', minValue: 0, @@ -28,7 +31,8 @@ export const lomography: ColorGradingFilter = { defaultValue: 0.5, }, { - name: 'lightLeakIntensity', + id: 'lightLeakIntensity', + label: 'Light leak intensity', description: 'Intensity of light leak effect', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/splitToning.ts b/src/experiments/grading/filters/splitToning.ts index 89a3ccb5..07f87514 100644 --- a/src/experiments/grading/filters/splitToning.ts +++ b/src/experiments/grading/filters/splitToning.ts @@ -4,21 +4,24 @@ export const splitToning: ColorGradingFilter = { name: 'Split Toning', parameters: [ { - name: 'highlightColor', + id: 'highlightColor', + label: 'Highlight color', description: 'Color for highlights', type: 'string', allowedValues: ['Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta'], defaultValue: 'Yellow', }, { - name: 'shadowColor', + id: 'shadowColor', + label: 'Shadow color', description: 'Color for shadows', type: 'string', allowedValues: ['Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta'], defaultValue: 'Blue', }, { - name: 'balance', + id: 'balance', + label: 'Balance', description: 'Balance between highlights and shadows', type: 'number', minValue: -1, @@ -26,7 +29,8 @@ export const splitToning: ColorGradingFilter = { defaultValue: 0, }, { - name: 'intensity', + id: 'intensity', + label: 'Intensity', description: 'Intensity of the split toning effect', type: 'number', minValue: 0, diff --git a/src/experiments/grading/filters/toneMapping.ts b/src/experiments/grading/filters/toneMapping.ts index 72a18d98..0688af84 100644 --- a/src/experiments/grading/filters/toneMapping.ts +++ b/src/experiments/grading/filters/toneMapping.ts @@ -4,7 +4,8 @@ export const hdrToneMapping: ColorGradingFilter = { name: 'HDR Tone Mapping', parameters: [ { - name: 'exposure', + id: 'exposure', + label: 'Exposure', description: 'Exposure adjustment', type: 'number', minValue: -2, @@ -12,7 +13,8 @@ export const hdrToneMapping: ColorGradingFilter = { defaultValue: 0, }, { - name: 'contrast', + id: 'contrast', + label: 'Contrast', description: 'Contrast adjustment', type: 'number', minValue: 0.5, @@ -20,7 +22,8 @@ export const hdrToneMapping: ColorGradingFilter = { defaultValue: 1, }, { - name: 'saturation', + id: 'saturation', + label: 'Saturation', description: 'Color saturation', type: 'number', minValue: 0, @@ -28,7 +31,8 @@ export const hdrToneMapping: ColorGradingFilter = { defaultValue: 1, }, { - name: 'highlights', + id: 'highlights', + label: 'Highlights', description: 'Highlight adjustment', type: 'number', minValue: -1, @@ -36,7 +40,8 @@ export const hdrToneMapping: ColorGradingFilter = { defaultValue: 0, }, { - name: 'shadows', + id: 'Shadows', + label: 'shadows', description: 'Shadow adjustment', type: 'number', minValue: -1, diff --git a/src/experiments/grading/filters/vintageFilm.ts b/src/experiments/grading/filters/vintageFilm.ts index db8f8154..44f12f2f 100644 --- a/src/experiments/grading/filters/vintageFilm.ts +++ b/src/experiments/grading/filters/vintageFilm.ts @@ -4,7 +4,8 @@ export const vintageFilm: ColorGradingFilter = { name: 'Enhanced Vintage Film Stocks', parameters: [ { - name: 'preset', + id: 'preset', + label: 'Preset', description: 'Vintage film stock preset', type: 'string', allowedValues: [ @@ -49,7 +50,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 'Kodachrome 64', }, { - name: 'intensity', + id: 'intensity', + label: 'Intensity', description: 'Intensity of the film stock effect', type: 'number', minValue: 0, @@ -57,7 +59,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 0.8, }, { - name: 'grain', + id: 'grain', + label: 'Grain', description: 'Film grain intensity', type: 'number', minValue: 0, @@ -65,7 +68,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 0.2, }, { - name: 'ageEffect', + id: 'ageEffect', + label: 'Age effect', description: 'Simulated age of the film', type: 'number', minValue: 0, @@ -73,7 +77,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 0, }, { - name: 'colorShift', + id: 'colorShift', + label: 'Color shift', description: 'Color shift adjustment', type: 'number', minValue: -1, @@ -81,7 +86,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 0, }, { - name: 'contrast', + id: 'contrast', + label: 'Contrast', description: 'Contrast adjustment', type: 'number', minValue: 0.5, @@ -89,7 +95,8 @@ export const vintageFilm: ColorGradingFilter = { defaultValue: 1, }, { - name: 'saturation', + id: 'saturation', + label: 'Saturation', description: 'Saturation adjustment', type: 'number', minValue: 0, diff --git a/src/experiments/grading/types.ts b/src/experiments/grading/types.ts index 5c4a7d26..02288362 100644 --- a/src/experiments/grading/types.ts +++ b/src/experiments/grading/types.ts @@ -1,22 +1,7 @@ -export type ColorGradingParameter = - | { - name: string - description: string - type: 'number' - minValue: number - maxValue: number - defaultValue: number - } - | { - name: string - description: string - type: 'string' - allowedValues: string[] - defaultValue: string - } +import { ClapInputField } from '@aitube/clap/dist/types' export type ColorGradingFilter = { name: string - parameters: Array + parameters: Array shader: string // WGSL shader code for the filter } diff --git a/src/lib/core/constants.ts b/src/lib/core/constants.ts index f3bbedc6..df11b2c4 100644 --- a/src/lib/core/constants.ts +++ b/src/lib/core/constants.ts @@ -3,7 +3,7 @@ export const HARD_LIMIT_NB_MAX_ASSETS_TO_GENERATE_IN_PARALLEL = 32 export const APP_NAME = 'Clapper.app' -export const APP_REVISION = '20240724+1650' +export const APP_REVISION = '20240725+0155' export const APP_DOMAIN = 'Clapper.app' export const APP_LINK = 'https://clapper.app' diff --git a/src/services/editors/index.ts b/src/services/editors/index.ts index 390a8e3a..b3034786 100644 --- a/src/services/editors/index.ts +++ b/src/services/editors/index.ts @@ -2,4 +2,5 @@ export { useEntityEditor } from './entity-editor/useEntityEditor' export { useProjectEditor } from './project-editor/useProjectEditor' export { useSegmentEditor } from './segment-editor/useSegmentEditor' export { useScriptEditor } from './script-editor/useScriptEditor' +export { useWorkflowEditor } from './workflow-editor/useWorkflowEditor' export { useEditors } from './useEditors' diff --git a/src/services/editors/workflow-editor/getDefaultWorkflowtEditorState.ts b/src/services/editors/workflow-editor/getDefaultWorkflowtEditorState.ts new file mode 100644 index 00000000..854c9624 --- /dev/null +++ b/src/services/editors/workflow-editor/getDefaultWorkflowtEditorState.ts @@ -0,0 +1,11 @@ +import { WorkflowEditorState } from '@aitube/clapper-services' + +export function getDefaultWorkflowEditorState(): WorkflowEditorState { + const state: WorkflowEditorState = { + current: undefined, + version: 0, + history: [], + } + + return state +} diff --git a/src/services/editors/workflow-editor/useWorkflowEditor.ts b/src/services/editors/workflow-editor/useWorkflowEditor.ts new file mode 100644 index 00000000..88aada17 --- /dev/null +++ b/src/services/editors/workflow-editor/useWorkflowEditor.ts @@ -0,0 +1,16 @@ +'use client' + +import { create } from 'zustand' +import { WorkflowEditorStore } from '@aitube/clapper-services' +import { ClapWorkflow } from '@aitube/clap' + +import { getDefaultWorkflowEditorState } from './getDefaultWorkflowtEditorState' + +export const useWorkflowEditor = create((set, get) => ({ + ...getDefaultWorkflowEditorState(), + setCurrent: (current?: ClapWorkflow) => { + set({ current }) + }, + undo: () => {}, + redo: () => {}, +})) diff --git a/src/services/plugins/usePlugins.ts b/src/services/plugins/usePlugins.ts index bed10f9a..711c0c6b 100644 --- a/src/services/plugins/usePlugins.ts +++ b/src/services/plugins/usePlugins.ts @@ -11,7 +11,6 @@ import { import { useTimeline } from '@aitube/timeline' import { getDefaultPluginsState } from './getDefaultPluginsState' -import { useScriptEditor } from '../editors/script-editor/useScriptEditor' import { useMonitor } from '../monitor/useMonitor' import { useTasks } from '@/components/tasks/useTasks' import { useRenderer } from '../renderer' @@ -26,6 +25,8 @@ import { useEntityEditor, useProjectEditor, useSegmentEditor, + useScriptEditor, + useWorkflowEditor, } from '../editors' import { useSimulator } from '../simulator/useSimulator' import { useIO } from '../io/useIO' @@ -68,6 +69,7 @@ export const usePlugins = create((set, get) => ({ entityEditor: useEntityEditor, projectEditor: useProjectEditor, scriptEditor: useScriptEditor, + workflowEditor: useWorkflowEditor, editors: useEditors, monitor: useMonitor, tasks: useTasks,