dharma-core 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.d.ts +2 -1
  3. package/dist/cjs/index.js +2 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/internal/createStorageAdapter.d.ts +7 -0
  6. package/dist/cjs/internal/createStorageAdapter.js.map +1 -0
  7. package/dist/cjs/internal/warn.js.map +1 -0
  8. package/dist/cjs/lib/createStore.d.ts +3 -76
  9. package/dist/cjs/lib/createStore.js +3 -78
  10. package/dist/cjs/lib/createStore.js.map +1 -1
  11. package/dist/cjs/lib/deeplyEquals.d.ts +1 -0
  12. package/dist/cjs/lib/deeplyEquals.js +49 -0
  13. package/dist/cjs/lib/deeplyEquals.js.map +1 -0
  14. package/dist/cjs/lib/derive.d.ts +16 -0
  15. package/dist/cjs/lib/derive.js +81 -0
  16. package/dist/cjs/lib/derive.js.map +1 -0
  17. package/dist/cjs/lib/merge.d.ts +3 -27
  18. package/dist/cjs/lib/merge.js +14 -29
  19. package/dist/cjs/lib/merge.js.map +1 -1
  20. package/dist/{esm/lib → cjs/types}/types.d.ts +18 -11
  21. package/dist/esm/index.d.ts +2 -1
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/internal/createStorageAdapter.d.ts +7 -0
  25. package/dist/esm/internal/createStorageAdapter.js.map +1 -0
  26. package/dist/esm/internal/warn.js.map +1 -0
  27. package/dist/esm/lib/createStore.d.ts +3 -76
  28. package/dist/esm/lib/createStore.js +3 -78
  29. package/dist/esm/lib/createStore.js.map +1 -1
  30. package/dist/esm/lib/deeplyEquals.d.ts +1 -0
  31. package/dist/esm/lib/deeplyEquals.js +47 -0
  32. package/dist/esm/lib/deeplyEquals.js.map +1 -0
  33. package/dist/esm/lib/derive.d.ts +16 -0
  34. package/dist/esm/lib/derive.js +79 -0
  35. package/dist/esm/lib/derive.js.map +1 -0
  36. package/dist/esm/lib/merge.d.ts +3 -27
  37. package/dist/esm/lib/merge.js +14 -29
  38. package/dist/esm/lib/merge.js.map +1 -1
  39. package/dist/{cjs/lib → esm/types}/types.d.ts +18 -11
  40. package/package.json +18 -19
  41. package/dist/cjs/lib/createStorageAdapter.d.ts +0 -7
  42. package/dist/cjs/lib/createStorageAdapter.js.map +0 -1
  43. package/dist/cjs/lib/warn.js.map +0 -1
  44. package/dist/esm/lib/createStorageAdapter.d.ts +0 -7
  45. package/dist/esm/lib/createStorageAdapter.js.map +0 -1
  46. package/dist/esm/lib/warn.js.map +0 -1
  47. /package/dist/cjs/{lib → internal}/createStorageAdapter.js +0 -0
  48. /package/dist/cjs/{lib → internal}/warn.d.ts +0 -0
  49. /package/dist/cjs/{lib → internal}/warn.js +0 -0
  50. /package/dist/esm/{lib → internal}/createStorageAdapter.js +0 -0
  51. /package/dist/esm/{lib → internal}/warn.d.ts +0 -0
  52. /package/dist/esm/{lib → internal}/warn.js +0 -0
@@ -1,7 +0,0 @@
1
- import { SetState, StoreConfig } from "./types";
2
- export declare const createStorageAdapter: <TState extends object, TActions extends object = Record<never, never>>(config: StoreConfig<TState, TActions>, get: () => TState, set: SetState<TState>) => {
3
- onLoad: () => Promise<void>;
4
- onChange: (newState: TState) => Promise<void>;
5
- onAttach: () => void;
6
- onDetach: () => void;
7
- } | null;
@@ -1 +0,0 @@
1
- {"version":3,"file":"createStorageAdapter.js","sources":["../../../src/lib/createStorageAdapter.ts"],"sourcesContent":["import { SetState, StorageAPI, StoreConfig } from \"./types\";\nimport { warn } from \"./warn\";\n\nexport const createStorageAdapter = <\n TState extends object,\n TActions extends object = Record<never, never>,\n>(\n config: StoreConfig<TState, TActions>,\n get: () => TState,\n set: SetState<TState>,\n) => {\n if (!config.persist) {\n return null;\n }\n\n const IS_BROWSER = typeof window !== \"undefined\";\n\n const storage =\n config.storage ?? (IS_BROWSER ? (localStorage as StorageAPI) : undefined);\n\n if (!storage) {\n warn(\n \"No storage provider found. If this happened during SSR, you can safely ignore this warning.\",\n );\n return null;\n }\n\n const { key, serializer = JSON, initialState } = config;\n const initKey = `init_${key}`;\n\n const onLoad = async () => {\n try {\n let initialStateSnapshot = storage.getItem(initKey);\n const initialStateString = serializer.stringify(initialState);\n\n if (initialStateSnapshot instanceof Promise) {\n initialStateSnapshot = await initialStateSnapshot;\n }\n\n if (initialStateSnapshot !== initialStateString) {\n storage.setItem(initKey, initialStateString);\n storage.removeItem(key);\n }\n } catch {\n warn(\n \"Failed to initialize snapshots. If this happened during SSR, you can safely ignore this warning.\",\n );\n }\n };\n\n const syncWithSnapshot = async () => {\n try {\n let currentSnapshot = storage.getItem(key);\n\n if (currentSnapshot instanceof Promise) {\n currentSnapshot = await currentSnapshot;\n }\n\n if (currentSnapshot && currentSnapshot !== serializer.stringify(get())) {\n set(serializer.parse(currentSnapshot));\n }\n } catch {\n warn(\"Failed to update state from snapshot\");\n }\n };\n\n const onAttach = () => {\n syncWithSnapshot();\n\n if (IS_BROWSER) {\n window.addEventListener(\"focus\", syncWithSnapshot);\n }\n };\n\n const onChange = async (newState: TState) => {\n try {\n let currentSnapshot = storage.getItem(key);\n const newSnapshot = serializer.stringify(newState);\n\n if (currentSnapshot instanceof Promise) {\n currentSnapshot = await currentSnapshot;\n }\n\n if (newSnapshot !== currentSnapshot) {\n storage.setItem(key, newSnapshot);\n }\n } catch {\n warn(\"Failed to update snapshot\");\n }\n };\n\n const onDetach = () => {\n if (IS_BROWSER) {\n window.removeEventListener(\"focus\", syncWithSnapshot);\n }\n };\n\n return {\n onLoad,\n onChange,\n onAttach,\n onDetach,\n };\n};\n"],"names":[],"mappings":";;AAGO,MAAM,oBAAoB,GAAG,CAIlC,MAAqC,EACrC,GAAiB,EACjB,GAAqB,KACnB;AACF,IAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW;AAEhD,IAAA,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,KAAK,UAAU,GAAI,YAA2B,GAAG,SAAS,CAAC;IAE3E,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,CACF,6FAA6F,CAC9F;AACD,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM;AACvD,IAAA,MAAM,OAAO,GAAG,CAAA,KAAA,EAAQ,GAAG,EAAE;AAE7B,IAAA,MAAM,MAAM,GAAG,YAAW;AACxB,QAAA,IAAI;YACF,IAAI,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YACnD,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC;AAE7D,YAAA,IAAI,oBAAoB,YAAY,OAAO,EAAE;gBAC3C,oBAAoB,GAAG,MAAM,oBAAoB;YACnD;AAEA,YAAA,IAAI,oBAAoB,KAAK,kBAAkB,EAAE;AAC/C,gBAAA,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;AAC5C,gBAAA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YACzB;QACF;AAAE,QAAA,MAAM;YACN,IAAI,CACF,kGAAkG,CACnG;QACH;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,YAAW;AAClC,QAAA,IAAI;YACF,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAE1C,YAAA,IAAI,eAAe,YAAY,OAAO,EAAE;gBACtC,eAAe,GAAG,MAAM,eAAe;YACzC;AAEA,YAAA,IAAI,eAAe,IAAI,eAAe,KAAK,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE;gBACtE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxC;QACF;AAAE,QAAA,MAAM;YACN,IAAI,CAAC,sCAAsC,CAAC;QAC9C;AACF,IAAA,CAAC;IAED,MAAM,QAAQ,GAAG,MAAK;AACpB,QAAA,gBAAgB,EAAE;QAElB,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACpD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,OAAO,QAAgB,KAAI;AAC1C,QAAA,IAAI;YACF,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;YAC1C,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;AAElD,YAAA,IAAI,eAAe,YAAY,OAAO,EAAE;gBACtC,eAAe,GAAG,MAAM,eAAe;YACzC;AAEA,YAAA,IAAI,WAAW,KAAK,eAAe,EAAE;AACnC,gBAAA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC;YACnC;QACF;AAAE,QAAA,MAAM;YACN,IAAI,CAAC,2BAA2B,CAAC;QACnC;AACF,IAAA,CAAC;IAED,MAAM,QAAQ,GAAG,MAAK;QACpB,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvD;AACF,IAAA,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"warn.js","sources":["../../../src/lib/warn.ts"],"sourcesContent":["export const warn = (message: string) =>\n console.warn(`[dharma-core] ${message}`);\n"],"names":[],"mappings":"AAAO,MAAM,IAAI,GAAG,CAAC,OAAe,KAClC,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAA,CAAE;;;;"}
File without changes
File without changes
File without changes
File without changes