@gravity-ui/data-source
Version:
A wrapper around data fetching
114 lines (113 loc) • 4.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ClientDataManager = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _reactQuery = require("@tanstack/react-query");
var _core = require("../core");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
var ClientDataManager = exports.ClientDataManager = /*#__PURE__*/function () {
function ClientDataManager() {
var _config$defaultOption, _config$defaultOption2;
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck2.default)(this, ClientDataManager);
this.queryClient = void 0;
this.queryClient = new _reactQuery.QueryClient((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
defaultOptions: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config.defaultOptions), {}, {
queries: (0, _objectSpread2.default)({
networkMode: 'always'
}, (_config$defaultOption = config.defaultOptions) === null || _config$defaultOption === void 0 ? void 0 : _config$defaultOption.queries),
mutations: (0, _objectSpread2.default)({
networkMode: 'always'
}, (_config$defaultOption2 = config.defaultOptions) === null || _config$defaultOption2 === void 0 ? void 0 : _config$defaultOption2.mutations)
})
}));
}
return (0, _createClass2.default)(ClientDataManager, [{
key: "invalidateTag",
value: function invalidateTag(tag, invalidateOptions) {
return this.invalidateQueries({
predicate: function predicate(_ref) {
var queryKey = _ref.queryKey;
return (0, _core.hasTag)(queryKey, tag);
}
}, invalidateOptions);
}
}, {
key: "invalidateTags",
value: function invalidateTags(tags, invalidateOptions) {
return this.invalidateQueries({
predicate: function predicate(_ref2) {
var queryKey = _ref2.queryKey;
return tags.every(function (tag) {
return (0, _core.hasTag)(queryKey, tag);
});
}
}, invalidateOptions);
}
}, {
key: "invalidateSource",
value: function invalidateSource(dataSource, invalidateOptions) {
return this.invalidateQueries({
// First element is a data source name
queryKey: [dataSource.name]
}, invalidateOptions);
}
}, {
key: "resetSource",
value: function resetSource(dataSource) {
return this.queryClient.resetQueries({
// First element is a data source name
queryKey: [dataSource.name]
});
}
}, {
key: "invalidateParams",
value: function invalidateParams(dataSource, params, invalidateOptions) {
return this.invalidateQueries({
queryKey: (0, _core.composeFullKey)(dataSource, params),
exact: true
}, invalidateOptions);
}
}, {
key: "resetParams",
value: function resetParams(dataSource, params) {
return this.queryClient.resetQueries({
queryKey: (0, _core.composeFullKey)(dataSource, params),
exact: true
});
}
}, {
key: "invalidateSourceTags",
value: function invalidateSourceTags(dataSource, params, invalidateOptions) {
return this.invalidateQueries({
// Last element is a full key
queryKey: (0, _core.composeFullKey)(dataSource, params).slice(0, -1)
}, invalidateOptions);
}
}, {
key: "invalidateQueries",
value: function invalidateQueries(filters, invalidateOptions) {
var _this = this;
var invalidate = function invalidate() {
return _this.queryClient.invalidateQueries(filters);
};
this.repeatInvalidate(invalidate, invalidateOptions === null || invalidateOptions === void 0 ? void 0 : invalidateOptions.repeat);
return invalidate();
}
}, {
key: "repeatInvalidate",
value: function repeatInvalidate(invalidate, repeat) {
if (!repeat) {
return;
}
for (var i = 1; i <= repeat.count; i++) {
setTimeout(invalidate, repeat.interval * i);
}
}
}]);
}();
// #sourceMappingURL=ClientDataManager.js.map
;