change.ts 640 B

12345678910111213141516171819202122232425262728293031323334353637
  1. export interface Operation {
  2. p: number
  3. }
  4. export interface InsertOperation extends Operation {
  5. i: string
  6. t: string
  7. }
  8. export interface ChangeOperation extends Operation {
  9. c: string
  10. t: string
  11. }
  12. export interface DeleteOperation extends Operation {
  13. d: string
  14. }
  15. export interface CommentOperation extends Operation {
  16. c: string
  17. }
  18. export type NonCommentOperation =
  19. | InsertOperation
  20. | ChangeOperation
  21. | DeleteOperation
  22. export type AnyOperation = NonCommentOperation | CommentOperation
  23. export type Change<T extends AnyOperation = AnyOperation> = {
  24. id: string
  25. metadata?: {
  26. user_id: string
  27. ts: Date
  28. }
  29. op: T
  30. }