index.cjs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. "use strict";
  2. var __defProp = Object.defineProperty;
  3. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4. var __getOwnPropNames = Object.getOwnPropertyNames;
  5. var __hasOwnProp = Object.prototype.hasOwnProperty;
  6. var __export = (target, all) => {
  7. for (var name in all)
  8. __defProp(target, name, { get: all[name], enumerable: true });
  9. };
  10. var __copyProps = (to, from, except, desc) => {
  11. if (from && typeof from === "object" || typeof from === "function") {
  12. for (let key of __getOwnPropNames(from))
  13. if (!__hasOwnProp.call(to, key) && key !== except)
  14. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  15. }
  16. return to;
  17. };
  18. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  19. // src/index.ts
  20. var index_exports = {};
  21. __export(index_exports, {
  22. createPersistedState: () => createPersistedState,
  23. default: () => index_default
  24. });
  25. module.exports = __toCommonJS(index_exports);
  26. var import_destr = require("destr");
  27. // src/runtime/core.ts
  28. var import_deep_pick_omit = require("deep-pick-omit");
  29. function hydrateStore(store, {
  30. storage,
  31. serializer,
  32. key,
  33. debug,
  34. pick,
  35. omit,
  36. beforeHydrate,
  37. afterHydrate
  38. }, context, runHooks = true) {
  39. try {
  40. if (runHooks)
  41. beforeHydrate?.(context);
  42. const fromStorage = storage.getItem(key);
  43. if (fromStorage) {
  44. const deserialized = serializer.deserialize(fromStorage);
  45. const picked = pick ? (0, import_deep_pick_omit.deepPickUnsafe)(deserialized, pick) : deserialized;
  46. const omitted = omit ? (0, import_deep_pick_omit.deepOmitUnsafe)(picked, omit) : picked;
  47. store.$patch(omitted);
  48. }
  49. if (runHooks)
  50. afterHydrate?.(context);
  51. } catch (error) {
  52. if (debug)
  53. console.error("[pinia-plugin-persistedstate]", error);
  54. }
  55. }
  56. function persistState(state, {
  57. storage,
  58. serializer,
  59. key,
  60. debug,
  61. pick,
  62. omit
  63. }) {
  64. try {
  65. const picked = pick ? (0, import_deep_pick_omit.deepPickUnsafe)(state, pick) : state;
  66. const omitted = omit ? (0, import_deep_pick_omit.deepOmitUnsafe)(picked, omit) : picked;
  67. const toStorage = serializer.serialize(omitted);
  68. storage.setItem(key, toStorage);
  69. } catch (error) {
  70. if (debug)
  71. console.error("[pinia-plugin-persistedstate]", error);
  72. }
  73. }
  74. function createPersistence(context, optionsParser, auto) {
  75. const { pinia, store, options: { persist = auto } } = context;
  76. if (!persist)
  77. return;
  78. if (!(store.$id in pinia.state.value)) {
  79. const originalStore = pinia._s.get(store.$id.replace("__hot:", ""));
  80. if (originalStore)
  81. void Promise.resolve().then(() => originalStore.$persist());
  82. return;
  83. }
  84. const persistenceOptions = Array.isArray(persist) ? persist : persist === true ? [{}] : [persist];
  85. const persistences = persistenceOptions.map(optionsParser);
  86. store.$hydrate = ({ runHooks = true } = {}) => {
  87. persistences.forEach((p) => {
  88. hydrateStore(store, p, context, runHooks);
  89. });
  90. };
  91. store.$persist = () => {
  92. persistences.forEach((p) => {
  93. persistState(store.$state, p);
  94. });
  95. };
  96. persistences.forEach((p) => {
  97. hydrateStore(store, p, context);
  98. store.$subscribe(
  99. (_mutation, state) => persistState(state, p),
  100. { detached: true }
  101. );
  102. });
  103. }
  104. // src/index.ts
  105. function createPersistedState(options = {}) {
  106. return function(context) {
  107. createPersistence(
  108. context,
  109. (p) => ({
  110. key: (options.key ? options.key : (x) => x)(p.key ?? context.store.$id),
  111. debug: p.debug ?? options.debug ?? false,
  112. serializer: p.serializer ?? options.serializer ?? {
  113. serialize: (data) => JSON.stringify(data),
  114. deserialize: (data) => (0, import_destr.destr)(data)
  115. },
  116. storage: p.storage ?? options.storage ?? window.localStorage,
  117. beforeHydrate: p.beforeHydrate,
  118. afterHydrate: p.afterHydrate,
  119. pick: p.pick,
  120. omit: p.omit
  121. }),
  122. options.auto ?? false
  123. );
  124. };
  125. }
  126. var index_default = createPersistedState();
  127. // Annotate the CommonJS export names for ESM import in node:
  128. 0 && (module.exports = {
  129. createPersistedState
  130. });