UNPKG

vue-admin-core

Version:
1 lines 8.97 kB
{"version":3,"file":"Fetch.mjs","sources":["../../../../../../package/hooks/useRequest/src/Fetch.ts"],"sourcesContent":["import { Ref, ref, toValue } from \"vue\";\nimport type { FetchState, Options, PluginReturn, Service } from \"./types\";\nimport { isBoolean, isFunction } from \"lodash-es\";\n\nexport default class Fetch<TData, TParams extends any[]> {\n pluginImpls: PluginReturn<TData, TParams>[] = [];\n\n count: number = 0;\n\n loading: Ref<boolean> = ref(false);\n params: Ref<TParams | []> = ref([]);\n data: Ref<TData | undefined> = ref(undefined);\n error: Ref<Error | undefined> = ref(undefined);\n\n constructor(\n public service: Service<TData, TParams>,\n public options: Options<TData, TParams>,\n public initState: Partial<FetchState<TData, TParams>> = {}\n ) {\n this.loading.value = isBoolean(toValue(initState.loading))\n ? toValue(initState.loading || false)\n : !options.manual;\n this.params.value = toValue(initState.params) || [];\n }\n\n runPluginHandler(event: keyof PluginReturn<TData, TParams>, ...rest: any[]) {\n // @ts-ignore\n const r = this.pluginImpls.map((i) => i[event]?.(...rest)).filter(Boolean);\n return Object.assign({}, ...r);\n }\n\n async runAsync(...params: TParams): Promise<TData> {\n this.count += 1;\n const currentCount = this.count;\n\n const {\n stopNow = false,\n returnNow = false,\n ...state\n } = this.runPluginHandler(\"onBefore\", params);\n\n // stop request\n if (stopNow) {\n return new Promise(() => {});\n }\n\n this.loading.value = isBoolean(toValue(state.loading)) ? toValue(state.loading) : true;\n this.params.value = params;\n this.error.value = state.error;\n if (state.data) {\n this.data.value = state.data;\n }\n\n // return now\n if (returnNow) {\n return Promise.resolve(state.data);\n }\n\n this.options.onBefore?.(params);\n\n try {\n // replace service\n let { servicePromise } = this.runPluginHandler(\"onRequest\", this.service, params);\n\n if (!servicePromise) {\n servicePromise = this.service(...params);\n }\n\n const res = await servicePromise;\n\n if (currentCount !== this.count) {\n // prevent run.then when request is canceled\n return new Promise(() => {});\n }\n\n this.data.value = res;\n this.loading.value = false;\n this.error.value = undefined;\n\n this.options.onSuccess?.(res, params);\n this.runPluginHandler(\"onSuccess\", res, params);\n\n this.options.onFinally?.(params, res, undefined);\n\n if (currentCount === this.count) {\n this.runPluginHandler(\"onFinally\", params, res, undefined);\n }\n\n return res;\n } catch (error: any) {\n if (currentCount !== this.count) {\n // prevent run.then when request is canceled\n return new Promise(() => {});\n }\n\n this.loading.value = false;\n this.error.value = error;\n\n this.options.onError?.(error, params);\n this.runPluginHandler(\"onError\", error, params);\n\n this.options.onFinally?.(params, undefined, error);\n\n if (currentCount === this.count) {\n this.runPluginHandler(\"onFinally\", params, undefined, error);\n }\n\n throw error;\n }\n }\n\n run(...params: TParams) {\n this.runAsync(...params).catch((error) => {\n if (!this.options.onError) {\n console.error(error);\n }\n });\n }\n\n cancel() {\n this.count += 1;\n this.loading.value = false;\n\n this.runPluginHandler(\"onCancel\");\n }\n\n refresh() {\n // @ts-ignore\n this.run(...(toValue(this.params) || []));\n }\n\n refreshAsync() {\n // @ts-ignore\n return this.runAsync(...(toValue(this.params) || []));\n }\n\n mutate(data?: TData | ((oldData?: TData) => TData | undefined)) {\n const targetData = isFunction(data) ? data(toValue(this.data)) : data;\n this.runPluginHandler(\"onMutate\", targetData);\n this.data.value = targetData;\n }\n}\n"],"names":[],"mappings":"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"}