Skip to content

Commit ba0d55b

Browse files
committed
DRY out
1 parent c538868 commit ba0d55b

File tree

4 files changed

+40
-92
lines changed

4 files changed

+40
-92
lines changed

packages/svelte/src/compiler/phases/3-transform/client/visitors/global.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,25 @@ export const global_visitors = {
5454
binding?.kind === 'prop' ||
5555
is_store
5656
) {
57-
let fn = node.operator === '++' ? '$.increment' : '$.decrement';
57+
/** @type {import('estree').Expression[]} */
58+
const args = [];
59+
60+
let fn = '$.update';
5861
if (node.prefix) fn += '_pre';
59-
if (binding.kind === 'prop') fn += '_prop';
6062

6163
if (is_store) {
6264
fn += '_store';
63-
return b.call(fn, serialize_get_binding(b.id(name), state), b.call('$' + name));
65+
args.push(serialize_get_binding(b.id(name), state), b.call('$' + name));
66+
} else {
67+
if (binding.kind === 'prop') fn += '_prop';
68+
args.push(b.id(name));
69+
}
70+
71+
if (node.operator === '--') {
72+
args.push(b.literal(-1));
6473
}
6574

66-
return b.call(fn, b.id(name));
75+
return b.call(fn, ...args);
6776
}
6877

6978
return next();

packages/svelte/src/internal/client/proxy/proxy.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
effect_active,
44
get,
55
set,
6-
increment,
6+
update,
77
source,
88
updating_derived,
99
UNINITIALIZED,
@@ -143,7 +143,7 @@ const handler = {
143143
const s = metadata.s.get(prop);
144144
if (s !== undefined) set(s, UNINITIALIZED);
145145

146-
if (prop in target) increment(metadata.v);
146+
if (prop in target) update(metadata.v);
147147

148148
return delete target[prop];
149149
},
@@ -224,7 +224,7 @@ const handler = {
224224
}
225225
}
226226
if (not_has) {
227-
increment(metadata.v);
227+
update(metadata.v);
228228
}
229229
// @ts-ignore
230230
target[prop] = value;

packages/svelte/src/internal/client/runtime.js

Lines changed: 18 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,122 +1577,67 @@ export function bubble_event($$props, event) {
15771577

15781578
/**
15791579
* @param {import('./types.js').Signal<number>} signal
1580+
* @param {1 | -1} [d]
15801581
* @returns {number}
15811582
*/
1582-
export function increment(signal) {
1583+
export function update(signal, d = 1) {
15831584
const value = get(signal);
1584-
set_signal_value(signal, value + 1);
1585+
set_signal_value(signal, value + d);
15851586
return value;
15861587
}
15871588

15881589
/**
15891590
* @param {((value?: number) => number)} fn
1591+
* @param {1 | -1} [d]
15901592
* @returns {number}
15911593
*/
1592-
export function increment_prop(fn) {
1594+
export function update_prop(fn, d = 1) {
15931595
const value = fn();
1594-
fn(value + 1);
1596+
fn(value + d);
15951597
return value;
15961598
}
15971599

15981600
/**
15991601
* @param {import('./types.js').Store<number>} store
16001602
* @param {number} store_value
1603+
* @param {1 | -1} [d]
16011604
* @returns {number}
16021605
*/
1603-
export function increment_store(store, store_value) {
1604-
store.set(store_value + 1);
1606+
export function update_store(store, store_value, d = 1) {
1607+
store.set(store_value + d);
16051608
return store_value;
16061609
}
16071610

16081611
/**
16091612
* @param {import('./types.js').Signal<number>} signal
1613+
* @param {1 | -1} [d]
16101614
* @returns {number}
16111615
*/
1612-
export function decrement(signal) {
1613-
const value = get(signal);
1614-
set_signal_value(signal, value - 1);
1615-
return value;
1616-
}
1617-
1618-
/**
1619-
* @param {((value?: number) => number)} fn
1620-
* @returns {number}
1621-
*/
1622-
export function decrement_prop(fn) {
1623-
const value = fn();
1624-
fn(value - 1);
1625-
return value;
1626-
}
1627-
1628-
/**
1629-
* @param {import('./types.js').Store<number>} store
1630-
* @param {number} store_value
1631-
* @returns {number}
1632-
*/
1633-
export function decrement_store(store, store_value) {
1634-
store.set(store_value - 1);
1635-
return store_value;
1636-
}
1637-
1638-
/**
1639-
* @param {import('./types.js').Signal<number>} signal
1640-
* @returns {number}
1641-
*/
1642-
export function increment_pre(signal) {
1643-
const value = get(signal) + 1;
1644-
set_signal_value(signal, value);
1645-
return value;
1646-
}
1647-
1648-
/**
1649-
* @param {((value?: number) => number)} fn
1650-
* @returns {number}
1651-
*/
1652-
export function increment_pre_prop(fn) {
1653-
const value = fn() + 1;
1654-
fn(value);
1655-
return value;
1656-
}
1657-
1658-
/**
1659-
* @param {import('./types.js').Store<number>} store
1660-
* @param {number} store_value
1661-
* @returns {number}
1662-
*/
1663-
export function increment_pre_store(store, store_value) {
1664-
const value = store_value + 1;
1665-
store.set(value);
1666-
return value;
1667-
}
1668-
1669-
/**
1670-
* @param {import('./types.js').Signal<number>} signal
1671-
* @returns {number}
1672-
*/
1673-
export function decrement_pre(signal) {
1674-
const value = get(signal) - 1;
1616+
export function update_pre(signal, d = 1) {
1617+
const value = get(signal) + d;
16751618
set_signal_value(signal, value);
16761619
return value;
16771620
}
16781621

16791622
/**
16801623
* @param {((value?: number) => number)} fn
1624+
* @param {1 | -1} [d]
16811625
* @returns {number}
16821626
*/
1683-
export function decrement_pre_prop(fn) {
1684-
const value = fn() - 1;
1627+
export function update_pre_prop(fn, d = 1) {
1628+
const value = fn() + d;
16851629
fn(value);
16861630
return value;
16871631
}
16881632

16891633
/**
16901634
* @param {import('./types.js').Store<number>} store
16911635
* @param {number} store_value
1636+
* @param {1 | -1} [d]
16921637
* @returns {number}
16931638
*/
1694-
export function decrement_pre_store(store, store_value) {
1695-
const value = store_value - 1;
1639+
export function update_pre_store(store, store_value, d = 1) {
1640+
const value = store_value + d;
16961641
store.set(value);
16971642
return value;
16981643
}

packages/svelte/src/internal/index.js

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,12 @@ export {
1717
safe_equal,
1818
tick,
1919
untrack,
20-
increment,
21-
increment_prop,
22-
increment_store,
23-
decrement,
24-
decrement_prop,
25-
decrement_store,
26-
increment_pre,
27-
increment_pre_prop,
28-
increment_pre_store,
29-
decrement_pre,
30-
decrement_pre_prop,
31-
decrement_pre_store,
20+
update,
21+
update_prop,
22+
update_store,
23+
update_pre,
24+
update_pre_prop,
25+
update_pre_store,
3226
mutate,
3327
mutate_store,
3428
value_or_fallback,

0 commit comments

Comments
 (0)