/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * strict-local * @format */ 'use strict'; /** * @internal * * A subclass of RecordSourceProxy that provides convenience methods for * accessing the root fields of a given query/mutation. These fields accept * complex arguments and it can be tedious to re-construct the correct sets of * arguments to pass to e.g. `getRoot().getLinkedRecord()`. */ var RelayRecordSourceSelectorProxy = /*#__PURE__*/ function () { function RelayRecordSourceSelectorProxy(recordSource, readSelector) { this.__recordSource = recordSource; this._readSelector = readSelector; } var _proto = RelayRecordSourceSelectorProxy.prototype; _proto.create = function create(dataID, typeName) { return this.__recordSource.create(dataID, typeName); }; _proto["delete"] = function _delete(dataID) { this.__recordSource["delete"](dataID); }; _proto.get = function get(dataID) { return this.__recordSource.get(dataID); }; _proto.getRoot = function getRoot() { return this.__recordSource.getRoot(); }; _proto._getRootField = function _getRootField(selector, fieldName, plural) { var field = selector.node.selections.find(function (selection) { return selection.kind === 'LinkedField' && selection.name === fieldName; }); !(field && field.kind === 'LinkedField') ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordSourceSelectorProxy#getRootField(): Cannot find root ' + 'field `%s`, no such field is defined on GraphQL document `%s`.', fieldName, selector.node.name) : require("fbjs/lib/invariant")(false) : void 0; !(field.plural === plural) ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'RelayRecordSourceSelectorProxy#getRootField(): Expected root field ' + '`%s` to be %s.', fieldName, plural ? 'plural' : 'singular') : require("fbjs/lib/invariant")(false) : void 0; return field; }; _proto.getRootField = function getRootField(fieldName) { var field = this._getRootField(this._readSelector, fieldName, false); var storageKey = require("./RelayStoreUtils").getStorageKey(field, this._readSelector.variables); return this.getRoot().getLinkedRecord(storageKey); }; _proto.getPluralRootField = function getPluralRootField(fieldName) { var field = this._getRootField(this._readSelector, fieldName, true); var storageKey = require("./RelayStoreUtils").getStorageKey(field, this._readSelector.variables); return this.getRoot().getLinkedRecords(storageKey); }; return RelayRecordSourceSelectorProxy; }(); module.exports = RelayRecordSourceSelectorProxy;