86 lines
2.3 KiB
JavaScript
86 lines
2.3 KiB
JavaScript
/**
|
|
* 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';
|
|
|
|
var _defineProperty2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/defineProperty"));
|
|
|
|
var CONNECTION_CALLS = {
|
|
after: true,
|
|
before: true,
|
|
find: true,
|
|
first: true,
|
|
last: true,
|
|
surrounds: true
|
|
};
|
|
var REQUIRED_RANGE_CALLS = {
|
|
find: true,
|
|
first: true,
|
|
last: true
|
|
};
|
|
var config = {
|
|
CLIENT_MUTATION_ID: 'clientMutationId',
|
|
CURSOR: 'cursor',
|
|
|
|
/**
|
|
* Whether `edges` fields are expected to have `source` fields.
|
|
*/
|
|
EDGES_HAVE_SOURCE_FIELD: false,
|
|
EDGES: 'edges',
|
|
END_CURSOR: 'endCursor',
|
|
HAS_NEXT_PAGE: 'hasNextPage',
|
|
HAS_PREV_PAGE: 'hasPreviousPage',
|
|
NODE: 'node',
|
|
PAGE_INFO_TYPE: 'PageInfo',
|
|
PAGE_INFO: 'pageInfo',
|
|
START_CURSOR: 'startCursor'
|
|
};
|
|
/**
|
|
* @internal
|
|
*
|
|
* Defines logic relevant to the informal "Connection" GraphQL interface.
|
|
*/
|
|
|
|
var RelayConnectionInterface = {
|
|
inject: function inject(newConfig) {
|
|
config = newConfig;
|
|
},
|
|
get: function get() {
|
|
return config;
|
|
},
|
|
|
|
/**
|
|
* Checks whether a call exists strictly to encode which parts of a connection
|
|
* to fetch. Fields that only differ by connection call values should have the
|
|
* same identity.
|
|
*/
|
|
isConnectionCall: function isConnectionCall(call) {
|
|
return CONNECTION_CALLS.hasOwnProperty(call.name);
|
|
},
|
|
|
|
/**
|
|
* Checks whether a set of calls on a connection supply enough information to
|
|
* fetch the range fields (i.e. `edges` and `page_info`).
|
|
*/
|
|
hasRangeCalls: function hasRangeCalls(calls) {
|
|
return calls.some(function (call) {
|
|
return REQUIRED_RANGE_CALLS.hasOwnProperty(call.name);
|
|
});
|
|
},
|
|
|
|
/**
|
|
* Gets a default record representing a connection's `PAGE_INFO`.
|
|
*/
|
|
getDefaultPageInfo: function getDefaultPageInfo() {
|
|
var _ref;
|
|
|
|
return _ref = {}, (0, _defineProperty2["default"])(_ref, config.END_CURSOR, null), (0, _defineProperty2["default"])(_ref, config.HAS_NEXT_PAGE, false), (0, _defineProperty2["default"])(_ref, config.HAS_PREV_PAGE, false), (0, _defineProperty2["default"])(_ref, config.START_CURSOR, null), _ref;
|
|
}
|
|
};
|
|
module.exports = RelayConnectionInterface; |