From 6b664a74190a1eff9374409fa6d046e2d26522ca Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sat, 24 Feb 2024 01:01:15 -0500 Subject: [PATCH] tidy up --- .../svelte/src/internal/client/constants.js | 1 - .../src/internal/client/reactivity/props.js | 21 ++++++++ .../src/internal/client/reactivity/sources.js | 26 +++++++++- .../src/internal/client/reactivity/types.d.ts | 13 ++--- .../svelte/src/internal/client/runtime.js | 48 +------------------ packages/svelte/src/internal/index.js | 7 +-- 6 files changed, 51 insertions(+), 65 deletions(-) create mode 100644 packages/svelte/src/internal/client/reactivity/props.js diff --git a/packages/svelte/src/internal/client/constants.js b/packages/svelte/src/internal/client/constants.js index cda8cf9eef..c7433c9b36 100644 --- a/packages/svelte/src/internal/client/constants.js +++ b/packages/svelte/src/internal/client/constants.js @@ -1,4 +1,3 @@ -export const SOURCE = 1; export const DERIVED = 1 << 1; export const EFFECT = 1 << 2; export const PRE_EFFECT = 1 << 3; diff --git a/packages/svelte/src/internal/client/reactivity/props.js b/packages/svelte/src/internal/client/reactivity/props.js new file mode 100644 index 0000000000..99e5048627 --- /dev/null +++ b/packages/svelte/src/internal/client/reactivity/props.js @@ -0,0 +1,21 @@ +/** + * @param {((value?: number) => number)} fn + * @param {1 | -1} [d] + * @returns {number} + */ +export function update_prop(fn, d = 1) { + const value = fn(); + fn(value + d); + return value; +} + +/** + * @param {((value?: number) => number)} fn + * @param {1 | -1} [d] + * @returns {number} + */ +export function update_pre_prop(fn, d = 1) { + const value = fn() + d; + fn(value); + return value; +} diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index 0afc654880..918921c3db 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -20,7 +20,7 @@ import { untrack } from '../runtime.js'; import { default_equals, safe_equal } from './equality.js'; -import { CLEAN, DERIVED, DIRTY, MANAGED, SOURCE } from '../constants.js'; +import { CLEAN, DERIVED, DIRTY, MANAGED } from '../constants.js'; /** * @template V @@ -31,7 +31,7 @@ import { CLEAN, DERIVED, DIRTY, MANAGED, SOURCE } from '../constants.js'; export function source(value) { /** @type {import('#client').Source} */ const source = { - f: SOURCE | CLEAN, + f: CLEAN, v: value, eq: default_equals, consumers: null, @@ -160,3 +160,25 @@ export function mutate(source, value) { ); return value; } + +/** + * @param {import('#client').ValueSignal} signal + * @param {1 | -1} [d] + * @returns {number} + */ +export function update(signal, d = 1) { + const value = get(signal); + set(signal, value + d); + return value; +} + +/** + * @param {import('#client').ValueSignal} signal + * @param {1 | -1} [d] + * @returns {number} + */ +export function update_pre(signal, d = 1) { + const value = get(signal) + d; + set(signal, value); + return value; +} diff --git a/packages/svelte/src/internal/client/reactivity/types.d.ts b/packages/svelte/src/internal/client/reactivity/types.d.ts index 3995f5095b..a826ef2337 100644 --- a/packages/svelte/src/internal/client/reactivity/types.d.ts +++ b/packages/svelte/src/internal/client/reactivity/types.d.ts @@ -1,13 +1,6 @@ -import type { DERIVED, EFFECT, PRE_EFFECT, RENDER_EFFECT, SOURCE } from '../constants'; +import type { DERIVED, EFFECT, PRE_EFFECT, RENDER_EFFECT } from '../constants'; import type { ComponentContext, EqualsFunctions, TemplateNode, Transition } from '../types'; -type SignalFlags = - | typeof SOURCE - | typeof DERIVED - | typeof EFFECT - | typeof PRE_EFFECT - | typeof RENDER_EFFECT; - export type EffectType = typeof EFFECT | typeof PRE_EFFECT | typeof RENDER_EFFECT; export interface Source { @@ -16,7 +9,7 @@ export interface Source { /** equals: For value equality */ eq: EqualsFunctions; /** flags: The types that the signal represent, as a bitwise value */ - f: SignalFlags; + f: number; /** value: The latest value for this signal */ v: V; // write version @@ -46,7 +39,7 @@ export interface Effect { /** destroy: Thing(s) that need destroying */ y: null | (() => void); /** The types that the signal represent, as a bitwise value */ - f: SignalFlags; + f: number; /** init: The function that we invoke for effects and computeds */ fn: null | (() => void | (() => void)); /** deriveds belonging to this effect */ diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index ee303b2078..1ab49e197c 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -3,7 +3,6 @@ import { array_prototype, get_descriptors, get_prototype_of, - is_array, is_frozen, object_freeze, object_prototype @@ -23,12 +22,11 @@ import { DESTROYED, INERT, MANAGED, - SOURCE, STATE_SYMBOL, BRANCH_EFFECT } from './constants.js'; import { flush_tasks } from './dom/task.js'; -import { mutate, set } from './reactivity/sources.js'; +import { mutate } from './reactivity/sources.js'; const IS_EFFECT = EFFECT | PRE_EFFECT | RENDER_EFFECT; @@ -936,50 +934,6 @@ function get_parent_context(component_context) { return null; } -/** - * @param {import('#client').ValueSignal} signal - * @param {1 | -1} [d] - * @returns {number} - */ -export function update(signal, d = 1) { - const value = get(signal); - set(signal, value + d); - return value; -} - -/** - * @param {((value?: number) => number)} fn - * @param {1 | -1} [d] - * @returns {number} - */ -export function update_prop(fn, d = 1) { - const value = fn(); - fn(value + d); - return value; -} - -/** - * @param {import('#client').ValueSignal} signal - * @param {1 | -1} [d] - * @returns {number} - */ -export function update_pre(signal, d = 1) { - const value = get(signal) + d; - set(signal, value); - return value; -} - -/** - * @param {((value?: number) => number)} fn - * @param {1 | -1} [d] - * @returns {number} - */ -export function update_pre_prop(fn, d = 1) { - const value = fn() + d; - fn(value); - return value; -} - /** * @param {Record} obj * @param {string[]} keys diff --git a/packages/svelte/src/internal/index.js b/packages/svelte/src/internal/index.js index a63b1bcf31..def8750a59 100644 --- a/packages/svelte/src/internal/index.js +++ b/packages/svelte/src/internal/index.js @@ -4,10 +4,6 @@ export { flushSync, tick, untrack, - update, - update_prop, - update_pre, - update_pre_prop, value_or_fallback, exclude_from_object, pop, @@ -29,8 +25,9 @@ export { element } from './client/dom/blocks/svelte-element.js'; export * from './client/dom/blocks/each.js'; export * from './client/reactivity/effects.js'; export * from './client/reactivity/deriveds.js'; -export * from './client/reactivity/sources.js'; export * from './client/reactivity/equality.js'; +export * from './client/reactivity/props.js'; +export * from './client/reactivity/sources.js'; export * from './client/reactivity/store.js'; export * from './client/render.js'; export * from './client/validate.js';