ccstate 4.5.0 → 4.6.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
@@ -260,6 +260,66 @@ Here's a simple rule of thumb:
260
260
 
261
261
  That's it! Next, you can learn how to use CCState in React.
262
262
 
263
+ ## Patterns
264
+
265
+ `CCState` has some unique programming patterns.
266
+
267
+ ### Computed with Arguments
268
+
269
+ In some cases, the computation process of `Computed` relies on some external parameters. However, the function definition of `Computed` prevents it from receiving parameters, which is intentional, as the function's parameters do not have the ability to be reactively subscribed.
270
+
271
+ There are two techniques that allow `Computed` to handle external parameters. Below is a simple example to introduce these two methods.
272
+
273
+ #### Args as State/Computed
274
+
275
+ Consider a simple scenario where the API for obtaining user information requires a userId. Defining this userId as a `State`/`Computed` allows it to be retrieved during the process of obtaining user information in Computed.
276
+
277
+ ```javascript
278
+ const currentUserId$ = state<0>
279
+ const currentUser$ = computed(get => {
280
+ const userId = get(currentUserId$)
281
+ return fetch(`/api/users/${userId}`);
282
+ })
283
+ ```
284
+
285
+ This technology is very useful for singleton data such as "currently logged-in user" and "currently opened product," as it directly reflects the responsive definition process of this data.
286
+
287
+ But for some types of data like list items, this technique is difficult to define a global id list `State`/`Computed`.
288
+
289
+ #### Args by function closure
290
+
291
+ We could pass some data into the calculation process of `Computed` through closure, for example:
292
+
293
+ ```javascript
294
+ function getUser(userId) {
295
+ return computed((get) => {
296
+ return fetch(`/api/users/${userId}`);
297
+ });
298
+ }
299
+
300
+ // Use such a list externally
301
+ const userList$ = state([]);
302
+ const addUser$ = command(({ set }, userId) => {
303
+ set(userList$, (x) => {
304
+ return [...x, getUser(userId)];
305
+ });
306
+ });
307
+ ```
308
+
309
+ It is easy to see that `userId` passed by the function parameters do not have reactive capabilities. Therefore, we can use this technique to distinguish the semantics of reactive arguments and non-reactive arguments.
310
+
311
+ #### Other Technologies
312
+
313
+ The `Command` has the ability to receive parameters, so we can encapsulate the above example into a `Command`:
314
+
315
+ ```javascript
316
+ const getUser$ = command(({ set, get }, userId, sigal) => {
317
+ return fetch(`/api/users/${userId}`, { signal });
318
+ });
319
+ ```
320
+
321
+ However, this method requires that the caller must also be a `Command` in order to access the `set` method, which can easily lead to destructive passing of `Command`. If a `Command` itself does not produce side effects, then it should be considered to be written as a `Computed`.
322
+
263
323
  ## Using in React
264
324
 
265
325
  [Using in React](docs/react.md)
package/core/index.cjs CHANGED
@@ -360,13 +360,13 @@ function tryGetCached(readComputed, computed$, context, mutation) {
360
360
  if (!signalState) {
361
361
  return undefined;
362
362
  }
363
- if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
364
- return undefined;
365
- }
366
- if (signalState.mounted) {
363
+ if (!(mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) && signalState.mounted) {
367
364
  return signalState;
368
365
  }
369
366
  if (checkEpoch(readComputed, signalState, context, mutation)) {
367
+ if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
368
+ mutation.dirtyMarkers["delete"](computed$.id);
369
+ }
370
370
  return signalState;
371
371
  }
372
372
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/core/signal/factory.ts","../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../../types/core/signal';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (id: number, prefix: string, debugLabel?: string) => {\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 id = globalId++;\n const ret: State<T> = {\n id,\n init,\n toString: generateToString(id, 'S', 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 id = globalId++;\n const ret: Computed<T> = {\n id,\n read,\n toString: generateToString(id, 'CPT', options?.debugLabel),\n };\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 id = globalId++;\n const ret: Command<T, Args> = {\n id,\n write,\n toString: generateToString(id, 'CMD', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n CallbackFunc,\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorNotify,\n InterceptorSet,\n InterceptorSub,\n InterceptorUnsub,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\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\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withSubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorSub,\n) {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withUnsubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorUnsub,\n): void {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withNotifyInterceptor<T>(fn: () => T, callback$: CallbackFunc<T>, interceptor?: InterceptorNotify): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(callback$, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Signal } from '../../../types/core/signal';\nimport type { StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n if (mutation?.dirtyMarkers.has(computed$.id)) {\n return undefined;\n }\n\n if (signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n const evalVal = computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n );\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if (!shouldDistinct(computed$, evalVal, context)) {\n computedState.val = evalVal;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.dirtyMarkers.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldValue = context.stateMap.get(computed$)?.val;\n oldValues.set(computed$, oldValue);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n if (oldValues.has(computed$) && oldValues.get(computed$) === computedState.val) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.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\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n dirtyMarkers: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n mutation?.dirtyMarkers.delete(computed$.id);\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n return readSignal(signal, context, mutation).val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\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","id","prefix","debugLabel","label","concat","String","state","init","options","ret","toString","computed","read","command","write","withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","dirtyMarkers","has","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","evalVal","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","_iterator4","_step4","_context$stateMap$get2","oldValue","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get3","updater","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","subSingleSignal","_context$interceptor5","unsub","_context$interceptor4","addEventListener","once","sub","notify","_loop","_context$interceptor6","cachedState","innerMount","signals$","isArray","controller","AbortSignal","any","forEach","innerSet","StoreImpl","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","_createClass","targets$","cb$","createStore","defaultStore","getDefaultStore"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/core/signal/factory.ts","../../src/core/interceptor.ts","../../src/core/typing-util.ts","../../src/core/signal/signal.ts","../../src/core/signal/computed.ts","../../src/core/store/set.ts","../../src/core/signal/state.ts","../../src/core/store/sub.ts","../../src/core/store/store.ts"],"sourcesContent":["import type { Computed, Command, Read, State, Write } from '../../../types/core/signal';\n\ninterface Options {\n debugLabel?: string;\n}\n\nlet globalId = 0;\n\nconst generateToString = (id: number, prefix: string, debugLabel?: string) => {\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 id = globalId++;\n const ret: State<T> = {\n id,\n init,\n toString: generateToString(id, 'S', 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 id = globalId++;\n const ret: Computed<T> = {\n id,\n read,\n toString: generateToString(id, 'CPT', options?.debugLabel),\n };\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 id = globalId++;\n const ret: Command<T, Args> = {\n id,\n write,\n toString: generateToString(id, 'CMD', options?.debugLabel),\n };\n if (options?.debugLabel) {\n ret.debugLabel = options.debugLabel;\n }\n return ret;\n}\n","import type { Command, Computed, Signal, State } from '../../types/core/signal';\nimport type {\n CallbackFunc,\n ComputedState,\n InterceptorComputed,\n InterceptorGet,\n InterceptorNotify,\n InterceptorSet,\n InterceptorSub,\n InterceptorUnsub,\n SetArgs,\n} from '../../types/core/store';\n\ntype DataWithCalledState<T> =\n | {\n called: false;\n }\n | {\n called: true;\n data: T;\n };\n\nexport function withSetInterceptor<T, Args extends SetArgs<T, unknown[]>>(\n fn: () => T | undefined,\n writable$: State<T> | Command<T, Args>,\n interceptor: InterceptorSet | undefined,\n ...args: Args\n): T | undefined {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T | undefined>;\n const wrappedFn = () => {\n result = { called: true, data: fn() };\n return result.data;\n };\n if ('write' in writable$) {\n interceptor(writable$, wrappedFn, ...args);\n } else {\n interceptor(writable$, wrappedFn, args[0]);\n }\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withGetInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withComputedInterceptor<T>(\n fn: () => ComputedState<T>,\n signal: Computed<T>,\n interceptor?: InterceptorComputed,\n): ComputedState<T> {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<ComputedState<T>>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\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\nexport function withGeValInterceptor<T>(fn: () => T, signal: Signal<T>, interceptor?: InterceptorGet): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(signal, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n\nexport function withSubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorSub,\n) {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withUnsubInterceptor<T>(\n fn: () => void,\n signal: Signal<T>,\n callback$: Command<unknown, []>,\n interceptor?: InterceptorUnsub,\n): void {\n if (!interceptor) {\n fn();\n return;\n }\n\n let result = { called: false } as DataWithCalledState<void>;\n\n interceptor(signal, callback$, () => {\n result = { called: true, data: undefined };\n fn();\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n}\n\nexport function withNotifyInterceptor<T>(fn: () => T, callback$: CallbackFunc<T>, interceptor?: InterceptorNotify): T {\n if (!interceptor) {\n return fn();\n }\n\n let result = { called: false } as DataWithCalledState<T>;\n\n interceptor(callback$, () => {\n result = { called: true, data: fn() };\n return result.data;\n });\n\n if (!result.called) {\n throw new Error('interceptor must call fn sync');\n }\n\n return result.data;\n}\n","import type { Computed, Signal } from '../../types/core/signal';\nimport type { ComputedState, SignalState } from '../../types/core/store';\n\nexport function canReadAsCompute<T>(atom: Signal<T>): atom is Computed<T> {\n return 'read' in atom;\n}\n\nexport function isComputedState<T>(state: SignalState<T>): state is ComputedState<T> {\n return 'dependencies' in state;\n}\n","import type { Signal } from '../../../types/core/signal';\nimport type { StoreContext } from '../../../types/core/store';\n\nexport function currentValue<T>(signal: Signal<T>, context: StoreContext): T | undefined {\n return context.stateMap.get(signal)?.val as T | undefined;\n}\n\nexport function shouldDistinct<T>(signal: Signal<T>, value: T, context: StoreContext) {\n return currentValue(signal, context) === value;\n}\n","import type { Computed, Getter, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mount,\n Mutation,\n ReadComputed,\n ReadSignal,\n StoreContext,\n Unmount,\n} from '../../../types/core/store';\nimport { withGeValInterceptor } from '../interceptor';\nimport { canReadAsCompute } from '../typing-util';\nimport { shouldDistinct } from './signal';\n\nfunction checkEpoch<T>(\n readComputed: ReadComputed,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): boolean {\n for (const [dep, epoch] of computedState.dependencies.entries()) {\n const depEpoch = canReadAsCompute(dep)\n ? readComputed(dep, context, mutation).epoch\n : context.stateMap.get(dep)?.epoch;\n\n if (depEpoch !== epoch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function tryGetCached<T>(\n readComputed: ReadComputed,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> | undefined {\n const signalState = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!signalState) {\n return undefined;\n }\n\n if (!mutation?.dirtyMarkers.has(computed$.id) && signalState.mounted) {\n return signalState;\n }\n\n if (checkEpoch(readComputed, signalState, context, mutation)) {\n if (mutation?.dirtyMarkers.has(computed$.id)) {\n mutation.dirtyMarkers.delete(computed$.id);\n }\n return signalState;\n }\n\n return undefined;\n}\n\nfunction wrapGet<T>(\n readSignal: ReadSignal,\n mount: Mount,\n callerComputed$: Computed<T>,\n callerState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): [Getter, Map<Signal<unknown>, number>] {\n const readDeps = new Map<Signal<unknown>, number>();\n\n return [\n (dep$) => {\n const depState = readSignal(dep$, context, mutation);\n\n if (callerState.dependencies === readDeps) {\n readDeps.set(dep$, depState.epoch);\n\n const callerMounted = !!callerState.mounted;\n if (callerMounted && !depState.mounted) {\n mount(dep$, context, mutation).readDepts.add(callerComputed$);\n } else if (callerMounted && depState.mounted) {\n depState.mounted.readDepts.add(callerComputed$);\n }\n }\n\n return depState.val;\n },\n readDeps,\n ];\n}\n\nfunction getOrInitComputedState<T>(computed$: Computed<T>, context: StoreContext): ComputedState<T> {\n let computedState: ComputedState<T> | undefined = context.stateMap.get(computed$) as ComputedState<T> | undefined;\n if (!computedState) {\n computedState = {\n dependencies: new Map<Signal<unknown>, number>(),\n epoch: -1,\n } as ComputedState<T>;\n context.stateMap.set(computed$, computedState);\n }\n\n return computedState;\n}\n\nfunction cleanupMissingDependencies<T>(\n unmount: Unmount,\n computed$: Computed<T>,\n lastDeps: Map<Signal<unknown>, number>,\n currDeps: Map<Signal<unknown>, number>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const key of lastDeps.keys()) {\n if (!currDeps.has(key)) {\n const depState = context.stateMap.get(key);\n depState?.mounted?.readDepts.delete(computed$);\n unmount(key, context, mutation);\n }\n }\n}\n\nexport function evaluateComputed<T>(\n readSignal: ReadSignal,\n mount: Mount,\n unmount: Unmount,\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> {\n const computedState = getOrInitComputedState(computed$, context);\n\n const lastDeps = computedState.dependencies;\n\n const [_get, dependencies] = wrapGet(readSignal, mount, computed$, computedState, context, mutation);\n computedState.dependencies = dependencies;\n\n const evalVal = computed$.read(\n function <U>(depAtom: Signal<U>) {\n return withGeValInterceptor(() => _get(depAtom), depAtom, context.interceptor?.get);\n },\n {\n get signal() {\n computedState.abortController?.abort(`abort ${computed$.debugLabel ?? 'anonymous'} atom`);\n computedState.abortController = new AbortController();\n return computedState.abortController.signal;\n },\n },\n );\n\n cleanupMissingDependencies(unmount, computed$, lastDeps, dependencies, context, mutation);\n\n if (!shouldDistinct(computed$, evalVal, context)) {\n computedState.val = evalVal;\n computedState.epoch += 1;\n }\n\n return computedState;\n}\n","import type { Command, State, Computed, Signal, Updater, StateArg } from '../../../types/core/signal';\nimport type {\n Mutation,\n ReadComputed,\n StoreContext,\n StateState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { shouldDistinct } from '../signal/signal';\n\nfunction pushDirtyMarkers(signalState: StateState<unknown>, context: StoreContext, mutation: Mutation) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n mutation.dirtyMarkers.add(computed$.id);\n\n const computedState = context.stateMap.get(computed$);\n // This computed$ is read from other computed$'s readDepts, so it must not be null and must have mounted\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n for (const dep of computedState!.mounted!.readDepts) {\n nextQueue.push(dep);\n }\n }\n\n queue = nextQueue;\n }\n}\n\nfunction pullEvaluate(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n let queue: Computed<unknown>[] = Array.from(signalState.mounted?.readDepts ?? []);\n\n for (const listener of signalState.mounted?.listeners ?? []) {\n mutation.pendingListeners.add(listener);\n }\n\n const oldValues = new Map<Computed<unknown>, unknown>();\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const oldValue = context.stateMap.get(computed$)?.val;\n oldValues.set(computed$, oldValue);\n\n const readDepts = context.stateMap.get(computed$)?.mounted?.readDepts;\n if (readDepts) {\n for (const dep of Array.from(readDepts)) {\n nextQueue.push(dep);\n }\n }\n }\n queue = nextQueue;\n }\n\n queue = Array.from(signalState.mounted?.readDepts ?? []);\n\n while (queue.length > 0) {\n const nextQueue: Computed<unknown>[] = [];\n for (const computed$ of queue) {\n const computedState = readComputed(computed$, context, mutation);\n if (oldValues.has(computed$) && oldValues.get(computed$) === computedState.val) {\n continue;\n }\n\n if (computedState.mounted?.listeners) {\n for (const listener of computedState.mounted.listeners) {\n mutation.pendingListeners.add(listener);\n }\n }\n\n const readDepts = computedState.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\nfunction propagationChanges(\n readComputed: ReadComputed,\n signalState: StateState<unknown>,\n context: StoreContext,\n mutation: Mutation,\n) {\n pushDirtyMarkers(signalState, context, mutation);\n pullEvaluate(readComputed, signalState, context, mutation);\n}\n\nfunction innerSetState<T>(\n readComputed: ReadComputed,\n signal$: State<T>,\n context: StoreContext,\n mutation: Mutation,\n val: StateArg<T>,\n) {\n let newValue: T;\n if (typeof val === 'function') {\n const updater = val as Updater<T>;\n newValue = updater((context.stateMap.get(signal$)?.val as T | undefined) ?? signal$.init);\n } else {\n newValue = val;\n }\n\n if (shouldDistinct(signal$, newValue, context)) {\n return;\n }\n\n const signalState = context.stateMap.get(signal$);\n if (!signalState) {\n context.stateMap.set(signal$, {\n val: newValue,\n epoch: 0,\n });\n return;\n }\n\n signalState.val = newValue;\n signalState.epoch += 1;\n propagationChanges(readComputed, signalState, context, mutation);\n\n return undefined;\n}\n\nexport function set<T, Args extends SetArgs<T, unknown[]>>(\n readComputed: ReadComputed,\n writable$: State<T> | Command<T, Args>,\n context: StoreContext,\n mutation: Mutation,\n ...args: Args\n): undefined | T {\n if ('read' in writable$) {\n return;\n }\n\n if ('write' in writable$) {\n return writable$.write(mutation.visitor, ...args);\n }\n\n innerSetState(readComputed, writable$, context, mutation, args[0]);\n return;\n}\n\n/**\n * Creates a mutation operation context. The Mutation remains unique throughout\n * the mutation cycle and can track side effects produced by this mutation operation\n *\n * This tracking is implemented by coloring the visitor function, so the Mutation\n * needs to wrap get & set functions and ensure that all get & set operations\n * executed in the mutation context come from the same Mutation\n *\n * @param context\n * @param get\n * @param set\n * @returns\n */\nexport function createMutation(context: StoreContext, get: StoreGet, set: StoreSet): Mutation {\n const mutation: Mutation = {\n dirtyMarkers: new Set(),\n pendingListeners: new Set(),\n visitor: {\n get: <T>(signal$: Signal<T>) => {\n return get(signal$, context, mutation);\n },\n set: <T, Args extends SetArgs<T, unknown[]>>(\n signal$: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(signal$, context, ...args);\n },\n },\n };\n\n return mutation;\n}\n","import type { State } from '../../../types/core/signal';\nimport type { StateState, StoreContext } from '../../../types/core/store';\n\nexport function readState<T>(state: State<T>, context: StoreContext): StateState<T> {\n const atomState = context.stateMap.get(state);\n if (!atomState) {\n const initState = {\n val: state.init,\n epoch: 0,\n };\n context.stateMap.set(state, initState);\n return initState as StateState<T>;\n }\n\n return atomState as StateState<T>;\n}\n","import type { Command, Computed, Signal } from '../../../types/core/signal';\nimport type {\n ComputedState,\n Mounted,\n Mutation,\n ReadSignal,\n SignalState,\n StoreContext,\n} from '../../../types/core/store';\nimport { withNotifyInterceptor, withSubInterceptor, withUnsubInterceptor } from '../interceptor';\nimport { isComputedState } from '../typing-util';\n\nfunction unmountComputedDependencies<T>(\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n context.stateMap.get(dep)?.mounted?.readDepts.delete(computed$ as Computed<unknown>);\n unmount(dep, context, mutation);\n }\n}\n\nfunction mountComputedDependencies<T>(\n readSignal: ReadSignal,\n computed$: Computed<T>,\n computedState: ComputedState<T>,\n context: StoreContext,\n mutation?: Mutation,\n) {\n for (const [dep] of Array.from(computedState.dependencies)) {\n const mounted = mount(readSignal, dep, context, mutation);\n mounted.readDepts.add(computed$ as Computed<unknown>);\n }\n}\n\nfunction initMount<T>(readSignal: ReadSignal, signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n context.interceptor?.mount?.(signal$);\n\n const signalState = readSignal(signal$, context, mutation);\n\n signalState.mounted = signalState.mounted ?? {\n listeners: new Set(),\n readDepts: new Set(),\n };\n\n if (isComputedState(signalState)) {\n mountComputedDependencies(readSignal, signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n return signalState.mounted;\n}\n\nexport function mount<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n context: StoreContext,\n mutation?: Mutation,\n): Mounted {\n const mounted = context.stateMap.get(signal$)?.mounted;\n if (mounted) {\n return mounted;\n }\n\n return initMount(readSignal, signal$, context, mutation);\n}\n\nfunction doUnmount<T>(\n signal$: Signal<T>,\n signalState: SignalState<T>,\n context: StoreContext,\n mutation?: Mutation,\n): void {\n context.interceptor?.unmount?.(signal$);\n\n if (isComputedState(signalState)) {\n unmountComputedDependencies(signal$ as Computed<unknown>, signalState, context, mutation);\n }\n\n signalState.mounted = undefined;\n}\n\nexport function unmount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): void {\n const signalState = context.stateMap.get(signal$);\n if (!signalState?.mounted || signalState.mounted.listeners.size || signalState.mounted.readDepts.size) {\n return;\n }\n\n doUnmount(signal$, signalState, context, mutation);\n}\n\nexport function subSingleSignal<T>(\n readSignal: ReadSignal,\n signal$: Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n signal: AbortSignal,\n) {\n withSubInterceptor(\n () => {\n const mounted = mount(readSignal, signal$, context);\n mounted.listeners.add(callback$);\n\n const unsub = () => {\n withUnsubInterceptor(\n () => {\n mounted.listeners.delete(callback$);\n\n if (mounted.readDepts.size === 0 && mounted.listeners.size === 0) {\n unmount(signal$, context);\n }\n },\n signal$,\n callback$,\n context.interceptor?.unsub,\n );\n };\n\n signal.addEventListener('abort', unsub, {\n once: true,\n });\n },\n signal$,\n callback$,\n context.interceptor?.sub,\n );\n}\n\nexport function notify(context: StoreContext, mutation: Mutation) {\n const pendingListeners = mutation.pendingListeners;\n mutation.pendingListeners = new Set();\n\n for (const listener of pendingListeners) {\n withNotifyInterceptor(\n () => {\n return listener.write(mutation.visitor);\n },\n listener,\n context.interceptor?.notify,\n );\n }\n}\n","import type { Command, Getter, Setter, Signal, State, Computed } from '../../../types/core/signal';\nimport type {\n StateMap,\n Store,\n StoreContext,\n StoreOptions,\n SubscribeOptions,\n ComputedState,\n Mounted,\n Mutation,\n ReadComputed,\n SignalState,\n StoreGet,\n StoreSet,\n SetArgs,\n} from '../../../types/core/store';\nimport { evaluateComputed, tryGetCached } from '../signal/computed';\nimport { withComputedInterceptor, withGetInterceptor, withSetInterceptor } from '../interceptor';\nimport { createMutation, set as innerSet } from './set';\nimport { readState } from '../signal/state';\nimport { canReadAsCompute } from '../typing-util';\nimport { mount as innerMount, unmount, subSingleSignal, notify } from './sub';\n\nconst readComputed: ReadComputed = <T>(\n computed$: Computed<T>,\n context: StoreContext,\n mutation?: Mutation,\n): ComputedState<T> => {\n const cachedState = tryGetCached(readComputed, computed$, context, mutation);\n if (cachedState) {\n return cachedState;\n }\n\n mutation?.dirtyMarkers.delete(computed$.id);\n\n return withComputedInterceptor(\n () => {\n return evaluateComputed(readSignal, mount, unmount, computed$, context, mutation);\n },\n computed$,\n context.interceptor?.computed,\n );\n};\n\nfunction readSignal<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): SignalState<T> {\n if (canReadAsCompute(signal$)) {\n return readComputed(signal$, context, mutation);\n }\n\n return readState(signal$, context);\n}\n\nfunction mount<T>(signal$: Signal<T>, context: StoreContext, mutation?: Mutation): Mounted {\n return innerMount(readSignal, signal$, context, mutation);\n}\n\nfunction sub<T>(\n signals$: Signal<T>[] | Signal<T>,\n callback$: Command<unknown, []>,\n context: StoreContext,\n options?: SubscribeOptions,\n): () => void {\n if (Array.isArray(signals$) && signals$.length === 0) {\n return () => void 0;\n }\n\n const controller = new AbortController();\n const signal = options?.signal ? AbortSignal.any([controller.signal, options.signal]) : controller.signal;\n\n if (!Array.isArray(signals$)) {\n subSingleSignal(readSignal, signals$, callback$, context, signal);\n } else {\n signals$.forEach((atom) => {\n subSingleSignal(readSignal, atom, callback$, context, signal);\n });\n }\n\n return () => {\n controller.abort();\n };\n}\n\nconst get: StoreGet = (signal, context, mutation) => {\n return withGetInterceptor(\n () => {\n return readSignal(signal, context, mutation).val;\n },\n signal,\n context.interceptor?.get,\n );\n};\n\nconst set: StoreSet = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n context: StoreContext,\n ...args: Args\n): T | undefined => {\n return withSetInterceptor<T, Args>(\n () => {\n const mutation = createMutation(context, get, set);\n\n let ret: T | undefined;\n try {\n ret = innerSet<T, Args>(readComputed, atom, context, mutation, ...args);\n } finally {\n notify(context, mutation);\n }\n return ret;\n },\n atom,\n context.interceptor?.set,\n ...args,\n );\n};\n\nexport class StoreImpl implements Store {\n protected readonly stateMap: StateMap = new WeakMap();\n protected readonly context: StoreContext;\n\n constructor(protected readonly options?: StoreOptions) {\n this.context = {\n stateMap: this.stateMap,\n interceptor: this.options?.interceptor,\n };\n }\n\n get: Getter = <T>(atom: Signal<T>): T => {\n return get(atom, this.context);\n };\n\n set: Setter = <T, Args extends SetArgs<T, unknown[]>>(\n atom: State<T> | Command<T, Args>,\n ...args: Args\n ): undefined | T => {\n return set<T, Args>(atom, this.context, ...args);\n };\n\n sub(\n targets$: Signal<unknown>[] | Signal<unknown>,\n cb$: Command<unknown, unknown[]>,\n options?: SubscribeOptions,\n ): () => void {\n return sub(targets$, cb$, this.context, options);\n }\n}\n\nexport function createStore(): Store {\n return new StoreImpl();\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","id","prefix","debugLabel","label","concat","String","state","init","options","ret","toString","computed","read","command","write","withSetInterceptor","fn","writable$","interceptor","result","called","wrappedFn","data","_len","arguments","length","args","Array","_key","apply","Error","withGetInterceptor","signal","withComputedInterceptor","val","withGeValInterceptor","withSubInterceptor","callback$","undefined","withUnsubInterceptor","withNotifyInterceptor","canReadAsCompute","atom","isComputedState","currentValue","context","_context$stateMap$get","stateMap","get","shouldDistinct","value","checkEpoch","readComputed","computedState","mutation","_iterator","_createForOfIteratorHelper","dependencies","entries","_step","s","n","done","_step$value","_slicedToArray","dep","epoch","depEpoch","err","e","f","tryGetCached","computed$","signalState","dirtyMarkers","has","mounted","wrapGet","readSignal","mount","callerComputed$","callerState","readDeps","Map","dep$","depState","set","callerMounted","readDepts","add","getOrInitComputedState","cleanupMissingDependencies","unmount","lastDeps","currDeps","_iterator2","keys","_step2","key","_depState$mounted","evaluateComputed","_wrapGet","_wrapGet2","_get","evalVal","depAtom","_context$interceptor","_computedState$abortC","_computed$$debugLabel","abortController","abort","AbortController","pushDirtyMarkers","_signalState$mounted$","_signalState$mounted","queue","from","nextQueue","push","pullEvaluate","_signalState$mounted$2","_signalState$mounted2","_signalState$mounted$3","_signalState$mounted3","_signalState$mounted$4","_signalState$mounted4","_iterator3","listeners","_step3","listener","pendingListeners","oldValues","_iterator4","_step4","_context$stateMap$get2","oldValue","_i","_Array$from","_iterator5","_step5","_computedState$mounte","_computedState$mounte2","_iterator6","_step6","_i2","_Array$from2","propagationChanges","innerSetState","signal$","newValue","_ref","_context$stateMap$get3","updater","visitor","createMutation","Set","_len2","_key2","readState","atomState","initState","unmountComputedDependencies","_Array$from$_i","mountComputedDependencies","_Array$from2$_i","initMount","_context$interceptor$","call","doUnmount","_context$interceptor2","_context$interceptor3","size","subSingleSignal","_context$interceptor5","unsub","_context$interceptor4","addEventListener","once","sub","notify","_loop","_context$interceptor6","cachedState","innerMount","signals$","isArray","controller","AbortSignal","any","forEach","innerSet","StoreImpl","_this","_this$options","_classCallCheck","_defineProperty","WeakMap","_createClass","targets$","cb$","createStore","defaultStore","getDefaultStore"],"mappings":"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"}
package/core/index.js CHANGED
@@ -358,13 +358,13 @@ function tryGetCached(readComputed, computed$, context, mutation) {
358
358
  if (!signalState) {
359
359
  return undefined;
360
360
  }
361
- if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
362
- return undefined;
363
- }
364
- if (signalState.mounted) {
361
+ if (!(mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) && signalState.mounted) {
365
362
  return signalState;
366
363
  }
367
364
  if (checkEpoch(readComputed, signalState, context, mutation)) {
365
+ if (mutation !== null && mutation !== void 0 && mutation.dirtyMarkers.has(computed$.id)) {
366
+ mutation.dirtyMarkers["delete"](computed$.id);
367
+ }
368
368
  return signalState;
369
369
  }
370
370
  return undefined;