@depup/jotai 2.18.0-depup.0

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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/babel/plugin-debug-label.d.ts +5 -0
  4. package/babel/plugin-debug-label.js +54 -0
  5. package/babel/plugin-react-refresh.d.ts +5 -0
  6. package/babel/plugin-react-refresh.js +72 -0
  7. package/babel/preset.d.ts +6 -0
  8. package/babel/preset.js +110 -0
  9. package/babel/utils.d.ts +5 -0
  10. package/benchmarks/simple-read.d.ts +2 -0
  11. package/benchmarks/simple-write.d.ts +2 -0
  12. package/benchmarks/subscribe-write.d.ts +2 -0
  13. package/changes.json +5 -0
  14. package/esm/babel/plugin-debug-label.d.mts +5 -0
  15. package/esm/babel/plugin-debug-label.mjs +103 -0
  16. package/esm/babel/plugin-react-refresh.d.mts +5 -0
  17. package/esm/babel/plugin-react-refresh.mjs +121 -0
  18. package/esm/babel/preset.d.mts +6 -0
  19. package/esm/babel/preset.mjs +179 -0
  20. package/esm/babel/utils.d.mts +5 -0
  21. package/esm/index.d.mts +2 -0
  22. package/esm/index.mjs +2 -0
  23. package/esm/react/Provider.d.mts +16 -0
  24. package/esm/react/useAtom.d.mts +13 -0
  25. package/esm/react/useAtomValue.d.mts +9 -0
  26. package/esm/react/useSetAtom.d.mts +7 -0
  27. package/esm/react/utils/useAtomCallback.d.mts +5 -0
  28. package/esm/react/utils/useHydrateAtoms.d.mts +14 -0
  29. package/esm/react/utils/useReducerAtom.d.mts +14 -0
  30. package/esm/react/utils/useResetAtom.d.mts +6 -0
  31. package/esm/react/utils.d.mts +4 -0
  32. package/esm/react/utils.mjs +57 -0
  33. package/esm/react.d.mts +4 -0
  34. package/esm/react.mjs +182 -0
  35. package/esm/utils.d.mts +2 -0
  36. package/esm/utils.mjs +2 -0
  37. package/esm/vanilla/atom.d.mts +47 -0
  38. package/esm/vanilla/internals.d.mts +164 -0
  39. package/esm/vanilla/internals.mjs +715 -0
  40. package/esm/vanilla/store.d.mts +5 -0
  41. package/esm/vanilla/typeUtils.d.mts +7 -0
  42. package/esm/vanilla/utils/atomFamily.d.mts +55 -0
  43. package/esm/vanilla/utils/atomWithDefault.d.mts +6 -0
  44. package/esm/vanilla/utils/atomWithLazy.d.mts +2 -0
  45. package/esm/vanilla/utils/atomWithObservable.d.mts +32 -0
  46. package/esm/vanilla/utils/atomWithReducer.d.mts +3 -0
  47. package/esm/vanilla/utils/atomWithRefresh.d.mts +6 -0
  48. package/esm/vanilla/utils/atomWithReset.d.mts +8 -0
  49. package/esm/vanilla/utils/atomWithStorage.d.mts +50 -0
  50. package/esm/vanilla/utils/constants.d.mts +1 -0
  51. package/esm/vanilla/utils/freezeAtom.d.mts +6 -0
  52. package/esm/vanilla/utils/loadable.d.mts +33 -0
  53. package/esm/vanilla/utils/selectAtom.d.mts +2 -0
  54. package/esm/vanilla/utils/splitAtom.d.mts +16 -0
  55. package/esm/vanilla/utils/unwrap.d.mts +5 -0
  56. package/esm/vanilla/utils.d.mts +14 -0
  57. package/esm/vanilla/utils.mjs +736 -0
  58. package/esm/vanilla.d.mts +4 -0
  59. package/esm/vanilla.mjs +59 -0
  60. package/index.d.ts +2 -0
  61. package/index.js +19 -0
  62. package/package.json +125 -0
  63. package/react/Provider.d.ts +16 -0
  64. package/react/useAtom.d.ts +13 -0
  65. package/react/useAtomValue.d.ts +9 -0
  66. package/react/useSetAtom.d.ts +7 -0
  67. package/react/utils/useAtomCallback.d.ts +5 -0
  68. package/react/utils/useHydrateAtoms.d.ts +14 -0
  69. package/react/utils/useReducerAtom.d.ts +14 -0
  70. package/react/utils/useResetAtom.d.ts +6 -0
  71. package/react/utils.d.ts +4 -0
  72. package/react/utils.js +100 -0
  73. package/react.d.ts +4 -0
  74. package/react.js +182 -0
  75. package/system/babel/plugin-debug-label.development.js +113 -0
  76. package/system/babel/plugin-debug-label.production.js +4 -0
  77. package/system/babel/plugin-react-refresh.development.js +131 -0
  78. package/system/babel/plugin-react-refresh.production.js +11 -0
  79. package/system/babel/preset.development.js +189 -0
  80. package/system/babel/preset.production.js +14 -0
  81. package/system/index.development.js +27 -0
  82. package/system/index.production.js +1 -0
  83. package/system/react/utils.development.js +79 -0
  84. package/system/react/utils.production.js +2 -0
  85. package/system/react.development.js +210 -0
  86. package/system/react.production.js +2 -0
  87. package/system/utils.development.js +27 -0
  88. package/system/utils.production.js +1 -0
  89. package/system/vanilla/internals.development.js +735 -0
  90. package/system/vanilla/internals.production.js +1 -0
  91. package/system/vanilla/utils.development.js +764 -0
  92. package/system/vanilla/utils.production.js +1 -0
  93. package/system/vanilla.development.js +75 -0
  94. package/system/vanilla.production.js +1 -0
  95. package/ts3.8/babel/plugin-debug-label.d.ts +6 -0
  96. package/ts3.8/babel/plugin-react-refresh.d.ts +6 -0
  97. package/ts3.8/babel/preset.d.ts +7 -0
  98. package/ts3.8/babel/utils.d.ts +6 -0
  99. package/ts3.8/benchmarks/simple-read.d.ts +3 -0
  100. package/ts3.8/benchmarks/simple-write.d.ts +3 -0
  101. package/ts3.8/benchmarks/subscribe-write.d.ts +3 -0
  102. package/ts3.8/esm/babel/plugin-debug-label.d.ts +6 -0
  103. package/ts3.8/esm/babel/plugin-react-refresh.d.ts +6 -0
  104. package/ts3.8/esm/babel/preset.d.ts +7 -0
  105. package/ts3.8/esm/babel/utils.d.ts +6 -0
  106. package/ts3.8/esm/index.d.ts +3 -0
  107. package/ts3.8/esm/react/Provider.d.ts +17 -0
  108. package/ts3.8/esm/react/useAtom.d.ts +28 -0
  109. package/ts3.8/esm/react/useAtomValue.d.ts +10 -0
  110. package/ts3.8/esm/react/useSetAtom.d.ts +8 -0
  111. package/ts3.8/esm/react/utils/useAtomCallback.d.ts +6 -0
  112. package/ts3.8/esm/react/utils/useHydrateAtoms.d.ts +27 -0
  113. package/ts3.8/esm/react/utils/useReducerAtom.d.ts +21 -0
  114. package/ts3.8/esm/react/utils/useResetAtom.d.ts +9 -0
  115. package/ts3.8/esm/react/utils.d.ts +5 -0
  116. package/ts3.8/esm/react.d.ts +5 -0
  117. package/ts3.8/esm/utils.d.ts +3 -0
  118. package/ts3.8/esm/vanilla/atom.d.ts +48 -0
  119. package/ts3.8/esm/vanilla/internals.d.ts +165 -0
  120. package/ts3.8/esm/vanilla/store.d.ts +6 -0
  121. package/ts3.8/esm/vanilla/typeUtils.d.ts +8 -0
  122. package/ts3.8/esm/vanilla/utils/atomFamily.d.ts +56 -0
  123. package/ts3.8/esm/vanilla/utils/atomWithDefault.d.ts +11 -0
  124. package/ts3.8/esm/vanilla/utils/atomWithLazy.d.ts +3 -0
  125. package/ts3.8/esm/vanilla/utils/atomWithObservable.d.ts +37 -0
  126. package/ts3.8/esm/vanilla/utils/atomWithReducer.d.ts +8 -0
  127. package/ts3.8/esm/vanilla/utils/atomWithRefresh.d.ts +10 -0
  128. package/ts3.8/esm/vanilla/utils/atomWithReset.d.ts +11 -0
  129. package/ts3.8/esm/vanilla/utils/atomWithStorage.d.ts +53 -0
  130. package/ts3.8/esm/vanilla/utils/constants.d.ts +2 -0
  131. package/ts3.8/esm/vanilla/utils/freezeAtom.d.ts +7 -0
  132. package/ts3.8/esm/vanilla/utils/loadable.d.ts +34 -0
  133. package/ts3.8/esm/vanilla/utils/selectAtom.d.ts +3 -0
  134. package/ts3.8/esm/vanilla/utils/splitAtom.d.ts +21 -0
  135. package/ts3.8/esm/vanilla/utils/unwrap.d.ts +6 -0
  136. package/ts3.8/esm/vanilla/utils.d.ts +15 -0
  137. package/ts3.8/esm/vanilla.d.ts +5 -0
  138. package/ts3.8/index.d.ts +3 -0
  139. package/ts3.8/react/Provider.d.ts +17 -0
  140. package/ts3.8/react/useAtom.d.ts +28 -0
  141. package/ts3.8/react/useAtomValue.d.ts +10 -0
  142. package/ts3.8/react/useSetAtom.d.ts +8 -0
  143. package/ts3.8/react/utils/useAtomCallback.d.ts +6 -0
  144. package/ts3.8/react/utils/useHydrateAtoms.d.ts +27 -0
  145. package/ts3.8/react/utils/useReducerAtom.d.ts +21 -0
  146. package/ts3.8/react/utils/useResetAtom.d.ts +9 -0
  147. package/ts3.8/react/utils.d.ts +5 -0
  148. package/ts3.8/react.d.ts +5 -0
  149. package/ts3.8/utils.d.ts +3 -0
  150. package/ts3.8/vanilla/atom.d.ts +48 -0
  151. package/ts3.8/vanilla/internals.d.ts +165 -0
  152. package/ts3.8/vanilla/store.d.ts +6 -0
  153. package/ts3.8/vanilla/typeUtils.d.ts +8 -0
  154. package/ts3.8/vanilla/utils/atomFamily.d.ts +56 -0
  155. package/ts3.8/vanilla/utils/atomWithDefault.d.ts +11 -0
  156. package/ts3.8/vanilla/utils/atomWithLazy.d.ts +3 -0
  157. package/ts3.8/vanilla/utils/atomWithObservable.d.ts +37 -0
  158. package/ts3.8/vanilla/utils/atomWithReducer.d.ts +8 -0
  159. package/ts3.8/vanilla/utils/atomWithRefresh.d.ts +10 -0
  160. package/ts3.8/vanilla/utils/atomWithReset.d.ts +11 -0
  161. package/ts3.8/vanilla/utils/atomWithStorage.d.ts +53 -0
  162. package/ts3.8/vanilla/utils/constants.d.ts +2 -0
  163. package/ts3.8/vanilla/utils/freezeAtom.d.ts +7 -0
  164. package/ts3.8/vanilla/utils/loadable.d.ts +34 -0
  165. package/ts3.8/vanilla/utils/selectAtom.d.ts +3 -0
  166. package/ts3.8/vanilla/utils/splitAtom.d.ts +21 -0
  167. package/ts3.8/vanilla/utils/unwrap.d.ts +6 -0
  168. package/ts3.8/vanilla/utils.d.ts +15 -0
  169. package/ts3.8/vanilla.d.ts +5 -0
  170. package/ts_version_3.8_and_above_is_required.d.ts +0 -0
  171. package/umd/babel/plugin-debug-label.development.js +58 -0
  172. package/umd/babel/plugin-debug-label.production.js +1 -0
  173. package/umd/babel/plugin-react-refresh.development.js +76 -0
  174. package/umd/babel/plugin-react-refresh.production.js +1 -0
  175. package/umd/babel/preset.development.js +114 -0
  176. package/umd/babel/preset.production.js +1 -0
  177. package/umd/index.development.js +20 -0
  178. package/umd/index.production.js +1 -0
  179. package/umd/react/utils.development.js +101 -0
  180. package/umd/react/utils.production.js +1 -0
  181. package/umd/react.development.js +184 -0
  182. package/umd/react.production.js +1 -0
  183. package/umd/utils.development.js +20 -0
  184. package/umd/utils.production.js +1 -0
  185. package/umd/vanilla/internals.development.js +785 -0
  186. package/umd/vanilla/internals.production.js +1 -0
  187. package/umd/vanilla/utils.development.js +858 -0
  188. package/umd/vanilla/utils.production.js +1 -0
  189. package/umd/vanilla.development.js +64 -0
  190. package/umd/vanilla.production.js +1 -0
  191. package/utils.d.ts +2 -0
  192. package/utils.js +19 -0
  193. package/vanilla/atom.d.ts +47 -0
  194. package/vanilla/internals.d.ts +164 -0
  195. package/vanilla/internals.js +779 -0
  196. package/vanilla/store.d.ts +5 -0
  197. package/vanilla/typeUtils.d.ts +7 -0
  198. package/vanilla/utils/atomFamily.d.ts +55 -0
  199. package/vanilla/utils/atomWithDefault.d.ts +6 -0
  200. package/vanilla/utils/atomWithLazy.d.ts +2 -0
  201. package/vanilla/utils/atomWithObservable.d.ts +32 -0
  202. package/vanilla/utils/atomWithReducer.d.ts +3 -0
  203. package/vanilla/utils/atomWithRefresh.d.ts +6 -0
  204. package/vanilla/utils/atomWithReset.d.ts +8 -0
  205. package/vanilla/utils/atomWithStorage.d.ts +50 -0
  206. package/vanilla/utils/constants.d.ts +1 -0
  207. package/vanilla/utils/freezeAtom.d.ts +6 -0
  208. package/vanilla/utils/loadable.d.ts +33 -0
  209. package/vanilla/utils/selectAtom.d.ts +2 -0
  210. package/vanilla/utils/splitAtom.d.ts +16 -0
  211. package/vanilla/utils/unwrap.d.ts +5 -0
  212. package/vanilla/utils.d.ts +14 -0
  213. package/vanilla/utils.js +854 -0
  214. package/vanilla.d.ts +4 -0
  215. package/vanilla.js +60 -0
@@ -0,0 +1,4 @@
1
+ export { atom } from './vanilla/atom.mjs';
2
+ export type { Atom, WritableAtom, PrimitiveAtom } from './vanilla/atom.mjs';
3
+ export { createStore, getDefaultStore, INTERNAL_overrideCreateStore, } from './vanilla/store.mjs';
4
+ export type { Getter, Setter, ExtractAtomValue, ExtractAtomArgs, ExtractAtomResult, SetStateAction, } from './vanilla/typeUtils.mjs';
@@ -0,0 +1,59 @@
1
+ import { INTERNAL_buildStoreRev2 } from 'jotai/vanilla/internals';
2
+
3
+ let keyCount = 0;
4
+ function atom(read, write) {
5
+ const key = `atom${++keyCount}`;
6
+ const config = {
7
+ toString() {
8
+ return (import.meta.env ? import.meta.env.MODE : void 0) !== "production" && this.debugLabel ? key + ":" + this.debugLabel : key;
9
+ }
10
+ };
11
+ if (typeof read === "function") {
12
+ config.read = read;
13
+ } else {
14
+ config.init = read;
15
+ config.read = defaultRead;
16
+ config.write = defaultWrite;
17
+ }
18
+ if (write) {
19
+ config.write = write;
20
+ }
21
+ return config;
22
+ }
23
+ function defaultRead(get) {
24
+ return get(this);
25
+ }
26
+ function defaultWrite(get, set, arg) {
27
+ return set(
28
+ this,
29
+ typeof arg === "function" ? arg(get(this)) : arg
30
+ );
31
+ }
32
+
33
+ let overriddenCreateStore;
34
+ function INTERNAL_overrideCreateStore(fn) {
35
+ overriddenCreateStore = fn(overriddenCreateStore);
36
+ }
37
+ function createStore() {
38
+ if (overriddenCreateStore) {
39
+ return overriddenCreateStore();
40
+ }
41
+ return INTERNAL_buildStoreRev2();
42
+ }
43
+ let defaultStore;
44
+ function getDefaultStore() {
45
+ if (!defaultStore) {
46
+ defaultStore = createStore();
47
+ if ((import.meta.env ? import.meta.env.MODE : void 0) !== "production") {
48
+ globalThis.__JOTAI_DEFAULT_STORE__ || (globalThis.__JOTAI_DEFAULT_STORE__ = defaultStore);
49
+ if (globalThis.__JOTAI_DEFAULT_STORE__ !== defaultStore) {
50
+ console.warn(
51
+ "Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"
52
+ );
53
+ }
54
+ }
55
+ }
56
+ return defaultStore;
57
+ }
58
+
59
+ export { INTERNAL_overrideCreateStore, atom, createStore, getDefaultStore };
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from 'jotai/vanilla';
2
+ export * from 'jotai/react';
package/index.js ADDED
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var vanilla = require('jotai/vanilla');
4
+ var react = require('jotai/react');
5
+
6
+
7
+
8
+ Object.keys(vanilla).forEach(function (k) {
9
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
10
+ enumerable: true,
11
+ get: function () { return vanilla[k]; }
12
+ });
13
+ });
14
+ Object.keys(react).forEach(function (k) {
15
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
16
+ enumerable: true,
17
+ get: function () { return react[k]; }
18
+ });
19
+ });
package/package.json ADDED
@@ -0,0 +1,125 @@
1
+ {
2
+ "name": "@depup/jotai",
3
+ "description": "[DepUp] 👻 Primitive and flexible state management for React",
4
+ "private": false,
5
+ "type": "commonjs",
6
+ "version": "2.18.0-depup.0",
7
+ "main": "./index.js",
8
+ "types": "./index.d.ts",
9
+ "typesVersions": {
10
+ ">=4.8": {
11
+ "esm/*": [
12
+ "esm/*"
13
+ ],
14
+ "*": [
15
+ "*"
16
+ ]
17
+ },
18
+ ">=3.8": {
19
+ "esm/*": [
20
+ "ts3.8/*"
21
+ ],
22
+ "*": [
23
+ "ts3.8/*"
24
+ ]
25
+ },
26
+ "*": {
27
+ "esm/*": [
28
+ "ts_version_3.8_and_above_is_required.d.ts"
29
+ ],
30
+ "*": [
31
+ "ts_version_3.8_and_above_is_required.d.ts"
32
+ ]
33
+ }
34
+ },
35
+ "exports": {
36
+ "./package.json": "./package.json",
37
+ ".": {
38
+ "react-native": {
39
+ "types": "./index.d.ts",
40
+ "default": "./index.js"
41
+ },
42
+ "import": {
43
+ "types": "./esm/index.d.mts",
44
+ "default": "./esm/index.mjs"
45
+ },
46
+ "default": {
47
+ "types": "./index.d.ts",
48
+ "default": "./index.js"
49
+ }
50
+ },
51
+ "./*": {
52
+ "react-native": {
53
+ "types": "./*.d.ts",
54
+ "default": "./*.js"
55
+ },
56
+ "import": {
57
+ "types": "./esm/*.d.mts",
58
+ "default": "./esm/*.mjs"
59
+ },
60
+ "default": {
61
+ "types": "./*.d.ts",
62
+ "default": "./*.js"
63
+ }
64
+ }
65
+ },
66
+ "files": [
67
+ "**"
68
+ ],
69
+ "sideEffects": false,
70
+ "engines": {
71
+ "node": ">=12.20.0"
72
+ },
73
+ "repository": {
74
+ "type": "git",
75
+ "url": "git+https://github.com/pmndrs/jotai.git"
76
+ },
77
+ "keywords": [
78
+ "depup",
79
+ "dependency-bumped",
80
+ "updated-deps",
81
+ "jotai",
82
+ "react",
83
+ "state",
84
+ "manager",
85
+ "management",
86
+ "recoil",
87
+ "store"
88
+ ],
89
+ "author": "Daishi Kato",
90
+ "contributors": [],
91
+ "license": "MIT",
92
+ "bugs": {
93
+ "url": "https://github.com/pmndrs/jotai/issues"
94
+ },
95
+ "homepage": "https://github.com/pmndrs/jotai",
96
+ "packageManager": "pnpm@10.18.3",
97
+ "peerDependencies": {
98
+ "@babel/core": ">=7.0.0",
99
+ "@babel/template": ">=7.0.0",
100
+ "@types/react": ">=17.0.0",
101
+ "react": ">=17.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "@babel/core": {
105
+ "optional": true
106
+ },
107
+ "@babel/template": {
108
+ "optional": true
109
+ },
110
+ "@types/react": {
111
+ "optional": true
112
+ },
113
+ "react": {
114
+ "optional": true
115
+ }
116
+ },
117
+ "depup": {
118
+ "changes": {},
119
+ "depsUpdated": 0,
120
+ "originalPackage": "jotai",
121
+ "originalVersion": "2.18.0",
122
+ "processedAt": "2026-03-09T03:53:57.128Z",
123
+ "smokeTest": "failed"
124
+ }
125
+ }
@@ -0,0 +1,16 @@
1
+ import type { FunctionComponent, ReactElement, ReactNode } from 'react';
2
+ import { createStore } from 'jotai/vanilla';
3
+ type Store = ReturnType<typeof createStore>;
4
+ type Options = {
5
+ store?: Store;
6
+ };
7
+ export declare function useStore(options?: Options): Store;
8
+ export declare function Provider({ children, store, }: {
9
+ children?: ReactNode;
10
+ store?: Store;
11
+ }): ReactElement<{
12
+ value: Store | undefined;
13
+ }, FunctionComponent<{
14
+ value: Store;
15
+ }>>;
16
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { Atom, ExtractAtomArgs, ExtractAtomResult, ExtractAtomValue, PrimitiveAtom, SetStateAction, WritableAtom } from 'jotai/vanilla';
2
+ import { useAtomValue } from './useAtomValue';
3
+ type SetAtom<Args extends unknown[], Result> = (...args: Args) => Result;
4
+ type Options = Parameters<typeof useAtomValue>[1];
5
+ export declare function useAtom<Value, Args extends unknown[], Result>(atom: WritableAtom<Value, Args, Result>, options?: Options): [Awaited<Value>, SetAtom<Args, Result>];
6
+ export declare function useAtom<Value>(atom: PrimitiveAtom<Value>, options?: Options): [Awaited<Value>, SetAtom<[SetStateAction<Value>], void>];
7
+ export declare function useAtom<Value>(atom: Atom<Value>, options?: Options): [Awaited<Value>, never];
8
+ export declare function useAtom<AtomType extends WritableAtom<unknown, never[], unknown>>(atom: AtomType, options?: Options): [
9
+ Awaited<ExtractAtomValue<AtomType>>,
10
+ SetAtom<ExtractAtomArgs<AtomType>, ExtractAtomResult<AtomType>>
11
+ ];
12
+ export declare function useAtom<AtomType extends Atom<unknown>>(atom: AtomType, options?: Options): [Awaited<ExtractAtomValue<AtomType>>, never];
13
+ export {};
@@ -0,0 +1,9 @@
1
+ import type { Atom, ExtractAtomValue } from 'jotai/vanilla';
2
+ import { useStore } from './Provider';
3
+ type Options = Parameters<typeof useStore>[0] & {
4
+ delay?: number;
5
+ unstable_promiseStatus?: boolean;
6
+ };
7
+ export declare function useAtomValue<Value>(atom: Atom<Value>, options?: Options): Awaited<Value>;
8
+ export declare function useAtomValue<AtomType extends Atom<unknown>>(atom: AtomType, options?: Options): Awaited<ExtractAtomValue<AtomType>>;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { ExtractAtomArgs, ExtractAtomResult, WritableAtom } from 'jotai/vanilla';
2
+ import { useStore } from './Provider';
3
+ type SetAtom<Args extends unknown[], Result> = (...args: Args) => Result;
4
+ type Options = Parameters<typeof useStore>[0];
5
+ export declare function useSetAtom<Value, Args extends unknown[], Result>(atom: WritableAtom<Value, Args, Result>, options?: Options): SetAtom<Args, Result>;
6
+ export declare function useSetAtom<AtomType extends WritableAtom<unknown, never[], unknown>>(atom: AtomType, options?: Options): SetAtom<ExtractAtomArgs<AtomType>, ExtractAtomResult<AtomType>>;
7
+ export {};
@@ -0,0 +1,5 @@
1
+ import { useSetAtom } from 'jotai/react';
2
+ import type { Getter, Setter } from 'jotai/vanilla';
3
+ type Options = Parameters<typeof useSetAtom>[1];
4
+ export declare function useAtomCallback<Result, Args extends unknown[]>(callback: (get: Getter, set: Setter, ...arg: Args) => Result, options?: Options): (...args: Args) => Result;
5
+ export {};
@@ -0,0 +1,14 @@
1
+ import { useStore } from 'jotai/react';
2
+ import { type WritableAtom } from 'jotai/vanilla';
3
+ type Options = Parameters<typeof useStore>[0] & {
4
+ dangerouslyForceHydrate?: boolean;
5
+ };
6
+ type AnyWritableAtom = WritableAtom<any, any[], any>;
7
+ type InferAtomTuples<T> = {
8
+ [K in keyof T]: T[K] extends readonly [infer A, ...infer Rest] ? A extends WritableAtom<unknown, infer Args, unknown> ? Rest extends Args ? readonly [A, ...Rest] : never : T[K] : never;
9
+ };
10
+ export type INTERNAL_InferAtomTuples<T> = InferAtomTuples<T>;
11
+ export declare function useHydrateAtoms<T extends (readonly [AnyWritableAtom, ...unknown[]])[]>(values: InferAtomTuples<T>, options?: Options): void;
12
+ export declare function useHydrateAtoms<T extends Map<AnyWritableAtom, unknown>>(values: T, options?: Options): void;
13
+ export declare function useHydrateAtoms<T extends Iterable<readonly [AnyWritableAtom, ...unknown[]]>>(values: InferAtomTuples<T>, options?: Options): void;
14
+ export {};
@@ -0,0 +1,14 @@
1
+ import { useAtom } from 'jotai/react';
2
+ import type { PrimitiveAtom } from 'jotai/vanilla';
3
+ type Options = Parameters<typeof useAtom>[1];
4
+ /**
5
+ * @deprecated please use a recipe instead
6
+ * https://github.com/pmndrs/jotai/pull/2467
7
+ */
8
+ export declare function useReducerAtom<Value, Action>(anAtom: PrimitiveAtom<Value>, reducer: (v: Value, a?: Action) => Value, options?: Options): [Value, (action?: Action) => void];
9
+ /**
10
+ * @deprecated please use a recipe instead
11
+ * https://github.com/pmndrs/jotai/pull/2467
12
+ */
13
+ export declare function useReducerAtom<Value, Action>(anAtom: PrimitiveAtom<Value>, reducer: (v: Value, a: Action) => Value, options?: Options): [Value, (action: Action) => void];
14
+ export {};
@@ -0,0 +1,6 @@
1
+ import { useSetAtom } from 'jotai/react';
2
+ import { RESET } from 'jotai/vanilla/utils';
3
+ import type { WritableAtom } from 'jotai/vanilla';
4
+ type Options = Parameters<typeof useSetAtom>[1];
5
+ export declare function useResetAtom<T>(anAtom: WritableAtom<unknown, [typeof RESET], T>, options?: Options): () => T;
6
+ export {};
@@ -0,0 +1,4 @@
1
+ export { useResetAtom } from './utils/useResetAtom';
2
+ export { useReducerAtom } from './utils/useReducerAtom';
3
+ export { useAtomCallback } from './utils/useAtomCallback';
4
+ export { useHydrateAtoms } from './utils/useHydrateAtoms';
package/react/utils.js ADDED
@@ -0,0 +1,100 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var react$1 = require('react');
5
+ var react = require('jotai/react');
6
+ var utils = require('jotai/vanilla/utils');
7
+ var vanilla = require('jotai/vanilla');
8
+
9
+ function useResetAtom(anAtom, options) {
10
+ var setAtom = react.useSetAtom(anAtom, options);
11
+ var resetAtom = react$1.useCallback(function () {
12
+ return setAtom(utils.RESET);
13
+ }, [setAtom]);
14
+ return resetAtom;
15
+ }
16
+
17
+ function useReducerAtom(anAtom, reducer, options) {
18
+ if (process.env.NODE_ENV !== 'production') {
19
+ console.warn('[DEPRECATED] useReducerAtom is deprecated and will be removed in the future. Please create your own version using the recipe. https://github.com/pmndrs/jotai/pull/2467');
20
+ }
21
+ var _useAtom = react.useAtom(anAtom, options),
22
+ state = _useAtom[0],
23
+ setState = _useAtom[1];
24
+ var dispatch = react$1.useCallback(function (action) {
25
+ setState(function (prev) {
26
+ return reducer(prev, action);
27
+ });
28
+ }, [setState, reducer]);
29
+ return [state, dispatch];
30
+ }
31
+
32
+ function useAtomCallback(callback, options) {
33
+ var anAtom = react$1.useMemo(function () {
34
+ return vanilla.atom(null, function (get, set) {
35
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
36
+ args[_key - 2] = arguments[_key];
37
+ }
38
+ return callback.apply(void 0, [get, set].concat(args));
39
+ });
40
+ }, [callback]);
41
+ return react.useSetAtom(anAtom, options);
42
+ }
43
+
44
+ function _arrayLikeToArray(r, a) {
45
+ (null == a || a > r.length) && (a = r.length);
46
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
47
+ return n;
48
+ }
49
+ function _createForOfIteratorHelperLoose(r, e) {
50
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
51
+ if (t) return (t = t.call(r)).next.bind(t);
52
+ if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) {
53
+ t && (r = t);
54
+ var o = 0;
55
+ return function () {
56
+ return o >= r.length ? {
57
+ done: true
58
+ } : {
59
+ done: false,
60
+ value: r[o++]
61
+ };
62
+ };
63
+ }
64
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
65
+ }
66
+ function _unsupportedIterableToArray(r, a) {
67
+ if (r) {
68
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
69
+ var t = {}.toString.call(r).slice(8, -1);
70
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
71
+ }
72
+ }
73
+
74
+ var hydratedMap = new WeakMap();
75
+ function useHydrateAtoms(values, options) {
76
+ var store = react.useStore(options);
77
+ var hydratedSet = getHydratedSet(store);
78
+ for (var _iterator = _createForOfIteratorHelperLoose(values), _step; !(_step = _iterator()).done;) {
79
+ var _step$value = _step.value,
80
+ atom = _step$value[0],
81
+ args = _arrayLikeToArray(_step$value).slice(1);
82
+ if (!hydratedSet.has(atom) || options != null && options.dangerouslyForceHydrate) {
83
+ hydratedSet.add(atom);
84
+ store.set.apply(store, [atom].concat(args));
85
+ }
86
+ }
87
+ }
88
+ var getHydratedSet = function getHydratedSet(store) {
89
+ var hydratedSet = hydratedMap.get(store);
90
+ if (!hydratedSet) {
91
+ hydratedSet = new WeakSet();
92
+ hydratedMap.set(store, hydratedSet);
93
+ }
94
+ return hydratedSet;
95
+ };
96
+
97
+ exports.useAtomCallback = useAtomCallback;
98
+ exports.useHydrateAtoms = useHydrateAtoms;
99
+ exports.useReducerAtom = useReducerAtom;
100
+ exports.useResetAtom = useResetAtom;
package/react.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { Provider, useStore } from './react/Provider';
2
+ export { useAtomValue } from './react/useAtomValue';
3
+ export { useSetAtom } from './react/useSetAtom';
4
+ export { useAtom } from './react/useAtom';
package/react.js ADDED
@@ -0,0 +1,182 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var vanilla = require('jotai/vanilla');
6
+ var internals = require('jotai/vanilla/internals');
7
+
8
+ var StoreContext = React.createContext(undefined);
9
+ function useStore(options) {
10
+ var store = React.useContext(StoreContext);
11
+ return (options == null ? void 0 : options.store) || store || vanilla.getDefaultStore();
12
+ }
13
+ function Provider(_ref) {
14
+ var children = _ref.children,
15
+ store = _ref.store;
16
+ var storeRef = React.useRef(null);
17
+ if (store) {
18
+ return React.createElement(StoreContext.Provider, {
19
+ value: store
20
+ }, children);
21
+ }
22
+ if (storeRef.current === null) {
23
+ storeRef.current = vanilla.createStore();
24
+ }
25
+ return React.createElement(StoreContext.Provider, {
26
+ value: storeRef.current
27
+ }, children);
28
+ }
29
+
30
+ var isPromiseLike = function isPromiseLike(x) {
31
+ return typeof (x == null ? void 0 : x.then) === 'function';
32
+ };
33
+ var attachPromiseStatus = function attachPromiseStatus(promise) {
34
+ if (!promise.status) {
35
+ promise.status = 'pending';
36
+ promise.then(function (v) {
37
+ promise.status = 'fulfilled';
38
+ promise.value = v;
39
+ }, function (e) {
40
+ promise.status = 'rejected';
41
+ promise.reason = e;
42
+ });
43
+ }
44
+ };
45
+ var use = React.use || function (promise) {
46
+ if (promise.status === 'pending') {
47
+ throw promise;
48
+ } else if (promise.status === 'fulfilled') {
49
+ return promise.value;
50
+ } else if (promise.status === 'rejected') {
51
+ throw promise.reason;
52
+ } else {
53
+ attachPromiseStatus(promise);
54
+ throw promise;
55
+ }
56
+ };
57
+ var continuablePromiseMap = new WeakMap();
58
+ var createContinuablePromise = function createContinuablePromise(store, promise, getValue) {
59
+ var buildingBlocks = internals.INTERNAL_getBuildingBlocksRev2(store);
60
+ var registerAbortHandler = buildingBlocks[26];
61
+ var continuablePromise = continuablePromiseMap.get(promise);
62
+ if (!continuablePromise) {
63
+ continuablePromise = new Promise(function (resolve, reject) {
64
+ var curr = promise;
65
+ var onFulfilled = function onFulfilled(me) {
66
+ return function (v) {
67
+ if (curr === me) {
68
+ resolve(v);
69
+ }
70
+ };
71
+ };
72
+ var onRejected = function onRejected(me) {
73
+ return function (e) {
74
+ if (curr === me) {
75
+ reject(e);
76
+ }
77
+ };
78
+ };
79
+ var _onAbort = function onAbort() {
80
+ try {
81
+ var nextValue = getValue();
82
+ if (isPromiseLike(nextValue)) {
83
+ continuablePromiseMap.set(nextValue, continuablePromise);
84
+ curr = nextValue;
85
+ nextValue.then(onFulfilled(nextValue), onRejected(nextValue));
86
+ registerAbortHandler(store, nextValue, _onAbort);
87
+ } else {
88
+ resolve(nextValue);
89
+ }
90
+ } catch (e) {
91
+ reject(e);
92
+ }
93
+ };
94
+ promise.then(onFulfilled(promise), onRejected(promise));
95
+ registerAbortHandler(store, promise, _onAbort);
96
+ });
97
+ continuablePromiseMap.set(promise, continuablePromise);
98
+ }
99
+ return continuablePromise;
100
+ };
101
+ function useAtomValue(atom, options) {
102
+ var _ref = options || {},
103
+ delay = _ref.delay,
104
+ _ref$unstable_promise = _ref.unstable_promiseStatus,
105
+ promiseStatus = _ref$unstable_promise === void 0 ? !React.use : _ref$unstable_promise;
106
+ var store = useStore(options);
107
+ var _useReducer = React.useReducer(function (prev) {
108
+ var nextValue = store.get(atom);
109
+ if (Object.is(prev[0], nextValue) && prev[1] === store && prev[2] === atom) {
110
+ return prev;
111
+ }
112
+ return [nextValue, store, atom];
113
+ }, undefined, function () {
114
+ return [store.get(atom), store, atom];
115
+ }),
116
+ _useReducer$ = _useReducer[0],
117
+ valueFromReducer = _useReducer$[0],
118
+ storeFromReducer = _useReducer$[1],
119
+ atomFromReducer = _useReducer$[2],
120
+ rerender = _useReducer[1];
121
+ var value = valueFromReducer;
122
+ if (storeFromReducer !== store || atomFromReducer !== atom) {
123
+ rerender();
124
+ value = store.get(atom);
125
+ }
126
+ React.useEffect(function () {
127
+ var unsub = store.sub(atom, function () {
128
+ if (promiseStatus) {
129
+ try {
130
+ var _value = store.get(atom);
131
+ if (isPromiseLike(_value)) {
132
+ attachPromiseStatus(createContinuablePromise(store, _value, function () {
133
+ return store.get(atom);
134
+ }));
135
+ }
136
+ } catch (_unused) {}
137
+ }
138
+ if (typeof delay === 'number') {
139
+ setTimeout(rerender, delay);
140
+ return;
141
+ }
142
+ rerender();
143
+ });
144
+ rerender();
145
+ return unsub;
146
+ }, [store, atom, delay, promiseStatus]);
147
+ React.useDebugValue(value);
148
+ if (isPromiseLike(value)) {
149
+ var promise = createContinuablePromise(store, value, function () {
150
+ return store.get(atom);
151
+ });
152
+ if (promiseStatus) {
153
+ attachPromiseStatus(promise);
154
+ }
155
+ return use(promise);
156
+ }
157
+ return value;
158
+ }
159
+
160
+ function useSetAtom(atom, options) {
161
+ var store = useStore(options);
162
+ var setAtom = React.useCallback(function () {
163
+ if (process.env.NODE_ENV !== 'production' && !('write' in atom)) {
164
+ throw new Error('not writable atom');
165
+ }
166
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
167
+ args[_key] = arguments[_key];
168
+ }
169
+ return store.set.apply(store, [atom].concat(args));
170
+ }, [store, atom]);
171
+ return setAtom;
172
+ }
173
+
174
+ function useAtom(atom, options) {
175
+ return [useAtomValue(atom, options), useSetAtom(atom, options)];
176
+ }
177
+
178
+ exports.Provider = Provider;
179
+ exports.useAtom = useAtom;
180
+ exports.useAtomValue = useAtomValue;
181
+ exports.useSetAtom = useSetAtom;
182
+ exports.useStore = useStore;