FE_Dev / lib /utils.ts
GitHub Actions
Deploy from GitHub Actions [dev] - 2025-10-31 07:28:50
68f7925
import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export const allowedEmails = [
'yoshimura.s@dentsudigital.co.jp',
'manabe.risa@dentsudigital.co.jp',
'watabe.kazuhiro@dentsudigital.co.jp',
'shimizu.r@dentsudigital.co.jp',
'wada.j@dentsudigital.co.jp',
'iijima.m@dentsudigital.co.jp',
'takao.a@dentsudigital.co.jp',
'hayashi.som@dentsudigital.co.jp',
'fukushima.r@dentsudigital.co.jp',
'k.yamada@dentsudigital.co.jp',
'suzuki@dentsudigital.co.jp',
'miyazaki.ay@dentsudigital.co.jp',
'ikeda.yug@dentsudigital.co.jp',
'masamura.y@dentsudigital.co.jp',
'u.gunjlkham@mn.data-artist.com',
'itano.c@dentsudigital.co.jp',
'kazuki.watanabe@contract.dentsudigital.co.jp',
'yuki.watanabe@contract.dentsudigital.co.jp',
];
export const isAllowedUser = (email?: string): boolean => {
return email === '' || email === undefined || email === null || (!!email && allowedEmails.includes(email));
};
/**
* タイムアウト付きのPromiseラッパー
* @param promise 実行するPromise
* @param timeoutMs タイムアウト時間(ミリ秒)
* @returns タイムアウト付きのPromise
*/
export function withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T> {
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(() => {
reject(new Error(`タイムアウト: ${timeoutMs / 1000}秒以内に処理が完了しませんでした`));
}, timeoutMs);
promise
.then((result) => {
clearTimeout(timeoutId);
resolve(result);
})
.catch((error) => {
clearTimeout(timeoutId);
reject(error);
});
});
}