@henteko/kumiki
Version:
A video generation tool that creates videos from JSON configurations
55 lines • 1.87 kB
JavaScript
/**
* generate:// URLかどうかをチェック
*/
export function isGenerateUrl(src) {
if (typeof src === 'string') {
return src.startsWith('generate://');
}
if (typeof src === 'object' && src !== null && 'type' in src) {
const obj = src;
return obj.type === 'generate';
}
return false;
}
/**
* generate:// URLまたはオブジェクトからパラメータを抽出
*/
export function parseGenerateUrl(src) {
if (typeof src === 'string') {
// generate://プロンプト 形式
if (!src.startsWith('generate://')) {
throw new Error('Invalid generate URL format');
}
const prompt = src.slice('generate://'.length).trim();
if (!prompt) {
throw new Error('Empty prompt in generate URL');
}
return { prompt };
}
if (typeof src === 'object' && src !== null && 'type' in src) {
// オブジェクト形式
const obj = src;
if (obj.type !== 'generate') {
throw new Error('Invalid generate object type');
}
if (!obj.prompt || typeof obj.prompt !== 'string') {
throw new Error('Missing or invalid prompt in generate object');
}
const params = {
prompt: obj.prompt,
};
// オプショナルパラメータ
if (obj.style && ['photorealistic', 'illustration', 'anime', 'sketch'].includes(obj.style)) {
params.style = obj.style;
}
if (obj.aspectRatio && typeof obj.aspectRatio === 'string') {
params.aspectRatio = obj.aspectRatio;
}
if (obj.seed && typeof obj.seed === 'number') {
params.seed = obj.seed;
}
return params;
}
throw new Error('Invalid generate URL or object format');
}
//# sourceMappingURL=generate-url-parser.js.map