@wener/console
Version:
Base console UI toolkit
161 lines (160 loc) • 6.7 kB
JavaScript
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
}
else {
obj[key] = value;
}
return obj;
}
function _object_spread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
}
else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
import { Client, fetchExchange } from "@urql/core";
import { devtoolsExchange } from "@urql/devtools";
import { cacheExchange } from "@urql/exchange-graphcache";
import { persistedExchange } from "@urql/exchange-persisted";
import { retryExchange } from "@urql/exchange-retry";
import { ms } from "@wener/utils";
import { batchFetchExchange } from "./batchFetchExchange.js";
export function createUrqlClient(param) {
var getToken = param.getToken, url = param.url, _param_persisted = param.persisted, persisted = _param_persisted === void 0 ? false : _param_persisted, _param_batch = param.batch, batch = _param_batch === void 0 ? true : _param_batch, schema = param.schema, cache = param.cache, resolveTypeNameFromKey = param.resolveTypeNameFromKey;
var client = new Client({
url: url,
fetchSubscriptions: true,
// requestPolicy: 'cache-and-network',
exchanges: [
process.env.NODE_ENV === "development" && devtoolsExchange,
cacheExchange(_object_spread_props(_object_spread({}, cache), {
schema: schema,
keys: new Proxy({}, {
get: function get(target, prop, receiver) {
if (typeof prop !== "string") {
return null;
}
var preset = target[prop];
if (preset) {
return preset;
}
// console.log(`cacheExchange key: ${prop}`);
var getKey = function (data) {
return data === null || data === void 0 ? void 0 : data.id;
};
if (prop.endsWith("Payload")) {
getKey = function () {
return null;
};
}
return target[prop] = getKey;
}
}),
resolvers: _object_spread({
Query: {
node: function (parent, args, cache, info) {
var __typename;
var id = args.id;
if (typeof id === "string" && resolveTypeNameFromKey) {
// const idType = id.split('_')[0];
// __typename = (
// {
// usr: 'User',
// } as Record<string, string>
// )[idType];
__typename = resolveTypeNameFromKey(id);
}
return __typename ? {
__typename: __typename,
id: id
} : cache.resolve(parent, info.parentFieldKey);
}
}
}, cache === null || cache === void 0 ? void 0 : cache.resolvers)
})),
// scalarExchange({
// schema: schema as any,
// scalars: {
// JSON(value) {
// if (value && typeof value === 'string') return JSON.parse(value);
// return value;
// },
// },
// }),
batch ? batchFetchExchange({
maxBatchSize: 1000
}) : undefined,
persisted ? persistedExchange({
preferGetForPersistedQueries: true,
// enforcePersistedQueries: true,
enableForMutation: true,
// https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#normalized-caches-urql-and-apollo-client
generateHash: function (_, document) {
var _document___meta__;
return Promise.resolve((_document___meta__ = document["__meta__"]) === null || _document___meta__ === void 0 ? void 0 : _document___meta__["hash"]);
}
}) : undefined,
retryExchange({
initialDelayMs: 1000,
maxDelayMs: ms("5m"),
maxNumberAttempts: Number.POSITIVE_INFINITY,
// 默认只重试网络错误
retryIf: function (err) {
return Boolean(err && err.networkError);
}
}),
fetchExchange
].filter(Boolean),
fetchOptions: function () {
var headers = {};
var token = getToken === null || getToken === void 0 ? void 0 : getToken();
if (token) {
headers["Authorization"] = "Bearer ".concat(token);
}
return {
headers: headers
};
}
});
return client;
}