change.ts 701 B

1234567891011121314151617181920212223242526272829303132
  1. import { ThreadId } from './review-panel/review-panel'
  2. import { UserId } from './user'
  3. export interface Operation {
  4. p: number // position
  5. }
  6. export interface InsertOperation extends Operation {
  7. i: string // inserted text
  8. }
  9. export interface DeleteOperation extends Operation {
  10. d: string // deleted text
  11. }
  12. export interface CommentOperation extends Operation {
  13. c: string // comment text
  14. t: ThreadId // thread/comment id
  15. }
  16. export type EditOperation = InsertOperation | DeleteOperation
  17. export type AnyOperation = EditOperation | CommentOperation
  18. export type Change<T extends AnyOperation = AnyOperation> = {
  19. id: string
  20. metadata?: {
  21. user_id: UserId | null
  22. ts: Date
  23. }
  24. op: T
  25. }