版博士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.
 
 
 
 

70 lines
2.7 KiB

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