vue-hooks-plus
Version:
Vue hooks library
97 lines (96 loc) • 3.12 kB
JavaScript
const vue = require("vue");
const utils = require("../devtools/utils");
const devToolsStore = require("../devtools/store");
const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e };
const devToolsStore__default = /* @__PURE__ */ _interopDefaultLegacy(devToolsStore);
const useDevtoolsPlugin = (fetchInstance, { ready = true, debugKey, ...rest }) => {
const createDevTarget = () => {
if (debugKey && !devToolsStore__default.default.has(debugKey)) {
const functionName = fetchInstance.serviceRef.value.toString().includes("function") ? utils.getFunctionName(fetchInstance.serviceRef.value.toString()) : utils.getArrowFunctionName(fetchInstance.serviceRef.value.toString());
devToolsStore__default.default.insert(debugKey, {
instance: fetchInstance,
requestName: functionName,
time: Date.now()
});
}
};
const processObj = vue.computed(
() => Object.fromEntries(
Object.entries({ ready, ...rest }).map(([key, value]) => [key, vue.unref(value)])
)
);
vue.watchEffect(() => {
if (debugKey && devToolsStore__default.default.has(debugKey)) {
devToolsStore__default.default.emit({
...fetchInstance,
options: { ...fetchInstance.options, ...processObj.value }
});
}
});
return {
name: "devtoolsPlugin",
onBefore: (params) => {
createDevTarget();
if (debugKey && devToolsStore__default.default.has(debugKey))
devToolsStore__default.default.emit({
...fetchInstance.state,
key: debugKey,
params,
loading: true,
time: Date.now(),
type: "pending"
});
},
onSuccess(data, params) {
createDevTarget();
if (debugKey && devToolsStore__default.default.has(debugKey))
devToolsStore__default.default.emit({
...fetchInstance.state,
key: debugKey,
data,
params,
loading: false,
time: Date.now(),
type: "done"
});
},
onCancel() {
createDevTarget();
if (debugKey && devToolsStore__default.default.has(debugKey))
devToolsStore__default.default.emit({
...fetchInstance.state,
key: debugKey,
loading: false,
time: Date.now(),
type: "cancel"
});
},
onError(e, params) {
createDevTarget();
if (debugKey && devToolsStore__default.default.has(debugKey))
devToolsStore__default.default.emit({
...fetchInstance.state,
key: debugKey,
params,
loading: false,
error: e,
time: Date.now(),
type: "error"
});
},
onMutate(data) {
createDevTarget();
if (debugKey && devToolsStore__default.default.has(debugKey))
devToolsStore__default.default.emit({
...fetchInstance.state,
key: debugKey,
data,
loading: false,
time: Date.now(),
type: "mutate"
});
}
};
};
module.exports = useDevtoolsPlugin;
;