版博士V2.0程序
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

230 wiersze
7.4 KiB

  1. var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
  2. if (VueDemi.install) {
  3. return VueDemi
  4. }
  5. if (!Vue) {
  6. console.error('[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.')
  7. return VueDemi
  8. }
  9. // Vue 2.7
  10. if (Vue.version.slice(0, 4) === '2.7.') {
  11. for (var key in Vue) {
  12. VueDemi[key] = Vue[key]
  13. }
  14. VueDemi.isVue2 = true
  15. VueDemi.isVue3 = false
  16. VueDemi.install = function () {}
  17. VueDemi.Vue = Vue
  18. VueDemi.Vue2 = Vue
  19. VueDemi.version = Vue.version
  20. VueDemi.warn = Vue.util.warn
  21. function createApp(rootComponent, rootProps) {
  22. var vm
  23. var provide = {}
  24. var app = {
  25. config: Vue.config,
  26. use: Vue.use.bind(Vue),
  27. mixin: Vue.mixin.bind(Vue),
  28. component: Vue.component.bind(Vue),
  29. provide: function (key, value) {
  30. provide[key] = value
  31. return this
  32. },
  33. directive: function (name, dir) {
  34. if (dir) {
  35. Vue.directive(name, dir)
  36. return app
  37. } else {
  38. return Vue.directive(name)
  39. }
  40. },
  41. mount: function (el, hydrating) {
  42. if (!vm) {
  43. vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
  44. vm.$mount(el, hydrating)
  45. return vm
  46. } else {
  47. return vm
  48. }
  49. },
  50. unmount: function () {
  51. if (vm) {
  52. vm.$destroy()
  53. vm = undefined
  54. }
  55. },
  56. }
  57. return app
  58. }
  59. VueDemi.createApp = createApp
  60. }
  61. // Vue 2.6.x
  62. else if (Vue.version.slice(0, 2) === '2.') {
  63. if (VueCompositionAPI) {
  64. for (var key in VueCompositionAPI) {
  65. VueDemi[key] = VueCompositionAPI[key]
  66. }
  67. VueDemi.isVue2 = true
  68. VueDemi.isVue3 = false
  69. VueDemi.install = function () {}
  70. VueDemi.Vue = Vue
  71. VueDemi.Vue2 = Vue
  72. VueDemi.version = Vue.version
  73. } else {
  74. console.error('[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.')
  75. }
  76. }
  77. // Vue 3
  78. else if (Vue.version.slice(0, 2) === '3.') {
  79. for (var key in Vue) {
  80. VueDemi[key] = Vue[key]
  81. }
  82. VueDemi.isVue2 = false
  83. VueDemi.isVue3 = true
  84. VueDemi.install = function () {}
  85. VueDemi.Vue = Vue
  86. VueDemi.Vue2 = undefined
  87. VueDemi.version = Vue.version
  88. VueDemi.set = function (target, key, val) {
  89. if (Array.isArray(target)) {
  90. target.length = Math.max(target.length, key)
  91. target.splice(key, 1, val)
  92. return val
  93. }
  94. target[key] = val
  95. return val
  96. }
  97. VueDemi.del = function (target, key) {
  98. if (Array.isArray(target)) {
  99. target.splice(key, 1)
  100. return
  101. }
  102. delete target[key]
  103. }
  104. } else {
  105. console.error('[vue-demi] Vue version ' + Vue.version + ' is unsupported.')
  106. }
  107. return VueDemi
  108. })(
  109. (this.VueDemi = this.VueDemi || (typeof VueDemi !== 'undefined' ? VueDemi : {})),
  110. this.Vue || (typeof Vue !== 'undefined' ? Vue : undefined),
  111. this.VueCompositionAPI || (typeof VueCompositionAPI !== 'undefined' ? VueCompositionAPI : undefined)
  112. );
  113. ;
  114. ;(function (exports, vueDemi, shared, axios) {
  115. 'use strict';
  116. var __defProp = Object.defineProperty;
  117. var __defProps = Object.defineProperties;
  118. var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  119. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  120. var __hasOwnProp = Object.prototype.hasOwnProperty;
  121. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  122. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  123. var __spreadValues = (a, b) => {
  124. for (var prop in b || (b = {}))
  125. if (__hasOwnProp.call(b, prop))
  126. __defNormalProp(a, prop, b[prop]);
  127. if (__getOwnPropSymbols)
  128. for (var prop of __getOwnPropSymbols(b)) {
  129. if (__propIsEnum.call(b, prop))
  130. __defNormalProp(a, prop, b[prop]);
  131. }
  132. return a;
  133. };
  134. var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  135. function useAxios(...args) {
  136. const url = typeof args[0] === "string" ? args[0] : void 0;
  137. const argsPlaceholder = shared.isString(url) ? 1 : 0;
  138. let defaultConfig = {};
  139. let instance = axios;
  140. let options = { immediate: !!argsPlaceholder, shallow: true };
  141. const isAxiosInstance = (val) => !!(val == null ? void 0 : val.request);
  142. if (args.length > 0 + argsPlaceholder) {
  143. if (isAxiosInstance(args[0 + argsPlaceholder]))
  144. instance = args[0 + argsPlaceholder];
  145. else
  146. defaultConfig = args[0 + argsPlaceholder];
  147. }
  148. if (args.length > 1 + argsPlaceholder) {
  149. if (isAxiosInstance(args[1 + argsPlaceholder]))
  150. instance = args[1 + argsPlaceholder];
  151. }
  152. if (args.length === 2 + argsPlaceholder && !isAxiosInstance(args[1 + argsPlaceholder]) || args.length === 3 + argsPlaceholder)
  153. options = args[args.length - 1];
  154. const response = vueDemi.shallowRef();
  155. const data = options.shallow ? vueDemi.shallowRef() : vueDemi.ref();
  156. const isFinished = vueDemi.ref(false);
  157. const isLoading = vueDemi.ref(false);
  158. const isAborted = vueDemi.ref(false);
  159. const error = vueDemi.shallowRef();
  160. const cancelTokenSource = axios.CancelToken.source;
  161. let cancelToken = cancelTokenSource();
  162. const abort = (message) => {
  163. if (isFinished.value || !isLoading.value)
  164. return;
  165. cancelToken.cancel(message);
  166. cancelToken = cancelTokenSource();
  167. isAborted.value = true;
  168. isLoading.value = false;
  169. isFinished.value = false;
  170. };
  171. const loading = (loading2) => {
  172. isLoading.value = loading2;
  173. isFinished.value = !loading2;
  174. };
  175. const waitUntilFinished = () => new Promise((resolve, reject) => {
  176. shared.until(isFinished).toBe(true).then(() => resolve(result)).catch(reject);
  177. });
  178. const then = (onFulfilled, onRejected) => waitUntilFinished().then(onFulfilled, onRejected);
  179. const execute = (executeUrl = url, config = {}) => {
  180. error.value = void 0;
  181. const _url = typeof executeUrl === "string" ? executeUrl : url != null ? url : config.url;
  182. if (_url === void 0) {
  183. error.value = new axios.AxiosError(axios.AxiosError.ERR_INVALID_URL);
  184. isFinished.value = true;
  185. return { then };
  186. }
  187. abort();
  188. loading(true);
  189. instance(_url, __spreadProps(__spreadValues(__spreadValues({}, defaultConfig), typeof executeUrl === "object" ? executeUrl : config), { cancelToken: cancelToken.token })).then((r) => {
  190. var _a;
  191. response.value = r;
  192. const result2 = r.data;
  193. data.value = result2;
  194. (_a = options.onSuccess) == null ? void 0 : _a.call(options, result2);
  195. }).catch((e) => {
  196. var _a;
  197. error.value = e;
  198. (_a = options.onError) == null ? void 0 : _a.call(options, e);
  199. }).finally(() => loading(false));
  200. return { then };
  201. };
  202. if (options.immediate && url)
  203. execute();
  204. const result = {
  205. response,
  206. data,
  207. error,
  208. finished: isFinished,
  209. loading: isLoading,
  210. isFinished,
  211. isLoading,
  212. cancel: abort,
  213. isAborted,
  214. canceled: isAborted,
  215. aborted: isAborted,
  216. isCanceled: isAborted,
  217. abort,
  218. execute
  219. };
  220. return __spreadProps(__spreadValues({}, result), {
  221. then
  222. });
  223. }
  224. exports.useAxios = useAxios;
  225. })(this.VueUse = this.VueUse || {}, VueDemi, VueUse, axios);