版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
2.6 KiB

  1. import { tryOnScopeDispose } from '@vueuse/shared';
  2. import { ref } from 'vue-demi';
  3. import Cookie from 'universal-cookie';
  4. var __defProp = Object.defineProperty;
  5. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  6. var __hasOwnProp = Object.prototype.hasOwnProperty;
  7. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  8. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  9. var __spreadValues = (a, b) => {
  10. for (var prop in b || (b = {}))
  11. if (__hasOwnProp.call(b, prop))
  12. __defNormalProp(a, prop, b[prop]);
  13. if (__getOwnPropSymbols)
  14. for (var prop of __getOwnPropSymbols(b)) {
  15. if (__propIsEnum.call(b, prop))
  16. __defNormalProp(a, prop, b[prop]);
  17. }
  18. return a;
  19. };
  20. function createCookies(req) {
  21. const universalCookie = new Cookie(req ? req.headers.cookie : null);
  22. return (dependencies, { doNotParse = false, autoUpdateDependencies = false } = {}) => useCookies(dependencies, { doNotParse, autoUpdateDependencies }, universalCookie);
  23. }
  24. function useCookies(dependencies, { doNotParse = false, autoUpdateDependencies = false } = {}, cookies = new Cookie()) {
  25. const watchingDependencies = autoUpdateDependencies ? [...dependencies || []] : dependencies;
  26. let previousCookies = cookies.getAll({ doNotParse: true });
  27. const touches = ref(0);
  28. const onChange = () => {
  29. const newCookies = cookies.getAll({ doNotParse: true });
  30. if (shouldUpdate(watchingDependencies || null, newCookies, previousCookies))
  31. touches.value++;
  32. previousCookies = newCookies;
  33. };
  34. cookies.addChangeListener(onChange);
  35. tryOnScopeDispose(() => {
  36. cookies.removeChangeListener(onChange);
  37. });
  38. return {
  39. get: (...args) => {
  40. if (autoUpdateDependencies && watchingDependencies && !watchingDependencies.includes(args[0]))
  41. watchingDependencies.push(args[0]);
  42. touches.value;
  43. return cookies.get(args[0], __spreadValues({ doNotParse }, args[1]));
  44. },
  45. getAll: (...args) => {
  46. touches.value;
  47. return cookies.getAll(__spreadValues({ doNotParse }, args[0]));
  48. },
  49. set: (...args) => cookies.set(...args),
  50. remove: (...args) => cookies.remove(...args),
  51. addChangeListener: (...args) => cookies.addChangeListener(...args),
  52. removeChangeListener: (...args) => cookies.removeChangeListener(...args)
  53. };
  54. }
  55. function shouldUpdate(dependencies, newCookies, oldCookies) {
  56. if (!dependencies)
  57. return true;
  58. for (const dependency of dependencies) {
  59. if (newCookies[dependency] !== oldCookies[dependency])
  60. return true;
  61. }
  62. return false;
  63. }
  64. export { createCookies, useCookies };