返回 oh-my-ppt
page-merge.ts
根目录 / src / shared / page-merge.ts
1 export const PAGE_MERGE_ERROR_CODES = [
2 'PAGE_MERGE_INVALID_REQUEST',
3 'PAGE_MERGE_SAME_SESSION',
4 'PAGE_MERGE_NO_PAGE_SELECTED',
5 'PAGE_MERGE_PAGE_LIMIT_EXCEEDED',
6 'PAGE_MERGE_SESSION_NOT_FOUND',
7 'PAGE_MERGE_SESSION_BUSY',
8 'PAGE_MERGE_SLIDE_SIZE_MISMATCH',
9 'PAGE_MERGE_SOURCE_PAGE_NOT_FOUND',
10 'PAGE_MERGE_SOURCE_PAGE_UNAVAILABLE',
11 'PAGE_MERGE_TARGET_FONT_UNAVAILABLE',
12 'PAGE_MERGE_PAGE_COPY_FAILED',
13 'PAGE_MERGE_INTERNAL_ERROR'
14 ] as const
15
16 export type PageMergeErrorCode = (typeof PAGE_MERGE_ERROR_CODES)[number]
17
18 export const PAGE_MERGE_DISABLED_REASONS = [
19 'PAGE_MERGE_SESSION_BUSY',
20 'PAGE_MERGE_SESSION_EMPTY',
21 'PAGE_MERGE_SLIDE_SIZE_MISMATCH',
22 'PAGE_MERGE_PAGE_INCOMPLETE',
23 'PAGE_MERGE_PAGE_FILE_MISSING'
24 ] as const
25
26 export type PageMergeDisabledReason = (typeof PAGE_MERGE_DISABLED_REASONS)[number]
27
28 export class PageMergeError extends Error {
29 constructor(
30 readonly code: PageMergeErrorCode,
31 message: string
32 ) {
33 super(message)
34 this.name = 'PageMergeError'
35 }
36 }
37
38 export const readPageMergeErrorCode = (error: unknown): PageMergeErrorCode | null => {
39 const message = error instanceof Error ? error.message : String(error ?? '')
40 return PAGE_MERGE_ERROR_CODES.find((code) => message.includes(code)) || null
41 }
42
42 lines TYPESCRIPT