refactor: 收口公开码搜索计划
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
export type PlatformPublicCodeSearchStep =
|
||||
| 'user-id'
|
||||
| 'public-user-code'
|
||||
| 'rpg-work'
|
||||
| 'puzzle-work'
|
||||
| 'big-fish-work'
|
||||
| 'jump-hop-work'
|
||||
| 'wooden-fish-work'
|
||||
| 'baby-object-match-work'
|
||||
| 'match3d-work'
|
||||
| 'square-hole-work'
|
||||
| 'visual-novel-work'
|
||||
| 'bark-battle-work';
|
||||
|
||||
export type PlatformPublicCodeSearchPlan = {
|
||||
normalizedKeyword: string;
|
||||
steps: readonly PlatformPublicCodeSearchStep[];
|
||||
};
|
||||
|
||||
const PLATFORM_PUBLIC_USER_ID_PATTERN = /^user[_-][a-z0-9_-]+$/iu;
|
||||
const PLATFORM_RPG_WORK_NUMERIC_CODE_PATTERN = /^\d{1,8}$/u;
|
||||
|
||||
const DIRECT_WORK_PREFIX_STEPS: ReadonlyArray<
|
||||
readonly [prefix: string, step: PlatformPublicCodeSearchStep]
|
||||
> = [
|
||||
['PZ', 'puzzle-work'],
|
||||
['BF', 'big-fish-work'],
|
||||
['JH', 'jump-hop-work'],
|
||||
['WF', 'wooden-fish-work'],
|
||||
['BO', 'baby-object-match-work'],
|
||||
['M3', 'match3d-work'],
|
||||
['SH', 'square-hole-work'],
|
||||
['VN', 'visual-novel-work'],
|
||||
['BB', 'bark-battle-work'],
|
||||
];
|
||||
|
||||
/** 收口公开码搜索顺序,壳层只按步骤执行网络读取与打开副作用。 */
|
||||
export function resolvePlatformPublicCodeSearchPlan(
|
||||
keyword: string,
|
||||
): PlatformPublicCodeSearchPlan | null {
|
||||
const normalizedKeyword = keyword.trim();
|
||||
if (!normalizedKeyword) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (PLATFORM_PUBLIC_USER_ID_PATTERN.test(normalizedKeyword)) {
|
||||
return {
|
||||
normalizedKeyword,
|
||||
steps: ['user-id'],
|
||||
};
|
||||
}
|
||||
|
||||
const upperKeyword = normalizedKeyword.toUpperCase();
|
||||
const directWorkStep = DIRECT_WORK_PREFIX_STEPS.find(([prefix]) =>
|
||||
upperKeyword.startsWith(prefix),
|
||||
)?.[1];
|
||||
if (directWorkStep) {
|
||||
return {
|
||||
normalizedKeyword,
|
||||
steps: [directWorkStep],
|
||||
};
|
||||
}
|
||||
|
||||
if (
|
||||
upperKeyword.startsWith('CW') ||
|
||||
PLATFORM_RPG_WORK_NUMERIC_CODE_PATTERN.test(normalizedKeyword)
|
||||
) {
|
||||
return {
|
||||
normalizedKeyword,
|
||||
steps: ['rpg-work', 'public-user-code'],
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
normalizedKeyword,
|
||||
steps: [
|
||||
'public-user-code',
|
||||
'rpg-work',
|
||||
'bark-battle-work',
|
||||
'public-user-code',
|
||||
],
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user