191 lines
5.5 KiB
TypeScript
191 lines
5.5 KiB
TypeScript
export function normalizePublicCodeText(value: string) {
|
|
return value
|
|
.trim()
|
|
.replace(/[^a-zA-Z0-9]/gu, '')
|
|
.toUpperCase();
|
|
}
|
|
|
|
export function buildPuzzlePublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `PZ-${suffix}`;
|
|
}
|
|
|
|
export function buildBigFishPublicWorkCode(sessionId: string) {
|
|
const normalized = normalizePublicCodeText(sessionId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `BF-${suffix}`;
|
|
}
|
|
|
|
export function buildMatch3DPublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `M3-${suffix}`;
|
|
}
|
|
|
|
export function buildSquareHolePublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `SH-${suffix}`;
|
|
}
|
|
|
|
export function buildVisualNovelPublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `VN-${suffix}`;
|
|
}
|
|
|
|
export function buildBabyObjectMatchPublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `BO-${suffix}`;
|
|
}
|
|
|
|
function normalizeBarkBattlePublicWorkCodeSuffix(workId: string) {
|
|
const normalized = normalizePublicCodeText(workId);
|
|
const withoutPrefix = normalized.startsWith('BB')
|
|
? normalized.slice(2)
|
|
: normalized;
|
|
const fallback = withoutPrefix || normalized || '00000000';
|
|
|
|
return fallback.slice(-8).padStart(8, '0');
|
|
}
|
|
|
|
export function buildBarkBattlePublicWorkCode(workId: string) {
|
|
return `BB-${normalizeBarkBattlePublicWorkCodeSuffix(workId)}`;
|
|
}
|
|
|
|
export function buildJumpHopPublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `JH-${suffix}`;
|
|
}
|
|
|
|
export function buildWoodenFishPublicWorkCode(profileId: string) {
|
|
const normalized = normalizePublicCodeText(profileId);
|
|
const fallback = normalized || '00000000';
|
|
const suffix = fallback.slice(-8).padStart(8, '0');
|
|
|
|
return `WF-${suffix}`;
|
|
}
|
|
|
|
export function isSamePuzzlePublicWorkCode(keyword: string, profileId: string) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildPuzzlePublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameBigFishPublicWorkCode(
|
|
keyword: string,
|
|
sessionId: string,
|
|
) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildBigFishPublicWorkCode(sessionId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(sessionId)
|
|
);
|
|
}
|
|
|
|
export function isSameMatch3DPublicWorkCode(keyword: string, profileId: string) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildMatch3DPublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameSquareHolePublicWorkCode(
|
|
keyword: string,
|
|
profileId: string,
|
|
) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildSquareHolePublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameVisualNovelPublicWorkCode(
|
|
keyword: string,
|
|
profileId: string,
|
|
) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildVisualNovelPublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameBabyObjectMatchPublicWorkCode(
|
|
keyword: string,
|
|
profileId: string,
|
|
) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildBabyObjectMatchPublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameBarkBattlePublicWorkCode(keyword: string, workId: string) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildBarkBattlePublicWorkCode(workId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(workId) ||
|
|
normalizedKeyword === normalizeBarkBattlePublicWorkCodeSuffix(workId)
|
|
);
|
|
}
|
|
|
|
export function isSameJumpHopPublicWorkCode(keyword: string, profileId: string) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildJumpHopPublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|
|
|
|
export function isSameWoodenFishPublicWorkCode(
|
|
keyword: string,
|
|
profileId: string,
|
|
) {
|
|
const normalizedKeyword = normalizePublicCodeText(keyword);
|
|
|
|
return (
|
|
normalizedKeyword ===
|
|
normalizePublicCodeText(buildWoodenFishPublicWorkCode(profileId)) ||
|
|
normalizedKeyword === normalizePublicCodeText(profileId)
|
|
);
|
|
}
|