[relay-runtime]: RecordSource exposes a toJSON method too (#36975)

* chore: RecordSource exposes a toJSON method too

* chore: Use Record from TS
This commit is contained in:
Marais Rossouw 2019-07-25 04:08:29 +10:00 committed by Eloy Durán
parent 2830f886c2
commit 803471797f

View File

@ -14,14 +14,9 @@ export interface ConnectionMetadata {
count: string | null | undefined;
}
// ./handlers/connection/RelayConnectionInterface
export interface Record {
[key: string]: unknown;
}
export interface EdgeRecord extends Record {
export interface EdgeRecord extends Record<string, unknown> {
cursor: unknown;
node: Record;
node: Record<DataID, unknown>;
}
export interface PageInfo {
@ -294,7 +289,7 @@ export type MissingFieldHandler =
kind: 'scalar';
handle: (
field: NormalizationScalarField,
record: Record | null | undefined,
record: Record<string, unknown> | null | undefined,
args: Variables,
store: ReadonlyRecordSourceProxy
) => unknown;
@ -303,7 +298,7 @@ export type MissingFieldHandler =
kind: 'linked';
handle: (
field: NormalizationLinkedField,
record: Record | null | undefined,
record: Record<string, unknown> | null | undefined,
args: Variables,
store: ReadonlyRecordSourceProxy
) => DataID | null | undefined;
@ -312,7 +307,7 @@ export type MissingFieldHandler =
kind: 'pluralLinked';
handle: (
field: NormalizationLinkedField,
record: Record | null | undefined,
record: Record<string, unknown> | null | undefined,
args: Variables,
store: ReadonlyRecordSourceProxy
) => ReadonlyArray<DataID | null | undefined> | null | undefined;
@ -416,12 +411,13 @@ interface ReadonlyRecordProxy {
}
interface RecordSource {
get(dataID: DataID): Record | null | undefined;
get(dataID: DataID): Record<string, unknown> | null | undefined;
getRecordIDs(): ReadonlyArray<DataID>;
getStatus(dataID: DataID): RecordState;
has(dataID: DataID): boolean;
load(dataID: DataID, callback: (error: Error | null | undefined, record: Record | null | undefined) => void): void;
load(dataID: DataID, callback: (error: Error | null | undefined, record: Record<string, unknown> | null | undefined) => void): void;
size(): number;
toJSON(): Record<string, unknown>;
}
export { RecordSource as IRecordSource };
@ -440,7 +436,7 @@ export interface MutableRecordSource extends RecordSource {
clear(): void;
delete(dataID: DataID): void;
remove(dataID: DataID): void;
set(dataID: DataID, record: Record): void;
set(dataID: DataID, record: Record<string, unknown>): void;
}
type Scheduler = (callback: () => void) => void;
@ -861,7 +857,7 @@ export interface Props {
interface RecordMap {
// theoretically, this should be `[dataID: DataID]`, but `DataID` is a string.
[dataID: string]: Record | undefined;
[dataID: string]: Record<string, unknown> | undefined;
}
export interface SelectorData {
[key: string]: unknown;
@ -1019,14 +1015,19 @@ declare class RelayInMemoryRecordSource implements MutableRecordSource {
constructor(records?: RecordMap);
clear(): void;
delete(dataID: DataID): void;
get(dataID: DataID): Record | null | undefined;
get(dataID: DataID): Record<string, unknown> | null | undefined;
getRecordIDs(): ReadonlyArray<DataID>;
getStatus(dataID: DataID): RecordState;
has(dataID: DataID): boolean;
load(dataID: DataID, callback: (error: Error | null | undefined, record: Record | null | undefined) => void): void;
load(
dataID: DataID,
callback: (error: Error | null | undefined, record: Record<string, unknown> | null | undefined) => void
): void;
remove(dataID: DataID): void;
set(dataID: DataID, record: Record): void;
set(dataID: DataID, record: Record<string, unknown>): void;
size(): number;
toJSON(): Record<string, unknown>;
}
export { RelayInMemoryRecordSource as RecordSource };