Remote / foldkit-remote

PredictionPart

const · packages/remote/src/diagnostics.ts:51

const PredictionPart: Data.TaggedEnum.Constructor<
  | {
      readonly _tag: 'Value'
      readonly requestId: string
      readonly mutation: Option.Option<string>
      readonly entity: string
      readonly id: string
      readonly field: string
      readonly shown: unknown
      readonly answered: unknown
    }
  | {
      readonly _tag: 'Placement'
      readonly connection: string
      readonly placed: ReadonlyArray<string>
      readonly served: ReadonlyArray<string>
    }
  | {
      readonly _tag: 'Gap'
      readonly requestId: string
      readonly mutation: Option.Option<string>
      readonly entity: string
      readonly id: string
      readonly fields: ReadonlyArray<string>
    }
>

Its type

type PredictionPart = Data.TaggedEnum<{
  Value: {
    readonly requestId: string
    readonly mutation: Option.Option<string>
    readonly entity: string
    readonly id: string
    readonly field: string
    readonly shown: unknown
    readonly answered: unknown
  }
  Placement: {
    readonly connection: string
    readonly placed: ReadonlyArray<string>
    readonly served: ReadonlyArray<string>
  }
  Gap: {
    readonly requestId: string
    readonly mutation: Option.Option<string>
    readonly entity: string
    readonly id: string
    readonly fields: ReadonlyArray<string>
  }
}>

Which part of a prediction the server's answer disagreed with. Value: a field a pending write showed, answered with another value. Placement: a list the client placed rows in, which the server's first page lists otherwise. Gap: a row whose answer left out fields the client showed, so they are read again and the row reads Loading meanwhile.