Skip to content

Commit

Permalink
3/n - Add RelayFieldError and rename RelayFieldError to TRelayFieldError
Browse files Browse the repository at this point in the history
Reviewed By: tyao1

Differential Revision: D51944690

fbshipit-source-id: 59f83c6c463a6f82c63ab0e7832f5887af6a8ef5
  • Loading branch information
itamark authored and facebook-github-bot committed Jan 10, 2024
1 parent 914794c commit 0a9d473
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
18 changes: 15 additions & 3 deletions packages/relay-runtime/store/RelayErrorTrie.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,19 @@ const RelayFeatureFlags = require('../util/RelayFeatureFlags');

const SELF: Self = Symbol('$SELF');

class RelayFieldError extends Error {
constructor(message: string, errors: Array<TRelayFieldError> = []) {
super(message);
this.name = 'RelayFieldError';
this.message = message;
this.errors = errors;
}
errors: Array<TRelayFieldError>;
}

export opaque type Self = typeof SELF;

export type RelayFieldError = $ReadOnly<{
export type TRelayFieldError = $ReadOnly<{
message: string,
path?: $ReadOnlyArray<string | number>,
severity?: 'CRITICAL' | 'ERROR' | 'WARNING',
Expand All @@ -41,7 +51,7 @@ export type RelayFieldError = $ReadOnly<{
*/
export opaque type RelayErrorTrie = Map<
string | number | Self,
RelayErrorTrie | Array<Omit<RelayFieldError, 'path'>>,
RelayErrorTrie | Array<Omit<TRelayFieldError, 'path'>>,
>;

function buildErrorTrie(
Expand Down Expand Up @@ -98,7 +108,7 @@ function buildErrorTrie(
function getErrorsByKey(
trie: RelayErrorTrie,
key: string | number,
): $ReadOnlyArray<RelayFieldError> | null {
): $ReadOnlyArray<TRelayFieldError> | null {
const value = trie.get(key);
if (value == null) {
return null;
Expand Down Expand Up @@ -168,9 +178,11 @@ module.exports = ({
buildErrorTrie,
getNestedErrorTrieByKey,
getErrorsByKey,
RelayFieldError,
}: {
SELF: typeof SELF,
buildErrorTrie: typeof buildErrorTrie,
getNestedErrorTrieByKey: typeof getNestedErrorTrieByKey,
getErrorsByKey: typeof getErrorsByKey,
RelayFieldError: Class<RelayFieldError>,
});
8 changes: 4 additions & 4 deletions packages/relay-runtime/store/RelayModernRecord.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import type {ActorIdentifier} from '../multi-actor-environment/ActorIdentifier';
import type {DataID} from '../util/RelayRuntimeTypes';
import type {RelayFieldError} from './RelayErrorTrie';
import type {TRelayFieldError} from './RelayErrorTrie';

const deepFreeze = require('../util/deepFreeze');
const {generateClientObjectClientID, isClientID} = require('./ClientID');
Expand All @@ -37,7 +37,7 @@ const warning = require('warning');

type StorageKey = Exclude<string, typeof ERRORS_KEY>;

type RelayFieldErrors = {[StorageKey]: $ReadOnlyArray<RelayFieldError>};
type RelayFieldErrors = {[StorageKey]: $ReadOnlyArray<TRelayFieldError>};

export type RecordJSON = {
/**
Expand Down Expand Up @@ -191,7 +191,7 @@ function getType(record: Record): string {
function getErrors(
record: Record,
storageKey: StorageKey,
): $ReadOnlyArray<RelayFieldError> | void {
): $ReadOnlyArray<TRelayFieldError> | void {
return record[ERRORS_KEY]?.[storageKey];
}

Expand Down Expand Up @@ -457,7 +457,7 @@ function freeze(record: Record): void {
function setErrors(
record: Record,
storageKey: StorageKey,
errors?: $ReadOnlyArray<RelayFieldError>,
errors?: $ReadOnlyArray<TRelayFieldError>,
): void {
if (__DEV__) {
warning(
Expand Down
4 changes: 2 additions & 2 deletions packages/relay-runtime/store/RelayStoreTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ import type {
UpdatableQuery,
Variables,
} from '../util/RelayRuntimeTypes';
import type {RelayFieldError} from './RelayErrorTrie';
import type {TRelayFieldError} from './RelayErrorTrie';
import type {
Record as RelayModernRecord,
RecordJSON,
Expand Down Expand Up @@ -118,7 +118,7 @@ type FieldLocation = {

type ErrorFieldLocation = {
...FieldLocation,
error: RelayFieldError,
error: TRelayFieldError,
};

export type MissingRequiredFields = $ReadOnly<
Expand Down

0 comments on commit 0a9d473

Please sign in to comment.