FE_Dev / store /proposal-trigger.ts
GitHub Actions
Deploy from GitHub Actions [dev] - 2025-10-31 07:28:50
68f7925
// 選択データのハッシュを生成する関数
export function generateSelectionHash(data: unknown): string {
// データを正規化してからハッシュを生成
const normalizedData = normalizeForHashing(data);
return Buffer.from(JSON.stringify(normalizedData)).toString('base64').slice(0, 16);
}
// ハッシュ生成用にデータを正規化する関数
function normalizeForHashing(data: unknown): unknown {
if (data === null || data === undefined) {
return data;
}
if (Array.isArray(data)) {
return data.map(normalizeForHashing).sort(); // 配列はソートして安定化
}
if (typeof data === 'object') {
const normalized: Record<string, unknown> = {};
// オブジェクトのキーをソートして安定化
const sortedKeys = Object.keys(data).sort();
for (const key of sortedKeys) {
normalized[key] = normalizeForHashing((data as Record<string, unknown>)[key]);
}
return normalized;
}
return data;
}
// キャッシュキーを生成する関数
export function createCacheKey(prefix: string, data: unknown): string {
return `${prefix}_${generateSelectionHash(data)}`;
}