This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

21
frontend/node_modules/react-query/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Tanner Linsley
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

11
frontend/node_modules/react-query/README.md generated vendored Normal file
View File

@@ -0,0 +1,11 @@
<img src="https://static.scarf.sh/a.png?x-pxid=be2d8a11-9712-4c1d-9963-580b2d4fb133" />
![React Query Header](https://github.com/tannerlinsley/react-query/raw/main/media/repo-dark.png)
## Note
You're looking at the v3 version of react-query. Starting with v4, react-query is now available as [@tanstack/react-query](https://www.npmjs.com/package/@tanstack/react-query)
Find the docs at https://tanstack.com/query/latest
<!-- Use the force, Luke -->

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../lib/broadcastQueryClient-experimental/index.js",
"module": "../es/broadcastQueryClient-experimental/index.js",
"types": "../types/broadcastQueryClient-experimental/index.d.ts"
}

6
frontend/node_modules/react-query/core/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../lib/core/index.js",
"module": "../es/core/index.js",
"types": "../types/core/index.d.ts"
}

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../lib/createAsyncStoragePersistor-experimental/index.js",
"module": "../es/createAsyncStoragePersistor-experimental/index.js",
"types": "../types/createAsyncStoragePersistor-experimental/index.d.ts"
}

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../lib/createWebStoragePersistor-experimental/index.js",
"module": "../es/createWebStoragePersistor-experimental/index.js",
"types": "../types/createWebStoragePersistor-experimental/index.d.ts"
}

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../../lib/devtools/index.js",
"module": "../../es/devtools/index.js",
"types": "../../types/devtools/index.d.ts"
}

12
frontend/node_modules/react-query/devtools/index.js generated vendored Normal file
View File

@@ -0,0 +1,12 @@
if (process.env.NODE_ENV !== 'development') {
module.exports = {
ReactQueryDevtools: function () {
return null
},
ReactQueryDevtoolsPanel: function () {
return null
},
}
} else {
module.exports = require('./development')
}

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "./index.js",
"module": "./index.js",
"types": "../types/devtools/index.d.ts"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,137 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.ReactQueryCreateAsyncStoragePersistorExperimental = {}));
}(this, (function (exports) { 'use strict';
function _await(value, then, direct) {
if (direct) {
return then ? then(value) : value;
}
if (!value || !value.then) {
value = Promise.resolve(value);
}
return then ? value.then(then) : value;
}
function _async(f) {
return function () {
for (var args = [], i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
try {
return Promise.resolve(f.apply(this, args));
} catch (e) {
return Promise.reject(e);
}
};
}
function _empty() {}
function _invokeIgnored(body) {
var result = body();
if (result && result.then) {
return result.then(_empty);
}
}
var createAsyncStoragePersistor = function createAsyncStoragePersistor(_ref) {
var storage = _ref.storage,
_ref$key = _ref.key,
key = _ref$key === void 0 ? "REACT_QUERY_OFFLINE_CACHE" : _ref$key,
_ref$throttleTime = _ref.throttleTime,
throttleTime = _ref$throttleTime === void 0 ? 1000 : _ref$throttleTime,
_ref$serialize = _ref.serialize,
serialize = _ref$serialize === void 0 ? JSON.stringify : _ref$serialize,
_ref$deserialize = _ref.deserialize,
deserialize = _ref$deserialize === void 0 ? JSON.parse : _ref$deserialize;
return {
persistClient: asyncThrottle(function (persistedClient) {
return storage.setItem(key, serialize(persistedClient));
}, {
interval: throttleTime
}),
restoreClient: _async(function () {
return _await(storage.getItem(key), function (cacheString) {
if (!cacheString) {
return;
}
return deserialize(cacheString);
});
}),
removeClient: function removeClient() {
return storage.removeItem(key);
}
};
};
function asyncThrottle(func, _temp) {
var _ref2 = _temp === void 0 ? {} : _temp,
_ref2$interval = _ref2.interval,
interval = _ref2$interval === void 0 ? 1000 : _ref2$interval,
_ref2$limit = _ref2.limit,
limit = _ref2$limit === void 0 ? 1 : _ref2$limit;
if (typeof func !== 'function') throw new Error('argument is not function.');
var running = {
current: false
};
var lastTime = 0;
var timeout;
var queue = [];
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _async(function () {
if (running.current) {
lastTime = Date.now();
if (queue.length > limit) {
queue.shift();
}
queue.push(args);
clearTimeout(timeout);
}
return _invokeIgnored(function () {
if (Date.now() - lastTime > interval) {
running.current = true;
return _await(func.apply(void 0, args), function () {
lastTime = Date.now();
running.current = false;
});
} else {
if (queue.length > 0) {
var lastArgs = queue[queue.length - 1];
timeout = setTimeout(_async(function () {
return _invokeIgnored(function () {
if (!running.current) {
running.current = true;
return _await(func.apply(void 0, lastArgs), function () {
running.current = false;
});
}
});
}), interval);
}
}
});
})();
};
}
exports.createAsyncStoragePersistor = createAsyncStoragePersistor;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=createAsyncStoragePersistor-experimental.development.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).ReactQueryCreateAsyncStoragePersistorExperimental={})}(this,(function(e){"use strict";function t(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function n(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return Promise.resolve(e.apply(this,t))}catch(e){return Promise.reject(e)}}}function r(){}function i(e){var t=e();if(t&&t.then)return t.then(r)}function o(e,r){var o=void 0===r?{}:r,u=o.interval,f=void 0===u?1e3:u,c=o.limit,s=void 0===c?1:c;if("function"!=typeof e)throw new Error("argument is not function.");var a,l={current:!1},v=0,d=[];return function(){for(var r=arguments.length,o=new Array(r),u=0;u<r;u++)o[u]=arguments[u];return n((function(){return l.current&&(v=Date.now(),d.length>s&&d.shift(),d.push(o),clearTimeout(a)),i((function(){if(Date.now()-v>f)return l.current=!0,t(e.apply(void 0,o),(function(){v=Date.now(),l.current=!1}));if(d.length>0){var r=d[d.length-1];a=setTimeout(n((function(){return i((function(){if(!l.current)return l.current=!0,t(e.apply(void 0,r),(function(){l.current=!1}))}))})),f)}}))}))()}}e.createAsyncStoragePersistor=function(e){var r=e.storage,i=e.key,u=void 0===i?"REACT_QUERY_OFFLINE_CACHE":i,f=e.throttleTime,c=void 0===f?1e3:f,s=e.serialize,a=void 0===s?JSON.stringify:s,l=e.deserialize,v=void 0===l?JSON.parse:l;return{persistClient:o((function(e){return r.setItem(u,a(e))}),{interval:c}),restoreClient:n((function(){return t(r.getItem(u),(function(e){if(e)return v(e)}))})),removeClient:function(){return r.removeItem(u)}}},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=createAsyncStoragePersistor-experimental.production.min.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"createAsyncStoragePersistor-experimental.production.min.js","sources":["../src/createAsyncStoragePersistor-experimental/index.ts"],"sourcesContent":["import { PersistedClient, Persistor } from '../persistQueryClient-experimental'\n\ninterface AsyncStorage {\n getItem: (key: string) => Promise<string | null>\n setItem: (key: string, value: string) => Promise<void>\n removeItem: (key: string) => Promise<void>\n}\n\ninterface CreateAsyncStoragePersistorOptions {\n /** The storage client used for setting an retrieving items from cache */\n storage: AsyncStorage\n /** The key to use when storing the cache */\n key?: string\n /** To avoid spamming,\n * pass a time in ms to throttle saving the cache to disk */\n throttleTime?: number\n /**\n * How to serialize the data to storage.\n * @default `JSON.stringify`\n */\n serialize?: (client: PersistedClient) => string\n /**\n * How to deserialize the data from storage.\n * @default `JSON.parse`\n */\n deserialize?: (cachedString: string) => PersistedClient\n}\n\nexport const createAsyncStoragePersistor = ({\n storage,\n key = `REACT_QUERY_OFFLINE_CACHE`,\n throttleTime = 1000,\n serialize = JSON.stringify,\n deserialize = JSON.parse,\n}: CreateAsyncStoragePersistorOptions): Persistor => {\n return {\n persistClient: asyncThrottle(\n persistedClient => storage.setItem(key, serialize(persistedClient)),\n { interval: throttleTime }\n ),\n restoreClient: async () => {\n const cacheString = await storage.getItem(key)\n\n if (!cacheString) {\n return\n }\n\n return deserialize(cacheString) as PersistedClient\n },\n removeClient: () => storage.removeItem(key),\n }\n}\n\nfunction asyncThrottle<Args extends readonly unknown[], Result>(\n func: (...args: Args) => Promise<Result>,\n { interval = 1000, limit = 1 }: { interval?: number; limit?: number } = {}\n) {\n if (typeof func !== 'function') throw new Error('argument is not function.')\n const running = { current: false }\n let lastTime = 0\n let timeout: number\n const queue: Array<Args> = []\n return (...args: Args) =>\n (async () => {\n if (running.current) {\n lastTime = Date.now()\n if (queue.length > limit) {\n queue.shift()\n }\n\n queue.push(args)\n clearTimeout(timeout)\n }\n if (Date.now() - lastTime > interval) {\n running.current = true\n await func(...args)\n lastTime = Date.now()\n running.current = false\n } else {\n if (queue.length > 0) {\n const lastArgs = queue[queue.length - 1]!\n timeout = setTimeout(async () => {\n if (!running.current) {\n running.current = true\n await func(...lastArgs)\n running.current = false\n }\n }, interval)\n }\n }\n })()\n}\n"],"names":["value","then","direct","Promise","resolve","f","args","i","arguments","length","apply","this","e","reject","body","result","asyncThrottle","func","interval","limit","Error","timeout","running","current","lastTime","queue","_async","Date","now","shift","push","clearTimeout","lastArgs","setTimeout","storage","key","throttleTime","serialize","JSON","stringify","deserialize","parse","persistClient","persistedClient","setItem","restoreClient","getItem","cacheString","removeClient","removeItem"],"mappings":"+OAoFO,WAAgBA,EAAOC,EAAMC,UAC/BA,EACID,EAAOA,EAAKD,GAASA,GAExBA,GAAUA,EAAMC,OACpBD,EAAQG,QAAQC,QAAQJ,IAElBC,EAAOD,EAAMC,KAAKA,GAAQD,GArB3B,WAAgBK,UACf,eACD,IAAIC,EAAO,GAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAChDD,EAAKC,GAAKC,UAAUD,cAGbJ,QAAQC,QAAQC,EAAEK,MAAMC,KAAML,IACpC,MAAMM,UACAT,QAAQU,OAAOD,KAkhBlB,cAtDA,WAAwBE,OAC1BC,EAASD,OACTC,GAAUA,EAAOd,YACbc,EAAOd,QAxfhB,SAASe,EACPC,sBACwE,SAAtEC,SAAAA,aAAW,UAAMC,MAAAA,aAAQ,OAEP,mBAATF,EAAqB,MAAM,IAAIG,MAAM,iCAG5CC,EAFEC,EAAU,CAAEC,SAAS,GACvBC,EAAW,EAETC,EAAqB,UACpB,sCAAInB,2BAAAA,yBACToB,qBACMJ,EAAQC,UACVC,EAAWG,KAAKC,MACZH,EAAMhB,OAASU,GACjBM,EAAMI,QAGRJ,EAAMK,KAAKxB,GACXyB,aAAaV,qBAEXM,KAAKC,MAAQJ,EAAWN,SAC1BI,EAAQC,SAAU,IACZN,eAAQX,eACdkB,EAAWG,KAAKC,MAChBN,EAAQC,SAAU,QAEdE,EAAMhB,OAAS,OACXuB,EAAWP,EAAMA,EAAMhB,OAAS,GACtCY,EAAUY,kDACHX,EAAQC,eACXD,EAAQC,SAAU,IACZN,eAAQe,eACdV,EAAQC,SAAU,WAEnBL,SAxBTQ,kCAnCuC,gBACzCQ,IAAAA,YACAC,IAAAA,+CACAC,aAAAA,aAAe,UACfC,UAAAA,aAAYC,KAAKC,gBACjBC,YAAAA,aAAcF,KAAKG,cAEZ,CACLC,cAAe1B,GACb,SAAA2B,UAAmBT,EAAQU,QAAQT,EAAKE,EAAUM,MAClD,CAAEzB,SAAUkB,IAEdS,qCAC4BX,EAAQY,QAAQX,aAApCY,MAEDA,SAIEP,EAAYO,SAErBC,aAAc,kBAAMd,EAAQe,WAAWd"}

View File

@@ -0,0 +1,147 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.ReactQueryCreateWebStoragePersistorExperimental = {}));
}(this, (function (exports) { 'use strict';
function _extends() {
_extends = Object.assign || function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
function noop() {
return undefined;
}
function createWebStoragePersistor(_ref) {
var storage = _ref.storage,
_ref$key = _ref.key,
key = _ref$key === void 0 ? "REACT_QUERY_OFFLINE_CACHE" : _ref$key,
_ref$throttleTime = _ref.throttleTime,
throttleTime = _ref$throttleTime === void 0 ? 1000 : _ref$throttleTime,
_ref$serialize = _ref.serialize,
serialize = _ref$serialize === void 0 ? JSON.stringify : _ref$serialize,
_ref$deserialize = _ref.deserialize,
deserialize = _ref$deserialize === void 0 ? JSON.parse : _ref$deserialize;
//try to save data to storage
function trySave(persistedClient) {
try {
storage.setItem(key, serialize(persistedClient));
} catch (_unused) {
return false;
}
return true;
}
if (typeof storage !== 'undefined') {
return {
persistClient: throttle(function (persistedClient) {
if (trySave(persistedClient) !== true) {
var mutations = [].concat(persistedClient.clientState.mutations);
var queries = [].concat(persistedClient.clientState.queries);
var _client = _extends({}, persistedClient, {
clientState: {
mutations: mutations,
queries: queries
}
}); // sort queries by dataUpdatedAt (oldest first)
var sortedQueries = [].concat(queries).sort(function (a, b) {
return a.state.dataUpdatedAt - b.state.dataUpdatedAt;
}); // clean old queries and try to save
var _loop = function _loop() {
var oldestData = sortedQueries.shift();
_client.clientState.queries = queries.filter(function (q) {
return q !== oldestData;
});
if (trySave(_client)) {
return {
v: void 0
}; // save success
}
};
while (sortedQueries.length > 0) {
var _ret = _loop();
if (typeof _ret === "object") return _ret.v;
} // clean mutations and try to save
while (mutations.shift()) {
if (trySave(_client)) {
return; // save success
}
}
}
}, throttleTime),
restoreClient: function restoreClient() {
var cacheString = storage.getItem(key);
if (!cacheString) {
return;
}
return deserialize(cacheString);
},
removeClient: function removeClient() {
storage.removeItem(key);
}
};
}
return {
persistClient: noop,
restoreClient: noop,
removeClient: noop
};
}
function throttle(func, wait) {
if (wait === void 0) {
wait = 100;
}
var timer = null;
var params;
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
params = args;
if (timer === null) {
timer = setTimeout(function () {
func.apply(void 0, params);
timer = null;
}, wait);
}
};
}
exports.createWebStoragePersistor = createWebStoragePersistor;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=createWebStoragePersistor-experimental.development.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).ReactQueryCreateWebStoragePersistorExperimental={})}(this,(function(t){"use strict";function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function r(){}function n(t,e){void 0===e&&(e=100);var r,n=null;return function(){for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];r=o,null===n&&(n=setTimeout((function(){t.apply(void 0,r),n=null}),e))}}t.createWebStoragePersistor=function(t){var i=t.storage,o=t.key,a=void 0===o?"REACT_QUERY_OFFLINE_CACHE":o,u=t.throttleTime,f=void 0===u?1e3:u,s=t.serialize,c=void 0===s?JSON.stringify:s,l=t.deserialize,d=void 0===l?JSON.parse:l;function v(t){try{i.setItem(a,c(t))}catch(t){return!1}return!0}return void 0!==i?{persistClient:n((function(t){if(!0!==v(t)){for(var r=[].concat(t.clientState.mutations),n=[].concat(t.clientState.queries),i=e({},t,{clientState:{mutations:r,queries:n}}),o=[].concat(n).sort((function(t,e){return t.state.dataUpdatedAt-e.state.dataUpdatedAt})),a=function(){var t=o.shift();if(i.clientState.queries=n.filter((function(e){return e!==t})),v(i))return{v:void 0}};o.length>0;){var u=a();if("object"==typeof u)return u.v}for(;r.shift();)if(v(i))return}}),f),restoreClient:function(){var t=i.getItem(a);if(t)return d(t)},removeClient:function(){i.removeItem(a)}}:{persistClient:r,restoreClient:r,removeClient:r}},Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=createWebStoragePersistor-experimental.production.min.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,124 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react-query')) :
typeof define === 'function' && define.amd ? define(['exports', 'react-query'], factory) :
(global = global || self, factory(global.ReactQueryPersistQueryClientExperimental = {}, global.ReactQuery));
}(this, (function (exports, reactQuery) { 'use strict';
// TYPES
// FUNCTIONS
var logger = console;
function getLogger() {
return logger;
}
function _await(value, then, direct) {
if (direct) {
return then ? then(value) : value;
}
if (!value || !value.then) {
value = Promise.resolve(value);
}
return then ? value.then(then) : value;
}
function _catch(body, recover) {
try {
var result = body();
} catch (e) {
return recover(e);
}
if (result && result.then) {
return result.then(void 0, recover);
}
return result;
}
function _continue(value, then) {
return value && value.then ? value.then(then) : then(value);
}
function _empty() {}
function _invokeIgnored(body) {
var result = body();
if (result && result.then) {
return result.then(_empty);
}
}
function _async(f) {
return function () {
for (var args = [], i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
try {
return Promise.resolve(f.apply(this, args));
} catch (e) {
return Promise.reject(e);
}
};
}
var persistQueryClient = _async(function (_ref) {
var queryClient = _ref.queryClient,
persistor = _ref.persistor,
_ref$maxAge = _ref.maxAge,
maxAge = _ref$maxAge === void 0 ? 1000 * 60 * 60 * 24 : _ref$maxAge,
_ref$buster = _ref.buster,
buster = _ref$buster === void 0 ? '' : _ref$buster,
hydrateOptions = _ref.hydrateOptions,
dehydrateOptions = _ref.dehydrateOptions;
return _invokeIgnored(function () {
if (typeof window !== 'undefined') {
// Subscribe to changes
var saveClient = function saveClient() {
var persistClient = {
buster: buster,
timestamp: Date.now(),
clientState: reactQuery.dehydrate(queryClient, dehydrateOptions)
};
persistor.persistClient(persistClient);
}; // Attempt restore
return _continue(_catch(function () {
return _await(persistor.restoreClient(), function (persistedClient) {
if (persistedClient) {
if (persistedClient.timestamp) {
var expired = Date.now() - persistedClient.timestamp > maxAge;
var busted = persistedClient.buster !== buster;
if (expired || busted) {
persistor.removeClient();
} else {
reactQuery.hydrate(queryClient, persistedClient.clientState, hydrateOptions);
}
} else {
persistor.removeClient();
}
}
});
}, function (err) {
getLogger().error(err);
getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');
persistor.removeClient();
}), function () {
// Subscribe to changes in the query cache to trigger the save
queryClient.getQueryCache().subscribe(saveClient);
});
}
});
});
exports.persistQueryClient = persistQueryClient;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=persistQueryClient-experimental.development.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react-query")):"function"==typeof define&&define.amd?define(["exports","react-query"],t):t((e=e||self).ReactQueryPersistQueryClientExperimental={},e.ReactQuery)}(this,(function(e,t){"use strict";var r=console;function n(){return r}function i(){}var o,u=(o=function(e){var r=e.queryClient,o=e.persistor,u=e.maxAge,a=void 0===u?864e5:u,c=e.buster,s=void 0===c?"":c,f=e.hydrateOptions,d=e.dehydrateOptions;return function(e){var t=e();if(t&&t.then)return t.then(i)}((function(){if("undefined"!=typeof window){var e=function(){var e={buster:s,timestamp:Date.now(),clientState:t.dehydrate(r,d)};o.persistClient(e)};return function(e,t){return e&&e.then?e.then(t):t(e)}(function(e,t){try{var r=e()}catch(e){return t(e)}return r&&r.then?r.then(void 0,t):r}((function(){return e=o.restoreClient(),n=function(e){if(e)if(e.timestamp){var n=Date.now()-e.timestamp>a,i=e.buster!==s;n||i?o.removeClient():t.hydrate(r,e.clientState,f)}else o.removeClient()},i?n?n(e):e:(e&&e.then||(e=Promise.resolve(e)),n?e.then(n):e);var e,n,i}),(function(e){n().error(e),n().warn("Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded."),o.removeClient()})),(function(){r.getQueryCache().subscribe(e)}))}}))},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];try{return Promise.resolve(o.apply(this,e))}catch(e){return Promise.reject(e)}});e.persistQueryClient=u,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=persistQueryClient-experimental.production.min.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"persistQueryClient-experimental.production.min.js","sources":["../src/core/logger.ts","../src/persistQueryClient-experimental/index.ts"],"sourcesContent":["// TYPES\n\nexport interface Logger {\n log: LogFunction\n warn: LogFunction\n error: LogFunction\n}\n\ntype LogFunction = (...args: any[]) => void\n\n// FUNCTIONS\n\nlet logger: Logger = console\n\nexport function getLogger(): Logger {\n return logger\n}\n\nexport function setLogger(newLogger: Logger) {\n logger = newLogger\n}\n","import { QueryClient } from '../core'\nimport { getLogger } from '../core/logger'\nimport {\n dehydrate,\n DehydratedState,\n DehydrateOptions,\n HydrateOptions,\n hydrate,\n} from 'react-query'\nimport { Promisable } from 'type-fest'\n\nexport interface Persistor {\n persistClient(persistClient: PersistedClient): Promisable<void>\n restoreClient(): Promisable<PersistedClient | undefined>\n removeClient(): Promisable<void>\n}\n\nexport interface PersistedClient {\n timestamp: number\n buster: string\n clientState: DehydratedState\n}\n\nexport interface PersistQueryClientOptions {\n /** The QueryClient to persist */\n queryClient: QueryClient\n /** The Persistor interface for storing and restoring the cache\n * to/from a persisted location */\n persistor: Persistor\n /** The max-allowed age of the cache.\n * If a persisted cache is found that is older than this\n * time, it will be discarded */\n maxAge?: number\n /** A unique string that can be used to forcefully\n * invalidate existing caches if they do not share the same buster string */\n buster?: string\n /** The options passed to the hydrate function */\n hydrateOptions?: HydrateOptions\n /** The options passed to the dehydrate function */\n dehydrateOptions?: DehydrateOptions\n}\n\nexport async function persistQueryClient({\n queryClient,\n persistor,\n maxAge = 1000 * 60 * 60 * 24,\n buster = '',\n hydrateOptions,\n dehydrateOptions,\n}: PersistQueryClientOptions) {\n if (typeof window !== 'undefined') {\n // Subscribe to changes\n const saveClient = () => {\n const persistClient: PersistedClient = {\n buster,\n timestamp: Date.now(),\n clientState: dehydrate(queryClient, dehydrateOptions),\n }\n\n persistor.persistClient(persistClient)\n }\n\n // Attempt restore\n try {\n const persistedClient = await persistor.restoreClient()\n\n if (persistedClient) {\n if (persistedClient.timestamp) {\n const expired = Date.now() - persistedClient.timestamp > maxAge\n const busted = persistedClient.buster !== buster\n if (expired || busted) {\n persistor.removeClient()\n } else {\n hydrate(queryClient, persistedClient.clientState, hydrateOptions)\n }\n } else {\n persistor.removeClient()\n }\n }\n } catch (err) {\n getLogger().error(err)\n getLogger().warn(\n 'Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.'\n )\n persistor.removeClient()\n }\n\n // Subscribe to changes in the query cache to trigger the save\n queryClient.getQueryCache().subscribe(saveClient)\n }\n}\n"],"names":["logger","console","getLogger","f","persistQueryClient","queryClient","persistor","maxAge","buster","hydrateOptions","dehydrateOptions","body","result","then","window","saveClient","persistClient","timestamp","Date","now","clientState","dehydrate","value","recover","e","restoreClient","persistedClient","expired","busted","removeClient","hydrate","direct","Promise","resolve","err","error","warn","getQueryCache","subscribe","args","i","arguments","length","apply","this","reject"],"mappings":"0RAYA,IAAIA,EAAiBC,QAEd,SAASC,WACPF,ECilBF,kBA1hBgBG,EA5BDC,GA4BCD,kBA3BrBE,IAAAA,YACAC,IAAAA,cACAC,OAAAA,aAAS,YACTC,OAAAA,aAAS,KACTC,IAAAA,eACAC,IAAAA,wBA0fK,SAAwBC,OAC1BC,EAASD,OACTC,GAAUA,EAAOC,YACbD,EAAOC,wBA3fQ,oBAAXC,YAEHC,EAAa,eACXC,EAAiC,CACrCR,OAAAA,EACAS,UAAWC,KAAKC,MAChBC,YAAaC,YAAUhB,EAAaK,IAGtCJ,EAAUU,cAAcA,WA2CvB,SAAmBM,EAAOT,UACzBS,GAASA,EAAMT,KAAOS,EAAMT,KAAKA,GAAQA,EAAKS,IA2c/C,SAAgBX,EAAMY,WAEvBX,EAASD,IACZ,MAAMa,UACAD,EAAQC,UAEZZ,GAAUA,EAAOC,KACbD,EAAOC,UAAK,EAAQU,GAErBX,sBAveeU,EApBahB,EAAUmB,gBAoBhBZ,WApBlBa,MAEFA,KACEA,EAAgBT,eACZU,EAAUT,KAAKC,MAAQO,EAAgBT,UAAYV,EACnDqB,EAASF,EAAgBlB,SAAWA,EACtCmB,GAAWC,EACbtB,EAAUuB,eAEVC,UAAQzB,EAAaqB,EAAgBN,YAAaX,QAGpDH,EAAUuB,gBASfE,EACIlB,EAAOA,EAAKS,GAASA,GAExBA,GAAUA,EAAMT,OACpBS,EAAQU,QAAQC,QAAQX,IAElBT,EAAOS,EAAMT,KAAKA,GAAQS,GAP3B,IAAgBA,EAAOT,EAAMkB,cALvBG,GACPhC,IAAYiC,MAAMD,GAClBhC,IAAYkC,KACV,4IAEF9B,EAAUuB,8BAIZxB,EAAYgC,gBAAgBC,UAAUvB,WAjBlC,eACD,IAAIwB,EAAO,GAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAChDD,EAAKC,GAAKC,UAAUD,cAGbR,QAAQC,QAAQ9B,EAAEwC,MAAMC,KAAML,IACpC,MAAMf,UACAQ,QAAQa,OAAOrB"}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,35 @@
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react-query')) :
typeof define === 'function' && define.amd ? define(['exports', 'react-query'], factory) :
(global = global || self, factory(global.ReactQueryHydration = {}, global.ReactQuery));
}(this, (function (exports, reactQuery) { 'use strict';
Object.defineProperty(exports, 'Hydrate', {
enumerable: true,
get: function () {
return reactQuery.Hydrate;
}
});
Object.defineProperty(exports, 'dehydrate', {
enumerable: true,
get: function () {
return reactQuery.dehydrate;
}
});
Object.defineProperty(exports, 'hydrate', {
enumerable: true,
get: function () {
return reactQuery.hydrate;
}
});
Object.defineProperty(exports, 'useHydrate', {
enumerable: true,
get: function () {
return reactQuery.useHydrate;
}
});
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=react-query-hydration.development.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"react-query-hydration.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,2 @@
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react-query")):"function"==typeof define&&define.amd?define(["exports","react-query"],t):t((e=e||self).ReactQueryHydration={},e.ReactQuery)}(this,(function(e,t){"use strict";Object.defineProperty(e,"Hydrate",{enumerable:!0,get:function(){return t.Hydrate}}),Object.defineProperty(e,"dehydrate",{enumerable:!0,get:function(){return t.dehydrate}}),Object.defineProperty(e,"hydrate",{enumerable:!0,get:function(){return t.hydrate}}),Object.defineProperty(e,"useHydrate",{enumerable:!0,get:function(){return t.useHydrate}}),Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=react-query-hydration.production.min.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"react-query-hydration.production.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,80 @@
import { BroadcastChannel } from 'broadcast-channel';
export function broadcastQueryClient(_ref) {
var queryClient = _ref.queryClient,
_ref$broadcastChannel = _ref.broadcastChannel,
broadcastChannel = _ref$broadcastChannel === void 0 ? 'react-query' : _ref$broadcastChannel;
var transaction = false;
var tx = function tx(cb) {
transaction = true;
cb();
transaction = false;
};
var channel = new BroadcastChannel(broadcastChannel, {
webWorkerSupport: false
});
var queryCache = queryClient.getQueryCache();
queryClient.getQueryCache().subscribe(function (queryEvent) {
var _queryEvent$action;
if (transaction || !(queryEvent == null ? void 0 : queryEvent.query)) {
return;
}
var _queryEvent$query = queryEvent.query,
queryHash = _queryEvent$query.queryHash,
queryKey = _queryEvent$query.queryKey,
state = _queryEvent$query.state;
if (queryEvent.type === 'queryUpdated' && ((_queryEvent$action = queryEvent.action) == null ? void 0 : _queryEvent$action.type) === 'success') {
channel.postMessage({
type: 'queryUpdated',
queryHash: queryHash,
queryKey: queryKey,
state: state
});
}
if (queryEvent.type === 'queryRemoved') {
channel.postMessage({
type: 'queryRemoved',
queryHash: queryHash,
queryKey: queryKey
});
}
});
channel.onmessage = function (action) {
if (!(action == null ? void 0 : action.type)) {
return;
}
tx(function () {
var type = action.type,
queryHash = action.queryHash,
queryKey = action.queryKey,
state = action.state;
if (type === 'queryUpdated') {
var query = queryCache.get(queryHash);
if (query) {
query.setState(state);
return;
}
queryCache.build(queryClient, {
queryKey: queryKey,
queryHash: queryHash
}, state);
} else if (type === 'queryRemoved') {
var _query = queryCache.get(queryHash);
if (_query) {
queryCache.remove(_query);
}
}
});
};
}

View File

@@ -0,0 +1,95 @@
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { Subscribable } from './subscribable';
import { isServer } from './utils';
export var FocusManager = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(FocusManager, _Subscribable);
function FocusManager() {
var _this;
_this = _Subscribable.call(this) || this;
_this.setup = function (onFocus) {
var _window;
if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {
var listener = function listener() {
return onFocus();
}; // Listen to visibillitychange and focus
window.addEventListener('visibilitychange', listener, false);
window.addEventListener('focus', listener, false);
return function () {
// Be sure to unsubscribe if a new handler is set
window.removeEventListener('visibilitychange', listener);
window.removeEventListener('focus', listener);
};
}
};
return _this;
}
var _proto = FocusManager.prototype;
_proto.onSubscribe = function onSubscribe() {
if (!this.cleanup) {
this.setEventListener(this.setup);
}
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.hasListeners()) {
var _this$cleanup;
(_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
this.cleanup = undefined;
}
};
_proto.setEventListener = function setEventListener(setup) {
var _this$cleanup2,
_this2 = this;
this.setup = setup;
(_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
this.cleanup = setup(function (focused) {
if (typeof focused === 'boolean') {
_this2.setFocused(focused);
} else {
_this2.onFocus();
}
});
};
_proto.setFocused = function setFocused(focused) {
this.focused = focused;
if (focused) {
this.onFocus();
}
};
_proto.onFocus = function onFocus() {
this.listeners.forEach(function (listener) {
listener();
});
};
_proto.isFocused = function isFocused() {
if (typeof this.focused === 'boolean') {
return this.focused;
} // document global can be unavailable in react native
if (typeof document === 'undefined') {
return true;
}
return [undefined, 'visible', 'prerender'].includes(document.visibilityState);
};
return FocusManager;
}(Subscribable);
export var focusManager = new FocusManager();

97
frontend/node_modules/react-query/es/core/hydration.js generated vendored Normal file
View File

@@ -0,0 +1,97 @@
import _extends from "@babel/runtime/helpers/esm/extends";
// TYPES
// FUNCTIONS
function dehydrateMutation(mutation) {
return {
mutationKey: mutation.options.mutationKey,
state: mutation.state
};
} // Most config is not dehydrated but instead meant to configure again when
// consuming the de/rehydrated data, typically with useQuery on the client.
// Sometimes it might make sense to prefetch data on the server and include
// in the html-payload, but not consume it on the initial render.
function dehydrateQuery(query) {
return {
state: query.state,
queryKey: query.queryKey,
queryHash: query.queryHash
};
}
function defaultShouldDehydrateMutation(mutation) {
return mutation.state.isPaused;
}
function defaultShouldDehydrateQuery(query) {
return query.state.status === 'success';
}
export function dehydrate(client, options) {
var _options, _options2;
options = options || {};
var mutations = [];
var queries = [];
if (((_options = options) == null ? void 0 : _options.dehydrateMutations) !== false) {
var shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;
client.getMutationCache().getAll().forEach(function (mutation) {
if (shouldDehydrateMutation(mutation)) {
mutations.push(dehydrateMutation(mutation));
}
});
}
if (((_options2 = options) == null ? void 0 : _options2.dehydrateQueries) !== false) {
var shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;
client.getQueryCache().getAll().forEach(function (query) {
if (shouldDehydrateQuery(query)) {
queries.push(dehydrateQuery(query));
}
});
}
return {
mutations: mutations,
queries: queries
};
}
export function hydrate(client, dehydratedState, options) {
if (typeof dehydratedState !== 'object' || dehydratedState === null) {
return;
}
var mutationCache = client.getMutationCache();
var queryCache = client.getQueryCache();
var mutations = dehydratedState.mutations || [];
var queries = dehydratedState.queries || [];
mutations.forEach(function (dehydratedMutation) {
var _options$defaultOptio;
mutationCache.build(client, _extends({}, options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations, {
mutationKey: dehydratedMutation.mutationKey
}), dehydratedMutation.state);
});
queries.forEach(function (dehydratedQuery) {
var _options$defaultOptio2;
var query = queryCache.get(dehydratedQuery.queryHash); // Do not hydrate if an existing query exists with newer data
if (query) {
if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) {
query.setState(dehydratedQuery.state);
}
return;
} // Restore query
queryCache.build(client, _extends({}, options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries, {
queryKey: dehydratedQuery.queryKey,
queryHash: dehydratedQuery.queryHash
}), dehydratedQuery.state);
});
}

17
frontend/node_modules/react-query/es/core/index.js generated vendored Normal file
View File

@@ -0,0 +1,17 @@
export { CancelledError } from './retryer';
export { QueryCache } from './queryCache';
export { QueryClient } from './queryClient';
export { QueryObserver } from './queryObserver';
export { QueriesObserver } from './queriesObserver';
export { InfiniteQueryObserver } from './infiniteQueryObserver';
export { MutationCache } from './mutationCache';
export { MutationObserver } from './mutationObserver';
export { setLogger } from './logger';
export { notifyManager } from './notifyManager';
export { focusManager } from './focusManager';
export { onlineManager } from './onlineManager';
export { hashQueryKey, isError } from './utils';
export { isCancelledError } from './retryer';
export { dehydrate, hydrate } from './hydration'; // Types
export * from './types';

View File

@@ -0,0 +1,153 @@
import { isCancelable } from './retryer';
import { getAbortController } from './utils';
export function infiniteQueryBehavior() {
return {
onFetch: function onFetch(context) {
context.fetchFn = function () {
var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;
var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;
var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;
var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;
var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';
var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';
var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];
var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];
var abortController = getAbortController();
var abortSignal = abortController == null ? void 0 : abortController.signal;
var newPageParams = oldPageParams;
var cancelled = false; // Get query function
var queryFn = context.options.queryFn || function () {
return Promise.reject('Missing queryFn');
};
var buildNewPages = function buildNewPages(pages, param, page, previous) {
newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);
return previous ? [page].concat(pages) : [].concat(pages, [page]);
}; // Create function to fetch a page
var fetchPage = function fetchPage(pages, manual, param, previous) {
if (cancelled) {
return Promise.reject('Cancelled');
}
if (typeof param === 'undefined' && !manual && pages.length) {
return Promise.resolve(pages);
}
var queryFnContext = {
queryKey: context.queryKey,
signal: abortSignal,
pageParam: param,
meta: context.meta
};
var queryFnResult = queryFn(queryFnContext);
var promise = Promise.resolve(queryFnResult).then(function (page) {
return buildNewPages(pages, param, page, previous);
});
if (isCancelable(queryFnResult)) {
var promiseAsAny = promise;
promiseAsAny.cancel = queryFnResult.cancel;
}
return promise;
};
var promise; // Fetch first page?
if (!oldPages.length) {
promise = fetchPage([]);
} // Fetch next page?
else if (isFetchingNextPage) {
var manual = typeof pageParam !== 'undefined';
var param = manual ? pageParam : getNextPageParam(context.options, oldPages);
promise = fetchPage(oldPages, manual, param);
} // Fetch previous page?
else if (isFetchingPreviousPage) {
var _manual = typeof pageParam !== 'undefined';
var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);
promise = fetchPage(oldPages, _manual, _param, true);
} // Refetch pages
else {
(function () {
newPageParams = [];
var manual = typeof context.options.getNextPageParam === 'undefined';
var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page
promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages
var _loop = function _loop(i) {
promise = promise.then(function (pages) {
var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;
if (shouldFetchNextPage) {
var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);
return fetchPage(pages, manual, _param2);
}
return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));
});
};
for (var i = 1; i < oldPages.length; i++) {
_loop(i);
}
})();
}
var finalPromise = promise.then(function (pages) {
return {
pages: pages,
pageParams: newPageParams
};
});
var finalPromiseAsAny = finalPromise;
finalPromiseAsAny.cancel = function () {
cancelled = true;
abortController == null ? void 0 : abortController.abort();
if (isCancelable(promise)) {
promise.cancel();
}
};
return finalPromise;
};
}
};
}
export function getNextPageParam(options, pages) {
return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);
}
export function getPreviousPageParam(options, pages) {
return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);
}
/**
* Checks if there is a next page.
* Returns `undefined` if it cannot be determined.
*/
export function hasNextPage(options, pages) {
if (options.getNextPageParam && Array.isArray(pages)) {
var nextPageParam = getNextPageParam(options, pages);
return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;
}
}
/**
* Checks if there is a previous page.
* Returns `undefined` if it cannot be determined.
*/
export function hasPreviousPage(options, pages) {
if (options.getPreviousPageParam && Array.isArray(pages)) {
var previousPageParam = getPreviousPageParam(options, pages);
return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;
}
}

View File

@@ -0,0 +1,86 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { QueryObserver } from './queryObserver';
import { hasNextPage, hasPreviousPage, infiniteQueryBehavior } from './infiniteQueryBehavior';
export var InfiniteQueryObserver = /*#__PURE__*/function (_QueryObserver) {
_inheritsLoose(InfiniteQueryObserver, _QueryObserver);
// Type override
// Type override
// Type override
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
function InfiniteQueryObserver(client, options) {
return _QueryObserver.call(this, client, options) || this;
}
var _proto = InfiniteQueryObserver.prototype;
_proto.bindMethods = function bindMethods() {
_QueryObserver.prototype.bindMethods.call(this);
this.fetchNextPage = this.fetchNextPage.bind(this);
this.fetchPreviousPage = this.fetchPreviousPage.bind(this);
};
_proto.setOptions = function setOptions(options, notifyOptions) {
_QueryObserver.prototype.setOptions.call(this, _extends({}, options, {
behavior: infiniteQueryBehavior()
}), notifyOptions);
};
_proto.getOptimisticResult = function getOptimisticResult(options) {
options.behavior = infiniteQueryBehavior();
return _QueryObserver.prototype.getOptimisticResult.call(this, options);
};
_proto.fetchNextPage = function fetchNextPage(options) {
var _options$cancelRefetc;
return this.fetch({
// TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)
cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,
throwOnError: options == null ? void 0 : options.throwOnError,
meta: {
fetchMore: {
direction: 'forward',
pageParam: options == null ? void 0 : options.pageParam
}
}
});
};
_proto.fetchPreviousPage = function fetchPreviousPage(options) {
var _options$cancelRefetc2;
return this.fetch({
// TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)
cancelRefetch: (_options$cancelRefetc2 = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc2 : true,
throwOnError: options == null ? void 0 : options.throwOnError,
meta: {
fetchMore: {
direction: 'backward',
pageParam: options == null ? void 0 : options.pageParam
}
}
});
};
_proto.createResult = function createResult(query, options) {
var _state$data, _state$data2, _state$fetchMeta, _state$fetchMeta$fetc, _state$fetchMeta2, _state$fetchMeta2$fet;
var state = query.state;
var result = _QueryObserver.prototype.createResult.call(this, query, options);
return _extends({}, result, {
fetchNextPage: this.fetchNextPage,
fetchPreviousPage: this.fetchPreviousPage,
hasNextPage: hasNextPage(options, (_state$data = state.data) == null ? void 0 : _state$data.pages),
hasPreviousPage: hasPreviousPage(options, (_state$data2 = state.data) == null ? void 0 : _state$data2.pages),
isFetchingNextPage: state.isFetching && ((_state$fetchMeta = state.fetchMeta) == null ? void 0 : (_state$fetchMeta$fetc = _state$fetchMeta.fetchMore) == null ? void 0 : _state$fetchMeta$fetc.direction) === 'forward',
isFetchingPreviousPage: state.isFetching && ((_state$fetchMeta2 = state.fetchMeta) == null ? void 0 : (_state$fetchMeta2$fet = _state$fetchMeta2.fetchMore) == null ? void 0 : _state$fetchMeta2$fet.direction) === 'backward'
});
};
return InfiniteQueryObserver;
}(QueryObserver);

9
frontend/node_modules/react-query/es/core/logger.js generated vendored Normal file
View File

@@ -0,0 +1,9 @@
// TYPES
// FUNCTIONS
var logger = console;
export function getLogger() {
return logger;
}
export function setLogger(newLogger) {
logger = newLogger;
}

232
frontend/node_modules/react-query/es/core/mutation.js generated vendored Normal file
View File

@@ -0,0 +1,232 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import { getLogger } from './logger';
import { notifyManager } from './notifyManager';
import { Retryer } from './retryer';
import { noop } from './utils'; // TYPES
// CLASS
export var Mutation = /*#__PURE__*/function () {
function Mutation(config) {
this.options = _extends({}, config.defaultOptions, config.options);
this.mutationId = config.mutationId;
this.mutationCache = config.mutationCache;
this.observers = [];
this.state = config.state || getDefaultState();
this.meta = config.meta;
}
var _proto = Mutation.prototype;
_proto.setState = function setState(state) {
this.dispatch({
type: 'setState',
state: state
});
};
_proto.addObserver = function addObserver(observer) {
if (this.observers.indexOf(observer) === -1) {
this.observers.push(observer);
}
};
_proto.removeObserver = function removeObserver(observer) {
this.observers = this.observers.filter(function (x) {
return x !== observer;
});
};
_proto.cancel = function cancel() {
if (this.retryer) {
this.retryer.cancel();
return this.retryer.promise.then(noop).catch(noop);
}
return Promise.resolve();
};
_proto.continue = function _continue() {
if (this.retryer) {
this.retryer.continue();
return this.retryer.promise;
}
return this.execute();
};
_proto.execute = function execute() {
var _this = this;
var data;
var restored = this.state.status === 'loading';
var promise = Promise.resolve();
if (!restored) {
this.dispatch({
type: 'loading',
variables: this.options.variables
});
promise = promise.then(function () {
// Notify cache callback
_this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);
}).then(function () {
return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);
}).then(function (context) {
if (context !== _this.state.context) {
_this.dispatch({
type: 'loading',
context: context,
variables: _this.state.variables
});
}
});
}
return promise.then(function () {
return _this.executeMutation();
}).then(function (result) {
data = result; // Notify cache callback
_this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);
}).then(function () {
return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);
}).then(function () {
return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);
}).then(function () {
_this.dispatch({
type: 'success',
data: data
});
return data;
}).catch(function (error) {
// Notify cache callback
_this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error
getLogger().error(error);
return Promise.resolve().then(function () {
return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);
}).then(function () {
return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);
}).then(function () {
_this.dispatch({
type: 'error',
error: error
});
throw error;
});
});
};
_proto.executeMutation = function executeMutation() {
var _this2 = this,
_this$options$retry;
this.retryer = new Retryer({
fn: function fn() {
if (!_this2.options.mutationFn) {
return Promise.reject('No mutationFn found');
}
return _this2.options.mutationFn(_this2.state.variables);
},
onFail: function onFail() {
_this2.dispatch({
type: 'failed'
});
},
onPause: function onPause() {
_this2.dispatch({
type: 'pause'
});
},
onContinue: function onContinue() {
_this2.dispatch({
type: 'continue'
});
},
retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,
retryDelay: this.options.retryDelay
});
return this.retryer.promise;
};
_proto.dispatch = function dispatch(action) {
var _this3 = this;
this.state = reducer(this.state, action);
notifyManager.batch(function () {
_this3.observers.forEach(function (observer) {
observer.onMutationUpdate(action);
});
_this3.mutationCache.notify(_this3);
});
};
return Mutation;
}();
export function getDefaultState() {
return {
context: undefined,
data: undefined,
error: null,
failureCount: 0,
isPaused: false,
status: 'idle',
variables: undefined
};
}
function reducer(state, action) {
switch (action.type) {
case 'failed':
return _extends({}, state, {
failureCount: state.failureCount + 1
});
case 'pause':
return _extends({}, state, {
isPaused: true
});
case 'continue':
return _extends({}, state, {
isPaused: false
});
case 'loading':
return _extends({}, state, {
context: action.context,
data: undefined,
error: null,
isPaused: false,
status: 'loading',
variables: action.variables
});
case 'success':
return _extends({}, state, {
data: action.data,
error: null,
status: 'success',
isPaused: false
});
case 'error':
return _extends({}, state, {
data: undefined,
error: action.error,
failureCount: state.failureCount + 1,
isPaused: false,
status: 'error'
});
case 'setState':
return _extends({}, state, action.state);
default:
return state;
}
}

View File

@@ -0,0 +1,111 @@
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { notifyManager } from './notifyManager';
import { Mutation } from './mutation';
import { matchMutation, noop } from './utils';
import { Subscribable } from './subscribable'; // TYPES
// CLASS
export var MutationCache = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(MutationCache, _Subscribable);
function MutationCache(config) {
var _this;
_this = _Subscribable.call(this) || this;
_this.config = config || {};
_this.mutations = [];
_this.mutationId = 0;
return _this;
}
var _proto = MutationCache.prototype;
_proto.build = function build(client, options, state) {
var mutation = new Mutation({
mutationCache: this,
mutationId: ++this.mutationId,
options: client.defaultMutationOptions(options),
state: state,
defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,
meta: options.meta
});
this.add(mutation);
return mutation;
};
_proto.add = function add(mutation) {
this.mutations.push(mutation);
this.notify(mutation);
};
_proto.remove = function remove(mutation) {
this.mutations = this.mutations.filter(function (x) {
return x !== mutation;
});
mutation.cancel();
this.notify(mutation);
};
_proto.clear = function clear() {
var _this2 = this;
notifyManager.batch(function () {
_this2.mutations.forEach(function (mutation) {
_this2.remove(mutation);
});
});
};
_proto.getAll = function getAll() {
return this.mutations;
};
_proto.find = function find(filters) {
if (typeof filters.exact === 'undefined') {
filters.exact = true;
}
return this.mutations.find(function (mutation) {
return matchMutation(filters, mutation);
});
};
_proto.findAll = function findAll(filters) {
return this.mutations.filter(function (mutation) {
return matchMutation(filters, mutation);
});
};
_proto.notify = function notify(mutation) {
var _this3 = this;
notifyManager.batch(function () {
_this3.listeners.forEach(function (listener) {
listener(mutation);
});
});
};
_proto.onFocus = function onFocus() {
this.resumePausedMutations();
};
_proto.onOnline = function onOnline() {
this.resumePausedMutations();
};
_proto.resumePausedMutations = function resumePausedMutations() {
var pausedMutations = this.mutations.filter(function (x) {
return x.state.isPaused;
});
return notifyManager.batch(function () {
return pausedMutations.reduce(function (promise, mutation) {
return promise.then(function () {
return mutation.continue().catch(noop);
});
}, Promise.resolve());
});
};
return MutationCache;
}(Subscribable);

View File

@@ -0,0 +1,126 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { getDefaultState } from './mutation';
import { notifyManager } from './notifyManager';
import { Subscribable } from './subscribable';
// CLASS
export var MutationObserver = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(MutationObserver, _Subscribable);
function MutationObserver(client, options) {
var _this;
_this = _Subscribable.call(this) || this;
_this.client = client;
_this.setOptions(options);
_this.bindMethods();
_this.updateResult();
return _this;
}
var _proto = MutationObserver.prototype;
_proto.bindMethods = function bindMethods() {
this.mutate = this.mutate.bind(this);
this.reset = this.reset.bind(this);
};
_proto.setOptions = function setOptions(options) {
this.options = this.client.defaultMutationOptions(options);
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.listeners.length) {
var _this$currentMutation;
(_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);
}
};
_proto.onMutationUpdate = function onMutationUpdate(action) {
this.updateResult(); // Determine which callbacks to trigger
var notifyOptions = {
listeners: true
};
if (action.type === 'success') {
notifyOptions.onSuccess = true;
} else if (action.type === 'error') {
notifyOptions.onError = true;
}
this.notify(notifyOptions);
};
_proto.getCurrentResult = function getCurrentResult() {
return this.currentResult;
};
_proto.reset = function reset() {
this.currentMutation = undefined;
this.updateResult();
this.notify({
listeners: true
});
};
_proto.mutate = function mutate(variables, options) {
this.mutateOptions = options;
if (this.currentMutation) {
this.currentMutation.removeObserver(this);
}
this.currentMutation = this.client.getMutationCache().build(this.client, _extends({}, this.options, {
variables: typeof variables !== 'undefined' ? variables : this.options.variables
}));
this.currentMutation.addObserver(this);
return this.currentMutation.execute();
};
_proto.updateResult = function updateResult() {
var state = this.currentMutation ? this.currentMutation.state : getDefaultState();
var result = _extends({}, state, {
isLoading: state.status === 'loading',
isSuccess: state.status === 'success',
isError: state.status === 'error',
isIdle: state.status === 'idle',
mutate: this.mutate,
reset: this.reset
});
this.currentResult = result;
};
_proto.notify = function notify(options) {
var _this2 = this;
notifyManager.batch(function () {
// First trigger the mutate callbacks
if (_this2.mutateOptions) {
if (options.onSuccess) {
_this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context);
_this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context);
} else if (options.onError) {
_this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);
_this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);
}
} // Then trigger the listeners
if (options.listeners) {
_this2.listeners.forEach(function (listener) {
listener(_this2.currentResult);
});
}
});
};
return MutationObserver;
}(Subscribable);

View File

@@ -0,0 +1,105 @@
import { scheduleMicrotask } from './utils'; // TYPES
// CLASS
export var NotifyManager = /*#__PURE__*/function () {
function NotifyManager() {
this.queue = [];
this.transactions = 0;
this.notifyFn = function (callback) {
callback();
};
this.batchNotifyFn = function (callback) {
callback();
};
}
var _proto = NotifyManager.prototype;
_proto.batch = function batch(callback) {
var result;
this.transactions++;
try {
result = callback();
} finally {
this.transactions--;
if (!this.transactions) {
this.flush();
}
}
return result;
};
_proto.schedule = function schedule(callback) {
var _this = this;
if (this.transactions) {
this.queue.push(callback);
} else {
scheduleMicrotask(function () {
_this.notifyFn(callback);
});
}
}
/**
* All calls to the wrapped function will be batched.
*/
;
_proto.batchCalls = function batchCalls(callback) {
var _this2 = this;
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this2.schedule(function () {
callback.apply(void 0, args);
});
};
};
_proto.flush = function flush() {
var _this3 = this;
var queue = this.queue;
this.queue = [];
if (queue.length) {
scheduleMicrotask(function () {
_this3.batchNotifyFn(function () {
queue.forEach(function (callback) {
_this3.notifyFn(callback);
});
});
});
}
}
/**
* Use this method to set a custom notify function.
* This can be used to for example wrap notifications with `React.act` while running tests.
*/
;
_proto.setNotifyFunction = function setNotifyFunction(fn) {
this.notifyFn = fn;
}
/**
* Use this method to set a custom function to batch notifications together into a single tick.
* By default React Query will use the batch function provided by ReactDOM or React Native.
*/
;
_proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {
this.batchNotifyFn = fn;
};
return NotifyManager;
}(); // SINGLETON
export var notifyManager = new NotifyManager();

View File

@@ -0,0 +1,94 @@
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { Subscribable } from './subscribable';
import { isServer } from './utils';
export var OnlineManager = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(OnlineManager, _Subscribable);
function OnlineManager() {
var _this;
_this = _Subscribable.call(this) || this;
_this.setup = function (onOnline) {
var _window;
if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {
var listener = function listener() {
return onOnline();
}; // Listen to online
window.addEventListener('online', listener, false);
window.addEventListener('offline', listener, false);
return function () {
// Be sure to unsubscribe if a new handler is set
window.removeEventListener('online', listener);
window.removeEventListener('offline', listener);
};
}
};
return _this;
}
var _proto = OnlineManager.prototype;
_proto.onSubscribe = function onSubscribe() {
if (!this.cleanup) {
this.setEventListener(this.setup);
}
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.hasListeners()) {
var _this$cleanup;
(_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
this.cleanup = undefined;
}
};
_proto.setEventListener = function setEventListener(setup) {
var _this$cleanup2,
_this2 = this;
this.setup = setup;
(_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
this.cleanup = setup(function (online) {
if (typeof online === 'boolean') {
_this2.setOnline(online);
} else {
_this2.onOnline();
}
});
};
_proto.setOnline = function setOnline(online) {
this.online = online;
if (online) {
this.onOnline();
}
};
_proto.onOnline = function onOnline() {
this.listeners.forEach(function (listener) {
listener();
});
};
_proto.isOnline = function isOnline() {
if (typeof this.online === 'boolean') {
return this.online;
}
if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {
return true;
}
return navigator.onLine;
};
return OnlineManager;
}(Subscribable);
export var onlineManager = new OnlineManager();

View File

@@ -0,0 +1,202 @@
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { difference, replaceAt } from './utils';
import { notifyManager } from './notifyManager';
import { QueryObserver } from './queryObserver';
import { Subscribable } from './subscribable';
export var QueriesObserver = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(QueriesObserver, _Subscribable);
function QueriesObserver(client, queries) {
var _this;
_this = _Subscribable.call(this) || this;
_this.client = client;
_this.queries = [];
_this.result = [];
_this.observers = [];
_this.observersMap = {};
if (queries) {
_this.setQueries(queries);
}
return _this;
}
var _proto = QueriesObserver.prototype;
_proto.onSubscribe = function onSubscribe() {
var _this2 = this;
if (this.listeners.length === 1) {
this.observers.forEach(function (observer) {
observer.subscribe(function (result) {
_this2.onUpdate(observer, result);
});
});
}
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.listeners.length) {
this.destroy();
}
};
_proto.destroy = function destroy() {
this.listeners = [];
this.observers.forEach(function (observer) {
observer.destroy();
});
};
_proto.setQueries = function setQueries(queries, notifyOptions) {
this.queries = queries;
this.updateObservers(notifyOptions);
};
_proto.getCurrentResult = function getCurrentResult() {
return this.result;
};
_proto.getOptimisticResult = function getOptimisticResult(queries) {
return this.findMatchingObservers(queries).map(function (match) {
return match.observer.getOptimisticResult(match.defaultedQueryOptions);
});
};
_proto.findMatchingObservers = function findMatchingObservers(queries) {
var _this3 = this;
var prevObservers = this.observers;
var defaultedQueryOptions = queries.map(function (options) {
return _this3.client.defaultQueryObserverOptions(options);
});
var matchingObservers = defaultedQueryOptions.flatMap(function (defaultedOptions) {
var match = prevObservers.find(function (observer) {
return observer.options.queryHash === defaultedOptions.queryHash;
});
if (match != null) {
return [{
defaultedQueryOptions: defaultedOptions,
observer: match
}];
}
return [];
});
var matchedQueryHashes = matchingObservers.map(function (match) {
return match.defaultedQueryOptions.queryHash;
});
var unmatchedQueries = defaultedQueryOptions.filter(function (defaultedOptions) {
return !matchedQueryHashes.includes(defaultedOptions.queryHash);
});
var unmatchedObservers = prevObservers.filter(function (prevObserver) {
return !matchingObservers.some(function (match) {
return match.observer === prevObserver;
});
});
var newOrReusedObservers = unmatchedQueries.map(function (options, index) {
if (options.keepPreviousData) {
// return previous data from one of the observers that no longer match
var previouslyUsedObserver = unmatchedObservers[index];
if (previouslyUsedObserver !== undefined) {
return {
defaultedQueryOptions: options,
observer: previouslyUsedObserver
};
}
}
return {
defaultedQueryOptions: options,
observer: _this3.getObserver(options)
};
});
var sortMatchesByOrderOfQueries = function sortMatchesByOrderOfQueries(a, b) {
return defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions);
};
return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries);
};
_proto.getObserver = function getObserver(options) {
var defaultedOptions = this.client.defaultQueryObserverOptions(options);
var currentObserver = this.observersMap[defaultedOptions.queryHash];
return currentObserver != null ? currentObserver : new QueryObserver(this.client, defaultedOptions);
};
_proto.updateObservers = function updateObservers(notifyOptions) {
var _this4 = this;
notifyManager.batch(function () {
var prevObservers = _this4.observers;
var newObserverMatches = _this4.findMatchingObservers(_this4.queries); // set options for the new observers to notify of changes
newObserverMatches.forEach(function (match) {
return match.observer.setOptions(match.defaultedQueryOptions, notifyOptions);
});
var newObservers = newObserverMatches.map(function (match) {
return match.observer;
});
var newObserversMap = Object.fromEntries(newObservers.map(function (observer) {
return [observer.options.queryHash, observer];
}));
var newResult = newObservers.map(function (observer) {
return observer.getCurrentResult();
});
var hasIndexChange = newObservers.some(function (observer, index) {
return observer !== prevObservers[index];
});
if (prevObservers.length === newObservers.length && !hasIndexChange) {
return;
}
_this4.observers = newObservers;
_this4.observersMap = newObserversMap;
_this4.result = newResult;
if (!_this4.hasListeners()) {
return;
}
difference(prevObservers, newObservers).forEach(function (observer) {
observer.destroy();
});
difference(newObservers, prevObservers).forEach(function (observer) {
observer.subscribe(function (result) {
_this4.onUpdate(observer, result);
});
});
_this4.notify();
});
};
_proto.onUpdate = function onUpdate(observer, result) {
var index = this.observers.indexOf(observer);
if (index !== -1) {
this.result = replaceAt(this.result, index, result);
this.notify();
}
};
_proto.notify = function notify() {
var _this5 = this;
notifyManager.batch(function () {
_this5.listeners.forEach(function (listener) {
listener(_this5.result);
});
});
};
return QueriesObserver;
}(Subscribable);

500
frontend/node_modules/react-query/es/core/query.js generated vendored Normal file
View File

@@ -0,0 +1,500 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';
import { notifyManager } from './notifyManager';
import { getLogger } from './logger';
import { Retryer, isCancelledError } from './retryer'; // TYPES
// CLASS
export var Query = /*#__PURE__*/function () {
function Query(config) {
this.abortSignalConsumed = false;
this.hadObservers = false;
this.defaultOptions = config.defaultOptions;
this.setOptions(config.options);
this.observers = [];
this.cache = config.cache;
this.queryKey = config.queryKey;
this.queryHash = config.queryHash;
this.initialState = config.state || this.getDefaultState(this.options);
this.state = this.initialState;
this.meta = config.meta;
this.scheduleGc();
}
var _proto = Query.prototype;
_proto.setOptions = function setOptions(options) {
var _this$options$cacheTi;
this.options = _extends({}, this.defaultOptions, options);
this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set
this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);
};
_proto.setDefaultOptions = function setDefaultOptions(options) {
this.defaultOptions = options;
};
_proto.scheduleGc = function scheduleGc() {
var _this = this;
this.clearGcTimeout();
if (isValidTimeout(this.cacheTime)) {
this.gcTimeout = setTimeout(function () {
_this.optionalRemove();
}, this.cacheTime);
}
};
_proto.clearGcTimeout = function clearGcTimeout() {
if (this.gcTimeout) {
clearTimeout(this.gcTimeout);
this.gcTimeout = undefined;
}
};
_proto.optionalRemove = function optionalRemove() {
if (!this.observers.length) {
if (this.state.isFetching) {
if (this.hadObservers) {
this.scheduleGc();
}
} else {
this.cache.remove(this);
}
}
};
_proto.setData = function setData(updater, options) {
var _this$options$isDataE, _this$options;
var prevData = this.state.data; // Get the new data
var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`
if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {
data = prevData;
} else if (this.options.structuralSharing !== false) {
// Structurally share data between prev and new data if needed
data = replaceEqualDeep(prevData, data);
} // Set data and mark it as cached
this.dispatch({
data: data,
type: 'success',
dataUpdatedAt: options == null ? void 0 : options.updatedAt
});
return data;
};
_proto.setState = function setState(state, setStateOptions) {
this.dispatch({
type: 'setState',
state: state,
setStateOptions: setStateOptions
});
};
_proto.cancel = function cancel(options) {
var _this$retryer;
var promise = this.promise;
(_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);
return promise ? promise.then(noop).catch(noop) : Promise.resolve();
};
_proto.destroy = function destroy() {
this.clearGcTimeout();
this.cancel({
silent: true
});
};
_proto.reset = function reset() {
this.destroy();
this.setState(this.initialState);
};
_proto.isActive = function isActive() {
return this.observers.some(function (observer) {
return observer.options.enabled !== false;
});
};
_proto.isFetching = function isFetching() {
return this.state.isFetching;
};
_proto.isStale = function isStale() {
return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {
return observer.getCurrentResult().isStale;
});
};
_proto.isStaleByTime = function isStaleByTime(staleTime) {
if (staleTime === void 0) {
staleTime = 0;
}
return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);
};
_proto.onFocus = function onFocus() {
var _this$retryer2;
var observer = this.observers.find(function (x) {
return x.shouldFetchOnWindowFocus();
});
if (observer) {
observer.refetch();
} // Continue fetch if currently paused
(_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();
};
_proto.onOnline = function onOnline() {
var _this$retryer3;
var observer = this.observers.find(function (x) {
return x.shouldFetchOnReconnect();
});
if (observer) {
observer.refetch();
} // Continue fetch if currently paused
(_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();
};
_proto.addObserver = function addObserver(observer) {
if (this.observers.indexOf(observer) === -1) {
this.observers.push(observer);
this.hadObservers = true; // Stop the query from being garbage collected
this.clearGcTimeout();
this.cache.notify({
type: 'observerAdded',
query: this,
observer: observer
});
}
};
_proto.removeObserver = function removeObserver(observer) {
if (this.observers.indexOf(observer) !== -1) {
this.observers = this.observers.filter(function (x) {
return x !== observer;
});
if (!this.observers.length) {
// If the transport layer does not support cancellation
// we'll let the query continue so the result can be cached
if (this.retryer) {
if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {
this.retryer.cancel({
revert: true
});
} else {
this.retryer.cancelRetry();
}
}
if (this.cacheTime) {
this.scheduleGc();
} else {
this.cache.remove(this);
}
}
this.cache.notify({
type: 'observerRemoved',
query: this,
observer: observer
});
}
};
_proto.getObserversCount = function getObserversCount() {
return this.observers.length;
};
_proto.invalidate = function invalidate() {
if (!this.state.isInvalidated) {
this.dispatch({
type: 'invalidate'
});
}
};
_proto.fetch = function fetch(options, fetchOptions) {
var _this2 = this,
_this$options$behavio,
_context$fetchOptions,
_abortController$abor;
if (this.state.isFetching) {
if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {
// Silently cancel current fetch if the user wants to cancel refetches
this.cancel({
silent: true
});
} else if (this.promise) {
var _this$retryer4;
// make sure that retries that were potentially cancelled due to unmounts can continue
(_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching
return this.promise;
}
} // Update config if passed, otherwise the config from the last execution is used
if (options) {
this.setOptions(options);
} // Use the options from the first observer with a query function if no function is found.
// This can happen when the query is hydrated or created with setQueryData.
if (!this.options.queryFn) {
var observer = this.observers.find(function (x) {
return x.options.queryFn;
});
if (observer) {
this.setOptions(observer.options);
}
}
var queryKey = ensureQueryKeyArray(this.queryKey);
var abortController = getAbortController(); // Create query function context
var queryFnContext = {
queryKey: queryKey,
pageParam: undefined,
meta: this.meta
};
Object.defineProperty(queryFnContext, 'signal', {
enumerable: true,
get: function get() {
if (abortController) {
_this2.abortSignalConsumed = true;
return abortController.signal;
}
return undefined;
}
}); // Create fetch function
var fetchFn = function fetchFn() {
if (!_this2.options.queryFn) {
return Promise.reject('Missing queryFn');
}
_this2.abortSignalConsumed = false;
return _this2.options.queryFn(queryFnContext);
}; // Trigger behavior hook
var context = {
fetchOptions: fetchOptions,
options: this.options,
queryKey: queryKey,
state: this.state,
fetchFn: fetchFn,
meta: this.meta
};
if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {
var _this$options$behavio2;
(_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);
} // Store state in case the current fetch needs to be reverted
this.revertState = this.state; // Set to fetching state if not already in it
if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {
var _context$fetchOptions2;
this.dispatch({
type: 'fetch',
meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta
});
} // Try to fetch the data
this.retryer = new Retryer({
fn: context.fetchFn,
abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),
onSuccess: function onSuccess(data) {
_this2.setData(data); // Notify cache callback
_this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0
if (_this2.cacheTime === 0) {
_this2.optionalRemove();
}
},
onError: function onError(error) {
// Optimistically update state if needed
if (!(isCancelledError(error) && error.silent)) {
_this2.dispatch({
type: 'error',
error: error
});
}
if (!isCancelledError(error)) {
// Notify cache callback
_this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error
getLogger().error(error);
} // Remove query after fetching if cache time is 0
if (_this2.cacheTime === 0) {
_this2.optionalRemove();
}
},
onFail: function onFail() {
_this2.dispatch({
type: 'failed'
});
},
onPause: function onPause() {
_this2.dispatch({
type: 'pause'
});
},
onContinue: function onContinue() {
_this2.dispatch({
type: 'continue'
});
},
retry: context.options.retry,
retryDelay: context.options.retryDelay
});
this.promise = this.retryer.promise;
return this.promise;
};
_proto.dispatch = function dispatch(action) {
var _this3 = this;
this.state = this.reducer(this.state, action);
notifyManager.batch(function () {
_this3.observers.forEach(function (observer) {
observer.onQueryUpdate(action);
});
_this3.cache.notify({
query: _this3,
type: 'queryUpdated',
action: action
});
});
};
_proto.getDefaultState = function getDefaultState(options) {
var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;
var hasInitialData = typeof options.initialData !== 'undefined';
var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;
var hasData = typeof data !== 'undefined';
return {
data: data,
dataUpdateCount: 0,
dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,
error: null,
errorUpdateCount: 0,
errorUpdatedAt: 0,
fetchFailureCount: 0,
fetchMeta: null,
isFetching: false,
isInvalidated: false,
isPaused: false,
status: hasData ? 'success' : 'idle'
};
};
_proto.reducer = function reducer(state, action) {
var _action$meta, _action$dataUpdatedAt;
switch (action.type) {
case 'failed':
return _extends({}, state, {
fetchFailureCount: state.fetchFailureCount + 1
});
case 'pause':
return _extends({}, state, {
isPaused: true
});
case 'continue':
return _extends({}, state, {
isPaused: false
});
case 'fetch':
return _extends({}, state, {
fetchFailureCount: 0,
fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,
isFetching: true,
isPaused: false
}, !state.dataUpdatedAt && {
error: null,
status: 'loading'
});
case 'success':
return _extends({}, state, {
data: action.data,
dataUpdateCount: state.dataUpdateCount + 1,
dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),
error: null,
fetchFailureCount: 0,
isFetching: false,
isInvalidated: false,
isPaused: false,
status: 'success'
});
case 'error':
var error = action.error;
if (isCancelledError(error) && error.revert && this.revertState) {
return _extends({}, this.revertState);
}
return _extends({}, state, {
error: error,
errorUpdateCount: state.errorUpdateCount + 1,
errorUpdatedAt: Date.now(),
fetchFailureCount: state.fetchFailureCount + 1,
isFetching: false,
isPaused: false,
status: 'error'
});
case 'invalidate':
return _extends({}, state, {
isInvalidated: true
});
case 'setState':
return _extends({}, state, action.state);
default:
return state;
}
};
return Query;
}();

147
frontend/node_modules/react-query/es/core/queryCache.js generated vendored Normal file
View File

@@ -0,0 +1,147 @@
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';
import { Query } from './query';
import { notifyManager } from './notifyManager';
import { Subscribable } from './subscribable';
// CLASS
export var QueryCache = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(QueryCache, _Subscribable);
function QueryCache(config) {
var _this;
_this = _Subscribable.call(this) || this;
_this.config = config || {};
_this.queries = [];
_this.queriesMap = {};
return _this;
}
var _proto = QueryCache.prototype;
_proto.build = function build(client, options, state) {
var _options$queryHash;
var queryKey = options.queryKey;
var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);
var query = this.get(queryHash);
if (!query) {
query = new Query({
cache: this,
queryKey: queryKey,
queryHash: queryHash,
options: client.defaultQueryOptions(options),
state: state,
defaultOptions: client.getQueryDefaults(queryKey),
meta: options.meta
});
this.add(query);
}
return query;
};
_proto.add = function add(query) {
if (!this.queriesMap[query.queryHash]) {
this.queriesMap[query.queryHash] = query;
this.queries.push(query);
this.notify({
type: 'queryAdded',
query: query
});
}
};
_proto.remove = function remove(query) {
var queryInMap = this.queriesMap[query.queryHash];
if (queryInMap) {
query.destroy();
this.queries = this.queries.filter(function (x) {
return x !== query;
});
if (queryInMap === query) {
delete this.queriesMap[query.queryHash];
}
this.notify({
type: 'queryRemoved',
query: query
});
}
};
_proto.clear = function clear() {
var _this2 = this;
notifyManager.batch(function () {
_this2.queries.forEach(function (query) {
_this2.remove(query);
});
});
};
_proto.get = function get(queryHash) {
return this.queriesMap[queryHash];
};
_proto.getAll = function getAll() {
return this.queries;
};
_proto.find = function find(arg1, arg2) {
var _parseFilterArgs = parseFilterArgs(arg1, arg2),
filters = _parseFilterArgs[0];
if (typeof filters.exact === 'undefined') {
filters.exact = true;
}
return this.queries.find(function (query) {
return matchQuery(filters, query);
});
};
_proto.findAll = function findAll(arg1, arg2) {
var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),
filters = _parseFilterArgs2[0];
return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {
return matchQuery(filters, query);
}) : this.queries;
};
_proto.notify = function notify(event) {
var _this3 = this;
notifyManager.batch(function () {
_this3.listeners.forEach(function (listener) {
listener(event);
});
});
};
_proto.onFocus = function onFocus() {
var _this4 = this;
notifyManager.batch(function () {
_this4.queries.forEach(function (query) {
query.onFocus();
});
});
};
_proto.onOnline = function onOnline() {
var _this5 = this;
notifyManager.batch(function () {
_this5.queries.forEach(function (query) {
query.onOnline();
});
});
};
return QueryCache;
}(Subscribable);

View File

@@ -0,0 +1,350 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';
import { QueryCache } from './queryCache';
import { MutationCache } from './mutationCache';
import { focusManager } from './focusManager';
import { onlineManager } from './onlineManager';
import { notifyManager } from './notifyManager';
import { infiniteQueryBehavior } from './infiniteQueryBehavior';
// CLASS
export var QueryClient = /*#__PURE__*/function () {
function QueryClient(config) {
if (config === void 0) {
config = {};
}
this.queryCache = config.queryCache || new QueryCache();
this.mutationCache = config.mutationCache || new MutationCache();
this.defaultOptions = config.defaultOptions || {};
this.queryDefaults = [];
this.mutationDefaults = [];
}
var _proto = QueryClient.prototype;
_proto.mount = function mount() {
var _this = this;
this.unsubscribeFocus = focusManager.subscribe(function () {
if (focusManager.isFocused() && onlineManager.isOnline()) {
_this.mutationCache.onFocus();
_this.queryCache.onFocus();
}
});
this.unsubscribeOnline = onlineManager.subscribe(function () {
if (focusManager.isFocused() && onlineManager.isOnline()) {
_this.mutationCache.onOnline();
_this.queryCache.onOnline();
}
});
};
_proto.unmount = function unmount() {
var _this$unsubscribeFocu, _this$unsubscribeOnli;
(_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);
(_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);
};
_proto.isFetching = function isFetching(arg1, arg2) {
var _parseFilterArgs = parseFilterArgs(arg1, arg2),
filters = _parseFilterArgs[0];
filters.fetching = true;
return this.queryCache.findAll(filters).length;
};
_proto.isMutating = function isMutating(filters) {
return this.mutationCache.findAll(_extends({}, filters, {
fetching: true
})).length;
};
_proto.getQueryData = function getQueryData(queryKey, filters) {
var _this$queryCache$find;
return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;
};
_proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {
return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {
var queryKey = _ref.queryKey,
state = _ref.state;
var data = state.data;
return [queryKey, data];
});
};
_proto.setQueryData = function setQueryData(queryKey, updater, options) {
var parsedOptions = parseQueryArgs(queryKey);
var defaultedOptions = this.defaultQueryOptions(parsedOptions);
return this.queryCache.build(this, defaultedOptions).setData(updater, options);
};
_proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {
var _this2 = this;
return notifyManager.batch(function () {
return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {
var queryKey = _ref2.queryKey;
return [queryKey, _this2.setQueryData(queryKey, updater, options)];
});
});
};
_proto.getQueryState = function getQueryState(queryKey, filters) {
var _this$queryCache$find2;
return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;
};
_proto.removeQueries = function removeQueries(arg1, arg2) {
var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),
filters = _parseFilterArgs2[0];
var queryCache = this.queryCache;
notifyManager.batch(function () {
queryCache.findAll(filters).forEach(function (query) {
queryCache.remove(query);
});
});
};
_proto.resetQueries = function resetQueries(arg1, arg2, arg3) {
var _this3 = this;
var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),
filters = _parseFilterArgs3[0],
options = _parseFilterArgs3[1];
var queryCache = this.queryCache;
var refetchFilters = _extends({}, filters, {
active: true
});
return notifyManager.batch(function () {
queryCache.findAll(filters).forEach(function (query) {
query.reset();
});
return _this3.refetchQueries(refetchFilters, options);
});
};
_proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {
var _this4 = this;
var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),
filters = _parseFilterArgs4[0],
_parseFilterArgs4$ = _parseFilterArgs4[1],
cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;
if (typeof cancelOptions.revert === 'undefined') {
cancelOptions.revert = true;
}
var promises = notifyManager.batch(function () {
return _this4.queryCache.findAll(filters).map(function (query) {
return query.cancel(cancelOptions);
});
});
return Promise.all(promises).then(noop).catch(noop);
};
_proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {
var _ref3,
_filters$refetchActiv,
_filters$refetchInact,
_this5 = this;
var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),
filters = _parseFilterArgs5[0],
options = _parseFilterArgs5[1];
var refetchFilters = _extends({}, filters, {
// if filters.refetchActive is not provided and filters.active is explicitly false,
// e.g. invalidateQueries({ active: false }), we don't want to refetch active queries
active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,
inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false
});
return notifyManager.batch(function () {
_this5.queryCache.findAll(filters).forEach(function (query) {
query.invalidate();
});
return _this5.refetchQueries(refetchFilters, options);
});
};
_proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {
var _this6 = this;
var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),
filters = _parseFilterArgs6[0],
options = _parseFilterArgs6[1];
var promises = notifyManager.batch(function () {
return _this6.queryCache.findAll(filters).map(function (query) {
return query.fetch(undefined, _extends({}, options, {
meta: {
refetchPage: filters == null ? void 0 : filters.refetchPage
}
}));
});
});
var promise = Promise.all(promises).then(noop);
if (!(options == null ? void 0 : options.throwOnError)) {
promise = promise.catch(noop);
}
return promise;
};
_proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {
var parsedOptions = parseQueryArgs(arg1, arg2, arg3);
var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652
if (typeof defaultedOptions.retry === 'undefined') {
defaultedOptions.retry = false;
}
var query = this.queryCache.build(this, defaultedOptions);
return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);
};
_proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {
return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);
};
_proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {
var parsedOptions = parseQueryArgs(arg1, arg2, arg3);
parsedOptions.behavior = infiniteQueryBehavior();
return this.fetchQuery(parsedOptions);
};
_proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {
return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);
};
_proto.cancelMutations = function cancelMutations() {
var _this7 = this;
var promises = notifyManager.batch(function () {
return _this7.mutationCache.getAll().map(function (mutation) {
return mutation.cancel();
});
});
return Promise.all(promises).then(noop).catch(noop);
};
_proto.resumePausedMutations = function resumePausedMutations() {
return this.getMutationCache().resumePausedMutations();
};
_proto.executeMutation = function executeMutation(options) {
return this.mutationCache.build(this, options).execute();
};
_proto.getQueryCache = function getQueryCache() {
return this.queryCache;
};
_proto.getMutationCache = function getMutationCache() {
return this.mutationCache;
};
_proto.getDefaultOptions = function getDefaultOptions() {
return this.defaultOptions;
};
_proto.setDefaultOptions = function setDefaultOptions(options) {
this.defaultOptions = options;
};
_proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {
var result = this.queryDefaults.find(function (x) {
return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);
});
if (result) {
result.defaultOptions = options;
} else {
this.queryDefaults.push({
queryKey: queryKey,
defaultOptions: options
});
}
};
_proto.getQueryDefaults = function getQueryDefaults(queryKey) {
var _this$queryDefaults$f;
return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {
return partialMatchKey(queryKey, x.queryKey);
})) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;
};
_proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {
var result = this.mutationDefaults.find(function (x) {
return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);
});
if (result) {
result.defaultOptions = options;
} else {
this.mutationDefaults.push({
mutationKey: mutationKey,
defaultOptions: options
});
}
};
_proto.getMutationDefaults = function getMutationDefaults(mutationKey) {
var _this$mutationDefault;
return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {
return partialMatchKey(mutationKey, x.mutationKey);
})) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;
};
_proto.defaultQueryOptions = function defaultQueryOptions(options) {
if (options == null ? void 0 : options._defaulted) {
return options;
}
var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {
_defaulted: true
});
if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {
defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);
}
return defaultedOptions;
};
_proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {
return this.defaultQueryOptions(options);
};
_proto.defaultMutationOptions = function defaultMutationOptions(options) {
if (options == null ? void 0 : options._defaulted) {
return options;
}
return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {
_defaulted: true
});
};
_proto.clear = function clear() {
this.queryCache.clear();
this.mutationCache.clear();
};
return QueryClient;
}();

View File

@@ -0,0 +1,549 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';
import { notifyManager } from './notifyManager';
import { focusManager } from './focusManager';
import { Subscribable } from './subscribable';
import { getLogger } from './logger';
import { isCancelledError } from './retryer';
export var QueryObserver = /*#__PURE__*/function (_Subscribable) {
_inheritsLoose(QueryObserver, _Subscribable);
function QueryObserver(client, options) {
var _this;
_this = _Subscribable.call(this) || this;
_this.client = client;
_this.options = options;
_this.trackedProps = [];
_this.selectError = null;
_this.bindMethods();
_this.setOptions(options);
return _this;
}
var _proto = QueryObserver.prototype;
_proto.bindMethods = function bindMethods() {
this.remove = this.remove.bind(this);
this.refetch = this.refetch.bind(this);
};
_proto.onSubscribe = function onSubscribe() {
if (this.listeners.length === 1) {
this.currentQuery.addObserver(this);
if (shouldFetchOnMount(this.currentQuery, this.options)) {
this.executeFetch();
}
this.updateTimers();
}
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.listeners.length) {
this.destroy();
}
};
_proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {
return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);
};
_proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {
return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);
};
_proto.destroy = function destroy() {
this.listeners = [];
this.clearTimers();
this.currentQuery.removeObserver(this);
};
_proto.setOptions = function setOptions(options, notifyOptions) {
var prevOptions = this.options;
var prevQuery = this.currentQuery;
this.options = this.client.defaultQueryObserverOptions(options);
if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {
throw new Error('Expected enabled to be a boolean');
} // Keep previous query key if the user does not supply one
if (!this.options.queryKey) {
this.options.queryKey = prevOptions.queryKey;
}
this.updateQuery();
var mounted = this.hasListeners(); // Fetch if there are subscribers
if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {
this.executeFetch();
} // Update result
this.updateResult(notifyOptions); // Update stale interval if needed
if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {
this.updateStaleTimeout();
}
var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed
if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {
this.updateRefetchInterval(nextRefetchInterval);
}
};
_proto.getOptimisticResult = function getOptimisticResult(options) {
var defaultedOptions = this.client.defaultQueryObserverOptions(options);
var query = this.client.getQueryCache().build(this.client, defaultedOptions);
return this.createResult(query, defaultedOptions);
};
_proto.getCurrentResult = function getCurrentResult() {
return this.currentResult;
};
_proto.trackResult = function trackResult(result, defaultedOptions) {
var _this2 = this;
var trackedResult = {};
var trackProp = function trackProp(key) {
if (!_this2.trackedProps.includes(key)) {
_this2.trackedProps.push(key);
}
};
Object.keys(result).forEach(function (key) {
Object.defineProperty(trackedResult, key, {
configurable: false,
enumerable: true,
get: function get() {
trackProp(key);
return result[key];
}
});
});
if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) {
trackProp('error');
}
return trackedResult;
};
_proto.getNextResult = function getNextResult(options) {
var _this3 = this;
return new Promise(function (resolve, reject) {
var unsubscribe = _this3.subscribe(function (result) {
if (!result.isFetching) {
unsubscribe();
if (result.isError && (options == null ? void 0 : options.throwOnError)) {
reject(result.error);
} else {
resolve(result);
}
}
});
});
};
_proto.getCurrentQuery = function getCurrentQuery() {
return this.currentQuery;
};
_proto.remove = function remove() {
this.client.getQueryCache().remove(this.currentQuery);
};
_proto.refetch = function refetch(options) {
return this.fetch(_extends({}, options, {
meta: {
refetchPage: options == null ? void 0 : options.refetchPage
}
}));
};
_proto.fetchOptimistic = function fetchOptimistic(options) {
var _this4 = this;
var defaultedOptions = this.client.defaultQueryObserverOptions(options);
var query = this.client.getQueryCache().build(this.client, defaultedOptions);
return query.fetch().then(function () {
return _this4.createResult(query, defaultedOptions);
});
};
_proto.fetch = function fetch(fetchOptions) {
var _this5 = this;
return this.executeFetch(fetchOptions).then(function () {
_this5.updateResult();
return _this5.currentResult;
});
};
_proto.executeFetch = function executeFetch(fetchOptions) {
// Make sure we reference the latest query as the current one might have been removed
this.updateQuery(); // Fetch
var promise = this.currentQuery.fetch(this.options, fetchOptions);
if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {
promise = promise.catch(noop);
}
return promise;
};
_proto.updateStaleTimeout = function updateStaleTimeout() {
var _this6 = this;
this.clearStaleTimeout();
if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {
return;
}
var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.
// To mitigate this issue we always add 1 ms to the timeout.
var timeout = time + 1;
this.staleTimeoutId = setTimeout(function () {
if (!_this6.currentResult.isStale) {
_this6.updateResult();
}
}, timeout);
};
_proto.computeRefetchInterval = function computeRefetchInterval() {
var _this$options$refetch;
return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;
};
_proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) {
var _this7 = this;
this.clearRefetchInterval();
this.currentRefetchInterval = nextInterval;
if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {
return;
}
this.refetchIntervalId = setInterval(function () {
if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {
_this7.executeFetch();
}
}, this.currentRefetchInterval);
};
_proto.updateTimers = function updateTimers() {
this.updateStaleTimeout();
this.updateRefetchInterval(this.computeRefetchInterval());
};
_proto.clearTimers = function clearTimers() {
this.clearStaleTimeout();
this.clearRefetchInterval();
};
_proto.clearStaleTimeout = function clearStaleTimeout() {
if (this.staleTimeoutId) {
clearTimeout(this.staleTimeoutId);
this.staleTimeoutId = undefined;
}
};
_proto.clearRefetchInterval = function clearRefetchInterval() {
if (this.refetchIntervalId) {
clearInterval(this.refetchIntervalId);
this.refetchIntervalId = undefined;
}
};
_proto.createResult = function createResult(query, options) {
var prevQuery = this.currentQuery;
var prevOptions = this.options;
var prevResult = this.currentResult;
var prevResultState = this.currentResultState;
var prevResultOptions = this.currentResultOptions;
var queryChange = query !== prevQuery;
var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;
var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;
var state = query.state;
var dataUpdatedAt = state.dataUpdatedAt,
error = state.error,
errorUpdatedAt = state.errorUpdatedAt,
isFetching = state.isFetching,
status = state.status;
var isPreviousData = false;
var isPlaceholderData = false;
var data; // Optimistically set result in fetching state if needed
if (options.optimisticResults) {
var mounted = this.hasListeners();
var fetchOnMount = !mounted && shouldFetchOnMount(query, options);
var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);
if (fetchOnMount || fetchOptionally) {
isFetching = true;
if (!dataUpdatedAt) {
status = 'loading';
}
}
} // Keep previous data if needed
if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {
data = prevQueryResult.data;
dataUpdatedAt = prevQueryResult.dataUpdatedAt;
status = prevQueryResult.status;
isPreviousData = true;
} // Select data if needed
else if (options.select && typeof state.data !== 'undefined') {
// Memoize select result
if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {
data = this.selectResult;
} else {
try {
this.selectFn = options.select;
data = options.select(state.data);
if (options.structuralSharing !== false) {
data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);
}
this.selectResult = data;
this.selectError = null;
} catch (selectError) {
getLogger().error(selectError);
this.selectError = selectError;
}
}
} // Use query data
else {
data = state.data;
} // Show placeholder data if needed
if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) {
var placeholderData; // Memoize placeholder data
if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {
placeholderData = prevResult.data;
} else {
placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;
if (options.select && typeof placeholderData !== 'undefined') {
try {
placeholderData = options.select(placeholderData);
if (options.structuralSharing !== false) {
placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);
}
this.selectError = null;
} catch (selectError) {
getLogger().error(selectError);
this.selectError = selectError;
}
}
}
if (typeof placeholderData !== 'undefined') {
status = 'success';
data = placeholderData;
isPlaceholderData = true;
}
}
if (this.selectError) {
error = this.selectError;
data = this.selectResult;
errorUpdatedAt = Date.now();
status = 'error';
}
var result = {
status: status,
isLoading: status === 'loading',
isSuccess: status === 'success',
isError: status === 'error',
isIdle: status === 'idle',
data: data,
dataUpdatedAt: dataUpdatedAt,
error: error,
errorUpdatedAt: errorUpdatedAt,
failureCount: state.fetchFailureCount,
errorUpdateCount: state.errorUpdateCount,
isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,
isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,
isFetching: isFetching,
isRefetching: isFetching && status !== 'loading',
isLoadingError: status === 'error' && state.dataUpdatedAt === 0,
isPlaceholderData: isPlaceholderData,
isPreviousData: isPreviousData,
isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,
isStale: isStale(query, options),
refetch: this.refetch,
remove: this.remove
};
return result;
};
_proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {
if (!prevResult) {
return true;
}
var _this$options = this.options,
notifyOnChangeProps = _this$options.notifyOnChangeProps,
notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;
if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {
return true;
}
if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {
return true;
}
var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;
return Object.keys(result).some(function (key) {
var typedKey = key;
var changed = result[typedKey] !== prevResult[typedKey];
var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {
return x === key;
});
var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {
return x === key;
});
return changed && !isExcluded && (!includedProps || isIncluded);
});
};
_proto.updateResult = function updateResult(notifyOptions) {
var prevResult = this.currentResult;
this.currentResult = this.createResult(this.currentQuery, this.options);
this.currentResultState = this.currentQuery.state;
this.currentResultOptions = this.options; // Only notify if something has changed
if (shallowEqualObjects(this.currentResult, prevResult)) {
return;
} // Determine which callbacks to trigger
var defaultNotifyOptions = {
cache: true
};
if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {
defaultNotifyOptions.listeners = true;
}
this.notify(_extends({}, defaultNotifyOptions, notifyOptions));
};
_proto.updateQuery = function updateQuery() {
var query = this.client.getQueryCache().build(this.client, this.options);
if (query === this.currentQuery) {
return;
}
var prevQuery = this.currentQuery;
this.currentQuery = query;
this.currentQueryInitialState = query.state;
this.previousQueryResult = this.currentResult;
if (this.hasListeners()) {
prevQuery == null ? void 0 : prevQuery.removeObserver(this);
query.addObserver(this);
}
};
_proto.onQueryUpdate = function onQueryUpdate(action) {
var notifyOptions = {};
if (action.type === 'success') {
notifyOptions.onSuccess = true;
} else if (action.type === 'error' && !isCancelledError(action.error)) {
notifyOptions.onError = true;
}
this.updateResult(notifyOptions);
if (this.hasListeners()) {
this.updateTimers();
}
};
_proto.notify = function notify(notifyOptions) {
var _this8 = this;
notifyManager.batch(function () {
// First trigger the configuration callbacks
if (notifyOptions.onSuccess) {
_this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);
_this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);
} else if (notifyOptions.onError) {
_this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);
_this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);
} // Then trigger the listeners
if (notifyOptions.listeners) {
_this8.listeners.forEach(function (listener) {
listener(_this8.currentResult);
});
} // Then the cache listeners
if (notifyOptions.cache) {
_this8.client.getQueryCache().notify({
query: _this8.currentQuery,
type: 'observerResultsUpdated'
});
}
});
};
return QueryObserver;
}(Subscribable);
function shouldLoadOnMount(query, options) {
return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);
}
function shouldFetchOnMount(query, options) {
return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);
}
function shouldFetchOn(query, options, field) {
if (options.enabled !== false) {
var value = typeof field === 'function' ? field(query) : field;
return value === 'always' || value !== false && isStale(query, options);
}
return false;
}
function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);
}
function isStale(query, options) {
return query.isStaleByTime(options.staleTime);
}

157
frontend/node_modules/react-query/es/core/retryer.js generated vendored Normal file
View File

@@ -0,0 +1,157 @@
import { focusManager } from './focusManager';
import { onlineManager } from './onlineManager';
import { sleep } from './utils';
function defaultRetryDelay(failureCount) {
return Math.min(1000 * Math.pow(2, failureCount), 30000);
}
export function isCancelable(value) {
return typeof (value == null ? void 0 : value.cancel) === 'function';
}
export var CancelledError = function CancelledError(options) {
this.revert = options == null ? void 0 : options.revert;
this.silent = options == null ? void 0 : options.silent;
};
export function isCancelledError(value) {
return value instanceof CancelledError;
} // CLASS
export var Retryer = function Retryer(config) {
var _this = this;
var cancelRetry = false;
var cancelFn;
var continueFn;
var promiseResolve;
var promiseReject;
this.abort = config.abort;
this.cancel = function (cancelOptions) {
return cancelFn == null ? void 0 : cancelFn(cancelOptions);
};
this.cancelRetry = function () {
cancelRetry = true;
};
this.continueRetry = function () {
cancelRetry = false;
};
this.continue = function () {
return continueFn == null ? void 0 : continueFn();
};
this.failureCount = 0;
this.isPaused = false;
this.isResolved = false;
this.isTransportCancelable = false;
this.promise = new Promise(function (outerResolve, outerReject) {
promiseResolve = outerResolve;
promiseReject = outerReject;
});
var resolve = function resolve(value) {
if (!_this.isResolved) {
_this.isResolved = true;
config.onSuccess == null ? void 0 : config.onSuccess(value);
continueFn == null ? void 0 : continueFn();
promiseResolve(value);
}
};
var reject = function reject(value) {
if (!_this.isResolved) {
_this.isResolved = true;
config.onError == null ? void 0 : config.onError(value);
continueFn == null ? void 0 : continueFn();
promiseReject(value);
}
};
var pause = function pause() {
return new Promise(function (continueResolve) {
continueFn = continueResolve;
_this.isPaused = true;
config.onPause == null ? void 0 : config.onPause();
}).then(function () {
continueFn = undefined;
_this.isPaused = false;
config.onContinue == null ? void 0 : config.onContinue();
});
}; // Create loop function
var run = function run() {
// Do nothing if already resolved
if (_this.isResolved) {
return;
}
var promiseOrValue; // Execute query
try {
promiseOrValue = config.fn();
} catch (error) {
promiseOrValue = Promise.reject(error);
} // Create callback to cancel this fetch
cancelFn = function cancelFn(cancelOptions) {
if (!_this.isResolved) {
reject(new CancelledError(cancelOptions));
_this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported
if (isCancelable(promiseOrValue)) {
try {
promiseOrValue.cancel();
} catch (_unused) {}
}
}
}; // Check if the transport layer support cancellation
_this.isTransportCancelable = isCancelable(promiseOrValue);
Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {
var _config$retry, _config$retryDelay;
// Stop if the fetch is already resolved
if (_this.isResolved) {
return;
} // Do we need to retry the request?
var retry = (_config$retry = config.retry) != null ? _config$retry : 3;
var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;
var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;
var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);
if (cancelRetry || !shouldRetry) {
// We are done if the query does not need to be retried
reject(error);
return;
}
_this.failureCount++; // Notify on fail
config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay
sleep(delay) // Pause if the document is not visible or when the device is offline
.then(function () {
if (!focusManager.isFocused() || !onlineManager.isOnline()) {
return pause();
}
}).then(function () {
if (cancelRetry) {
reject(error);
} else {
run();
}
});
});
}; // Start loop
run();
};

View File

@@ -0,0 +1,37 @@
export var Subscribable = /*#__PURE__*/function () {
function Subscribable() {
this.listeners = [];
}
var _proto = Subscribable.prototype;
_proto.subscribe = function subscribe(listener) {
var _this = this;
var callback = listener || function () {
return undefined;
};
this.listeners.push(callback);
this.onSubscribe();
return function () {
_this.listeners = _this.listeners.filter(function (x) {
return x !== callback;
});
_this.onUnsubscribe();
};
};
_proto.hasListeners = function hasListeners() {
return this.listeners.length > 0;
};
_proto.onSubscribe = function onSubscribe() {// Do nothing
};
_proto.onUnsubscribe = function onUnsubscribe() {// Do nothing
};
return Subscribable;
}();

0
frontend/node_modules/react-query/es/core/types.js generated vendored Normal file
View File

332
frontend/node_modules/react-query/es/core/utils.js generated vendored Normal file
View File

@@ -0,0 +1,332 @@
import _extends from "@babel/runtime/helpers/esm/extends";
// TYPES
// UTILS
export var isServer = typeof window === 'undefined';
export function noop() {
return undefined;
}
export function functionalUpdate(updater, input) {
return typeof updater === 'function' ? updater(input) : updater;
}
export function isValidTimeout(value) {
return typeof value === 'number' && value >= 0 && value !== Infinity;
}
export function ensureQueryKeyArray(value) {
return Array.isArray(value) ? value : [value];
}
export function difference(array1, array2) {
return array1.filter(function (x) {
return array2.indexOf(x) === -1;
});
}
export function replaceAt(array, index, value) {
var copy = array.slice(0);
copy[index] = value;
return copy;
}
export function timeUntilStale(updatedAt, staleTime) {
return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);
}
export function parseQueryArgs(arg1, arg2, arg3) {
if (!isQueryKey(arg1)) {
return arg1;
}
if (typeof arg2 === 'function') {
return _extends({}, arg3, {
queryKey: arg1,
queryFn: arg2
});
}
return _extends({}, arg2, {
queryKey: arg1
});
}
export function parseMutationArgs(arg1, arg2, arg3) {
if (isQueryKey(arg1)) {
if (typeof arg2 === 'function') {
return _extends({}, arg3, {
mutationKey: arg1,
mutationFn: arg2
});
}
return _extends({}, arg2, {
mutationKey: arg1
});
}
if (typeof arg1 === 'function') {
return _extends({}, arg2, {
mutationFn: arg1
});
}
return _extends({}, arg1);
}
export function parseFilterArgs(arg1, arg2, arg3) {
return isQueryKey(arg1) ? [_extends({}, arg2, {
queryKey: arg1
}), arg3] : [arg1 || {}, arg2];
}
export function parseMutationFilterArgs(arg1, arg2) {
return isQueryKey(arg1) ? _extends({}, arg2, {
mutationKey: arg1
}) : arg1;
}
export function mapQueryStatusFilter(active, inactive) {
if (active === true && inactive === true || active == null && inactive == null) {
return 'all';
} else if (active === false && inactive === false) {
return 'none';
} else {
// At this point, active|inactive can only be true|false or false|true
// so, when only one value is provided, the missing one has to be the negated value
var isActive = active != null ? active : !inactive;
return isActive ? 'active' : 'inactive';
}
}
export function matchQuery(filters, query) {
var active = filters.active,
exact = filters.exact,
fetching = filters.fetching,
inactive = filters.inactive,
predicate = filters.predicate,
queryKey = filters.queryKey,
stale = filters.stale;
if (isQueryKey(queryKey)) {
if (exact) {
if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {
return false;
}
} else if (!partialMatchKey(query.queryKey, queryKey)) {
return false;
}
}
var queryStatusFilter = mapQueryStatusFilter(active, inactive);
if (queryStatusFilter === 'none') {
return false;
} else if (queryStatusFilter !== 'all') {
var isActive = query.isActive();
if (queryStatusFilter === 'active' && !isActive) {
return false;
}
if (queryStatusFilter === 'inactive' && isActive) {
return false;
}
}
if (typeof stale === 'boolean' && query.isStale() !== stale) {
return false;
}
if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {
return false;
}
if (predicate && !predicate(query)) {
return false;
}
return true;
}
export function matchMutation(filters, mutation) {
var exact = filters.exact,
fetching = filters.fetching,
predicate = filters.predicate,
mutationKey = filters.mutationKey;
if (isQueryKey(mutationKey)) {
if (!mutation.options.mutationKey) {
return false;
}
if (exact) {
if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {
return false;
}
} else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {
return false;
}
}
if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {
return false;
}
if (predicate && !predicate(mutation)) {
return false;
}
return true;
}
export function hashQueryKeyByOptions(queryKey, options) {
var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;
return hashFn(queryKey);
}
/**
* Default query keys hash function.
*/
export function hashQueryKey(queryKey) {
var asArray = ensureQueryKeyArray(queryKey);
return stableValueHash(asArray);
}
/**
* Hashes the value into a stable hash.
*/
export function stableValueHash(value) {
return JSON.stringify(value, function (_, val) {
return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {
result[key] = val[key];
return result;
}, {}) : val;
});
}
/**
* Checks if key `b` partially matches with key `a`.
*/
export function partialMatchKey(a, b) {
return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));
}
/**
* Checks if `b` partially matches with `a`.
*/
export function partialDeepEqual(a, b) {
if (a === b) {
return true;
}
if (typeof a !== typeof b) {
return false;
}
if (a && b && typeof a === 'object' && typeof b === 'object') {
return !Object.keys(b).some(function (key) {
return !partialDeepEqual(a[key], b[key]);
});
}
return false;
}
/**
* This function returns `a` if `b` is deeply equal.
* If not, it will replace any deeply equal children of `b` with those of `a`.
* This can be used for structural sharing between JSON values for example.
*/
export function replaceEqualDeep(a, b) {
if (a === b) {
return a;
}
var array = Array.isArray(a) && Array.isArray(b);
if (array || isPlainObject(a) && isPlainObject(b)) {
var aSize = array ? a.length : Object.keys(a).length;
var bItems = array ? b : Object.keys(b);
var bSize = bItems.length;
var copy = array ? [] : {};
var equalItems = 0;
for (var i = 0; i < bSize; i++) {
var key = array ? i : bItems[i];
copy[key] = replaceEqualDeep(a[key], b[key]);
if (copy[key] === a[key]) {
equalItems++;
}
}
return aSize === bSize && equalItems === aSize ? a : copy;
}
return b;
}
/**
* Shallow compare objects. Only works with objects that always have the same properties.
*/
export function shallowEqualObjects(a, b) {
if (a && !b || b && !a) {
return false;
}
for (var key in a) {
if (a[key] !== b[key]) {
return false;
}
}
return true;
} // Copied from: https://github.com/jonschlinkert/is-plain-object
export function isPlainObject(o) {
if (!hasObjectPrototype(o)) {
return false;
} // If has modified constructor
var ctor = o.constructor;
if (typeof ctor === 'undefined') {
return true;
} // If has modified prototype
var prot = ctor.prototype;
if (!hasObjectPrototype(prot)) {
return false;
} // If constructor does not have an Object-specific method
if (!prot.hasOwnProperty('isPrototypeOf')) {
return false;
} // Most likely a plain Object
return true;
}
function hasObjectPrototype(o) {
return Object.prototype.toString.call(o) === '[object Object]';
}
export function isQueryKey(value) {
return typeof value === 'string' || Array.isArray(value);
}
export function isError(value) {
return value instanceof Error;
}
export function sleep(timeout) {
return new Promise(function (resolve) {
setTimeout(resolve, timeout);
});
}
/**
* Schedules a microtask.
* This can be useful to schedule state updates after rendering.
*/
export function scheduleMicrotask(callback) {
Promise.resolve().then(callback).catch(function (error) {
return setTimeout(function () {
throw error;
});
});
}
export function getAbortController() {
if (typeof AbortController === 'function') {
return new AbortController();
}
}

View File

@@ -0,0 +1,124 @@
function _await(value, then, direct) {
if (direct) {
return then ? then(value) : value;
}
if (!value || !value.then) {
value = Promise.resolve(value);
}
return then ? value.then(then) : value;
}
function _async(f) {
return function () {
for (var args = [], i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
try {
return Promise.resolve(f.apply(this, args));
} catch (e) {
return Promise.reject(e);
}
};
}
function _empty() {}
function _invokeIgnored(body) {
var result = body();
if (result && result.then) {
return result.then(_empty);
}
}
export var createAsyncStoragePersistor = function createAsyncStoragePersistor(_ref) {
var storage = _ref.storage,
_ref$key = _ref.key,
key = _ref$key === void 0 ? "REACT_QUERY_OFFLINE_CACHE" : _ref$key,
_ref$throttleTime = _ref.throttleTime,
throttleTime = _ref$throttleTime === void 0 ? 1000 : _ref$throttleTime,
_ref$serialize = _ref.serialize,
serialize = _ref$serialize === void 0 ? JSON.stringify : _ref$serialize,
_ref$deserialize = _ref.deserialize,
deserialize = _ref$deserialize === void 0 ? JSON.parse : _ref$deserialize;
return {
persistClient: asyncThrottle(function (persistedClient) {
return storage.setItem(key, serialize(persistedClient));
}, {
interval: throttleTime
}),
restoreClient: _async(function () {
return _await(storage.getItem(key), function (cacheString) {
if (!cacheString) {
return;
}
return deserialize(cacheString);
});
}),
removeClient: function removeClient() {
return storage.removeItem(key);
}
};
};
function asyncThrottle(func, _temp) {
var _ref2 = _temp === void 0 ? {} : _temp,
_ref2$interval = _ref2.interval,
interval = _ref2$interval === void 0 ? 1000 : _ref2$interval,
_ref2$limit = _ref2.limit,
limit = _ref2$limit === void 0 ? 1 : _ref2$limit;
if (typeof func !== 'function') throw new Error('argument is not function.');
var running = {
current: false
};
var lastTime = 0;
var timeout;
var queue = [];
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _async(function () {
if (running.current) {
lastTime = Date.now();
if (queue.length > limit) {
queue.shift();
}
queue.push(args);
clearTimeout(timeout);
}
return _invokeIgnored(function () {
if (Date.now() - lastTime > interval) {
running.current = true;
return _await(func.apply(void 0, args), function () {
lastTime = Date.now();
running.current = false;
});
} else {
if (queue.length > 0) {
var lastArgs = queue[queue.length - 1];
timeout = setTimeout(_async(function () {
return _invokeIgnored(function () {
if (!running.current) {
running.current = true;
return _await(func.apply(void 0, lastArgs), function () {
running.current = false;
});
}
});
}), interval);
}
}
});
})();
};
}

View File

@@ -0,0 +1,114 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import { noop } from '../core/utils';
export function createWebStoragePersistor(_ref) {
var storage = _ref.storage,
_ref$key = _ref.key,
key = _ref$key === void 0 ? "REACT_QUERY_OFFLINE_CACHE" : _ref$key,
_ref$throttleTime = _ref.throttleTime,
throttleTime = _ref$throttleTime === void 0 ? 1000 : _ref$throttleTime,
_ref$serialize = _ref.serialize,
serialize = _ref$serialize === void 0 ? JSON.stringify : _ref$serialize,
_ref$deserialize = _ref.deserialize,
deserialize = _ref$deserialize === void 0 ? JSON.parse : _ref$deserialize;
//try to save data to storage
function trySave(persistedClient) {
try {
storage.setItem(key, serialize(persistedClient));
} catch (_unused) {
return false;
}
return true;
}
if (typeof storage !== 'undefined') {
return {
persistClient: throttle(function (persistedClient) {
if (trySave(persistedClient) !== true) {
var mutations = [].concat(persistedClient.clientState.mutations);
var queries = [].concat(persistedClient.clientState.queries);
var _client = _extends({}, persistedClient, {
clientState: {
mutations: mutations,
queries: queries
}
}); // sort queries by dataUpdatedAt (oldest first)
var sortedQueries = [].concat(queries).sort(function (a, b) {
return a.state.dataUpdatedAt - b.state.dataUpdatedAt;
}); // clean old queries and try to save
var _loop = function _loop() {
var oldestData = sortedQueries.shift();
_client.clientState.queries = queries.filter(function (q) {
return q !== oldestData;
});
if (trySave(_client)) {
return {
v: void 0
}; // save success
}
};
while (sortedQueries.length > 0) {
var _ret = _loop();
if (typeof _ret === "object") return _ret.v;
} // clean mutations and try to save
while (mutations.shift()) {
if (trySave(_client)) {
return; // save success
}
}
}
}, throttleTime),
restoreClient: function restoreClient() {
var cacheString = storage.getItem(key);
if (!cacheString) {
return;
}
return deserialize(cacheString);
},
removeClient: function removeClient() {
storage.removeItem(key);
}
};
}
return {
persistClient: noop,
restoreClient: noop,
removeClient: noop
};
}
function throttle(func, wait) {
if (wait === void 0) {
wait = 100;
}
var timer = null;
var params;
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
params = args;
if (timer === null) {
timer = setTimeout(function () {
func.apply(void 0, params);
timer = null;
}, wait);
}
};
}

View File

@@ -0,0 +1,208 @@
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _extends from "@babel/runtime/helpers/esm/extends";
import React from 'react';
import { displayValue, styled } from './utils';
export var Entry = styled('div', {
fontFamily: 'Menlo, monospace',
fontSize: '1em',
lineHeight: '1.7',
outline: 'none',
wordBreak: 'break-word'
});
export var Label = styled('span', {
color: 'white'
});
export var LabelButton = styled('button', {
cursor: 'pointer',
color: 'white'
});
export var ExpandButton = styled('button', {
cursor: 'pointer',
color: 'inherit',
font: 'inherit',
outline: 'inherit',
background: 'transparent',
border: 'none',
padding: 0
});
export var Value = styled('span', function (_props, theme) {
return {
color: theme.danger
};
});
export var SubEntries = styled('div', {
marginLeft: '.1em',
paddingLeft: '1em',
borderLeft: '2px solid rgba(0,0,0,.15)'
});
export var Info = styled('span', {
color: 'grey',
fontSize: '.7em'
});
export var Expander = function Expander(_ref) {
var expanded = _ref.expanded,
_ref$style = _ref.style,
style = _ref$style === void 0 ? {} : _ref$style;
return /*#__PURE__*/React.createElement("span", {
style: _extends({
display: 'inline-block',
transition: 'all .1s ease',
transform: "rotate(" + (expanded ? 90 : 0) + "deg) " + (style.transform || '')
}, style)
}, "\u25B6");
};
/**
* Chunk elements in the array by size
*
* when the array cannot be chunked evenly by size, the last chunk will be
* filled with the remaining elements
*
* @example
* chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]
*/
export function chunkArray(array, size) {
if (size < 1) return [];
var i = 0;
var result = [];
while (i < array.length) {
result.push(array.slice(i, i + size));
i = i + size;
}
return result;
}
export var DefaultRenderer = function DefaultRenderer(_ref2) {
var HandleEntry = _ref2.HandleEntry,
label = _ref2.label,
value = _ref2.value,
_ref2$subEntries = _ref2.subEntries,
subEntries = _ref2$subEntries === void 0 ? [] : _ref2$subEntries,
_ref2$subEntryPages = _ref2.subEntryPages,
subEntryPages = _ref2$subEntryPages === void 0 ? [] : _ref2$subEntryPages,
type = _ref2.type,
_ref2$expanded = _ref2.expanded,
expanded = _ref2$expanded === void 0 ? false : _ref2$expanded,
toggleExpanded = _ref2.toggleExpanded,
pageSize = _ref2.pageSize;
var _React$useState = React.useState([]),
expandedPages = _React$useState[0],
setExpandedPages = _React$useState[1];
return /*#__PURE__*/React.createElement(Entry, {
key: label
}, (subEntryPages == null ? void 0 : subEntryPages.length) ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ExpandButton, {
onClick: function onClick() {
return toggleExpanded();
}
}, /*#__PURE__*/React.createElement(Expander, {
expanded: expanded
}), " ", label, ' ', /*#__PURE__*/React.createElement(Info, null, String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : '', subEntries.length, " ", subEntries.length > 1 ? "items" : "item")), expanded ? subEntryPages.length === 1 ? /*#__PURE__*/React.createElement(SubEntries, null, subEntries.map(function (entry) {
return /*#__PURE__*/React.createElement(HandleEntry, {
key: entry.label,
entry: entry
});
})) : /*#__PURE__*/React.createElement(SubEntries, null, subEntryPages.map(function (entries, index) {
return /*#__PURE__*/React.createElement("div", {
key: index
}, /*#__PURE__*/React.createElement(Entry, null, /*#__PURE__*/React.createElement(LabelButton, {
onClick: function onClick() {
return setExpandedPages(function (old) {
return old.includes(index) ? old.filter(function (d) {
return d !== index;
}) : [].concat(old, [index]);
});
}
}, /*#__PURE__*/React.createElement(Expander, {
expanded: expanded
}), " [", index * pageSize, " ...", ' ', index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/React.createElement(SubEntries, null, entries.map(function (entry) {
return /*#__PURE__*/React.createElement(HandleEntry, {
key: entry.label,
entry: entry
});
})) : null));
})) : null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Label, null, label, ":"), " ", /*#__PURE__*/React.createElement(Value, null, displayValue(value))));
};
function isIterable(x) {
return Symbol.iterator in x;
}
export default function Explorer(_ref3) {
var value = _ref3.value,
defaultExpanded = _ref3.defaultExpanded,
_ref3$renderer = _ref3.renderer,
renderer = _ref3$renderer === void 0 ? DefaultRenderer : _ref3$renderer,
_ref3$pageSize = _ref3.pageSize,
pageSize = _ref3$pageSize === void 0 ? 100 : _ref3$pageSize,
rest = _objectWithoutPropertiesLoose(_ref3, ["value", "defaultExpanded", "renderer", "pageSize"]);
var _React$useState2 = React.useState(Boolean(defaultExpanded)),
expanded = _React$useState2[0],
setExpanded = _React$useState2[1];
var toggleExpanded = React.useCallback(function () {
return setExpanded(function (old) {
return !old;
});
}, []);
var type = typeof value;
var subEntries = [];
var makeProperty = function makeProperty(sub) {
var _ref4;
var subDefaultExpanded = defaultExpanded === true ? (_ref4 = {}, _ref4[sub.label] = true, _ref4) : defaultExpanded == null ? void 0 : defaultExpanded[sub.label];
return _extends({}, sub, {
defaultExpanded: subDefaultExpanded
});
};
if (Array.isArray(value)) {
type = 'array';
subEntries = value.map(function (d, i) {
return makeProperty({
label: i.toString(),
value: d
});
});
} else if (value !== null && typeof value === 'object' && isIterable(value) && typeof value[Symbol.iterator] === 'function') {
type = 'Iterable';
subEntries = Array.from(value, function (val, i) {
return makeProperty({
label: i.toString(),
value: val
});
});
} else if (typeof value === 'object' && value !== null) {
type = 'object';
subEntries = Object.entries(value).map(function (_ref5) {
var key = _ref5[0],
val = _ref5[1];
return makeProperty({
label: key,
value: val
});
});
}
var subEntryPages = chunkArray(subEntries, pageSize);
return renderer(_extends({
HandleEntry: function HandleEntry(_ref6) {
var entry = _ref6.entry;
return /*#__PURE__*/React.createElement(Explorer, _extends({
value: value,
renderer: renderer
}, rest, entry));
},
type: type,
subEntries: subEntries,
subEntryPages: subEntryPages,
value: value,
expanded: expanded,
toggleExpanded: toggleExpanded,
pageSize: pageSize
}, rest));
}

28
frontend/node_modules/react-query/es/devtools/Logo.js generated vendored Normal file
View File

@@ -0,0 +1,28 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
export default function Logo(props) {
return /*#__PURE__*/React.createElement("svg", _extends({
width: "40px",
height: "40px",
viewBox: "0 0 190 190",
version: "1.1"
}, props), /*#__PURE__*/React.createElement("g", {
stroke: "none",
strokeWidth: "1",
fill: "none",
fillRule: "evenodd"
}, /*#__PURE__*/React.createElement("g", {
transform: "translate(-33.000000, 0.000000)"
}, /*#__PURE__*/React.createElement("path", {
d: "M72.7239712,61.3436237 C69.631224,46.362877 68.9675112,34.8727722 70.9666331,26.5293551 C72.1555965,21.5671678 74.3293088,17.5190846 77.6346064,14.5984631 C81.1241394,11.5150478 85.5360327,10.0020122 90.493257,10.0020122 C98.6712013,10.0020122 107.26826,13.7273214 116.455725,20.8044264 C120.20312,23.6910458 124.092437,27.170411 128.131651,31.2444746 C128.45314,30.8310265 128.816542,30.4410453 129.22143,30.0806152 C140.64098,19.9149716 150.255245,13.5989272 158.478408,11.1636507 C163.367899,9.715636 167.958526,9.57768202 172.138936,10.983031 C176.551631,12.4664684 180.06766,15.5329489 182.548314,19.8281091 C186.642288,26.9166735 187.721918,36.2310983 186.195595,47.7320243 C185.573451,52.4199112 184.50985,57.5263831 183.007094,63.0593153 C183.574045,63.1277086 184.142416,63.2532808 184.705041,63.4395297 C199.193932,68.2358678 209.453582,73.3937462 215.665021,79.2882839 C219.360669,82.7953831 221.773972,86.6998434 222.646365,91.0218204 C223.567176,95.5836746 222.669313,100.159332 220.191548,104.451297 C216.105211,111.529614 208.591643,117.11221 197.887587,121.534031 C193.589552,123.309539 188.726579,124.917559 183.293259,126.363748 C183.541176,126.92292 183.733521,127.516759 183.862138,128.139758 C186.954886,143.120505 187.618598,154.61061 185.619477,162.954027 C184.430513,167.916214 182.256801,171.964297 178.951503,174.884919 C175.46197,177.968334 171.050077,179.48137 166.092853,179.48137 C157.914908,179.48137 149.31785,175.756061 140.130385,168.678956 C136.343104,165.761613 132.410866,162.238839 128.325434,158.108619 C127.905075,158.765474 127.388968,159.376011 126.77857,159.919385 C115.35902,170.085028 105.744755,176.401073 97.5215915,178.836349 C92.6321009,180.284364 88.0414736,180.422318 83.8610636,179.016969 C79.4483686,177.533532 75.9323404,174.467051 73.4516862,170.171891 C69.3577116,163.083327 68.2780823,153.768902 69.8044053,142.267976 C70.449038,137.410634 71.56762,132.103898 73.1575891,126.339009 C72.5361041,126.276104 71.9120754,126.144816 71.2949591,125.940529 C56.8060684,121.144191 46.5464184,115.986312 40.3349789,110.091775 C36.6393312,106.584675 34.2260275,102.680215 33.3536352,98.3582381 C32.4328237,93.7963839 33.3306866,89.2207269 35.8084524,84.9287618 C39.8947886,77.8504443 47.4083565,72.2678481 58.1124133,67.8460273 C62.5385143,66.0176154 67.5637208,64.366822 73.1939394,62.8874674 C72.9933393,62.3969171 72.8349374,61.8811235 72.7239712,61.3436237 Z",
fill: "#002C4B",
fillRule: "nonzero",
transform: "translate(128.000000, 95.000000) scale(-1, 1) translate(-128.000000, -95.000000) "
}), /*#__PURE__*/React.createElement("path", {
d: "M113.396882,64 L142.608177,64 C144.399254,64 146.053521,64.958025 146.944933,66.5115174 L161.577138,92.0115174 C162.461464,93.5526583 162.461464,95.4473417 161.577138,96.9884826 L146.944933,122.488483 C146.053521,124.041975 144.399254,125 142.608177,125 L113.396882,125 C111.605806,125 109.951539,124.041975 109.060126,122.488483 L94.4279211,96.9884826 C93.543596,95.4473417 93.543596,93.5526583 94.4279211,92.0115174 L109.060126,66.5115174 C109.951539,64.958025 111.605806,64 113.396882,64 Z M138.987827,70.2765273 C140.779849,70.2765273 142.434839,71.2355558 143.325899,72.7903404 L154.343038,92.0138131 C155.225607,93.5537825 155.225607,95.4462175 154.343038,96.9861869 L143.325899,116.20966 C142.434839,117.764444 140.779849,118.723473 138.987827,118.723473 L117.017233,118.723473 C115.225211,118.723473 113.570221,117.764444 112.67916,116.20966 L101.662022,96.9861869 C100.779452,95.4462175 100.779452,93.5537825 101.662022,92.0138131 L112.67916,72.7903404 C113.570221,71.2355558 115.225211,70.2765273 117.017233,70.2765273 L138.987827,70.2765273 Z M135.080648,77.1414791 L120.924411,77.1414791 C119.134228,77.1414791 117.480644,78.0985567 116.5889,79.6508285 L116.5889,79.6508285 L109.489217,92.0093494 C108.603232,93.5515958 108.603232,95.4484042 109.489217,96.9906506 L109.489217,96.9906506 L116.5889,109.349172 C117.480644,110.901443 119.134228,111.858521 120.924411,111.858521 L120.924411,111.858521 L135.080648,111.858521 C136.870831,111.858521 138.524416,110.901443 139.41616,109.349172 L139.41616,109.349172 L146.515843,96.9906506 C147.401828,95.4484042 147.401828,93.5515958 146.515843,92.0093494 L146.515843,92.0093494 L139.41616,79.6508285 C138.524416,78.0985567 136.870831,77.1414791 135.080648,77.1414791 L135.080648,77.1414791 Z M131.319186,83.7122186 C133.108028,83.7122186 134.760587,84.6678753 135.652827,86.2183156 L138.983552,92.0060969 C139.87203,93.5500005 139.87203,95.4499995 138.983552,96.9939031 L135.652827,102.781684 C134.760587,104.332125 133.108028,105.287781 131.319186,105.287781 L124.685874,105.287781 C122.897032,105.287781 121.244473,104.332125 120.352233,102.781684 L117.021508,96.9939031 C116.13303,95.4499995 116.13303,93.5500005 117.021508,92.0060969 L120.352233,86.2183156 C121.244473,84.6678753 122.897032,83.7122186 124.685874,83.7122186 L131.319186,83.7122186 Z M128.003794,90.1848875 C126.459294,90.1848875 125.034382,91.0072828 124.263005,92.3424437 C123.491732,93.6774232 123.491732,95.3225768 124.263005,96.6575563 C125.034382,97.9927172 126.459294,98.8151125 128.001266,98.8151125 L128.001266,98.8151125 C129.545766,98.8151125 130.970678,97.9927172 131.742055,96.6575563 C132.513327,95.3225768 132.513327,93.6774232 131.742055,92.3424437 C130.970678,91.0072828 129.545766,90.1848875 128.003794,90.1848875 L128.003794,90.1848875 Z M93,94.5009646 L100.767764,94.5009646",
fill: "#FFD94C"
}), /*#__PURE__*/React.createElement("path", {
d: "M87.8601729,108.357758 C89.1715224,107.608286 90.8360246,108.074601 91.5779424,109.399303 L91.5779424,109.399303 L92.0525843,110.24352 C95.8563392,116.982993 99.8190116,123.380176 103.940602,129.435068 C108.807881,136.585427 114.28184,143.82411 120.362479,151.151115 C121.316878,152.30114 121.184944,154.011176 120.065686,154.997937 L120.065686,154.997937 L119.454208,155.534625 C99.3465389,173.103314 86.2778188,176.612552 80.2480482,166.062341 C74.3500652,155.742717 76.4844915,136.982888 86.6513274,109.782853 C86.876818,109.179582 87.3045861,108.675291 87.8601729,108.357758 Z M173.534177,129.041504 C174.986131,128.785177 176.375496,129.742138 176.65963,131.194242 L176.65963,131.194242 L176.812815,131.986376 C181.782365,157.995459 178.283348,171 166.315764,171 C154.609745,171 139.708724,159.909007 121.612702,137.727022 C121.211349,137.235047 120.994572,136.617371 121,135.981509 C121.013158,134.480686 122.235785,133.274651 123.730918,133.287756 L123.730918,133.287756 L124.684654,133.294531 C132.305698,133.335994 139.714387,133.071591 146.910723,132.501323 C155.409039,131.82788 164.283523,130.674607 173.534177,129.041504 Z M180.408726,73.8119663 C180.932139,72.4026903 182.508386,71.6634537 183.954581,72.149012 L183.954581,72.149012 L184.742552,72.4154854 C210.583763,81.217922 220.402356,90.8916805 214.198332,101.436761 C208.129904,111.751366 190.484347,119.260339 161.26166,123.963678 C160.613529,124.067994 159.948643,123.945969 159.382735,123.618843 C158.047025,122.846729 157.602046,121.158214 158.388848,119.847438 L158.388848,119.847438 L158.889328,119.0105 C162.877183,112.31633 166.481358,105.654262 169.701854,99.0242957 C173.50501,91.1948179 177.073967,82.7907081 180.408726,73.8119663 Z M94.7383398,66.0363218 C95.3864708,65.9320063 96.0513565,66.0540315 96.6172646,66.3811573 C97.9529754,67.153271 98.3979538,68.8417862 97.6111517,70.1525615 L97.6111517,70.1525615 L97.1106718,70.9895001 C93.1228168,77.6836699 89.5186416,84.3457379 86.2981462,90.9757043 C82.49499,98.8051821 78.9260328,107.209292 75.5912744,116.188034 C75.0678608,117.59731 73.4916142,118.336546 72.045419,117.850988 L72.045419,117.850988 L71.2574475,117.584515 C45.4162372,108.782078 35.597644,99.1083195 41.8016679,88.5632391 C47.8700957,78.2486335 65.515653,70.7396611 94.7383398,66.0363218 Z M136.545792,34.4653746 C156.653461,16.8966864 169.722181,13.3874478 175.751952,23.9376587 C181.649935,34.2572826 179.515508,53.0171122 169.348673,80.2171474 C169.123182,80.8204179 168.695414,81.324709 168.139827,81.6422422 C166.828478,82.3917144 165.163975,81.9253986 164.422058,80.6006966 L164.422058,80.6006966 L163.947416,79.7564798 C160.143661,73.0170065 156.180988,66.6198239 152.059398,60.564932 C147.192119,53.4145727 141.71816,46.1758903 135.637521,38.8488847 C134.683122,37.6988602 134.815056,35.9888243 135.934314,35.0020629 L135.934314,35.0020629 Z M90.6842361,18 C102.390255,18 117.291276,29.0909926 135.387298,51.2729777 C135.788651,51.7649527 136.005428,52.3826288 136,53.0184911 C135.986842,54.5193144 134.764215,55.7253489 133.269082,55.7122445 L133.269082,55.7122445 L132.315346,55.7054689 C124.694302,55.6640063 117.285613,55.9284091 110.089277,56.4986773 C101.590961,57.17212 92.7164767,58.325393 83.4658235,59.9584962 C82.0138691,60.2148231 80.6245044,59.2578618 80.3403697,57.805758 L80.3403697,57.805758 L80.1871846,57.0136235 C75.2176347,31.0045412 78.7166519,18 90.6842361,18 Z",
fill: "#FF4154"
}))));
}

View File

@@ -0,0 +1,693 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import React from 'react';
import { useQueryClient } from 'react-query';
import { matchSorter } from 'match-sorter';
import useLocalStorage from './useLocalStorage';
import { useIsMounted, useSafeState } from './utils';
import { Panel, QueryKeys, QueryKey, Button, Code, Input, Select, ActiveQueryPanel } from './styledComponents';
import { ThemeProvider, defaultTheme as theme } from './theme';
import { getQueryStatusLabel, getQueryStatusColor } from './utils';
import Explorer from './Explorer';
import Logo from './Logo';
import { noop } from '../core/utils';
var isServer = typeof window === 'undefined';
export function ReactQueryDevtools(_ref) {
var initialIsOpen = _ref.initialIsOpen,
_ref$panelProps = _ref.panelProps,
panelProps = _ref$panelProps === void 0 ? {} : _ref$panelProps,
_ref$closeButtonProps = _ref.closeButtonProps,
closeButtonProps = _ref$closeButtonProps === void 0 ? {} : _ref$closeButtonProps,
_ref$toggleButtonProp = _ref.toggleButtonProps,
toggleButtonProps = _ref$toggleButtonProp === void 0 ? {} : _ref$toggleButtonProp,
_ref$position = _ref.position,
position = _ref$position === void 0 ? 'bottom-left' : _ref$position,
_ref$containerElement = _ref.containerElement,
Container = _ref$containerElement === void 0 ? 'aside' : _ref$containerElement,
styleNonce = _ref.styleNonce;
var rootRef = React.useRef(null);
var panelRef = React.useRef(null);
var _useLocalStorage = useLocalStorage('reactQueryDevtoolsOpen', initialIsOpen),
isOpen = _useLocalStorage[0],
setIsOpen = _useLocalStorage[1];
var _useLocalStorage2 = useLocalStorage('reactQueryDevtoolsHeight', null),
devtoolsHeight = _useLocalStorage2[0],
setDevtoolsHeight = _useLocalStorage2[1];
var _useSafeState = useSafeState(false),
isResolvedOpen = _useSafeState[0],
setIsResolvedOpen = _useSafeState[1];
var _useSafeState2 = useSafeState(false),
isResizing = _useSafeState2[0],
setIsResizing = _useSafeState2[1];
var isMounted = useIsMounted();
var _handleDragStart = function handleDragStart(panelElement, startEvent) {
var _panelElement$getBoun;
if (startEvent.button !== 0) return; // Only allow left click for drag
setIsResizing(true);
var dragInfo = {
originalHeight: (_panelElement$getBoun = panelElement == null ? void 0 : panelElement.getBoundingClientRect().height) != null ? _panelElement$getBoun : 0,
pageY: startEvent.pageY
};
var run = function run(moveEvent) {
var delta = dragInfo.pageY - moveEvent.pageY;
var newHeight = (dragInfo == null ? void 0 : dragInfo.originalHeight) + delta;
setDevtoolsHeight(newHeight);
if (newHeight < 70) {
setIsOpen(false);
} else {
setIsOpen(true);
}
};
var unsub = function unsub() {
setIsResizing(false);
document.removeEventListener('mousemove', run);
document.removeEventListener('mouseUp', unsub);
};
document.addEventListener('mousemove', run);
document.addEventListener('mouseup', unsub);
};
React.useEffect(function () {
setIsResolvedOpen(isOpen != null ? isOpen : false);
}, [isOpen, isResolvedOpen, setIsResolvedOpen]); // Toggle panel visibility before/after transition (depending on direction).
// Prevents focusing in a closed panel.
React.useEffect(function () {
var ref = panelRef.current;
if (ref) {
var handlePanelTransitionStart = function handlePanelTransitionStart() {
if (ref && isResolvedOpen) {
ref.style.visibility = 'visible';
}
};
var handlePanelTransitionEnd = function handlePanelTransitionEnd() {
if (ref && !isResolvedOpen) {
ref.style.visibility = 'hidden';
}
};
ref.addEventListener('transitionstart', handlePanelTransitionStart);
ref.addEventListener('transitionend', handlePanelTransitionEnd);
return function () {
ref.removeEventListener('transitionstart', handlePanelTransitionStart);
ref.removeEventListener('transitionend', handlePanelTransitionEnd);
};
}
}, [isResolvedOpen]);
React[isServer ? 'useEffect' : 'useLayoutEffect'](function () {
if (isResolvedOpen) {
var _rootRef$current, _rootRef$current$pare;
var previousValue = (_rootRef$current = rootRef.current) == null ? void 0 : (_rootRef$current$pare = _rootRef$current.parentElement) == null ? void 0 : _rootRef$current$pare.style.paddingBottom;
var run = function run() {
var _panelRef$current, _rootRef$current2;
var containerHeight = (_panelRef$current = panelRef.current) == null ? void 0 : _panelRef$current.getBoundingClientRect().height;
if ((_rootRef$current2 = rootRef.current) == null ? void 0 : _rootRef$current2.parentElement) {
rootRef.current.parentElement.style.paddingBottom = containerHeight + "px";
}
};
run();
if (typeof window !== 'undefined') {
window.addEventListener('resize', run);
return function () {
var _rootRef$current3;
window.removeEventListener('resize', run);
if (((_rootRef$current3 = rootRef.current) == null ? void 0 : _rootRef$current3.parentElement) && typeof previousValue === 'string') {
rootRef.current.parentElement.style.paddingBottom = previousValue;
}
};
}
}
}, [isResolvedOpen]);
var _panelProps$style = panelProps.style,
panelStyle = _panelProps$style === void 0 ? {} : _panelProps$style,
otherPanelProps = _objectWithoutPropertiesLoose(panelProps, ["style"]);
var _closeButtonProps$sty = closeButtonProps.style,
closeButtonStyle = _closeButtonProps$sty === void 0 ? {} : _closeButtonProps$sty,
onCloseClick = closeButtonProps.onClick,
otherCloseButtonProps = _objectWithoutPropertiesLoose(closeButtonProps, ["style", "onClick"]);
var _toggleButtonProps$st = toggleButtonProps.style,
toggleButtonStyle = _toggleButtonProps$st === void 0 ? {} : _toggleButtonProps$st,
onToggleClick = toggleButtonProps.onClick,
otherToggleButtonProps = _objectWithoutPropertiesLoose(toggleButtonProps, ["style", "onClick"]); // Do not render on the server
if (!isMounted()) return null;
return /*#__PURE__*/React.createElement(Container, {
ref: rootRef,
className: "ReactQueryDevtools",
"aria-label": "React Query Devtools"
}, /*#__PURE__*/React.createElement(ThemeProvider, {
theme: theme
}, /*#__PURE__*/React.createElement(ReactQueryDevtoolsPanel, _extends({
ref: panelRef,
styleNonce: styleNonce
}, otherPanelProps, {
style: _extends({
position: 'fixed',
bottom: '0',
right: '0',
zIndex: 99999,
width: '100%',
height: devtoolsHeight != null ? devtoolsHeight : 500,
maxHeight: '90%',
boxShadow: '0 0 20px rgba(0,0,0,.3)',
borderTop: "1px solid " + theme.gray,
transformOrigin: 'top',
// visibility will be toggled after transitions, but set initial state here
visibility: isOpen ? 'visible' : 'hidden'
}, panelStyle, isResizing ? {
transition: "none"
} : {
transition: "all .2s ease"
}, isResolvedOpen ? {
opacity: 1,
pointerEvents: 'all',
transform: "translateY(0) scale(1)"
} : {
opacity: 0,
pointerEvents: 'none',
transform: "translateY(15px) scale(1.02)"
}),
isOpen: isResolvedOpen,
setIsOpen: setIsOpen,
handleDragStart: function handleDragStart(e) {
return _handleDragStart(panelRef.current, e);
}
})), isResolvedOpen ? /*#__PURE__*/React.createElement(Button, _extends({
type: "button",
"aria-controls": "ReactQueryDevtoolsPanel",
"aria-haspopup": "true",
"aria-expanded": "true"
}, otherCloseButtonProps, {
onClick: function onClick(e) {
setIsOpen(false);
onCloseClick && onCloseClick(e);
},
style: _extends({
position: 'fixed',
zIndex: 99999,
margin: '.5em',
bottom: 0
}, position === 'top-right' ? {
right: '0'
} : position === 'top-left' ? {
left: '0'
} : position === 'bottom-right' ? {
right: '0'
} : {
left: '0'
}, closeButtonStyle)
}), "Close") : null), !isResolvedOpen ? /*#__PURE__*/React.createElement("button", _extends({
type: "button"
}, otherToggleButtonProps, {
"aria-label": "Open React Query Devtools",
"aria-controls": "ReactQueryDevtoolsPanel",
"aria-haspopup": "true",
"aria-expanded": "false",
onClick: function onClick(e) {
setIsOpen(true);
onToggleClick && onToggleClick(e);
},
style: _extends({
background: 'none',
border: 0,
padding: 0,
position: 'fixed',
zIndex: 99999,
display: 'inline-flex',
fontSize: '1.5em',
margin: '.5em',
cursor: 'pointer',
width: 'fit-content'
}, position === 'top-right' ? {
top: '0',
right: '0'
} : position === 'top-left' ? {
top: '0',
left: '0'
} : position === 'bottom-right' ? {
bottom: '0',
right: '0'
} : {
bottom: '0',
left: '0'
}, toggleButtonStyle)
}), /*#__PURE__*/React.createElement(Logo, {
"aria-hidden": true
})) : null);
}
var getStatusRank = function getStatusRank(q) {
return q.state.isFetching ? 0 : !q.getObserversCount() ? 3 : q.isStale() ? 2 : 1;
};
var sortFns = {
'Status > Last Updated': function StatusLastUpdated(a, b) {
var _sortFns$LastUpdated;
return getStatusRank(a) === getStatusRank(b) ? (_sortFns$LastUpdated = sortFns['Last Updated']) == null ? void 0 : _sortFns$LastUpdated.call(sortFns, a, b) : getStatusRank(a) > getStatusRank(b) ? 1 : -1;
},
'Query Hash': function QueryHash(a, b) {
return a.queryHash > b.queryHash ? 1 : -1;
},
'Last Updated': function LastUpdated(a, b) {
return a.state.dataUpdatedAt < b.state.dataUpdatedAt ? 1 : -1;
}
};
export var ReactQueryDevtoolsPanel = /*#__PURE__*/React.forwardRef(function ReactQueryDevtoolsPanel(props, ref) {
var _activeQuery$state;
var _props$isOpen = props.isOpen,
isOpen = _props$isOpen === void 0 ? true : _props$isOpen,
styleNonce = props.styleNonce,
setIsOpen = props.setIsOpen,
handleDragStart = props.handleDragStart,
panelProps = _objectWithoutPropertiesLoose(props, ["isOpen", "styleNonce", "setIsOpen", "handleDragStart"]);
var queryClient = useQueryClient();
var queryCache = queryClient.getQueryCache();
var _useLocalStorage3 = useLocalStorage('reactQueryDevtoolsSortFn', Object.keys(sortFns)[0]),
sort = _useLocalStorage3[0],
setSort = _useLocalStorage3[1];
var _useLocalStorage4 = useLocalStorage('reactQueryDevtoolsFilter', ''),
filter = _useLocalStorage4[0],
setFilter = _useLocalStorage4[1];
var _useLocalStorage5 = useLocalStorage('reactQueryDevtoolsSortDesc', false),
sortDesc = _useLocalStorage5[0],
setSortDesc = _useLocalStorage5[1];
var sortFn = React.useMemo(function () {
return sortFns[sort];
}, [sort]);
React[isServer ? 'useEffect' : 'useLayoutEffect'](function () {
if (!sortFn) {
setSort(Object.keys(sortFns)[0]);
}
}, [setSort, sortFn]);
var _useSafeState3 = useSafeState(Object.values(queryCache.findAll())),
unsortedQueries = _useSafeState3[0],
setUnsortedQueries = _useSafeState3[1];
var _useLocalStorage6 = useLocalStorage('reactQueryDevtoolsActiveQueryHash', ''),
activeQueryHash = _useLocalStorage6[0],
setActiveQueryHash = _useLocalStorage6[1];
var queries = React.useMemo(function () {
var sorted = [].concat(unsortedQueries).sort(sortFn);
if (sortDesc) {
sorted.reverse();
}
if (!filter) {
return sorted;
}
return matchSorter(sorted, filter, {
keys: ['queryHash']
}).filter(function (d) {
return d.queryHash;
});
}, [sortDesc, sortFn, unsortedQueries, filter]);
var activeQuery = React.useMemo(function () {
return queries.find(function (query) {
return query.queryHash === activeQueryHash;
});
}, [activeQueryHash, queries]);
var hasFresh = queries.filter(function (q) {
return getQueryStatusLabel(q) === 'fresh';
}).length;
var hasFetching = queries.filter(function (q) {
return getQueryStatusLabel(q) === 'fetching';
}).length;
var hasStale = queries.filter(function (q) {
return getQueryStatusLabel(q) === 'stale';
}).length;
var hasInactive = queries.filter(function (q) {
return getQueryStatusLabel(q) === 'inactive';
}).length;
React.useEffect(function () {
if (isOpen) {
var unsubscribe = queryCache.subscribe(function () {
setUnsortedQueries(Object.values(queryCache.getAll()));
}); // re-subscribing after the panel is closed and re-opened won't trigger the callback,
// So we'll manually populate our state
setUnsortedQueries(Object.values(queryCache.getAll()));
return unsubscribe;
}
return undefined;
}, [isOpen, sort, sortFn, sortDesc, setUnsortedQueries, queryCache]);
var handleRefetch = function handleRefetch() {
var promise = activeQuery == null ? void 0 : activeQuery.fetch();
promise == null ? void 0 : promise.catch(noop);
};
return /*#__PURE__*/React.createElement(ThemeProvider, {
theme: theme
}, /*#__PURE__*/React.createElement(Panel, _extends({
ref: ref,
className: "ReactQueryDevtoolsPanel",
"aria-label": "React Query Devtools Panel",
id: "ReactQueryDevtoolsPanel"
}, panelProps), /*#__PURE__*/React.createElement("style", {
nonce: styleNonce,
dangerouslySetInnerHTML: {
__html: "\n .ReactQueryDevtoolsPanel * {\n scrollbar-color: " + theme.backgroundAlt + " " + theme.gray + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar, .ReactQueryDevtoolsPanel scrollbar {\n width: 1em;\n height: 1em;\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-track, .ReactQueryDevtoolsPanel scrollbar-track {\n background: " + theme.backgroundAlt + ";\n }\n\n .ReactQueryDevtoolsPanel *::-webkit-scrollbar-thumb, .ReactQueryDevtoolsPanel scrollbar-thumb {\n background: " + theme.gray + ";\n border-radius: .5em;\n border: 3px solid " + theme.backgroundAlt + ";\n }\n "
}
}), /*#__PURE__*/React.createElement("div", {
style: {
position: 'absolute',
left: 0,
top: 0,
width: '100%',
height: '4px',
marginBottom: '-4px',
cursor: 'row-resize',
zIndex: 100000
},
onMouseDown: handleDragStart
}), /*#__PURE__*/React.createElement("div", {
style: {
flex: '1 1 500px',
minHeight: '40%',
maxHeight: '100%',
overflow: 'auto',
borderRight: "1px solid " + theme.grayAlt,
display: isOpen ? 'flex' : 'none',
flexDirection: 'column'
}
}, /*#__PURE__*/React.createElement("div", {
style: {
padding: '.5em',
background: theme.backgroundAlt,
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center'
}
}, /*#__PURE__*/React.createElement("button", {
type: "button",
"aria-label": "Close React Query Devtools",
"aria-controls": "ReactQueryDevtoolsPanel",
"aria-haspopup": "true",
"aria-expanded": "true",
onClick: function onClick() {
return setIsOpen(false);
},
style: {
display: 'inline-flex',
background: 'none',
border: 0,
padding: 0,
marginRight: '.5em',
cursor: 'pointer'
}
}, /*#__PURE__*/React.createElement(Logo, {
"aria-hidden": true
})), /*#__PURE__*/React.createElement("div", {
style: {
display: 'flex',
flexDirection: 'column'
}
}, /*#__PURE__*/React.createElement(QueryKeys, {
style: {
marginBottom: '.5em'
}
}, /*#__PURE__*/React.createElement(QueryKey, {
style: {
background: theme.success,
opacity: hasFresh ? 1 : 0.3
}
}, "fresh ", /*#__PURE__*/React.createElement(Code, null, "(", hasFresh, ")")), ' ', /*#__PURE__*/React.createElement(QueryKey, {
style: {
background: theme.active,
opacity: hasFetching ? 1 : 0.3
}
}, "fetching ", /*#__PURE__*/React.createElement(Code, null, "(", hasFetching, ")")), ' ', /*#__PURE__*/React.createElement(QueryKey, {
style: {
background: theme.warning,
color: 'black',
textShadow: '0',
opacity: hasStale ? 1 : 0.3
}
}, "stale ", /*#__PURE__*/React.createElement(Code, null, "(", hasStale, ")")), ' ', /*#__PURE__*/React.createElement(QueryKey, {
style: {
background: theme.gray,
opacity: hasInactive ? 1 : 0.3
}
}, "inactive ", /*#__PURE__*/React.createElement(Code, null, "(", hasInactive, ")"))), /*#__PURE__*/React.createElement("div", {
style: {
display: 'flex',
alignItems: 'center'
}
}, /*#__PURE__*/React.createElement(Input, {
placeholder: "Filter",
"aria-label": "Filter by queryhash",
value: filter != null ? filter : '',
onChange: function onChange(e) {
return setFilter(e.target.value);
},
onKeyDown: function onKeyDown(e) {
if (e.key === 'Escape') setFilter('');
},
style: {
flex: '1',
marginRight: '.5em',
width: '100%'
}
}), !filter ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Select, {
"aria-label": "Sort queries",
value: sort,
onChange: function onChange(e) {
return setSort(e.target.value);
},
style: {
flex: '1',
minWidth: 75,
marginRight: '.5em'
}
}, Object.keys(sortFns).map(function (key) {
return /*#__PURE__*/React.createElement("option", {
key: key,
value: key
}, "Sort by ", key);
})), /*#__PURE__*/React.createElement(Button, {
type: "button",
onClick: function onClick() {
return setSortDesc(function (old) {
return !old;
});
},
style: {
padding: '.3em .4em'
}
}, sortDesc ? '⬇ Desc' : '⬆ Asc')) : null))), /*#__PURE__*/React.createElement("div", {
style: {
overflowY: 'auto',
flex: '1'
}
}, queries.map(function (query, i) {
var isDisabled = query.getObserversCount() > 0 && !query.isActive();
return /*#__PURE__*/React.createElement("div", {
key: query.queryHash || i,
role: "button",
"aria-label": "Open query details for " + query.queryHash,
onClick: function onClick() {
return setActiveQueryHash(activeQueryHash === query.queryHash ? '' : query.queryHash);
},
style: {
display: 'flex',
borderBottom: "solid 1px " + theme.grayAlt,
cursor: 'pointer',
background: query === activeQuery ? 'rgba(255,255,255,.1)' : undefined
}
}, /*#__PURE__*/React.createElement("div", {
style: {
flex: '0 0 auto',
width: '2em',
height: '2em',
background: getQueryStatusColor(query, theme),
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
fontWeight: 'bold',
textShadow: getQueryStatusLabel(query) === 'stale' ? '0' : '0 0 10px black',
color: getQueryStatusLabel(query) === 'stale' ? 'black' : 'white'
}
}, query.getObserversCount()), isDisabled ? /*#__PURE__*/React.createElement("div", {
style: {
flex: '0 0 auto',
height: '2em',
background: theme.gray,
display: 'flex',
alignItems: 'center',
fontWeight: 'bold',
padding: '0 0.5em'
}
}, "disabled") : null, /*#__PURE__*/React.createElement(Code, {
style: {
padding: '.5em'
}
}, "" + query.queryHash));
}))), activeQuery ? /*#__PURE__*/React.createElement(ActiveQueryPanel, null, /*#__PURE__*/React.createElement("div", {
style: {
padding: '.5em',
background: theme.backgroundAlt,
position: 'sticky',
top: 0,
zIndex: 1
}
}, "Query Details"), /*#__PURE__*/React.createElement("div", {
style: {
padding: '.5em'
}
}, /*#__PURE__*/React.createElement("div", {
style: {
marginBottom: '.5em',
display: 'flex',
alignItems: 'start',
justifyContent: 'space-between'
}
}, /*#__PURE__*/React.createElement(Code, {
style: {
lineHeight: '1.8em'
}
}, /*#__PURE__*/React.createElement("pre", {
style: {
margin: 0,
padding: 0,
overflow: 'auto'
}
}, JSON.stringify(activeQuery.queryKey, null, 2))), /*#__PURE__*/React.createElement("span", {
style: {
padding: '0.3em .6em',
borderRadius: '0.4em',
fontWeight: 'bold',
textShadow: '0 2px 10px black',
background: getQueryStatusColor(activeQuery, theme),
flexShrink: 0
}
}, getQueryStatusLabel(activeQuery))), /*#__PURE__*/React.createElement("div", {
style: {
marginBottom: '.5em',
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between'
}
}, "Observers: ", /*#__PURE__*/React.createElement(Code, null, activeQuery.getObserversCount())), /*#__PURE__*/React.createElement("div", {
style: {
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between'
}
}, "Last Updated:", ' ', /*#__PURE__*/React.createElement(Code, null, new Date(activeQuery.state.dataUpdatedAt).toLocaleTimeString()))), /*#__PURE__*/React.createElement("div", {
style: {
background: theme.backgroundAlt,
padding: '.5em',
position: 'sticky',
top: 0,
zIndex: 1
}
}, "Actions"), /*#__PURE__*/React.createElement("div", {
style: {
padding: '0.5em'
}
}, /*#__PURE__*/React.createElement(Button, {
type: "button",
onClick: handleRefetch,
disabled: activeQuery.state.isFetching,
style: {
background: theme.active
}
}, "Refetch"), ' ', /*#__PURE__*/React.createElement(Button, {
type: "button",
onClick: function onClick() {
return queryClient.invalidateQueries(activeQuery);
},
style: {
background: theme.warning,
color: theme.inputTextColor
}
}, "Invalidate"), ' ', /*#__PURE__*/React.createElement(Button, {
type: "button",
onClick: function onClick() {
return queryClient.resetQueries(activeQuery);
},
style: {
background: theme.gray
}
}, "Reset"), ' ', /*#__PURE__*/React.createElement(Button, {
type: "button",
onClick: function onClick() {
return queryClient.removeQueries(activeQuery);
},
style: {
background: theme.danger
}
}, "Remove")), /*#__PURE__*/React.createElement("div", {
style: {
background: theme.backgroundAlt,
padding: '.5em',
position: 'sticky',
top: 0,
zIndex: 1
}
}, "Data Explorer"), /*#__PURE__*/React.createElement("div", {
style: {
padding: '.5em'
}
}, /*#__PURE__*/React.createElement(Explorer, {
label: "Data",
value: activeQuery == null ? void 0 : (_activeQuery$state = activeQuery.state) == null ? void 0 : _activeQuery$state.data,
defaultExpanded: {}
})), /*#__PURE__*/React.createElement("div", {
style: {
background: theme.backgroundAlt,
padding: '.5em',
position: 'sticky',
top: 0,
zIndex: 1
}
}, "Query Explorer"), /*#__PURE__*/React.createElement("div", {
style: {
padding: '.5em'
}
}, /*#__PURE__*/React.createElement(Explorer, {
label: "Query",
value: activeQuery,
defaultExpanded: {
queryKey: true
}
}))) : null));
});

View File

@@ -0,0 +1 @@
export * from './devtools';

View File

@@ -0,0 +1,100 @@
import { styled } from './utils';
export var Panel = styled('div', function (_props, theme) {
return {
fontSize: 'clamp(12px, 1.5vw, 14px)',
fontFamily: "sans-serif",
display: 'flex',
backgroundColor: theme.background,
color: theme.foreground
};
}, {
'(max-width: 700px)': {
flexDirection: 'column'
},
'(max-width: 600px)': {
fontSize: '.9em' // flexDirection: 'column',
}
});
export var ActiveQueryPanel = styled('div', function () {
return {
flex: '1 1 500px',
display: 'flex',
flexDirection: 'column',
overflow: 'auto',
height: '100%'
};
}, {
'(max-width: 700px)': function maxWidth700px(_props, theme) {
return {
borderTop: "2px solid " + theme.gray
};
}
});
export var Button = styled('button', function (props, theme) {
return {
appearance: 'none',
fontSize: '.9em',
fontWeight: 'bold',
background: theme.gray,
border: '0',
borderRadius: '.3em',
color: 'white',
padding: '.5em',
opacity: props.disabled ? '.5' : undefined,
cursor: 'pointer'
};
});
export var QueryKeys = styled('span', {
display: 'inline-block',
fontSize: '0.9em'
});
export var QueryKey = styled('span', {
display: 'inline-flex',
alignItems: 'center',
padding: '.2em .4em',
fontWeight: 'bold',
textShadow: '0 0 10px black',
borderRadius: '.2em'
});
export var Code = styled('code', {
fontSize: '.9em',
color: 'inherit',
background: 'inherit'
});
export var Input = styled('input', function (_props, theme) {
return {
backgroundColor: theme.inputBackgroundColor,
border: 0,
borderRadius: '.2em',
color: theme.inputTextColor,
fontSize: '.9em',
lineHeight: "1.3",
padding: '.3em .4em'
};
});
export var Select = styled('select', function (_props, theme) {
return {
display: "inline-block",
fontSize: ".9em",
fontFamily: "sans-serif",
fontWeight: 'normal',
lineHeight: "1.3",
padding: ".3em 1.5em .3em .5em",
height: 'auto',
border: 0,
borderRadius: ".2em",
appearance: "none",
WebkitAppearance: 'none',
backgroundColor: theme.inputBackgroundColor,
backgroundImage: "url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23444444'><polygon points='0,25 100,25 50,75'/></svg>\")",
backgroundRepeat: "no-repeat",
backgroundPosition: "right .55em center",
backgroundSize: ".65em auto, 100%",
color: theme.inputTextColor
};
}, {
'(max-width: 500px)': {
display: 'none'
}
});

28
frontend/node_modules/react-query/es/devtools/theme.js generated vendored Normal file
View File

@@ -0,0 +1,28 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import React from 'react';
export var defaultTheme = {
background: '#0b1521',
backgroundAlt: '#132337',
foreground: 'white',
gray: '#3f4e60',
grayAlt: '#222e3e',
inputBackgroundColor: '#fff',
inputTextColor: '#000',
success: '#00ab52',
danger: '#ff0085',
active: '#006bff',
warning: '#ffb200'
};
var ThemeContext = /*#__PURE__*/React.createContext(defaultTheme);
export function ThemeProvider(_ref) {
var theme = _ref.theme,
rest = _objectWithoutPropertiesLoose(_ref, ["theme"]);
return /*#__PURE__*/React.createElement(ThemeContext.Provider, _extends({
value: theme
}, rest));
}
export function useTheme() {
return React.useContext(ThemeContext);
}

View File

@@ -0,0 +1,47 @@
import React from 'react';
var getItem = function getItem(key) {
try {
var itemValue = localStorage.getItem(key);
if (typeof itemValue === 'string') {
return JSON.parse(itemValue);
}
return undefined;
} catch (_unused) {
return undefined;
}
};
export default function useLocalStorage(key, defaultValue) {
var _React$useState = React.useState(),
value = _React$useState[0],
setValue = _React$useState[1];
React.useEffect(function () {
var initialValue = getItem(key);
if (typeof initialValue === 'undefined' || initialValue === null) {
setValue(typeof defaultValue === 'function' ? defaultValue() : defaultValue);
} else {
setValue(initialValue);
}
}, [defaultValue, key]);
var setter = React.useCallback(function (updater) {
setValue(function (old) {
var newVal = updater;
if (typeof updater == 'function') {
newVal = updater(old);
}
try {
localStorage.setItem(key, JSON.stringify(newVal));
} catch (_unused2) {}
return newVal;
});
}, [key]);
return [value, setter];
}

View File

@@ -0,0 +1,36 @@
import React from 'react';
export default function useMediaQuery(query) {
// Keep track of the preference in state, start with the current match
var _React$useState = React.useState(function () {
if (typeof window !== 'undefined') {
return window.matchMedia && window.matchMedia(query).matches;
}
}),
isMatch = _React$useState[0],
setIsMatch = _React$useState[1]; // Watch for changes
React.useEffect(function () {
if (typeof window !== 'undefined') {
if (!window.matchMedia) {
return;
} // Create a matcher
var matcher = window.matchMedia(query); // Create our handler
var onChange = function onChange(_ref) {
var matches = _ref.matches;
return setIsMatch(matches);
}; // Listen for changes
matcher.addListener(onChange);
return function () {
// Stop listening for changes
matcher.removeListener(onChange);
};
}
}, [isMatch, query, setIsMatch]);
return isMatch;
}

91
frontend/node_modules/react-query/es/devtools/utils.js generated vendored Normal file
View File

@@ -0,0 +1,91 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import React from 'react';
import { useTheme } from './theme';
import useMediaQuery from './useMediaQuery';
export var isServer = typeof window === 'undefined';
export function getQueryStatusColor(query, theme) {
return query.state.isFetching ? theme.active : !query.getObserversCount() ? theme.gray : query.isStale() ? theme.warning : theme.success;
}
export function getQueryStatusLabel(query) {
return query.state.isFetching ? 'fetching' : !query.getObserversCount() ? 'inactive' : query.isStale() ? 'stale' : 'fresh';
}
export function styled(type, newStyles, queries) {
if (queries === void 0) {
queries = {};
}
return /*#__PURE__*/React.forwardRef(function (_ref, ref) {
var style = _ref.style,
rest = _objectWithoutPropertiesLoose(_ref, ["style"]);
var theme = useTheme();
var mediaStyles = Object.entries(queries).reduce(function (current, _ref2) {
var key = _ref2[0],
value = _ref2[1];
// eslint-disable-next-line react-hooks/rules-of-hooks
return useMediaQuery(key) ? _extends({}, current, typeof value === 'function' ? value(rest, theme) : value) : current;
}, {});
return /*#__PURE__*/React.createElement(type, _extends({}, rest, {
style: _extends({}, typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles, style, mediaStyles),
ref: ref
}));
});
}
export function useIsMounted() {
var mountedRef = React.useRef(false);
var isMounted = React.useCallback(function () {
return mountedRef.current;
}, []);
React[isServer ? 'useEffect' : 'useLayoutEffect'](function () {
mountedRef.current = true;
return function () {
mountedRef.current = false;
};
}, []);
return isMounted;
}
/**
* This hook is a safe useState version which schedules state updates in microtasks
* to prevent updating a component state while React is rendering different components
* or when the component is not mounted anymore.
*/
export function useSafeState(initialState) {
var isMounted = useIsMounted();
var _React$useState = React.useState(initialState),
state = _React$useState[0],
setState = _React$useState[1];
var safeSetState = React.useCallback(function (value) {
scheduleMicrotask(function () {
if (isMounted()) {
setState(value);
}
});
}, [isMounted]);
return [state, safeSetState];
}
/**
* Displays a string regardless the type of the data
* @param {unknown} value Value to be stringified
*/
export var displayValue = function displayValue(value) {
var name = Object.getOwnPropertyNames(Object(value));
var newValue = typeof value === 'bigint' ? value.toString() + "n" : value;
return JSON.stringify(newValue, name);
};
/**
* Schedules a microtask.
* This can be useful to schedule state updates after rendering.
*/
function scheduleMicrotask(callback) {
Promise.resolve().then(callback).catch(function (error) {
return setTimeout(function () {
throw error;
});
});
}

View File

@@ -0,0 +1,5 @@
// This package once contained these functions, but they have now been moved
// into the core and react packages.
// They are re-exported here to avoid a breaking change, but this package
// should be considered deprecated and removed in a future major version.
export { dehydrate, hydrate, useHydrate, Hydrate } from 'react-query'; // Types

2
frontend/node_modules/react-query/es/index.js generated vendored Normal file
View File

@@ -0,0 +1,2 @@
export * from './core';
export * from './react';

View File

@@ -0,0 +1,107 @@
import { getLogger } from '../core/logger';
import { dehydrate, hydrate } from 'react-query';
function _await(value, then, direct) {
if (direct) {
return then ? then(value) : value;
}
if (!value || !value.then) {
value = Promise.resolve(value);
}
return then ? value.then(then) : value;
}
function _catch(body, recover) {
try {
var result = body();
} catch (e) {
return recover(e);
}
if (result && result.then) {
return result.then(void 0, recover);
}
return result;
}
function _continue(value, then) {
return value && value.then ? value.then(then) : then(value);
}
function _empty() {}
function _invokeIgnored(body) {
var result = body();
if (result && result.then) {
return result.then(_empty);
}
}
function _async(f) {
return function () {
for (var args = [], i = 0; i < arguments.length; i++) {
args[i] = arguments[i];
}
try {
return Promise.resolve(f.apply(this, args));
} catch (e) {
return Promise.reject(e);
}
};
}
export var persistQueryClient = _async(function (_ref) {
var queryClient = _ref.queryClient,
persistor = _ref.persistor,
_ref$maxAge = _ref.maxAge,
maxAge = _ref$maxAge === void 0 ? 1000 * 60 * 60 * 24 : _ref$maxAge,
_ref$buster = _ref.buster,
buster = _ref$buster === void 0 ? '' : _ref$buster,
hydrateOptions = _ref.hydrateOptions,
dehydrateOptions = _ref.dehydrateOptions;
return _invokeIgnored(function () {
if (typeof window !== 'undefined') {
// Subscribe to changes
var saveClient = function saveClient() {
var persistClient = {
buster: buster,
timestamp: Date.now(),
clientState: dehydrate(queryClient, dehydrateOptions)
};
persistor.persistClient(persistClient);
}; // Attempt restore
return _continue(_catch(function () {
return _await(persistor.restoreClient(), function (persistedClient) {
if (persistedClient) {
if (persistedClient.timestamp) {
var expired = Date.now() - persistedClient.timestamp > maxAge;
var busted = persistedClient.buster !== buster;
if (expired || busted) {
persistor.removeClient();
} else {
hydrate(queryClient, persistedClient.clientState, hydrateOptions);
}
} else {
persistor.removeClient();
}
}
});
}, function (err) {
getLogger().error(err);
getLogger().warn('Encountered an error attempting to restore client cache from persisted location. As a precaution, the persisted cache will be discarded.');
persistor.removeClient();
}), function () {
// Subscribe to changes in the query cache to trigger the save
queryClient.getQueryCache().subscribe(saveClient);
});
}
});
});

24
frontend/node_modules/react-query/es/react/Hydrate.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
import React from 'react';
import { hydrate } from '../core';
import { useQueryClient } from './QueryClientProvider';
export function useHydrate(state, options) {
var queryClient = useQueryClient();
var optionsRef = React.useRef(options);
optionsRef.current = options; // Running hydrate again with the same queries is safe,
// it wont overwrite or initialize existing queries,
// relying on useMemo here is only a performance optimization.
// hydrate can and should be run *during* render here for SSR to work properly
React.useMemo(function () {
if (state) {
hydrate(queryClient, state, optionsRef.current);
}
}, [queryClient, state]);
}
export var Hydrate = function Hydrate(_ref) {
var children = _ref.children,
options = _ref.options,
state = _ref.state;
useHydrate(state, options);
return children;
};

View File

@@ -0,0 +1,48 @@
import React from 'react';
var defaultContext = /*#__PURE__*/React.createContext(undefined);
var QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one
// instance of the context across the window
// to ensure that if React Query is used across
// different bundles or microfrontends they will
// all use the same **instance** of context, regardless
// of module scoping.
function getQueryClientContext(contextSharing) {
if (contextSharing && typeof window !== 'undefined') {
if (!window.ReactQueryClientContext) {
window.ReactQueryClientContext = defaultContext;
}
return window.ReactQueryClientContext;
}
return defaultContext;
}
export var useQueryClient = function useQueryClient() {
var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));
if (!queryClient) {
throw new Error('No QueryClient set, use QueryClientProvider to set one');
}
return queryClient;
};
export var QueryClientProvider = function QueryClientProvider(_ref) {
var client = _ref.client,
_ref$contextSharing = _ref.contextSharing,
contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,
children = _ref.children;
React.useEffect(function () {
client.mount();
return function () {
client.unmount();
};
}, [client]);
var Context = getQueryClientContext(contextSharing);
return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {
value: contextSharing
}, /*#__PURE__*/React.createElement(Context.Provider, {
value: client
}, children));
};

View File

@@ -0,0 +1,32 @@
import React from 'react'; // CONTEXT
function createValue() {
var _isReset = false;
return {
clearReset: function clearReset() {
_isReset = false;
},
reset: function reset() {
_isReset = true;
},
isReset: function isReset() {
return _isReset;
}
};
}
var QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK
export var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {
return React.useContext(QueryErrorResetBoundaryContext);
}; // COMPONENT
export var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {
var children = _ref.children;
var value = React.useMemo(function () {
return createValue();
}, []);
return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {
value: value
}, typeof children === 'function' ? children(value) : children);
};

14
frontend/node_modules/react-query/es/react/index.js generated vendored Normal file
View File

@@ -0,0 +1,14 @@
// Side effects
import './setBatchUpdatesFn';
import './setLogger';
export { QueryClientProvider, useQueryClient } from './QueryClientProvider';
export { QueryErrorResetBoundary, useQueryErrorResetBoundary } from './QueryErrorResetBoundary';
export { useIsFetching } from './useIsFetching';
export { useIsMutating } from './useIsMutating';
export { useMutation } from './useMutation';
export { useQuery } from './useQuery';
export { useQueries } from './useQueries';
export { useInfiniteQuery } from './useInfiniteQuery';
export { useHydrate, Hydrate } from './Hydrate'; // Types
export * from './types';

1
frontend/node_modules/react-query/es/react/logger.js generated vendored Normal file
View File

@@ -0,0 +1 @@
export var logger = console;

View File

@@ -0,0 +1,5 @@
export var logger = {
log: console.log,
warn: console.warn,
error: console.warn
};

View File

@@ -0,0 +1,2 @@
import ReactDOM from 'react-dom';
export var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;

View File

@@ -0,0 +1,4 @@
// @ts-ignore
// eslint-disable-next-line import/no-unresolved
import { unstable_batchedUpdates } from 'react-native';
export { unstable_batchedUpdates };

View File

@@ -0,0 +1,3 @@
import { notifyManager } from '../core';
import { unstable_batchedUpdates } from './reactBatchedUpdates';
notifyManager.setBatchNotifyFunction(unstable_batchedUpdates);

View File

@@ -0,0 +1,3 @@
import { setLogger } from '../core';
import { logger } from './logger';
setLogger(logger);

0
frontend/node_modules/react-query/es/react/types.js generated vendored Normal file
View File

View File

@@ -0,0 +1,106 @@
import React from 'react';
import { notifyManager } from '../core/notifyManager';
import { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';
import { useQueryClient } from './QueryClientProvider';
import { shouldThrowError } from './utils';
export function useBaseQuery(options, Observer) {
var mountedRef = React.useRef(false);
var _React$useState = React.useState(0),
forceUpdate = _React$useState[1];
var queryClient = useQueryClient();
var errorResetBoundary = useQueryErrorResetBoundary();
var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options
defaultedOptions.optimisticResults = true; // Include callbacks in batch renders
if (defaultedOptions.onError) {
defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);
}
if (defaultedOptions.onSuccess) {
defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);
}
if (defaultedOptions.onSettled) {
defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);
}
if (defaultedOptions.suspense) {
// Always set stale time when using suspense to prevent
// fetching again when directly mounting after suspending
if (typeof defaultedOptions.staleTime !== 'number') {
defaultedOptions.staleTime = 1000;
} // Set cache time to 1 if the option has been set to 0
// when using suspense to prevent infinite loop of fetches
if (defaultedOptions.cacheTime === 0) {
defaultedOptions.cacheTime = 1;
}
}
if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {
// Prevent retrying failed query if the error boundary has not been reset yet
if (!errorResetBoundary.isReset()) {
defaultedOptions.retryOnMount = false;
}
}
var _React$useState2 = React.useState(function () {
return new Observer(queryClient, defaultedOptions);
}),
observer = _React$useState2[0];
var result = observer.getOptimisticResult(defaultedOptions);
React.useEffect(function () {
mountedRef.current = true;
errorResetBoundary.clearReset();
var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {
if (mountedRef.current) {
forceUpdate(function (x) {
return x + 1;
});
}
})); // Update result to make sure we did not miss any query updates
// between creating the observer and subscribing to it.
observer.updateResult();
return function () {
mountedRef.current = false;
unsubscribe();
};
}, [errorResetBoundary, observer]);
React.useEffect(function () {
// Do not notify on updates because of changes in the options because
// these changes should already be reflected in the optimistic result.
observer.setOptions(defaultedOptions, {
listeners: false
});
}, [defaultedOptions, observer]); // Handle suspense
if (defaultedOptions.suspense && result.isLoading) {
throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) {
var data = _ref.data;
defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);
defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);
}).catch(function (error) {
errorResetBoundary.clearReset();
defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);
defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);
});
} // Handle error boundary
if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) {
throw result.error;
} // Handle result property usage tracking
if (defaultedOptions.notifyOnChangeProps === 'tracked') {
result = observer.trackResult(result, defaultedOptions);
}
return result;
}

View File

@@ -0,0 +1,8 @@
import { InfiniteQueryObserver } from '../core/infiniteQueryObserver';
import { parseQueryArgs } from '../core/utils';
import { useBaseQuery } from './useBaseQuery'; // HOOK
export function useInfiniteQuery(arg1, arg2, arg3) {
var options = parseQueryArgs(arg1, arg2, arg3);
return useBaseQuery(options, InfiniteQueryObserver);
}

View File

@@ -0,0 +1,43 @@
import React from 'react';
import { notifyManager } from '../core/notifyManager';
import { parseFilterArgs } from '../core/utils';
import { useQueryClient } from './QueryClientProvider';
var checkIsFetching = function checkIsFetching(queryClient, filters, isFetching, setIsFetching) {
var newIsFetching = queryClient.isFetching(filters);
if (isFetching !== newIsFetching) {
setIsFetching(newIsFetching);
}
};
export function useIsFetching(arg1, arg2) {
var mountedRef = React.useRef(false);
var queryClient = useQueryClient();
var _parseFilterArgs = parseFilterArgs(arg1, arg2),
filters = _parseFilterArgs[0];
var _React$useState = React.useState(queryClient.isFetching(filters)),
isFetching = _React$useState[0],
setIsFetching = _React$useState[1];
var filtersRef = React.useRef(filters);
filtersRef.current = filters;
var isFetchingRef = React.useRef(isFetching);
isFetchingRef.current = isFetching;
React.useEffect(function () {
mountedRef.current = true;
checkIsFetching(queryClient, filtersRef.current, isFetchingRef.current, setIsFetching);
var unsubscribe = queryClient.getQueryCache().subscribe(notifyManager.batchCalls(function () {
if (mountedRef.current) {
checkIsFetching(queryClient, filtersRef.current, isFetchingRef.current, setIsFetching);
}
}));
return function () {
mountedRef.current = false;
unsubscribe();
};
}, [queryClient]);
return isFetching;
}

View File

@@ -0,0 +1,35 @@
import React from 'react';
import { notifyManager } from '../core/notifyManager';
import { parseMutationFilterArgs } from '../core/utils';
import { useQueryClient } from './QueryClientProvider';
export function useIsMutating(arg1, arg2) {
var mountedRef = React.useRef(false);
var filters = parseMutationFilterArgs(arg1, arg2);
var queryClient = useQueryClient();
var _React$useState = React.useState(queryClient.isMutating(filters)),
isMutating = _React$useState[0],
setIsMutating = _React$useState[1];
var filtersRef = React.useRef(filters);
filtersRef.current = filters;
var isMutatingRef = React.useRef(isMutating);
isMutatingRef.current = isMutating;
React.useEffect(function () {
mountedRef.current = true;
var unsubscribe = queryClient.getMutationCache().subscribe(notifyManager.batchCalls(function () {
if (mountedRef.current) {
var newIsMutating = queryClient.isMutating(filtersRef.current);
if (isMutatingRef.current !== newIsMutating) {
setIsMutating(newIsMutating);
}
}
}));
return function () {
mountedRef.current = false;
unsubscribe();
};
}, [queryClient]);
return isMutating;
}

View File

@@ -0,0 +1,52 @@
import _extends from "@babel/runtime/helpers/esm/extends";
import React from 'react';
import { notifyManager } from '../core/notifyManager';
import { noop, parseMutationArgs } from '../core/utils';
import { MutationObserver } from '../core/mutationObserver';
import { useQueryClient } from './QueryClientProvider';
import { shouldThrowError } from './utils'; // HOOK
export function useMutation(arg1, arg2, arg3) {
var mountedRef = React.useRef(false);
var _React$useState = React.useState(0),
forceUpdate = _React$useState[1];
var options = parseMutationArgs(arg1, arg2, arg3);
var queryClient = useQueryClient();
var obsRef = React.useRef();
if (!obsRef.current) {
obsRef.current = new MutationObserver(queryClient, options);
} else {
obsRef.current.setOptions(options);
}
var currentResult = obsRef.current.getCurrentResult();
React.useEffect(function () {
mountedRef.current = true;
var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {
if (mountedRef.current) {
forceUpdate(function (x) {
return x + 1;
});
}
}));
return function () {
mountedRef.current = false;
unsubscribe();
};
}, []);
var mutate = React.useCallback(function (variables, mutateOptions) {
obsRef.current.mutate(variables, mutateOptions).catch(noop);
}, []);
if (currentResult.error && shouldThrowError(undefined, obsRef.current.options.useErrorBoundary, [currentResult.error])) {
throw currentResult.error;
}
return _extends({}, currentResult, {
mutate: mutate,
mutateAsync: currentResult.mutate
});
}

View File

@@ -0,0 +1,49 @@
import React, { useMemo } from 'react';
import { notifyManager } from '../core/notifyManager';
import { QueriesObserver } from '../core/queriesObserver';
import { useQueryClient } from './QueryClientProvider';
export function useQueries(queries) {
var mountedRef = React.useRef(false);
var _React$useState = React.useState(0),
forceUpdate = _React$useState[1];
var queryClient = useQueryClient();
var defaultedQueries = useMemo(function () {
return queries.map(function (options) {
var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure the results are already in fetching state before subscribing or updating options
defaultedOptions.optimisticResults = true;
return defaultedOptions;
});
}, [queries, queryClient]);
var _React$useState2 = React.useState(function () {
return new QueriesObserver(queryClient, defaultedQueries);
}),
observer = _React$useState2[0];
var result = observer.getOptimisticResult(defaultedQueries);
React.useEffect(function () {
mountedRef.current = true;
var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {
if (mountedRef.current) {
forceUpdate(function (x) {
return x + 1;
});
}
}));
return function () {
mountedRef.current = false;
unsubscribe();
};
}, [observer]);
React.useEffect(function () {
// Do not notify on updates because of changes in the options because
// these changes should already be reflected in the optimistic result.
observer.setQueries(defaultedQueries, {
listeners: false
});
}, [defaultedQueries, observer]);
return result;
}

View File

@@ -0,0 +1,8 @@
import { QueryObserver } from '../core';
import { parseQueryArgs } from '../core/utils';
import { useBaseQuery } from './useBaseQuery'; // HOOK
export function useQuery(arg1, arg2, arg3) {
var parsedOptions = parseQueryArgs(arg1, arg2, arg3);
return useBaseQuery(parsedOptions, QueryObserver);
}

11
frontend/node_modules/react-query/es/react/utils.js generated vendored Normal file
View File

@@ -0,0 +1,11 @@
export function shouldThrowError(suspense, _useErrorBoundary, params) {
// Allow useErrorBoundary function to override throwing behavior on a per-error basis
if (typeof _useErrorBoundary === 'function') {
return _useErrorBoundary.apply(void 0, params);
} // Allow useErrorBoundary to override suspense's throwing behavior
if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors
return !!suspense;
}

3
frontend/node_modules/react-query/es/ts3.8/index.js generated vendored Normal file
View File

@@ -0,0 +1,3 @@
import { useQueries } from './useQueries';
export { useQueries };
export * from '..';

View File

View File

@@ -0,0 +1,6 @@
{
"internal": true,
"main": "../lib/hydration/index.js",
"module": "../es/hydration/index.js",
"types": "../types/hydration/index.d.ts"
}

View File

@@ -0,0 +1,86 @@
"use strict";
exports.__esModule = true;
exports.broadcastQueryClient = broadcastQueryClient;
var _broadcastChannel = require("broadcast-channel");
function broadcastQueryClient(_ref) {
var queryClient = _ref.queryClient,
_ref$broadcastChannel = _ref.broadcastChannel,
broadcastChannel = _ref$broadcastChannel === void 0 ? 'react-query' : _ref$broadcastChannel;
var transaction = false;
var tx = function tx(cb) {
transaction = true;
cb();
transaction = false;
};
var channel = new _broadcastChannel.BroadcastChannel(broadcastChannel, {
webWorkerSupport: false
});
var queryCache = queryClient.getQueryCache();
queryClient.getQueryCache().subscribe(function (queryEvent) {
var _queryEvent$action;
if (transaction || !(queryEvent == null ? void 0 : queryEvent.query)) {
return;
}
var _queryEvent$query = queryEvent.query,
queryHash = _queryEvent$query.queryHash,
queryKey = _queryEvent$query.queryKey,
state = _queryEvent$query.state;
if (queryEvent.type === 'queryUpdated' && ((_queryEvent$action = queryEvent.action) == null ? void 0 : _queryEvent$action.type) === 'success') {
channel.postMessage({
type: 'queryUpdated',
queryHash: queryHash,
queryKey: queryKey,
state: state
});
}
if (queryEvent.type === 'queryRemoved') {
channel.postMessage({
type: 'queryRemoved',
queryHash: queryHash,
queryKey: queryKey
});
}
});
channel.onmessage = function (action) {
if (!(action == null ? void 0 : action.type)) {
return;
}
tx(function () {
var type = action.type,
queryHash = action.queryHash,
queryKey = action.queryKey,
state = action.state;
if (type === 'queryUpdated') {
var query = queryCache.get(queryHash);
if (query) {
query.setState(state);
return;
}
queryCache.build(queryClient, {
queryKey: queryKey,
queryHash: queryHash
}, state);
} else if (type === 'queryRemoved') {
var _query = queryCache.get(queryHash);
if (_query) {
queryCache.remove(_query);
}
}
});
};
}

View File

@@ -0,0 +1,108 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.focusManager = exports.FocusManager = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _subscribable = require("./subscribable");
var _utils = require("./utils");
var FocusManager = /*#__PURE__*/function (_Subscribable) {
(0, _inheritsLoose2.default)(FocusManager, _Subscribable);
function FocusManager() {
var _this;
_this = _Subscribable.call(this) || this;
_this.setup = function (onFocus) {
var _window;
if (!_utils.isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {
var listener = function listener() {
return onFocus();
}; // Listen to visibillitychange and focus
window.addEventListener('visibilitychange', listener, false);
window.addEventListener('focus', listener, false);
return function () {
// Be sure to unsubscribe if a new handler is set
window.removeEventListener('visibilitychange', listener);
window.removeEventListener('focus', listener);
};
}
};
return _this;
}
var _proto = FocusManager.prototype;
_proto.onSubscribe = function onSubscribe() {
if (!this.cleanup) {
this.setEventListener(this.setup);
}
};
_proto.onUnsubscribe = function onUnsubscribe() {
if (!this.hasListeners()) {
var _this$cleanup;
(_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
this.cleanup = undefined;
}
};
_proto.setEventListener = function setEventListener(setup) {
var _this$cleanup2,
_this2 = this;
this.setup = setup;
(_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
this.cleanup = setup(function (focused) {
if (typeof focused === 'boolean') {
_this2.setFocused(focused);
} else {
_this2.onFocus();
}
});
};
_proto.setFocused = function setFocused(focused) {
this.focused = focused;
if (focused) {
this.onFocus();
}
};
_proto.onFocus = function onFocus() {
this.listeners.forEach(function (listener) {
listener();
});
};
_proto.isFocused = function isFocused() {
if (typeof this.focused === 'boolean') {
return this.focused;
} // document global can be unavailable in react native
if (typeof document === 'undefined') {
return true;
}
return [undefined, 'visible', 'prerender'].includes(document.visibilityState);
};
return FocusManager;
}(_subscribable.Subscribable);
exports.FocusManager = FocusManager;
var focusManager = new FocusManager();
exports.focusManager = focusManager;

Some files were not shown because too many files have changed in this diff Show More