ぼざクリタグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

120 lines
3.1 KiB

  1. import { CATEGORIES,
  2. FETCH_POSTS_ORDER_FIELDS,
  3. USER_ROLES,
  4. ViewFlagBehavior } from '@/consts'
  5. import type { ReactNode } from 'react'
  6. export type Category = typeof CATEGORIES[number]
  7. export type FetchPostsOrder = `${ FetchPostsOrderField }:${ 'asc' | 'desc' }`
  8. export type FetchPostsOrderField = typeof FETCH_POSTS_ORDER_FIELDS[number]
  9. export type FetchPostsParams = {
  10. url: string
  11. title: string
  12. tags: string
  13. match: 'all' | 'any'
  14. originalCreatedFrom: string
  15. originalCreatedTo: string
  16. createdFrom: string
  17. createdTo: string
  18. updatedFrom: string
  19. updatedTo: string
  20. page: number
  21. limit: number
  22. order: FetchPostsOrder }
  23. export type Menu = MenuItem[]
  24. export type MenuItem = {
  25. name: string
  26. to: string
  27. base?: string
  28. subMenu: SubMenuItem[] }
  29. export type NicoTag = Tag & {
  30. category: 'nico'
  31. linkedTags: Tag[] }
  32. export type Post = {
  33. id: number
  34. url: string
  35. title: string
  36. thumbnail: string
  37. thumbnailBase: string
  38. tags: Tag[]
  39. viewed: boolean
  40. related: Post[]
  41. originalCreatedFrom: string | null
  42. originalCreatedBefore: string | null
  43. createdAt: string
  44. updatedAt: string }
  45. export type PostTagChange = {
  46. post: Post
  47. tag: Tag
  48. user?: User
  49. changeType: 'add' | 'remove'
  50. timestamp: string }
  51. export type SubMenuItem =
  52. | { component: ReactNode
  53. visible: boolean }
  54. | { name: string
  55. to: string
  56. visible?: boolean }
  57. export type Tag = {
  58. id: number
  59. name: string
  60. category: Category
  61. postCount: number
  62. hasWiki: boolean
  63. children?: Tag[]
  64. matchedAlias?: string | null }
  65. export type User = {
  66. id: number
  67. name: string | null
  68. inheritanceCode: string
  69. role: UserRole }
  70. export type ViewFlagBehavior = typeof ViewFlagBehavior[keyof typeof ViewFlagBehavior]
  71. export type WikiPage = {
  72. id: number
  73. title: string
  74. createdUserId: number
  75. updatedUserId: number
  76. createdAt: string
  77. updatedAt: string
  78. body: string
  79. revisionId: number
  80. pred: number | null
  81. succ: number | null }
  82. export type WikiPageChange = {
  83. revisionId: number
  84. pred: number | null
  85. succ: null
  86. wikiPage: Pick<WikiPage, 'id' | 'title'>
  87. user: Pick<User, 'id' | 'name'>
  88. kind: 'content' | 'redirect'
  89. message: string | null
  90. timestamp: string }
  91. export type WikiPageDiff = {
  92. wikiPageId: number
  93. title: string
  94. olderRevisionId: number | null
  95. newerRevisionId: number
  96. diff: WikiPageDiffDiff[] }
  97. export type WikiPageDiffDiff = {
  98. type: 'context' | 'added' | 'removed'
  99. content: string }
  100. export type UserRole = typeof USER_ROLES[number]