ccstate 4.0.0 → 4.1.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.
package/README.md CHANGED
@@ -9,17 +9,16 @@
9
9
  [![CI](https://github.com/e7h4n/ccstate/actions/workflows/ci.yaml/badge.svg)](https://github.com/e7h4n/ccstate/actions/workflows/ci.yaml)
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
11
11
 
12
- CCState is a semantic, strict, and flexible state management library suitable for medium to large single-page applications with complex state management needs.
12
+ CCState is a modern signals-based state management library that elegantly implements async computed and read-write capability isolation based on signal features, making it suitable for medium to large web applications.
13
13
 
14
- The name of CCState comes from three basic data types: computed, command, and state.
14
+ The name of CCState comes from three basic types: `Computed`, `Command`, and `State`.
15
15
 
16
16
  ## Quick Features
17
17
 
18
- - 💯 Simple & Intuitive: Crystal-clear API design with just 3 data types and 2 operations
18
+ - 💯 Simple & Intuitive: Crystal-clear API design with just three types and two operations
19
19
  - ✅ Rock-solid Reliability: Comprehensive test coverage reaching 100% branch coverage
20
- - 🪶 Ultra-lightweight: Zero dependencies, only 500 lines of core code
20
+ - ✈️ Intuitive async computation: using async/await or try/catch to process async flow as regular JavaScript without any additional concept
21
21
  - 💡 Framework Agnostic: Seamlessly works with [React](docs/react.md), [Vue](docs/vue.md), [Solid.js](docs/solid.md), [Vanilla](docs/vanilla.md), or any UI framework
22
- - 🚀 Blazing Fast: Optimized performance from day one, 2x-7x faster than Jotai across scenarios
23
22
 
24
23
  ## Getting Started
25
24
 
@@ -36,16 +35,18 @@ pnpm add ccstate
36
35
  yarn add ccstate
37
36
  ```
38
37
 
39
- ### Create Data
38
+ ### Create Signals
40
39
 
41
40
  Use `state` to store a simple value unit, and use `computed` to create a derived computation logic:
42
41
 
43
42
  ```ts
44
- // data.js
43
+ // signals.js
45
44
  import { state, computed } from 'ccstate';
46
45
 
46
+ // a simple value unit which supports read/write
47
47
  export const userId$ = state('');
48
48
 
49
+ // intuitive async computation logic
49
50
  export const user$ = computed(async (get) => {
50
51
  const userId = get(userId$);
51
52
  if (!userId) return null;
@@ -55,14 +56,14 @@ export const user$ = computed(async (get) => {
55
56
  });
56
57
  ```
57
58
 
58
- ### Use data in React
59
+ ### Use signals in React
59
60
 
60
- Use `useGet` and `useSet` hooks in React to get/set data, and use `useResolved` to get Promise value.
61
+ Use `useGet` and `useSet` hooks in React to get/set signals, and use `useResolved` to get Promise value.
61
62
 
62
63
  ```jsx
63
- // App.js
64
+ // App.jsx
64
65
  import { useGet, useSet, useResolved } from 'ccstate-react';
65
- import { userId$, user$ } from './data';
66
+ import { userId$, user$ } from './signals';
66
67
 
67
68
  export default function App() {
68
69
  const userId = useGet(userId$);
@@ -84,15 +85,6 @@ export default function App() {
84
85
  </div>
85
86
  );
86
87
  }
87
-
88
- // main.jsx
89
- import { createRoot } from 'react-dom/client';
90
- import App from './App';
91
-
92
- const rootElement = document.getElementById('root');
93
- const root = createRoot(rootElement);
94
-
95
- root.render(<App />);
96
88
  ```
97
89
 
98
90
  That's it! [Click here to see the full example](https://codesandbox.io/p/sandbox/cr3xg6).
@@ -121,13 +113,14 @@ const user$ = state<({
121
113
  name: 'e7h4n',
122
114
  avatar: 'https://avatars.githubusercontent.com/u/813596',
123
115
  } | undefined>(undefined);
116
+
124
117
  store.set({
125
118
  name: 'yc-kanyun',
126
119
  avatar: 'https://avatars.githubusercontent.com/u/168416598'
127
120
  });
128
121
  ```
129
122
 
130
- These examples should be very easy to understand. You might notice a detail in the examples: all variables returned by `state` have a `$` suffix. This is a naming convention used to distinguish an CCState data type from other regular types. CCState data types must be accessed through the store's get/set methods, and since it's common to convert an CCState data type to a regular type using get, the `$` suffix helps avoid naming conflicts.
123
+ These examples should be very easy to understand. You might notice a detail in the examples: all variables returned by `state` have a `$` suffix. This is a naming convention used to distinguish an CCState signal type from other regular types. CCState signal types must be accessed through the store's get/set methods, and since it's common to convert an CCState signal type to a regular type using get, the `$` suffix helps avoid naming conflicts.
131
124
 
132
125
  ### Store
133
126
 
@@ -143,7 +136,7 @@ const otherStore = createStore(); // another new Map()
143
136
  otherStore.get(count$); // anotherMap[$count] ?? $count.init, returns 0
144
137
  ```
145
138
 
146
- This should be easy to understand. If `Store` only needed to support `State` types, a simple Map would be sufficient. However, CCState needs to support two additional data types. Next, let's introduce `Computed`, CCState's reactive computation unit.
139
+ This should be easy to understand. If `Store` only needed to support `State` types, a simple Map would be sufficient. However, CCState needs to support two additional signal types. Next, let's introduce `Computed`, CCState's reactive computation unit.
147
140
 
148
141
  ### Computed
149
142
 
@@ -168,13 +161,13 @@ Does this example seem less intuitive than `State`? Here's a mental model that m
168
161
  - `computed(fn)` returns an object `{read: fn}`, which is assigned to `user$`
169
162
  - When `store.get(user$)` encounters an object which has a read function, it calls that function: `user$.read(store.get)`
170
163
 
171
- This way, `Computed` receives a get accessor that can access other data in the store. This get accessor is similar to `store.get` and can be used to read both `State` and `Computed`. The reason CCState specifically passes a get method to `Computed`, rather than allowing direct access to the store within `Computed`, is to shield the logic within `Computed` from other store methods like `store.set`. The key characteristic of `Computed` is that it can only read states from the store but cannot modify them. In other words, `Computed` is side-effect free.
164
+ This way, `Computed` receives a get accessor that can access other signal in the store. This get accessor is similar to `store.get` and can be used to read both `State` and `Computed`. The reason CCState specifically passes a get method to `Computed`, rather than allowing direct access to the store within `Computed`, is to shield the logic within `Computed` from other store methods like `store.set`. The key characteristic of `Computed` is that it can only read states from the store but cannot modify them. In other words, `Computed` is side-effect free.
172
165
 
173
166
  In most cases, side-effect free computation logic is extremely useful. They can be executed any number of times and have few requirements regarding execution timing. `Computed` is one of the most powerful features in CCState, and you should try to write your logic as `Computed` whenever possible, unless you need to perform set operations on the `Store`.
174
167
 
175
168
  ### Command
176
169
 
177
- `Command` is CCState's logic unit for organizing side effects. It has both `set` and `get` accessors from the store, allowing it to not only read other data types but also modify `State` or call other `Command`.
170
+ `Command` is CCState's logic unit for organizing side effects. It has both `set` and `get` accessors from the store, allowing it to not only read other signal types but also modify `State` or call other `Command`.
178
171
 
179
172
  ```typescript
180
173
  import { command, createStore } from 'ccstate';
@@ -332,9 +325,9 @@ While Jotai is a great state management solution that has benefited the Motiff p
332
325
  - Should reduce reactive capabilities, especially the `onMount` capability - the framework shouldn't provide this ability
333
326
  - Some implicit magic operations, especially Promise wrapping, make the application execution process less transparent
334
327
 
335
- To address these issues, I got an idea: "What concepts in Jotai are essential? And which concepts create mental overhead for developers?". Rather than just discussing it theoretically, I decided to try implementing it myself. So I created CCState to express my thoughts on state management. Before detailing the differences from Jotai, we need to understand CCState's data types and subscription system.
328
+ To address these issues, I got an idea: "What concepts in Jotai are essential? And which concepts create mental overhead for developers?". Rather than just discussing it theoretically, I decided to try implementing it myself. So I created CCState to express my thoughts on state management. Before detailing the differences from Jotai, we need to understand CCState's signal types and subscription system.
336
329
 
337
- ### More semantic data types
330
+ ### More semantic atom types
338
331
 
339
332
  Like Jotai, CCState is also an Atom State solution. However, unlike Jotai, CCState doesn't expose Raw Atom, instead dividing Atoms into three types:
340
333
 
@@ -355,7 +348,7 @@ export const userIdChange$ = command(({ get, set }) => {
355
348
  });
356
349
 
357
350
  // ...
358
- import { userId$, userIdChange$ } from './data';
351
+ import { userId$, userIdChange$ } from './signals';
359
352
 
360
353
  function setupPage() {
361
354
  const store = createStore();
@@ -436,7 +429,7 @@ export function App() {
436
429
  When designing CCState, we wanted the trigger points for value changes to be completely detached from React's Mount/Unmount lifecycle and completely decoupled from React's rendering behavior.
437
430
 
438
431
  ```jsx
439
- // data.js
432
+ // signals.js
440
433
  export const userId$ = state(0)
441
434
  export const init$ = command(({set}) => {
442
435
  const userId = // ... parse userId from location search
package/core/index.cjs CHANGED
@@ -537,7 +537,7 @@ var AtomManager = /*#__PURE__*/function () {
537
537
  }
538
538
  var computedInterceptor = (_this$options = this.options) === null || _this$options === void 0 || (_this$options = _this$options.interceptor) === null || _this$options === void 0 ? void 0 : _this$options.computed;
539
539
  if (!computedInterceptor) {
540
- return this.computeComputedAtom(atom);
540
+ return this.computeComputedAtom(atom, ignoreMounted);
541
541
  }
542
542
  var result = {
543
543
  called: false
@@ -545,7 +545,7 @@ var AtomManager = /*#__PURE__*/function () {
545
545
  computedInterceptor(atom, function () {
546
546
  result = {
547
547
  called: true,
548
- data: _this2.computeComputedAtom(atom)
548
+ data: _this2.computeComputedAtom(atom, ignoreMounted)
549
549
  };
550
550
  return result.data.val;
551
551
  });
@@ -559,6 +559,7 @@ var AtomManager = /*#__PURE__*/function () {
559
559
  value: function computeComputedAtom(atom) {
560
560
  var _this3 = this,
561
561
  _this$options2;
562
+ var ignoreMounted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
562
563
  var self = atom;
563
564
  var atomState = this.atomStateMap.get(self);
564
565
  if (!atomState) {
@@ -572,7 +573,7 @@ var AtomManager = /*#__PURE__*/function () {
572
573
  var readDeps = new Map();
573
574
  atomState.dependencies = readDeps;
574
575
  var wrappedGet = function wrappedGet(depAtom) {
575
- var depState = _this3.readAtomState(depAtom);
576
+ var depState = _this3.readAtomState(depAtom, ignoreMounted);
576
577
 
577
578
  // get 可能发生在异步过程中,当重复调用时,只有最新的 get 过程会修改 deps
578
579
  if (atomState.dependencies === readDeps) {
@@ -1028,3 +1029,4 @@ exports.computed = computed;
1028
1029
  exports.createStore = createStore;
1029
1030
  exports.getDefaultStore = getDefaultStore;
1030
1031
  exports.state = state;
1032
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/core/atom.ts","../../src/core/atom-manager.ts","../../src/core/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../types/core/atom';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (prefix: string, debugLabel?: string) => {\n const id = globalId++;\n const label = `${prefix}${String(id)}${debugLabel ? ':' + debugLabel : ''}`;\n return () => label;\n};\n\nexport function state<T>(init: T, options?: Options): State<T> {\n const ret: State<T> = {\n init,\n toString: generateToString('V', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function computed<T>(read: Read<T>, options?: Options): Computed<T> {\n const ret: Computed<T> = {\n read,\n toString: generateToString('C', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function command<T, Args extends unknown[]>(write: Write<T, Args>, options?: Options): Command<T, Args> {\n const ret: Command<T, Args> = {\n write,\n toString: generateToString('F', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { ReadableAtom, Command, Getter, Computed, State } from '../../types/core/atom';\nimport type { StoreOptions } from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport interface StateState<T> {\n mounted?: Mounted;\n val: T;\n epoch: number;\n}\n\nexport interface ComputedState<T> {\n mounted?: Mounted;\n val: T;\n dependencies: Map<ReadableAtom<unknown>, number>;\n epoch: number;\n abortController?: AbortController;\n}\n\ntype CommonReadableState<T> = StateState<T> | ComputedState<T>;\n\ntype AtomState<T> = StateState<T> | ComputedState<T>;\n\ninterface Mounted {\n listeners: Set<Command<unknown, []>>;\n readDepts: Set<ReadableAtom<unknown>>;\n}\n\nfunction canReadAsCompute<T>(atom: ReadableAtom<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nfunction isComputedState<T>(state: CommonReadableState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n\nexport class AtomManager {\n private atomStateMap = new WeakMap<ReadableAtom<unknown>, AtomState<unknown>>();\n\n constructor(private readonly options?: StoreOptions) {}\n\n private tryGetCachedState = <T>(atom: Computed<T>, ignoreMounted: boolean): ComputedState<T> | undefined => {\n const atomState = this.atomStateMap.get(atom) as ComputedState<T> | undefined;\n if (!atomState) {\n return undefined;\n }\n\n if (atomState.mounted && !ignoreMounted) {\n return atomState;\n }\n\n for (const [dep, epoch] of atomState.dependencies.entries()) {\n const depState = this.readAtomState(dep);\n if (depState.epoch !== epoch) {\n return undefined;\n }\n }\n\n return atomState;\n };\n\n private readComputedAtom<T>(atom: Computed<T>, ignoreMounted = false): ComputedState<T> {\n const cachedState = this.tryGetCachedState(atom, ignoreMounted);\n if (cachedState) {\n return cachedState;\n }\n\n const computedInterceptor = this.options?.interceptor?.computed;\n if (!computedInterceptor) {\n return this.computeComputedAtom(atom, ignoreMounted);\n }\n\n let result: DataWithCalledState<ComputedState<T>> = {\n called: false,\n } as DataWithCalledState<ComputedState<T>>;\n\n computedInterceptor(atom, () => {\n result = {\n called: true,\n data: this.computeComputedAtom(atom, ignoreMounted),\n };\n\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n }\n\n private computeComputedAtom<T>(atom: Computed<T>, ignoreMounted = false): ComputedState<T> {\n const self: Computed<T> = atom;\n let atomState: ComputedState<T> | undefined = this.atomStateMap.get(self) as ComputedState<T> | undefined;\n if (!atomState) {\n atomState = {\n dependencies: new Map<ReadableAtom<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n this.atomStateMap.set(self, atomState);\n }\n\n const lastDeps = atomState.dependencies;\n const readDeps = new Map<ReadableAtom<unknown>, number>();\n atomState.dependencies = readDeps;\n const wrappedGet: Getter = (depAtom) => {\n const depState = this.readAtomState(depAtom, ignoreMounted);\n\n // get 可能发生在异步过程中,当重复调用时,只有最新的 get 过程会修改 deps\n if (atomState.dependencies === readDeps) {\n readDeps.set(depAtom, depState.epoch);\n\n const selfMounted = !!atomState.mounted;\n if (selfMounted && !depState.mounted) {\n this.mount(depAtom).readDepts.add(self);\n } else if (selfMounted && depState.mounted) {\n depState.mounted.readDepts.add(self);\n }\n }\n\n return depState.val;\n };\n\n const getInterceptor = this.options?.interceptor?.get;\n const ret = self.read(\n function <U>(depAtom: ReadableAtom<U>) {\n if (!getInterceptor) {\n return wrappedGet(depAtom);\n }\n\n let result: DataWithCalledState<U> = {\n called: false,\n } as DataWithCalledState<U>;\n\n const fn = () => {\n result = {\n called: true,\n data: wrappedGet(depAtom),\n };\n\n return result.data;\n };\n\n getInterceptor(depAtom, fn);\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n return result.data;\n },\n {\n get signal() {\n atomState.abortController?.abort(`abort ${self.debugLabel ?? 'anonymous'} atom`);\n atomState.abortController = new AbortController();\n return atomState.abortController.signal;\n },\n },\n );\n\n if (atomState.val !== ret) {\n atomState.val = ret;\n atomState.epoch += 1;\n }\n\n for (const key of lastDeps.keys()) {\n if (!readDeps.has(key)) {\n const depState = this.atomStateMap.get(key);\n if (depState?.mounted) {\n depState.mounted.readDepts.delete(self);\n this.tryUnmount(key);\n }\n }\n }\n\n return atomState;\n }\n\n private readStateAtom<T>(atom: State<T>): StateState<T> {\n const atomState = this.atomStateMap.get(atom);\n if (!atomState) {\n const initState = {\n val: atom.init,\n epoch: 0,\n };\n this.atomStateMap.set(atom, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n }\n\n public readAtomState<T>(atom: State<T>, ignoreMounted?: boolean): StateState<T>;\n public readAtomState<T>(atom: Computed<T>, ignoreMounted?: boolean): ComputedState<T>;\n public readAtomState<T>(atom: State<T> | Computed<T>, ignoreMounted?: boolean): CommonReadableState<T>;\n public readAtomState<T>(\n atom: State<T> | Computed<T>,\n ignoreMounted = false,\n ): StateState<T> | ComputedState<T> | CommonReadableState<T> {\n if (canReadAsCompute(atom)) {\n return this.readComputedAtom(atom, ignoreMounted);\n }\n\n return this.readStateAtom(atom);\n }\n\n private tryGetMount(atom: ReadableAtom<unknown>): Mounted | undefined {\n return this.atomStateMap.get(atom)?.mounted;\n }\n\n public mount<T>(atom: ReadableAtom<T>): Mounted {\n const mounted = this.tryGetMount(atom);\n if (mounted) {\n return mounted;\n }\n\n this.options?.interceptor?.mount?.(atom);\n\n const atomState = this.readAtomState(atom);\n\n atomState.mounted = atomState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(atomState)) {\n for (const [dep] of Array.from(atomState.dependencies)) {\n const mounted = this.mount(dep);\n mounted.readDepts.add(atom);\n }\n }\n\n return atomState.mounted;\n }\n\n public tryUnmount<T>(atom: ReadableAtom<T>): void {\n const atomState = this.atomStateMap.get(atom);\n if (!atomState?.mounted || atomState.mounted.listeners.size || atomState.mounted.readDepts.size) {\n return;\n }\n\n this.options?.interceptor?.unmount?.(atom);\n\n if (isComputedState(atomState)) {\n for (const [dep] of Array.from(atomState.dependencies)) {\n const depState = this.readAtomState(dep);\n depState.mounted?.readDepts.delete(atom);\n this.tryUnmount(dep);\n }\n }\n\n atomState.mounted = undefined;\n }\n\n public inited(atom: ReadableAtom<unknown>) {\n return this.atomStateMap.has(atom);\n }\n}\n\nexport class ListenerManager {\n private pendingListeners = new Set<Command<unknown, []>>();\n\n markPendingListeners(atomManager: AtomManager, atom: ReadableAtom<unknown>) {\n let queue: ReadableAtom<unknown>[] = [atom];\n while (queue.length > 0) {\n const nextQueue: ReadableAtom<unknown>[] = [];\n for (const atom of queue) {\n const atomState = atomManager.readAtomState(atom, true);\n\n if (atomState.mounted?.listeners) {\n for (const listener of atomState.mounted.listeners) {\n this.pendingListeners.add(listener);\n }\n }\n\n const readDepts = atomState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n }\n\n *notify(): Generator<Command<unknown, []>, void, unknown> {\n const pendingListeners = this.pendingListeners;\n this.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n yield listener;\n }\n }\n}\n","import type { ReadableAtom, Command, Getter, State, Updater, Setter } from '../../types/core/atom';\nimport type { Store, StoreOptions, SubscribeOptions } from '../../types/core/store';\nimport { AtomManager, ListenerManager } from './atom-manager';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport class StoreImpl implements Store {\n constructor(\n protected readonly atomManager: AtomManager,\n protected readonly listenerManager: ListenerManager,\n protected readonly options?: StoreOptions,\n ) {}\n\n private innerSet = <T, Args extends unknown[]>(\n atom: State<T> | Command<T, Args>,\n ...args: [T | Updater<T>] | Args\n ): undefined | T => {\n if ('read' in atom) {\n return;\n }\n\n if ('write' in atom) {\n const ret = atom.write({ get: this.get, set: this.set }, ...(args as Args));\n return ret;\n }\n\n const newValue =\n typeof args[0] === 'function'\n ? (args[0] as Updater<T>)(this.atomManager.readAtomState(atom).val)\n : (args[0] as T);\n\n if (!this.atomManager.inited(atom)) {\n this.atomManager.readAtomState(atom).val = newValue;\n this.listenerManager.markPendingListeners(this.atomManager, atom);\n return;\n }\n const atomState = this.atomManager.readAtomState(atom);\n atomState.val = newValue;\n atomState.epoch += 1;\n this.listenerManager.markPendingListeners(this.atomManager, atom);\n return undefined;\n };\n\n get: Getter = <T>(atom: ReadableAtom<T>): T => {\n if (!this.options?.interceptor?.get) {\n return this.atomManager.readAtomState(atom).val;\n }\n let result: DataWithCalledState<T> = {\n called: false,\n } as DataWithCalledState<T>;\n\n const fnWithRet = () => {\n result = {\n called: true,\n data: this.atomManager.readAtomState(atom).val,\n };\n return result.data;\n };\n\n this.options.interceptor.get(atom, fnWithRet);\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n };\n\n private notify = () => {\n for (const listener of this.listenerManager.notify()) {\n let notifyed = false;\n const fn = () => {\n notifyed = true;\n return listener.write({ get: this.get, set: this.set });\n };\n if (this.options?.interceptor?.notify) {\n this.options.interceptor.notify(listener, fn);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- notify must call fn sync\n if (!notifyed) {\n throw new Error('interceptor must call fn sync');\n }\n } else {\n fn();\n }\n }\n };\n\n set: Setter = <T, Args extends unknown[]>(\n atom: State<T> | Command<T, Args>,\n ...args: [T | Updater<T>] | Args\n ): undefined | T => {\n let ret: T | undefined;\n const fn = () => {\n try {\n ret = this.innerSet(atom, ...args) as T | undefined;\n } finally {\n this.notify();\n }\n return ret;\n };\n\n if (this.options?.interceptor?.set) {\n if ('write' in atom) {\n this.options.interceptor.set(atom, fn, ...(args as Args));\n } else {\n this.options.interceptor.set(atom, fn, args[0] as T | Updater<T>);\n }\n } else {\n fn();\n }\n\n return ret;\n };\n\n private _subSingleAtom(\n target$: ReadableAtom<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n let unsub: (() => void) | undefined;\n const fn = () => {\n let subscribed = true;\n const mounted = this.atomManager.mount(target$);\n mounted.listeners.add(cb$);\n\n unsub = () => {\n if (!subscribed) {\n return;\n }\n\n const fn = () => {\n subscribed = false;\n mounted.listeners.delete(cb$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n this.atomManager.tryUnmount(target$);\n }\n\n options?.signal?.addEventListener('abort', fn);\n };\n\n if (this.options?.interceptor?.unsub) {\n this.options.interceptor.unsub(target$, cb$, fn);\n\n // subscribed should be false if interceptor called fn sync\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (subscribed) {\n throw new Error('interceptor must call fn sync');\n }\n } else {\n fn();\n }\n };\n\n options?.signal?.addEventListener('abort', unsub);\n };\n\n if (this.options?.interceptor?.sub) {\n this.options.interceptor.sub(target$, cb$, fn);\n } else {\n fn();\n }\n\n if (!unsub) {\n throw new Error('interceptor must call fn sync');\n }\n\n return unsub;\n }\n\n sub(\n targets$: ReadableAtom<unknown>[] | ReadableAtom<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n if (Array.isArray(targets$) && targets$.length === 0) {\n return () => void 0;\n }\n\n if (Array.isArray(targets$) && targets$.length === 1) {\n return this._subSingleAtom(targets$[0], cb$, options);\n } else if (!Array.isArray(targets$)) {\n return this._subSingleAtom(targets$, cb$, options);\n }\n\n const unsubscribes = new Set<() => void>();\n targets$.forEach((atom) => {\n unsubscribes.add(this._subSingleAtom(atom, cb$, options));\n });\n\n const unsub = () => {\n for (const unsubscribe of unsubscribes) {\n unsubscribe();\n }\n };\n\n return unsub;\n }\n}\n\nexport function createStore(): Store {\n const atomManager = new AtomManager();\n const listenerManager = new ListenerManager();\n\n return new StoreImpl(atomManager, listenerManager);\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n"],"names":["globalId","generateToString","prefix","debugLabel","id","label","concat","String","state","init","options","ret","toString","computed","read","command","write","canReadAsCompute","atom","isComputedState","AtomManager","_this","_classCallCheck","_defineProperty","WeakMap","ignoreMounted","atomState","atomStateMap","get","undefined","mounted","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","value","dep","epoch","depState","readAtomState","err","e","f","_createClass","key","readComputedAtom","_this$options","_this2","arguments","length","cachedState","tryGetCachedState","computedInterceptor","interceptor","computeComputedAtom","result","called","data","val","Error","_this3","_this$options2","self","Map","set","lastDeps","readDeps","wrappedGet","depAtom","selfMounted","mount","readDepts","add","getInterceptor","fn","signal","_atomState$abortContr","_self$debugLabel","abortController","abort","AbortController","_iterator2","keys","_step2","has","tryUnmount","readStateAtom","initState","tryGetMount","_this$atomStateMap$ge","_this$options3","_this$options3$mount","_atomState$mounted","call","listeners","Set","_i","_Array$from","Array","from","_Array$from$_i","_this$options4","_this$options4$unmoun","size","unmount","_i2","_Array$from2","_depState$mounted","_Array$from2$_i","inited","ListenerManager","markPendingListeners","atomManager","queue","nextQueue","_iterator3","_step3","_atomState$mounted2","_atomState$mounted3","_iterator4","_step4","listener","pendingListeners","_i3","_Array$from3","push","_regeneratorRuntime","mark","notify","_iterator5","_step5","wrap","notify$","_context","prev","next","t0","finish","stop","StoreImpl","listenerManager","_len","args","_key","apply","_toConsumableArray","newValue","fnWithRet","_loop","notifyed","_len2","_key2","innerSet","_this$options$interce","_subSingleAtom","target$","cb$","unsub","_options$signal2","subscribed","_this2$options","_options$signal","addEventListener","sub","targets$","isArray","unsubscribes","forEach","unsubscribe","createStore","defaultStore","getDefaultStore"],"mappings":"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"}
package/core/index.d.cts CHANGED
@@ -51,3 +51,4 @@ declare function createStore(): Store;
51
51
  declare function getDefaultStore(): Store;
52
52
 
53
53
  export { type Command, type Computed, type Getter, type Read, type Setter, type State, type Store, type Subscribe, type Updater, type Write, command, computed, createStore, getDefaultStore, state };
54
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/core/index.d.ts CHANGED
@@ -51,3 +51,4 @@ declare function createStore(): Store;
51
51
  declare function getDefaultStore(): Store;
52
52
 
53
53
  export { type Command, type Computed, type Getter, type Read, type Setter, type State, type Store, type Subscribe, type Updater, type Write, command, computed, createStore, getDefaultStore, state };
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/core/index.js CHANGED
@@ -535,7 +535,7 @@ var AtomManager = /*#__PURE__*/function () {
535
535
  }
536
536
  var computedInterceptor = (_this$options = this.options) === null || _this$options === void 0 || (_this$options = _this$options.interceptor) === null || _this$options === void 0 ? void 0 : _this$options.computed;
537
537
  if (!computedInterceptor) {
538
- return this.computeComputedAtom(atom);
538
+ return this.computeComputedAtom(atom, ignoreMounted);
539
539
  }
540
540
  var result = {
541
541
  called: false
@@ -543,7 +543,7 @@ var AtomManager = /*#__PURE__*/function () {
543
543
  computedInterceptor(atom, function () {
544
544
  result = {
545
545
  called: true,
546
- data: _this2.computeComputedAtom(atom)
546
+ data: _this2.computeComputedAtom(atom, ignoreMounted)
547
547
  };
548
548
  return result.data.val;
549
549
  });
@@ -557,6 +557,7 @@ var AtomManager = /*#__PURE__*/function () {
557
557
  value: function computeComputedAtom(atom) {
558
558
  var _this3 = this,
559
559
  _this$options2;
560
+ var ignoreMounted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
560
561
  var self = atom;
561
562
  var atomState = this.atomStateMap.get(self);
562
563
  if (!atomState) {
@@ -570,7 +571,7 @@ var AtomManager = /*#__PURE__*/function () {
570
571
  var readDeps = new Map();
571
572
  atomState.dependencies = readDeps;
572
573
  var wrappedGet = function wrappedGet(depAtom) {
573
- var depState = _this3.readAtomState(depAtom);
574
+ var depState = _this3.readAtomState(depAtom, ignoreMounted);
574
575
 
575
576
  // get 可能发生在异步过程中,当重复调用时,只有最新的 get 过程会修改 deps
576
577
  if (atomState.dependencies === readDeps) {
@@ -1022,3 +1023,4 @@ function getDefaultStore() {
1022
1023
  }
1023
1024
 
1024
1025
  export { command, computed, createStore, getDefaultStore, state };
1026
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/core/atom.ts","../../src/core/atom-manager.ts","../../src/core/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../types/core/atom';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (prefix: string, debugLabel?: string) => {\n const id = globalId++;\n const label = `${prefix}${String(id)}${debugLabel ? ':' + debugLabel : ''}`;\n return () => label;\n};\n\nexport function state<T>(init: T, options?: Options): State<T> {\n const ret: State<T> = {\n init,\n toString: generateToString('V', options?.debugLabel),\n };\n\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function computed<T>(read: Read<T>, options?: Options): Computed<T> {\n const ret: Computed<T> = {\n read,\n toString: generateToString('C', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n\nexport function command<T, Args extends unknown[]>(write: Write<T, Args>, options?: Options): Command<T, Args> {\n const ret: Command<T, Args> = {\n write,\n toString: generateToString('F', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { ReadableAtom, Command, Getter, Computed, State } from '../../types/core/atom';\nimport type { StoreOptions } from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport interface StateState<T> {\n mounted?: Mounted;\n val: T;\n epoch: number;\n}\n\nexport interface ComputedState<T> {\n mounted?: Mounted;\n val: T;\n dependencies: Map<ReadableAtom<unknown>, number>;\n epoch: number;\n abortController?: AbortController;\n}\n\ntype CommonReadableState<T> = StateState<T> | ComputedState<T>;\n\ntype AtomState<T> = StateState<T> | ComputedState<T>;\n\ninterface Mounted {\n listeners: Set<Command<unknown, []>>;\n readDepts: Set<ReadableAtom<unknown>>;\n}\n\nfunction canReadAsCompute<T>(atom: ReadableAtom<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nfunction isComputedState<T>(state: CommonReadableState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n\nexport class AtomManager {\n private atomStateMap = new WeakMap<ReadableAtom<unknown>, AtomState<unknown>>();\n\n constructor(private readonly options?: StoreOptions) {}\n\n private tryGetCachedState = <T>(atom: Computed<T>, ignoreMounted: boolean): ComputedState<T> | undefined => {\n const atomState = this.atomStateMap.get(atom) as ComputedState<T> | undefined;\n if (!atomState) {\n return undefined;\n }\n\n if (atomState.mounted && !ignoreMounted) {\n return atomState;\n }\n\n for (const [dep, epoch] of atomState.dependencies.entries()) {\n const depState = this.readAtomState(dep);\n if (depState.epoch !== epoch) {\n return undefined;\n }\n }\n\n return atomState;\n };\n\n private readComputedAtom<T>(atom: Computed<T>, ignoreMounted = false): ComputedState<T> {\n const cachedState = this.tryGetCachedState(atom, ignoreMounted);\n if (cachedState) {\n return cachedState;\n }\n\n const computedInterceptor = this.options?.interceptor?.computed;\n if (!computedInterceptor) {\n return this.computeComputedAtom(atom, ignoreMounted);\n }\n\n let result: DataWithCalledState<ComputedState<T>> = {\n called: false,\n } as DataWithCalledState<ComputedState<T>>;\n\n computedInterceptor(atom, () => {\n result = {\n called: true,\n data: this.computeComputedAtom(atom, ignoreMounted),\n };\n\n return result.data.val;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n }\n\n private computeComputedAtom<T>(atom: Computed<T>, ignoreMounted = false): ComputedState<T> {\n const self: Computed<T> = atom;\n let atomState: ComputedState<T> | undefined = this.atomStateMap.get(self) as ComputedState<T> | undefined;\n if (!atomState) {\n atomState = {\n dependencies: new Map<ReadableAtom<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n this.atomStateMap.set(self, atomState);\n }\n\n const lastDeps = atomState.dependencies;\n const readDeps = new Map<ReadableAtom<unknown>, number>();\n atomState.dependencies = readDeps;\n const wrappedGet: Getter = (depAtom) => {\n const depState = this.readAtomState(depAtom, ignoreMounted);\n\n // get 可能发生在异步过程中,当重复调用时,只有最新的 get 过程会修改 deps\n if (atomState.dependencies === readDeps) {\n readDeps.set(depAtom, depState.epoch);\n\n const selfMounted = !!atomState.mounted;\n if (selfMounted && !depState.mounted) {\n this.mount(depAtom).readDepts.add(self);\n } else if (selfMounted && depState.mounted) {\n depState.mounted.readDepts.add(self);\n }\n }\n\n return depState.val;\n };\n\n const getInterceptor = this.options?.interceptor?.get;\n const ret = self.read(\n function <U>(depAtom: ReadableAtom<U>) {\n if (!getInterceptor) {\n return wrappedGet(depAtom);\n }\n\n let result: DataWithCalledState<U> = {\n called: false,\n } as DataWithCalledState<U>;\n\n const fn = () => {\n result = {\n called: true,\n data: wrappedGet(depAtom),\n };\n\n return result.data;\n };\n\n getInterceptor(depAtom, fn);\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n return result.data;\n },\n {\n get signal() {\n atomState.abortController?.abort(`abort ${self.debugLabel ?? 'anonymous'} atom`);\n atomState.abortController = new AbortController();\n return atomState.abortController.signal;\n },\n },\n );\n\n if (atomState.val !== ret) {\n atomState.val = ret;\n atomState.epoch += 1;\n }\n\n for (const key of lastDeps.keys()) {\n if (!readDeps.has(key)) {\n const depState = this.atomStateMap.get(key);\n if (depState?.mounted) {\n depState.mounted.readDepts.delete(self);\n this.tryUnmount(key);\n }\n }\n }\n\n return atomState;\n }\n\n private readStateAtom<T>(atom: State<T>): StateState<T> {\n const atomState = this.atomStateMap.get(atom);\n if (!atomState) {\n const initState = {\n val: atom.init,\n epoch: 0,\n };\n this.atomStateMap.set(atom, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n }\n\n public readAtomState<T>(atom: State<T>, ignoreMounted?: boolean): StateState<T>;\n public readAtomState<T>(atom: Computed<T>, ignoreMounted?: boolean): ComputedState<T>;\n public readAtomState<T>(atom: State<T> | Computed<T>, ignoreMounted?: boolean): CommonReadableState<T>;\n public readAtomState<T>(\n atom: State<T> | Computed<T>,\n ignoreMounted = false,\n ): StateState<T> | ComputedState<T> | CommonReadableState<T> {\n if (canReadAsCompute(atom)) {\n return this.readComputedAtom(atom, ignoreMounted);\n }\n\n return this.readStateAtom(atom);\n }\n\n private tryGetMount(atom: ReadableAtom<unknown>): Mounted | undefined {\n return this.atomStateMap.get(atom)?.mounted;\n }\n\n public mount<T>(atom: ReadableAtom<T>): Mounted {\n const mounted = this.tryGetMount(atom);\n if (mounted) {\n return mounted;\n }\n\n this.options?.interceptor?.mount?.(atom);\n\n const atomState = this.readAtomState(atom);\n\n atomState.mounted = atomState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(atomState)) {\n for (const [dep] of Array.from(atomState.dependencies)) {\n const mounted = this.mount(dep);\n mounted.readDepts.add(atom);\n }\n }\n\n return atomState.mounted;\n }\n\n public tryUnmount<T>(atom: ReadableAtom<T>): void {\n const atomState = this.atomStateMap.get(atom);\n if (!atomState?.mounted || atomState.mounted.listeners.size || atomState.mounted.readDepts.size) {\n return;\n }\n\n this.options?.interceptor?.unmount?.(atom);\n\n if (isComputedState(atomState)) {\n for (const [dep] of Array.from(atomState.dependencies)) {\n const depState = this.readAtomState(dep);\n depState.mounted?.readDepts.delete(atom);\n this.tryUnmount(dep);\n }\n }\n\n atomState.mounted = undefined;\n }\n\n public inited(atom: ReadableAtom<unknown>) {\n return this.atomStateMap.has(atom);\n }\n}\n\nexport class ListenerManager {\n private pendingListeners = new Set<Command<unknown, []>>();\n\n markPendingListeners(atomManager: AtomManager, atom: ReadableAtom<unknown>) {\n let queue: ReadableAtom<unknown>[] = [atom];\n while (queue.length > 0) {\n const nextQueue: ReadableAtom<unknown>[] = [];\n for (const atom of queue) {\n const atomState = atomManager.readAtomState(atom, true);\n\n if (atomState.mounted?.listeners) {\n for (const listener of atomState.mounted.listeners) {\n this.pendingListeners.add(listener);\n }\n }\n\n const readDepts = atomState.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n\n queue = nextQueue;\n }\n }\n\n *notify(): Generator<Command<unknown, []>, void, unknown> {\n const pendingListeners = this.pendingListeners;\n this.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n yield listener;\n }\n }\n}\n","import type { ReadableAtom, Command, Getter, State, Updater, Setter } from '../../types/core/atom';\nimport type { Store, StoreOptions, SubscribeOptions } from '../../types/core/store';\nimport { AtomManager, ListenerManager } from './atom-manager';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport class StoreImpl implements Store {\n constructor(\n protected readonly atomManager: AtomManager,\n protected readonly listenerManager: ListenerManager,\n protected readonly options?: StoreOptions,\n ) {}\n\n private innerSet = <T, Args extends unknown[]>(\n atom: State<T> | Command<T, Args>,\n ...args: [T | Updater<T>] | Args\n ): undefined | T => {\n if ('read' in atom) {\n return;\n }\n\n if ('write' in atom) {\n const ret = atom.write({ get: this.get, set: this.set }, ...(args as Args));\n return ret;\n }\n\n const newValue =\n typeof args[0] === 'function'\n ? (args[0] as Updater<T>)(this.atomManager.readAtomState(atom).val)\n : (args[0] as T);\n\n if (!this.atomManager.inited(atom)) {\n this.atomManager.readAtomState(atom).val = newValue;\n this.listenerManager.markPendingListeners(this.atomManager, atom);\n return;\n }\n const atomState = this.atomManager.readAtomState(atom);\n atomState.val = newValue;\n atomState.epoch += 1;\n this.listenerManager.markPendingListeners(this.atomManager, atom);\n return undefined;\n };\n\n get: Getter = <T>(atom: ReadableAtom<T>): T => {\n if (!this.options?.interceptor?.get) {\n return this.atomManager.readAtomState(atom).val;\n }\n let result: DataWithCalledState<T> = {\n called: false,\n } as DataWithCalledState<T>;\n\n const fnWithRet = () => {\n result = {\n called: true,\n data: this.atomManager.readAtomState(atom).val,\n };\n return result.data;\n };\n\n this.options.interceptor.get(atom, fnWithRet);\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n };\n\n private notify = () => {\n for (const listener of this.listenerManager.notify()) {\n let notifyed = false;\n const fn = () => {\n notifyed = true;\n return listener.write({ get: this.get, set: this.set });\n };\n if (this.options?.interceptor?.notify) {\n this.options.interceptor.notify(listener, fn);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- notify must call fn sync\n if (!notifyed) {\n throw new Error('interceptor must call fn sync');\n }\n } else {\n fn();\n }\n }\n };\n\n set: Setter = <T, Args extends unknown[]>(\n atom: State<T> | Command<T, Args>,\n ...args: [T | Updater<T>] | Args\n ): undefined | T => {\n let ret: T | undefined;\n const fn = () => {\n try {\n ret = this.innerSet(atom, ...args) as T | undefined;\n } finally {\n this.notify();\n }\n return ret;\n };\n\n if (this.options?.interceptor?.set) {\n if ('write' in atom) {\n this.options.interceptor.set(atom, fn, ...(args as Args));\n } else {\n this.options.interceptor.set(atom, fn, args[0] as T | Updater<T>);\n }\n } else {\n fn();\n }\n\n return ret;\n };\n\n private _subSingleAtom(\n target$: ReadableAtom<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n let unsub: (() => void) | undefined;\n const fn = () => {\n let subscribed = true;\n const mounted = this.atomManager.mount(target$);\n mounted.listeners.add(cb$);\n\n unsub = () => {\n if (!subscribed) {\n return;\n }\n\n const fn = () => {\n subscribed = false;\n mounted.listeners.delete(cb$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n this.atomManager.tryUnmount(target$);\n }\n\n options?.signal?.addEventListener('abort', fn);\n };\n\n if (this.options?.interceptor?.unsub) {\n this.options.interceptor.unsub(target$, cb$, fn);\n\n // subscribed should be false if interceptor called fn sync\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (subscribed) {\n throw new Error('interceptor must call fn sync');\n }\n } else {\n fn();\n }\n };\n\n options?.signal?.addEventListener('abort', unsub);\n };\n\n if (this.options?.interceptor?.sub) {\n this.options.interceptor.sub(target$, cb$, fn);\n } else {\n fn();\n }\n\n if (!unsub) {\n throw new Error('interceptor must call fn sync');\n }\n\n return unsub;\n }\n\n sub(\n targets$: ReadableAtom<unknown>[] | ReadableAtom<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n if (Array.isArray(targets$) && targets$.length === 0) {\n return () => void 0;\n }\n\n if (Array.isArray(targets$) && targets$.length === 1) {\n return this._subSingleAtom(targets$[0], cb$, options);\n } else if (!Array.isArray(targets$)) {\n return this._subSingleAtom(targets$, cb$, options);\n }\n\n const unsubscribes = new Set<() => void>();\n targets$.forEach((atom) => {\n unsubscribes.add(this._subSingleAtom(atom, cb$, options));\n });\n\n const unsub = () => {\n for (const unsubscribe of unsubscribes) {\n unsubscribe();\n }\n };\n\n return unsub;\n }\n}\n\nexport function createStore(): Store {\n const atomManager = new AtomManager();\n const listenerManager = new ListenerManager();\n\n return new StoreImpl(atomManager, listenerManager);\n}\n\nlet defaultStore: Store | undefined = undefined;\nexport function getDefaultStore(): Store {\n if (!defaultStore) {\n defaultStore = createStore();\n }\n return defaultStore;\n}\n"],"names":["globalId","generateToString","prefix","debugLabel","id","label","concat","String","state","init","options","ret","toString","computed","read","command","write","canReadAsCompute","atom","isComputedState","AtomManager","_this","_classCallCheck","_defineProperty","WeakMap","ignoreMounted","atomState","atomStateMap","get","undefined","mounted","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","value","dep","epoch","depState","readAtomState","err","e","f","_createClass","key","readComputedAtom","_this$options","_this2","arguments","length","cachedState","tryGetCachedState","computedInterceptor","interceptor","computeComputedAtom","result","called","data","val","Error","_this3","_this$options2","self","Map","set","lastDeps","readDeps","wrappedGet","depAtom","selfMounted","mount","readDepts","add","getInterceptor","fn","signal","_atomState$abortContr","_self$debugLabel","abortController","abort","AbortController","_iterator2","keys","_step2","has","tryUnmount","readStateAtom","initState","tryGetMount","_this$atomStateMap$ge","_this$options3","_this$options3$mount","_atomState$mounted","call","listeners","Set","_i","_Array$from","Array","from","_Array$from$_i","_this$options4","_this$options4$unmoun","size","unmount","_i2","_Array$from2","_depState$mounted","_Array$from2$_i","inited","ListenerManager","markPendingListeners","atomManager","queue","nextQueue","_iterator3","_step3","_atomState$mounted2","_atomState$mounted3","_iterator4","_step4","listener","pendingListeners","_i3","_Array$from3","push","_regeneratorRuntime","mark","notify","_iterator5","_step5","wrap","notify$","_context","prev","next","t0","finish","stop","StoreImpl","listenerManager","_len","args","_key","apply","_toConsumableArray","newValue","fnWithRet","_loop","notifyed","_len2","_key2","innerSet","_this$options$interce","_subSingleAtom","target$","cb$","unsub","_options$signal2","subscribed","_this2$options","_options$signal","addEventListener","sub","targets$","isArray","unsubscribes","forEach","unsubscribe","createStore","defaultStore","getDefaultStore"],"mappings":"AAMA,IAAIA,QAAQ,GAAG,CAAC;AAEhB,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAc,EAAEC,UAAmB,EAAK;EAChE,IAAMC,EAAE,GAAGJ,QAAQ,EAAE;EACrB,IAAMK,KAAK,MAAAC,MAAA,CAAMJ,MAAM,CAAAI,CAAAA,MAAA,CAAGC,MAAM,CAACH,EAAE,CAAC,CAAAE,CAAAA,MAAA,CAAGH,UAAU,GAAG,GAAG,GAAGA,UAAU,GAAG,EAAE,CAAE;EAC3E,OAAO,YAAA;AAAA,IAAA,OAAME,KAAK;AAAA,GAAA;AACpB,CAAC;AAEM,SAASG,KAAKA,CAAIC,IAAO,EAAEC,OAAiB,EAAY;AAC7D,EAAA,IAAMC,GAAa,GAAG;AACpBF,IAAAA,IAAI,EAAJA,IAAI;IACJG,QAAQ,EAAEX,gBAAgB,CAAC,GAAG,EAAES,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEP,UAAU;GACpD;AAED,EAAA,IAAIO,OAAO,KAAPA,IAAAA,IAAAA,OAAO,eAAPA,OAAO,CAAEP,UAAU,EAAE;AACvBQ,IAAAA,GAAG,CAACR,UAAU,GAAGO,OAAO,CAACP,UAAU;AACrC;AACA,EAAA,OAAOQ,GAAG;AACZ;AAEO,SAASE,QAAQA,CAAIC,IAAa,EAAEJ,OAAiB,EAAe;AACzE,EAAA,IAAMC,GAAgB,GAAG;AACvBG,IAAAA,IAAI,EAAJA,IAAI;IACJF,QAAQ,EAAEX,gBAAgB,CAAC,GAAG,EAAES,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEP,UAAU;GACpD;AACD,EAAA,IAAIO,OAAO,KAAPA,IAAAA,IAAAA,OAAO,eAAPA,OAAO,CAAEP,UAAU,EAAE;AACvBQ,IAAAA,GAAG,CAACR,UAAU,GAAGO,OAAO,CAACP,UAAU;AACrC;AACA,EAAA,OAAOQ,GAAG;AACZ;AAEO,SAASI,OAAOA,CAA4BC,KAAqB,EAAEN,OAAiB,EAAoB;AAC7G,EAAA,IAAMC,GAAqB,GAAG;AAC5BK,IAAAA,KAAK,EAALA,KAAK;IACLJ,QAAQ,EAAEX,gBAAgB,CAAC,GAAG,EAAES,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEP,UAAU;GACpD;AACD,EAAA,IAAIO,OAAO,KAAPA,IAAAA,IAAAA,OAAO,eAAPA,OAAO,CAAEP,UAAU,EAAE;AACvBQ,IAAAA,GAAG,CAACR,UAAU,GAAGO,OAAO,CAACP,UAAU;AACrC;AACA,EAAA,OAAOQ,GAAG;AACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXA,SAASM,gBAAgBA,CAAIC,IAAqB,EAAuB;EACvE,OAAO,MAAM,IAAIA,IAAI;AACvB;AAEA,SAASC,eAAeA,CAAIX,KAA6B,EAA6B;EACpF,OAAO,cAAc,IAAIA,KAAK;AAChC;AAEA,IAAaY,WAAW,gBAAA,YAAA;EAGtB,SAAAA,WAAAA,CAA6BV,OAAsB,EAAE;AAAA,IAAA,IAAAW,KAAA,GAAA,IAAA;AAAAC,IAAAA,eAAA,OAAAF,WAAA,CAAA;AAAAG,IAAAA,eAAA,CAF9B,IAAA,EAAA,cAAA,EAAA,IAAIC,OAAO,EAA6C,CAAA;AAAAD,IAAAA,eAAA,CAInD,IAAA,EAAA,mBAAA,EAAA,UAAIL,IAAiB,EAAEO,aAAsB,EAAmC;MAC1G,IAAMC,SAAS,GAAGL,KAAI,CAACM,YAAY,CAACC,GAAG,CAACV,IAAI,CAAiC;MAC7E,IAAI,CAACQ,SAAS,EAAE;AACd,QAAA,OAAOG,SAAS;AAClB;AAEA,MAAA,IAAIH,SAAS,CAACI,OAAO,IAAI,CAACL,aAAa,EAAE;AACvC,QAAA,OAAOC,SAAS;AAClB;MAAC,IAAAK,SAAA,GAAAC,0BAAA,CAE0BN,SAAS,CAACO,YAAY,CAACC,OAAO,EAAE,CAAA;QAAAC,KAAA;AAAA,MAAA,IAAA;QAA3D,KAAAJ,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAAC,EAAAA,IAAA,GAA6D;AAAA,UAAA,IAAAC,WAAA,GAAAC,cAAA,CAAAL,KAAA,CAAAM,KAAA,EAAA,CAAA,CAAA;AAAjDC,YAAAA,GAAG,GAAAH,WAAA,CAAA,CAAA,CAAA;AAAEI,YAAAA,KAAK,GAAAJ,WAAA,CAAA,CAAA,CAAA;AACpB,UAAA,IAAMK,QAAQ,GAAGvB,KAAI,CAACwB,aAAa,CAACH,GAAG,CAAC;AACxC,UAAA,IAAIE,QAAQ,CAACD,KAAK,KAAKA,KAAK,EAAE;AAC5B,YAAA,OAAOd,SAAS;AAClB;AACF;AAAC,OAAA,CAAA,OAAAiB,GAAA,EAAA;QAAAf,SAAA,CAAAgB,CAAA,CAAAD,GAAA,CAAA;AAAA,OAAA,SAAA;AAAAf,QAAAA,SAAA,CAAAiB,CAAA,EAAA;AAAA;AAED,MAAA,OAAOtB,SAAS;KACjB,CAAA;IAAA,IApB4BhB,CAAAA,OAAsB,GAAtBA,OAAsB;AAAG;EAAC,OAAAuC,YAAA,CAAA7B,WAAA,EAAA,CAAA;IAAA8B,GAAA,EAAA,kBAAA;AAAAT,IAAAA,KAAA,EAsBvD,SAAQU,gBAAgBA,CAAIjC,IAAiB,EAA2C;AAAA,MAAA,IAAAkC,aAAA;QAAAC,MAAA,GAAA,IAAA;AAAA,MAAA,IAAzC5B,aAAa,GAAA6B,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAzB,SAAA,GAAAyB,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;MAClE,IAAME,WAAW,GAAG,IAAI,CAACC,iBAAiB,CAACvC,IAAI,EAAEO,aAAa,CAAC;AAC/D,MAAA,IAAI+B,WAAW,EAAE;AACf,QAAA,OAAOA,WAAW;AACpB;MAEA,IAAME,mBAAmB,IAAAN,aAAA,GAAG,IAAI,CAAC1C,OAAO,cAAA0C,aAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,aAAA,GAAZA,aAAA,CAAcO,WAAW,MAAA,IAAA,IAAAP,aAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAA,CAA2BvC,QAAQ;MAC/D,IAAI,CAAC6C,mBAAmB,EAAE;AACxB,QAAA,OAAO,IAAI,CAACE,mBAAmB,CAAC1C,IAAI,EAAEO,aAAa,CAAC;AACtD;AAEA,MAAA,IAAIoC,MAA6C,GAAG;AAClDC,QAAAA,MAAM,EAAE;OACgC;MAE1CJ,mBAAmB,CAACxC,IAAI,EAAE,YAAM;AAC9B2C,QAAAA,MAAM,GAAG;AACPC,UAAAA,MAAM,EAAE,IAAI;AACZC,UAAAA,IAAI,EAAEV,MAAI,CAACO,mBAAmB,CAAC1C,IAAI,EAAEO,aAAa;SACnD;AAED,QAAA,OAAOoC,MAAM,CAACE,IAAI,CAACC,GAAG;AACxB,OAAC,CAAC;AAEF,MAAA,IAAI,CAACH,MAAM,CAACC,MAAM,EAAE;AAClB,QAAA,MAAM,IAAIG,KAAK,CAAC,+BAA+B,CAAC;AAClD;MAEA,OAAOJ,MAAM,CAACE,IAAI;AACpB;AAAC,GAAA,EAAA;IAAAb,GAAA,EAAA,qBAAA;AAAAT,IAAAA,KAAA,EAED,SAAQmB,mBAAmBA,CAAI1C,IAAiB,EAA2C;AAAA,MAAA,IAAAgD,MAAA,GAAA,IAAA;QAAAC,cAAA;AAAA,MAAA,IAAzC1C,aAAa,GAAA6B,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAzB,SAAA,GAAAyB,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;MACrE,IAAMc,IAAiB,GAAGlD,IAAI;MAC9B,IAAIQ,SAAuC,GAAG,IAAI,CAACC,YAAY,CAACC,GAAG,CAACwC,IAAI,CAAiC;MACzG,IAAI,CAAC1C,SAAS,EAAE;AACdA,QAAAA,SAAS,GAAG;AACVO,UAAAA,YAAY,EAAE,IAAIoC,GAAG,EAAiC;AACtD1B,UAAAA,KAAK,EAAE,CAAC;SACW;QACrB,IAAI,CAAChB,YAAY,CAAC2C,GAAG,CAACF,IAAI,EAAE1C,SAAS,CAAC;AACxC;AAEA,MAAA,IAAM6C,QAAQ,GAAG7C,SAAS,CAACO,YAAY;AACvC,MAAA,IAAMuC,QAAQ,GAAG,IAAIH,GAAG,EAAiC;MACzD3C,SAAS,CAACO,YAAY,GAAGuC,QAAQ;AACjC,MAAA,IAAMC,UAAkB,GAAG,SAArBA,UAAkBA,CAAIC,OAAO,EAAK;QACtC,IAAM9B,QAAQ,GAAGsB,MAAI,CAACrB,aAAa,CAAC6B,OAAO,EAAEjD,aAAa,CAAC;;AAE3D;AACA,QAAA,IAAIC,SAAS,CAACO,YAAY,KAAKuC,QAAQ,EAAE;UACvCA,QAAQ,CAACF,GAAG,CAACI,OAAO,EAAE9B,QAAQ,CAACD,KAAK,CAAC;AAErC,UAAA,IAAMgC,WAAW,GAAG,CAAC,CAACjD,SAAS,CAACI,OAAO;AACvC,UAAA,IAAI6C,WAAW,IAAI,CAAC/B,QAAQ,CAACd,OAAO,EAAE;YACpCoC,MAAI,CAACU,KAAK,CAACF,OAAO,CAAC,CAACG,SAAS,CAACC,GAAG,CAACV,IAAI,CAAC;AACzC,WAAC,MAAM,IAAIO,WAAW,IAAI/B,QAAQ,CAACd,OAAO,EAAE;YAC1Cc,QAAQ,CAACd,OAAO,CAAC+C,SAAS,CAACC,GAAG,CAACV,IAAI,CAAC;AACtC;AACF;QAEA,OAAOxB,QAAQ,CAACoB,GAAG;OACpB;MAED,IAAMe,cAAc,IAAAZ,cAAA,GAAG,IAAI,CAACzD,OAAO,cAAAyD,cAAA,KAAA,KAAA,CAAA,IAAA,CAAAA,cAAA,GAAZA,cAAA,CAAcR,WAAW,MAAA,IAAA,IAAAQ,cAAA,KAAzBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAA2BvC,GAAG;MACrD,IAAMjB,GAAG,GAAGyD,IAAI,CAACtD,IAAI,CACnB,UAAa4D,OAAwB,EAAE;QACrC,IAAI,CAACK,cAAc,EAAE;UACnB,OAAON,UAAU,CAACC,OAAO,CAAC;AAC5B;AAEA,QAAA,IAAIb,MAA8B,GAAG;AACnCC,UAAAA,MAAM,EAAE;SACiB;AAE3B,QAAA,IAAMkB,EAAE,GAAG,SAALA,EAAEA,GAAS;AACfnB,UAAAA,MAAM,GAAG;AACPC,YAAAA,MAAM,EAAE,IAAI;YACZC,IAAI,EAAEU,UAAU,CAACC,OAAO;WACzB;UAED,OAAOb,MAAM,CAACE,IAAI;SACnB;AAEDgB,QAAAA,cAAc,CAACL,OAAO,EAAEM,EAAE,CAAC;AAE3B,QAAA,IAAI,CAACnB,MAAM,CAACC,MAAM,EAAE;AAClB,UAAA,MAAM,IAAIG,KAAK,CAAC,+BAA+B,CAAC;AAClD;QACA,OAAOJ,MAAM,CAACE,IAAI;AACpB,OAAC,EACD;QACE,IAAIkB,MAAMA,GAAG;UAAA,IAAAC,qBAAA,EAAAC,gBAAA;UACX,CAAAD,qBAAA,GAAAxD,SAAS,CAAC0D,eAAe,MAAAF,IAAAA,IAAAA,qBAAA,KAAzBA,KAAAA,CAAAA,IAAAA,qBAAA,CAA2BG,KAAK,CAAA/E,QAAAA,CAAAA,MAAA,EAAA6E,gBAAA,GAAUf,IAAI,CAACjE,UAAU,MAAA,IAAA,IAAAgF,gBAAA,KAAA,KAAA,CAAA,GAAAA,gBAAA,GAAI,WAAW,EAAA,OAAA,CAAO,CAAC;AAChFzD,UAAAA,SAAS,CAAC0D,eAAe,GAAG,IAAIE,eAAe,EAAE;AACjD,UAAA,OAAO5D,SAAS,CAAC0D,eAAe,CAACH,MAAM;AACzC;AACF,OACF,CAAC;AAED,MAAA,IAAIvD,SAAS,CAACsC,GAAG,KAAKrD,GAAG,EAAE;QACzBe,SAAS,CAACsC,GAAG,GAAGrD,GAAG;QACnBe,SAAS,CAACiB,KAAK,IAAI,CAAC;AACtB;MAAC,IAAA4C,UAAA,GAAAvD,0BAAA,CAEiBuC,QAAQ,CAACiB,IAAI,EAAE,CAAA;QAAAC,MAAA;AAAA,MAAA,IAAA;QAAjC,KAAAF,UAAA,CAAAnD,CAAA,EAAAqD,EAAAA,CAAAA,CAAAA,MAAA,GAAAF,UAAA,CAAAlD,CAAA,EAAAC,EAAAA,IAAA,GAAmC;AAAA,UAAA,IAAxBY,GAAG,GAAAuC,MAAA,CAAAhD,KAAA;AACZ,UAAA,IAAI,CAAC+B,QAAQ,CAACkB,GAAG,CAACxC,GAAG,CAAC,EAAE;YACtB,IAAMN,QAAQ,GAAG,IAAI,CAACjB,YAAY,CAACC,GAAG,CAACsB,GAAG,CAAC;AAC3C,YAAA,IAAIN,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,eAARA,QAAQ,CAAEd,OAAO,EAAE;AACrBc,cAAAA,QAAQ,CAACd,OAAO,CAAC+C,SAAS,CAAO,QAAA,CAAA,CAACT,IAAI,CAAC;AACvC,cAAA,IAAI,CAACuB,UAAU,CAACzC,GAAG,CAAC;AACtB;AACF;AACF;AAAC,OAAA,CAAA,OAAAJ,GAAA,EAAA;QAAAyC,UAAA,CAAAxC,CAAA,CAAAD,GAAA,CAAA;AAAA,OAAA,SAAA;AAAAyC,QAAAA,UAAA,CAAAvC,CAAA,EAAA;AAAA;AAED,MAAA,OAAOtB,SAAS;AAClB;AAAC,GAAA,EAAA;IAAAwB,GAAA,EAAA,eAAA;AAAAT,IAAAA,KAAA,EAED,SAAQmD,aAAaA,CAAI1E,IAAc,EAAiB;MACtD,IAAMQ,SAAS,GAAG,IAAI,CAACC,YAAY,CAACC,GAAG,CAACV,IAAI,CAAC;MAC7C,IAAI,CAACQ,SAAS,EAAE;AACd,QAAA,IAAMmE,SAAS,GAAG;UAChB7B,GAAG,EAAE9C,IAAI,CAACT,IAAI;AACdkC,UAAAA,KAAK,EAAE;SACR;QACD,IAAI,CAAChB,YAAY,CAAC2C,GAAG,CAACpD,IAAI,EAAE2E,SAAS,CAAC;AACtC,QAAA,OAAOA,SAAS;AAClB;AAEA,MAAA,OAAOnE,SAAS;AAClB;AAAC,GAAA,EAAA;IAAAwB,GAAA,EAAA,eAAA;AAAAT,IAAAA,KAAA,EAKD,SAAOI,aAAaA,CAClB3B,IAA4B,EAE+B;AAAA,MAAA,IAD3DO,aAAa,GAAA6B,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAzB,SAAA,GAAAyB,SAAA,CAAA,CAAA,CAAA,GAAG,KAAK;AAErB,MAAA,IAAIrC,gBAAgB,CAACC,IAAI,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI,CAACiC,gBAAgB,CAACjC,IAAI,EAAEO,aAAa,CAAC;AACnD;AAEA,MAAA,OAAO,IAAI,CAACmE,aAAa,CAAC1E,IAAI,CAAC;AACjC;AAAC,GAAA,EAAA;IAAAgC,GAAA,EAAA,aAAA;AAAAT,IAAAA,KAAA,EAED,SAAQqD,WAAWA,CAAC5E,IAA2B,EAAuB;AAAA,MAAA,IAAA6E,qBAAA;AACpE,MAAA,OAAA,CAAAA,qBAAA,GAAO,IAAI,CAACpE,YAAY,CAACC,GAAG,CAACV,IAAI,CAAC,MAAA6E,IAAAA,IAAAA,qBAAA,KAA3BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAA6BjE,OAAO;AAC7C;AAAC,GAAA,EAAA;IAAAoB,GAAA,EAAA,OAAA;AAAAT,IAAAA,KAAA,EAED,SAAOmC,KAAKA,CAAI1D,IAAqB,EAAW;AAAA,MAAA,IAAA8E,cAAA,EAAAC,oBAAA,EAAAC,kBAAA;AAC9C,MAAA,IAAMpE,OAAO,GAAG,IAAI,CAACgE,WAAW,CAAC5E,IAAI,CAAC;AACtC,MAAA,IAAIY,OAAO,EAAE;AACX,QAAA,OAAOA,OAAO;AAChB;AAEA,MAAA,CAAAkE,cAAA,GAAA,IAAI,CAACtF,OAAO,MAAAsF,IAAAA,IAAAA,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAcrC,WAAW,cAAAqC,cAAA,KAAA,KAAA,CAAA,IAAA,CAAAC,oBAAA,GAAzBD,cAAA,CAA2BpB,KAAK,MAAA,IAAA,IAAAqB,oBAAA,KAAA,KAAA,CAAA,IAAhCA,oBAAA,CAAAE,IAAA,CAAAH,cAAA,EAAmC9E,IAAI,CAAC;AAExC,MAAA,IAAMQ,SAAS,GAAG,IAAI,CAACmB,aAAa,CAAC3B,IAAI,CAAC;AAE1CQ,MAAAA,SAAS,CAACI,OAAO,GAAAoE,CAAAA,kBAAA,GAAGxE,SAAS,CAACI,OAAO,MAAAoE,IAAAA,IAAAA,kBAAA,KAAAA,KAAAA,CAAAA,GAAAA,kBAAA,GAAI;AACvCE,QAAAA,SAAS,EAAE,IAAIC,GAAG,EAAE;QACpBxB,SAAS,EAAE,IAAIwB,GAAG;OACnB;AAED,MAAA,IAAIlF,eAAe,CAACO,SAAS,CAAC,EAAE;QAC9B,KAAA4E,IAAAA,EAAA,MAAAC,WAAA,GAAoBC,KAAK,CAACC,IAAI,CAAC/E,SAAS,CAACO,YAAY,CAAC,EAAAqE,EAAA,GAAAC,WAAA,CAAAhD,MAAA,EAAA+C,EAAA,EAAE,EAAA;AAAnD,UAAA,IAAAI,cAAA,GAAAlE,cAAA,CAAA+D,WAAA,CAAAD,EAAA,CAAA,EAAA,CAAA,CAAA;AAAO5D,YAAAA,GAAG,GAAAgE,cAAA,CAAA,CAAA,CAAA;AACb,UAAA,IAAM5E,QAAO,GAAG,IAAI,CAAC8C,KAAK,CAAClC,GAAG,CAAC;AAC/BZ,UAAAA,QAAO,CAAC+C,SAAS,CAACC,GAAG,CAAC5D,IAAI,CAAC;AAC7B;AACF;MAEA,OAAOQ,SAAS,CAACI,OAAO;AAC1B;AAAC,GAAA,EAAA;IAAAoB,GAAA,EAAA,YAAA;AAAAT,IAAAA,KAAA,EAED,SAAOkD,UAAUA,CAAIzE,IAAqB,EAAQ;MAAA,IAAAyF,cAAA,EAAAC,qBAAA;MAChD,IAAMlF,SAAS,GAAG,IAAI,CAACC,YAAY,CAACC,GAAG,CAACV,IAAI,CAAC;MAC7C,IAAI,EAACQ,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,KAAA,CAAA,IAATA,SAAS,CAAEI,OAAO,CAAIJ,IAAAA,SAAS,CAACI,OAAO,CAACsE,SAAS,CAACS,IAAI,IAAInF,SAAS,CAACI,OAAO,CAAC+C,SAAS,CAACgC,IAAI,EAAE;AAC/F,QAAA;AACF;AAEA,MAAA,CAAAF,cAAA,GAAA,IAAI,CAACjG,OAAO,MAAAiG,IAAAA,IAAAA,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAchD,WAAW,cAAAgD,cAAA,KAAA,KAAA,CAAA,IAAA,CAAAC,qBAAA,GAAzBD,cAAA,CAA2BG,OAAO,MAAA,IAAA,IAAAF,qBAAA,KAAA,KAAA,CAAA,IAAlCA,qBAAA,CAAAT,IAAA,CAAAQ,cAAA,EAAqCzF,IAAI,CAAC;AAE1C,MAAA,IAAIC,eAAe,CAACO,SAAS,CAAC,EAAE;QAC9B,KAAAqF,IAAAA,GAAA,MAAAC,YAAA,GAAoBR,KAAK,CAACC,IAAI,CAAC/E,SAAS,CAACO,YAAY,CAAC,EAAA8E,GAAA,GAAAC,YAAA,CAAAzD,MAAA,EAAAwD,GAAA,EAAE,EAAA;AAAA,UAAA,IAAAE,iBAAA;AAAnD,UAAA,IAAAC,eAAA,GAAA1E,cAAA,CAAAwE,YAAA,CAAAD,GAAA,CAAA,EAAA,CAAA,CAAA;AAAOrE,YAAAA,GAAG,GAAAwE,eAAA,CAAA,CAAA,CAAA;AACb,UAAA,IAAMtE,QAAQ,GAAG,IAAI,CAACC,aAAa,CAACH,GAAG,CAAC;AACxC,UAAA,CAAAuE,iBAAA,GAAArE,QAAQ,CAACd,OAAO,MAAAmF,IAAAA,IAAAA,iBAAA,KAAhBA,KAAAA,CAAAA,IAAAA,iBAAA,CAAkBpC,SAAS,CAAO,QAAA,CAAA,CAAC3D,IAAI,CAAC;AACxC,UAAA,IAAI,CAACyE,UAAU,CAACjD,GAAG,CAAC;AACtB;AACF;MAEAhB,SAAS,CAACI,OAAO,GAAGD,SAAS;AAC/B;AAAC,GAAA,EAAA;IAAAqB,GAAA,EAAA,QAAA;AAAAT,IAAAA,KAAA,EAED,SAAO0E,MAAMA,CAACjG,IAA2B,EAAE;AACzC,MAAA,OAAO,IAAI,CAACS,YAAY,CAAC+D,GAAG,CAACxE,IAAI,CAAC;AACpC;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;AAGH,IAAakG,eAAe,gBAAA,YAAA;AAAA,EAAA,SAAAA,eAAA,GAAA;AAAA9F,IAAAA,eAAA,OAAA8F,eAAA,CAAA;AAAA7F,IAAAA,eAAA,CACC,IAAA,EAAA,kBAAA,EAAA,IAAI8E,GAAG,EAAwB,CAAA;AAAA;EAAA,OAAApD,YAAA,CAAAmE,eAAA,EAAA,CAAA;IAAAlE,GAAA,EAAA,sBAAA;AAAAT,IAAAA,KAAA,EAE1D,SAAA4E,oBAAoBA,CAACC,WAAwB,EAAEpG,IAA2B,EAAE;AAC1E,MAAA,IAAIqG,KAA8B,GAAG,CAACrG,IAAI,CAAC;AAC3C,MAAA,OAAOqG,KAAK,CAAChE,MAAM,GAAG,CAAC,EAAE;QACvB,IAAMiE,SAAkC,GAAG,EAAE;AAAC,QAAA,IAAAC,UAAA,GAAAzF,0BAAA,CAC3BuF,KAAK,CAAA;UAAAG,MAAA;AAAA,QAAA,IAAA;UAAxB,KAAAD,UAAA,CAAArF,CAAA,EAAAsF,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAApF,CAAA,EAAAC,EAAAA,IAAA,GAA0B;YAAA,IAAAqF,mBAAA,EAAAC,mBAAA;AAAA,YAAA,IAAf1G,KAAI,GAAAwG,MAAA,CAAAjF,KAAA;YACb,IAAMf,SAAS,GAAG4F,WAAW,CAACzE,aAAa,CAAC3B,KAAI,EAAE,IAAI,CAAC;YAEvD,IAAAyG,CAAAA,mBAAA,GAAIjG,SAAS,CAACI,OAAO,MAAA6F,IAAAA,IAAAA,mBAAA,KAAjBA,KAAAA,CAAAA,IAAAA,mBAAA,CAAmBvB,SAAS,EAAE;cAAA,IAAAyB,UAAA,GAAA7F,0BAAA,CACTN,SAAS,CAACI,OAAO,CAACsE,SAAS,CAAA;gBAAA0B,MAAA;AAAA,cAAA,IAAA;gBAAlD,KAAAD,UAAA,CAAAzF,CAAA,EAAA0F,EAAAA,CAAAA,CAAAA,MAAA,GAAAD,UAAA,CAAAxF,CAAA,EAAAC,EAAAA,IAAA,GAAoD;AAAA,kBAAA,IAAzCyF,QAAQ,GAAAD,MAAA,CAAArF,KAAA;AACjB,kBAAA,IAAI,CAACuF,gBAAgB,CAAClD,GAAG,CAACiD,QAAQ,CAAC;AACrC;AAAC,eAAA,CAAA,OAAAjF,GAAA,EAAA;gBAAA+E,UAAA,CAAA9E,CAAA,CAAAD,GAAA,CAAA;AAAA,eAAA,SAAA;AAAA+E,gBAAAA,UAAA,CAAA7E,CAAA,EAAA;AAAA;AACH;AAEA,YAAA,IAAM6B,SAAS,GAAA,CAAA+C,mBAAA,GAAGlG,SAAS,CAACI,OAAO,MAAA,IAAA,IAAA8F,mBAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjBA,mBAAA,CAAmB/C,SAAS;AAC9C,YAAA,IAAIA,SAAS,EAAE;AACb,cAAA,KAAA,IAAAoD,GAAA,GAAAC,CAAAA,EAAAA,YAAA,GAAkB1B,KAAK,CAACC,IAAI,CAAC5B,SAAS,CAAC,EAAAoD,GAAA,GAAAC,YAAA,CAAA3E,MAAA,EAAA0E,GAAA,EAAE,EAAA;AAApC,gBAAA,IAAMvF,GAAG,GAAAwF,YAAA,CAAAD,GAAA,CAAA;AACZT,gBAAAA,SAAS,CAACW,IAAI,CAACzF,GAAG,CAAC;AACrB;AACF;AACF;AAAC,SAAA,CAAA,OAAAI,GAAA,EAAA;UAAA2E,UAAA,CAAA1E,CAAA,CAAAD,GAAA,CAAA;AAAA,SAAA,SAAA;AAAA2E,UAAAA,UAAA,CAAAzE,CAAA,EAAA;AAAA;AAEDuE,QAAAA,KAAK,GAAGC,SAAS;AACnB;AACF;AAAC,GAAA,EAAA;IAAAtE,GAAA,EAAA,QAAA;AAAAT,IAAAA,KAAA,eAAA2F,mBAAA,EAAA,CAAAC,IAAA,CAED,SAACC,MAAMA,GAAA;AAAA,MAAA,IAAAN,gBAAA,EAAAO,UAAA,EAAAC,MAAA,EAAAT,QAAA;AAAA,MAAA,OAAAK,mBAAA,EAAA,CAAAK,IAAA,CAAA,SAAAC,QAAAC,QAAA,EAAA;AAAA,QAAA,OAAA,CAAA,EAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;AAAA,UAAA,KAAA,CAAA;YACCb,gBAAgB,GAAG,IAAI,CAACA,gBAAgB;AAC9C,YAAA,IAAI,CAACA,gBAAgB,GAAG,IAAI3B,GAAG,EAAE;YAACkC,UAAA,GAAAvG,0BAAA,CAEXgG,gBAAgB,CAAA;AAAAW,YAAAA,QAAA,CAAAC,IAAA,GAAA,CAAA;AAAAL,YAAAA,UAAA,CAAAnG,CAAA,EAAA;AAAA,UAAA,KAAA,CAAA;AAAA,YAAA,IAAA,CAAAoG,MAAA,GAAAD,UAAA,CAAAlG,CAAA,IAAAC,IAAA,EAAA;AAAAqG,cAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA;AAAA,cAAA;AAAA;YAA5Bd,QAAQ,GAAAS,MAAA,CAAA/F,KAAA;AAAAkG,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;AACjB,YAAA,OAAMd,QAAQ;AAAA,UAAA,KAAA,CAAA;AAAAY,YAAAA,QAAA,CAAAE,IAAA,GAAA,CAAA;AAAA,YAAA;AAAA,UAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,CAAAE,IAAA,GAAA,EAAA;AAAA,YAAA;AAAA,UAAA,KAAA,EAAA;AAAAF,YAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA;YAAAD,QAAA,CAAAG,EAAA,GAAAH,QAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAAJ,YAAAA,UAAA,CAAAxF,CAAA,CAAA4F,QAAA,CAAAG,EAAA,CAAA;AAAA,UAAA,KAAA,EAAA;AAAAH,YAAAA,QAAA,CAAAC,IAAA,GAAA,EAAA;AAAAL,YAAAA,UAAA,CAAAvF,CAAA,EAAA;YAAA,OAAA2F,QAAA,CAAAI,MAAA,CAAA,EAAA,CAAA;AAAA,UAAA,KAAA,EAAA;AAAA,UAAA,KAAA,KAAA;YAAA,OAAAJ,QAAA,CAAAK,IAAA,EAAA;AAAA;AAAA,OAAA,EALjBV,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA;KAON;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;;AChSH,IAAaW,SAAS,gBAAA,YAAA;AACpB,EAAA,SAAAA,UACqB3B,WAAwB,EACxB4B,eAAgC,EAChCxI,OAAsB,EACzC;AAAA,IAAA,IAAAW,KAAA,GAAA,IAAA;AAAAC,IAAAA,eAAA,OAAA2H,SAAA,CAAA;IAAA1H,eAAA,CAAA,IAAA,EAAA,UAAA,EAEiB,UACjBL,IAAiC,EAEf;MAClB,IAAI,MAAM,IAAIA,IAAI,EAAE;AAClB,QAAA;AACF;MAAC,KAAAiI,IAAAA,IAAA,GAAA7F,SAAA,CAAAC,MAAA,EAJE6F,IAAI,OAAA5C,KAAA,CAAA2C,IAAA,GAAAA,CAAAA,GAAAA,IAAA,WAAAE,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA,EAAA,EAAA;AAAJD,QAAAA,IAAI,CAAAC,IAAA,GAAA/F,CAAAA,CAAAA,GAAAA,SAAA,CAAA+F,IAAA,CAAA;AAAA;MAMP,IAAI,OAAO,IAAInI,IAAI,EAAE;QACnB,IAAMP,GAAG,GAAGO,IAAI,CAACF,KAAK,CAAAsI,KAAA,CAAVpI,IAAI,EAAO,CAAA;UAAEU,GAAG,EAAEP,KAAI,CAACO,GAAG;UAAE0C,GAAG,EAAEjD,KAAI,CAACiD;AAAI,SAAC,EAAAhE,MAAA,CAAAiJ,kBAAA,CAAMH,IAAI,EAAS,CAAC;AAC3E,QAAA,OAAOzI,GAAG;AACZ;AAEA,MAAA,IAAM6I,QAAQ,GACZ,OAAOJ,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GACxBA,IAAI,CAAC,CAAC,CAAC,CAAgB/H,KAAI,CAACiG,WAAW,CAACzE,aAAa,CAAC3B,IAAI,CAAC,CAAC8C,GAAG,CAAC,GAChEoF,IAAI,CAAC,CAAC,CAAO;MAEpB,IAAI,CAAC/H,KAAI,CAACiG,WAAW,CAACH,MAAM,CAACjG,IAAI,CAAC,EAAE;QAClCG,KAAI,CAACiG,WAAW,CAACzE,aAAa,CAAC3B,IAAI,CAAC,CAAC8C,GAAG,GAAGwF,QAAQ;QACnDnI,KAAI,CAAC6H,eAAe,CAAC7B,oBAAoB,CAAChG,KAAI,CAACiG,WAAW,EAAEpG,IAAI,CAAC;AACjE,QAAA;AACF;MACA,IAAMQ,SAAS,GAAGL,KAAI,CAACiG,WAAW,CAACzE,aAAa,CAAC3B,IAAI,CAAC;MACtDQ,SAAS,CAACsC,GAAG,GAAGwF,QAAQ;MACxB9H,SAAS,CAACiB,KAAK,IAAI,CAAC;MACpBtB,KAAI,CAAC6H,eAAe,CAAC7B,oBAAoB,CAAChG,KAAI,CAACiG,WAAW,EAAEpG,IAAI,CAAC;AACjE,MAAA,OAAOW,SAAS;KACjB,CAAA;IAAAN,eAAA,CAAA,IAAA,EAAA,KAAA,EAEa,UAAIL,IAAqB,EAAQ;AAAA,MAAA,IAAAkC,aAAA;MAC7C,IAAI,EAAA,CAAAA,aAAA,GAAC/B,KAAI,CAACX,OAAO,MAAA,IAAA,IAAA0C,aAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,aAAA,GAAZA,aAAA,CAAcO,WAAW,MAAAP,IAAAA,IAAAA,aAAA,eAAzBA,aAAA,CAA2BxB,GAAG,CAAE,EAAA;QACnC,OAAOP,KAAI,CAACiG,WAAW,CAACzE,aAAa,CAAC3B,IAAI,CAAC,CAAC8C,GAAG;AACjD;AACA,MAAA,IAAIH,MAA8B,GAAG;AACnCC,QAAAA,MAAM,EAAE;OACiB;AAE3B,MAAA,IAAM2F,SAAS,GAAG,SAAZA,SAASA,GAAS;AACtB5F,QAAAA,MAAM,GAAG;AACPC,UAAAA,MAAM,EAAE,IAAI;UACZC,IAAI,EAAE1C,KAAI,CAACiG,WAAW,CAACzE,aAAa,CAAC3B,IAAI,CAAC,CAAC8C;SAC5C;QACD,OAAOH,MAAM,CAACE,IAAI;OACnB;MAED1C,KAAI,CAACX,OAAO,CAACiD,WAAW,CAAC/B,GAAG,CAACV,IAAI,EAAEuI,SAAS,CAAC;AAC7C,MAAA,IAAI,CAAC5F,MAAM,CAACC,MAAM,EAAE;AAClB,QAAA,MAAM,IAAIG,KAAK,CAAC,+BAA+B,CAAC;AAClD;MAEA,OAAOJ,MAAM,CAACE,IAAI;KACnB,CAAA;AAAAxC,IAAAA,eAAA,iBAEgB,YAAM;MAAA,IAAAQ,SAAA,GAAAC,0BAAA,CACEX,KAAI,CAAC6H,eAAe,CAACZ,MAAM,EAAE,CAAA;QAAAnG,KAAA;AAAA,MAAA,IAAA;QAAA,IAAAuH,KAAA,GAAAA,SAAAA,KAAAA,GAAE;AAAA,UAAA,IAAAvF,cAAA;AAAA,UAAA,IAA3C4D,QAAQ,GAAA5F,KAAA,CAAAM,KAAA;UACjB,IAAIkH,QAAQ,GAAG,KAAK;AACpB,UAAA,IAAM3E,EAAE,GAAG,SAALA,EAAEA,GAAS;AACf2E,YAAAA,QAAQ,GAAG,IAAI;YACf,OAAO5B,QAAQ,CAAC/G,KAAK,CAAC;cAAEY,GAAG,EAAEP,KAAI,CAACO,GAAG;cAAE0C,GAAG,EAAEjD,KAAI,CAACiD;AAAI,aAAC,CAAC;WACxD;AACD,UAAA,IAAA,CAAAH,cAAA,GAAI9C,KAAI,CAACX,OAAO,MAAA,IAAA,IAAAyD,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAcR,WAAW,MAAAQ,IAAAA,IAAAA,cAAA,eAAzBA,cAAA,CAA2BmE,MAAM,EAAE;YACrCjH,KAAI,CAACX,OAAO,CAACiD,WAAW,CAAC2E,MAAM,CAACP,QAAQ,EAAE/C,EAAE,CAAC;AAC7C;YACA,IAAI,CAAC2E,QAAQ,EAAE;AACb,cAAA,MAAM,IAAI1F,KAAK,CAAC,+BAA+B,CAAC;AAClD;AACF,WAAC,MAAM;AACLe,YAAAA,EAAE,EAAE;AACN;SACD;QAfD,KAAAjD,SAAA,CAAAK,CAAA,EAAAD,EAAAA,CAAAA,CAAAA,KAAA,GAAAJ,SAAA,CAAAM,CAAA,EAAA,EAAAC,IAAA,GAAA;UAAAoH,KAAA,EAAA;AAAA;AAeC,OAAA,CAAA,OAAA5G,GAAA,EAAA;QAAAf,SAAA,CAAAgB,CAAA,CAAAD,GAAA,CAAA;AAAA,OAAA,SAAA;AAAAf,QAAAA,SAAA,CAAAiB,CAAA,EAAA;AAAA;KACF,CAAA;IAAAzB,eAAA,CAAA,IAAA,EAAA,KAAA,EAEa,UACZL,IAAiC,EAEf;AAAA,MAAA,IAAA8E,cAAA;MAAA,KAAA4D,IAAAA,KAAA,GAAAtG,SAAA,CAAAC,MAAA,EADf6F,IAAI,OAAA5C,KAAA,CAAAoD,KAAA,GAAAA,CAAAA,GAAAA,KAAA,WAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAJT,QAAAA,IAAI,CAAAS,KAAA,GAAAvG,CAAAA,CAAAA,GAAAA,SAAA,CAAAuG,KAAA,CAAA;AAAA;AAEP,MAAA,IAAIlJ,GAAkB;AACtB,MAAA,IAAMqE,EAAE,GAAG,SAALA,EAAEA,GAAS;QACf,IAAI;AACFrE,UAAAA,GAAG,GAAGU,KAAI,CAACyI,QAAQ,CAAAR,KAAA,CAAbjI,KAAI,EAAA,CAAUH,IAAI,CAAA,CAAAZ,MAAA,CAAK8I,IAAI,CAAkB,CAAA;AACrD,SAAC,SAAS;UACR/H,KAAI,CAACiH,MAAM,EAAE;AACf;AACA,QAAA,OAAO3H,GAAG;OACX;AAED,MAAA,IAAA,CAAAqF,cAAA,GAAI3E,KAAI,CAACX,OAAO,MAAA,IAAA,IAAAsF,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAcrC,WAAW,MAAAqC,IAAAA,IAAAA,cAAA,eAAzBA,cAAA,CAA2B1B,GAAG,EAAE;QAClC,IAAI,OAAO,IAAIpD,IAAI,EAAE;AAAA,UAAA,IAAA6I,qBAAA;UACnB,CAAAA,qBAAA,GAAA1I,KAAI,CAACX,OAAO,CAACiD,WAAW,EAACW,GAAG,CAAAgF,KAAA,CAAAS,qBAAA,EAAC7I,CAAAA,IAAI,EAAE8D,EAAE,CAAA1E,CAAAA,MAAA,CAAAiJ,kBAAA,CAAMH,IAAI,CAAA,CAAS,CAAC;AAC3D,SAAC,MAAM;AACL/H,UAAAA,KAAI,CAACX,OAAO,CAACiD,WAAW,CAACW,GAAG,CAACpD,IAAI,EAAE8D,EAAE,EAAEoE,IAAI,CAAC,CAAC,CAAmB,CAAC;AACnE;AACF,OAAC,MAAM;AACLpE,QAAAA,EAAE,EAAE;AACN;AAEA,MAAA,OAAOrE,GAAG;KACX,CAAA;IAAA,IAvGoB2G,CAAAA,WAAwB,GAAxBA,WAAwB;IAAA,IACxB4B,CAAAA,eAAgC,GAAhCA,eAAgC;IAAA,IAChCxI,CAAAA,OAAsB,GAAtBA,OAAsB;AACxC;EAAC,OAAAuC,YAAA,CAAAgG,SAAA,EAAA,CAAA;IAAA/F,GAAA,EAAA,gBAAA;IAAAT,KAAA,EAsGJ,SAAQuH,cAAcA,CACpBC,OAA8B,EAC9BC,GAAgC,EAChCxJ,OAA0B,EACd;AAAA,MAAA,IAAA2C,MAAA,GAAA,IAAA;QAAAsD,cAAA;AACZ,MAAA,IAAIwD,KAA+B;AACnC,MAAA,IAAMnF,IAAE,GAAG,SAALA,EAAEA,GAAS;AAAA,QAAA,IAAAoF,gBAAA;QACf,IAAIC,UAAU,GAAG,IAAI;QACrB,IAAMvI,OAAO,GAAGuB,MAAI,CAACiE,WAAW,CAAC1C,KAAK,CAACqF,OAAO,CAAC;AAC/CnI,QAAAA,OAAO,CAACsE,SAAS,CAACtB,GAAG,CAACoF,GAAG,CAAC;AAE1BC,QAAAA,KAAK,GAAG,SAARA,KAAKA,GAAS;AAAA,UAAA,IAAAG,cAAA;UACZ,IAAI,CAACD,UAAU,EAAE;AACf,YAAA;AACF;AAEA,UAAA,IAAMrF,GAAE,GAAG,SAALA,EAAEA,GAAS;AAAA,YAAA,IAAAuF,eAAA;AACfF,YAAAA,UAAU,GAAG,KAAK;AAClBvI,YAAAA,OAAO,CAACsE,SAAS,CAAO,QAAA,CAAA,CAAC8D,GAAG,CAAC;AAE7B,YAAA,IAAIpI,OAAO,CAAC+C,SAAS,CAACgC,IAAI,KAAK,CAAC,IAAI/E,OAAO,CAACsE,SAAS,CAACS,IAAI,KAAK,CAAC,EAAE;AAChExD,cAAAA,MAAI,CAACiE,WAAW,CAAC3B,UAAU,CAACsE,OAAO,CAAC;AACtC;AAEAvJ,YAAAA,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,IAAA,CAAA6J,eAAA,GAAP7J,OAAO,CAAEuE,MAAM,MAAA,IAAA,IAAAsF,eAAA,KAAA,KAAA,CAAA,IAAfA,eAAA,CAAiBC,gBAAgB,CAAC,OAAO,EAAExF,GAAE,CAAC;WAC/C;AAED,UAAA,IAAA,CAAAsF,cAAA,GAAIjH,MAAI,CAAC3C,OAAO,MAAA,IAAA,IAAA4J,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAc3G,WAAW,MAAA2G,IAAAA,IAAAA,cAAA,eAAzBA,cAAA,CAA2BH,KAAK,EAAE;AACpC9G,YAAAA,MAAI,CAAC3C,OAAO,CAACiD,WAAW,CAACwG,KAAK,CAACF,OAAO,EAAEC,GAAG,EAAElF,GAAE,CAAC;;AAEhD;AACA;AACA,YAAA,IAAIqF,UAAU,EAAE;AACd,cAAA,MAAM,IAAIpG,KAAK,CAAC,+BAA+B,CAAC;AAClD;AACF,WAAC,MAAM;AACLe,YAAAA,GAAE,EAAE;AACN;SACD;AAEDtE,QAAAA,OAAO,aAAPA,OAAO,KAAA,KAAA,CAAA,IAAA,CAAA0J,gBAAA,GAAP1J,OAAO,CAAEuE,MAAM,MAAA,IAAA,IAAAmF,gBAAA,KAAA,KAAA,CAAA,IAAfA,gBAAA,CAAiBI,gBAAgB,CAAC,OAAO,EAAEL,KAAK,CAAC;OAClD;AAED,MAAA,IAAA,CAAAxD,cAAA,GAAI,IAAI,CAACjG,OAAO,MAAA,IAAA,IAAAiG,cAAA,KAAAA,KAAAA,CAAAA,IAAAA,CAAAA,cAAA,GAAZA,cAAA,CAAchD,WAAW,MAAAgD,IAAAA,IAAAA,cAAA,eAAzBA,cAAA,CAA2B8D,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC/J,OAAO,CAACiD,WAAW,CAAC8G,GAAG,CAACR,OAAO,EAAEC,GAAG,EAAElF,IAAE,CAAC;AAChD,OAAC,MAAM;AACLA,QAAAA,IAAE,EAAE;AACN;MAEA,IAAI,CAACmF,KAAK,EAAE;AACV,QAAA,MAAM,IAAIlG,KAAK,CAAC,+BAA+B,CAAC;AAClD;AAEA,MAAA,OAAOkG,KAAK;AACd;AAAC,GAAA,EAAA;IAAAjH,GAAA,EAAA,KAAA;IAAAT,KAAA,EAED,SAAAgI,GAAGA,CACDC,QAAyD,EACzDR,GAAgC,EAChCxJ,OAA0B,EACd;AAAA,MAAA,IAAAwD,MAAA,GAAA,IAAA;AACZ,MAAA,IAAIsC,KAAK,CAACmE,OAAO,CAACD,QAAQ,CAAC,IAAIA,QAAQ,CAACnH,MAAM,KAAK,CAAC,EAAE;QACpD,OAAO,YAAA;AAAA,UAAA,OAAM,KAAK,CAAC;AAAA,SAAA;AACrB;AAEA,MAAA,IAAIiD,KAAK,CAACmE,OAAO,CAACD,QAAQ,CAAC,IAAIA,QAAQ,CAACnH,MAAM,KAAK,CAAC,EAAE;AACpD,QAAA,OAAO,IAAI,CAACyG,cAAc,CAACU,QAAQ,CAAC,CAAC,CAAC,EAAER,GAAG,EAAExJ,OAAO,CAAC;OACtD,MAAM,IAAI,CAAC8F,KAAK,CAACmE,OAAO,CAACD,QAAQ,CAAC,EAAE;QACnC,OAAO,IAAI,CAACV,cAAc,CAACU,QAAQ,EAAER,GAAG,EAAExJ,OAAO,CAAC;AACpD;AAEA,MAAA,IAAMkK,YAAY,GAAG,IAAIvE,GAAG,EAAc;AAC1CqE,MAAAA,QAAQ,CAACG,OAAO,CAAC,UAAC3J,IAAI,EAAK;AACzB0J,QAAAA,YAAY,CAAC9F,GAAG,CAACZ,MAAI,CAAC8F,cAAc,CAAC9I,IAAI,EAAEgJ,GAAG,EAAExJ,OAAO,CAAC,CAAC;AAC3D,OAAC,CAAC;AAEF,MAAA,IAAMyJ,KAAK,GAAG,SAARA,KAAKA,GAAS;AAAA,QAAA,IAAA5E,UAAA,GAAAvD,0BAAA,CACQ4I,YAAY,CAAA;UAAAnF,MAAA;AAAA,QAAA,IAAA;UAAtC,KAAAF,UAAA,CAAAnD,CAAA,EAAAqD,EAAAA,CAAAA,CAAAA,MAAA,GAAAF,UAAA,CAAAlD,CAAA,EAAAC,EAAAA,IAAA,GAAwC;AAAA,YAAA,IAA7BwI,WAAW,GAAArF,MAAA,CAAAhD,KAAA;AACpBqI,YAAAA,WAAW,EAAE;AACf;AAAC,SAAA,CAAA,OAAAhI,GAAA,EAAA;UAAAyC,UAAA,CAAAxC,CAAA,CAAAD,GAAA,CAAA;AAAA,SAAA,SAAA;AAAAyC,UAAAA,UAAA,CAAAvC,CAAA,EAAA;AAAA;OACF;AAED,MAAA,OAAOmH,KAAK;AACd;AAAC,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;AAGI,SAASY,WAAWA,GAAU;AACnC,EAAA,IAAMzD,WAAW,GAAG,IAAIlG,WAAW,EAAE;AACrC,EAAA,IAAM8H,eAAe,GAAG,IAAI9B,eAAe,EAAE;AAE7C,EAAA,OAAO,IAAI6B,SAAS,CAAC3B,WAAW,EAAE4B,eAAe,CAAC;AACpD;AAEA,IAAI8B,YAA+B,GAAGnJ,SAAS;AACxC,SAASoJ,eAAeA,GAAU;EACvC,IAAI,CAACD,YAAY,EAAE;IACjBA,YAAY,GAAGD,WAAW,EAAE;AAC9B;AACA,EAAA,OAAOC,YAAY;AACrB;;;;"}
package/debug/index.cjs CHANGED
@@ -559,7 +559,7 @@ var AtomManager = /*#__PURE__*/function () {
559
559
  }
560
560
  var computedInterceptor = (_this$options = this.options) === null || _this$options === void 0 || (_this$options = _this$options.interceptor) === null || _this$options === void 0 ? void 0 : _this$options.computed;
561
561
  if (!computedInterceptor) {
562
- return this.computeComputedAtom(atom);
562
+ return this.computeComputedAtom(atom, ignoreMounted);
563
563
  }
564
564
  var result = {
565
565
  called: false
@@ -567,7 +567,7 @@ var AtomManager = /*#__PURE__*/function () {
567
567
  computedInterceptor(atom, function () {
568
568
  result = {
569
569
  called: true,
570
- data: _this2.computeComputedAtom(atom)
570
+ data: _this2.computeComputedAtom(atom, ignoreMounted)
571
571
  };
572
572
  return result.data.val;
573
573
  });
@@ -581,6 +581,7 @@ var AtomManager = /*#__PURE__*/function () {
581
581
  value: function computeComputedAtom(atom) {
582
582
  var _this3 = this,
583
583
  _this$options2;
584
+ var ignoreMounted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
584
585
  var self = atom;
585
586
  var atomState = this.atomStateMap.get(self);
586
587
  if (!atomState) {
@@ -594,7 +595,7 @@ var AtomManager = /*#__PURE__*/function () {
594
595
  var readDeps = new Map();
595
596
  atomState.dependencies = readDeps;
596
597
  var wrappedGet = function wrappedGet(depAtom) {
597
- var depState = _this3.readAtomState(depAtom);
598
+ var depState = _this3.readAtomState(depAtom, ignoreMounted);
598
599
 
599
600
  // get 可能发生在异步过程中,当重复调用时,只有最新的 get 过程会修改 deps
600
601
  if (atomState.dependencies === readDeps) {
@@ -1153,15 +1154,15 @@ var ConsoleInterceptor = /*#__PURE__*/_createClass(function ConsoleInterceptor(w
1153
1154
  console.groupEnd();
1154
1155
  });
1155
1156
  _defineProperty(this, "set", function (atom$, fn) {
1157
+ var _console;
1156
1158
  if (!_this.shouldLog(atom$, 'set')) {
1157
1159
  fn();
1158
1160
  return;
1159
1161
  }
1160
- console.group('[R][SET] ' + atom$.toString());
1161
1162
  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
1162
1163
  args[_key - 2] = arguments[_key];
1163
1164
  }
1164
- console.log('arg:', args);
1165
+ (_console = console).group.apply(_console, ['[R][SET] ' + atom$.toString(), '('].concat(args, [')']));
1165
1166
  console.log('ret:', fn());
1166
1167
  console.groupEnd();
1167
1168
  });
@@ -1230,3 +1231,4 @@ function createDebugStore() {
1230
1231
  }
1231
1232
 
1232
1233
  exports.createDebugStore = createDebugStore;
1234
+ //# sourceMappingURL=index.cjs.map