diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index e4a7dcc239..6138341c05 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -812,6 +812,7 @@ export function get(signal) { signal ); if (debug_source.d !== null) { + // eslint-disable-next-line no-console console.log('$log.trace: ' + debug_source.d); queueMicrotask(() => { debug_source.d = null; @@ -823,12 +824,12 @@ export function get(signal) { /** * @template V - * @param {import('./types.js').SourceSignal} signal + * @param {import('./types.js').Signal} signal * @param {V} value * @returns {V} */ export function set(signal, value) { - if (DEV) { + if (DEV && (signal.f & SOURCE) !== 0) { let stack_debug = null; try { const error = new Error(); @@ -858,7 +859,7 @@ export function set(signal, value) { * @returns {void} */ export function set_sync(signal, value) { - flushSync(() => set_signal_value(signal, value)); + flushSync(() => set(signal, value)); } /** @@ -920,7 +921,7 @@ export function invalidate_inner_signals(fn) { * @param {V} value */ export function mutate(source, value) { - set_signal_value( + set( source, untrack(() => get(source)) ); @@ -1595,7 +1596,7 @@ export function bubble_event($$props, event) { */ export function increment(signal) { const value = get(signal); - set_signal_value(signal, value + 1); + set(signal, value + 1); return value; } @@ -1615,7 +1616,7 @@ export function increment_store(store, store_value) { */ export function decrement(signal) { const value = get(signal); - set_signal_value(signal, value - 1); + set(signal, value - 1); return value; } @@ -1635,7 +1636,7 @@ export function decrement_store(store, store_value) { */ export function increment_pre(signal) { const value = get(signal) + 1; - set_signal_value(signal, value); + set(signal, value); return value; } @@ -1656,7 +1657,7 @@ export function increment_pre_store(store, store_value) { */ export function decrement_pre(signal) { const value = get(signal) - 1; - set_signal_value(signal, value); + set(signal, value); return value; } @@ -1801,6 +1802,7 @@ export function log(get_values) { pre_effect(() => { const values = get_values(); deep_read(values); + // eslint-disable-next-line no-console console.log(...values); }); } @@ -1815,6 +1817,7 @@ export function log_table(get_values) { pre_effect(() => { const values = get_values(); deep_read(values); + // eslint-disable-next-line no-console console.table(...values); }); } @@ -1829,7 +1832,9 @@ export function log_break(get_values) { pre_effect(() => { const values = get_values(); deep_read(values); + // eslint-disable-next-line no-console console.log(...values); + // eslint-disable-next-line no-debugger debugger; }); } @@ -1846,6 +1851,7 @@ export function log_trace(get_values) { try { const values = get_values(); deep_read(values); + // eslint-disable-next-line no-console console.log(...values); } finally { is_tracing_signals = false; diff --git a/packages/svelte/tests/runtime-runes/samples/log-table/_config.js b/packages/svelte/tests/runtime-runes/samples/log-table/_config.js new file mode 100644 index 0000000000..f49f87d38b --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log-table/_config.js @@ -0,0 +1,34 @@ +import { test } from '../../test'; + +/** + * @type {any[]} + */ +let log; +/** + * @type {typeof console.log}} + */ +let original_log; + +export default test({ + compileOptions: { + dev: true + }, + before_test() { + log = []; + original_log = console.table; + console.log = (...v) => { + log.push(...v); + }; + }, + after_test() { + console.table = original_log; + }, + async test({ assert, target, component }) { + const [b1, b2] = target.querySelectorAll('button'); + b1.click(); + b2.click(); + await Promise.resolve(); + + assert.deepEqual(log, [0, 1]); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/log-table/main.svelte b/packages/svelte/tests/runtime-runes/samples/log-table/main.svelte new file mode 100644 index 0000000000..616eb79216 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log-table/main.svelte @@ -0,0 +1,9 @@ + + + + diff --git a/packages/svelte/tests/runtime-runes/samples/log-trace/_config.js b/packages/svelte/tests/runtime-runes/samples/log-trace/_config.js new file mode 100644 index 0000000000..473c2c515e --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log-trace/_config.js @@ -0,0 +1,36 @@ +import { test } from '../../test'; + +/** + * @type {any[]} + */ +let log; +/** + * @type {typeof console.log}} + */ +let original_log; + +export default test({ + compileOptions: { + dev: true + }, + before_test() { + log = []; + original_log = console.log; + console.log = (...v) => { + log.push(...v); + }; + }, + after_test() { + console.log = original_log; + }, + async test({ assert, target, component }) { + const [b1, b2] = target.querySelectorAll('button'); + b1.click(); + b2.click(); + await Promise.resolve(); + + assert.deepEqual(log[0], 0); + assert.deepEqual(log[1].startsWith('$log.trace: Module.increment'), true); + assert.deepEqual(log[2], 1); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/log-trace/main.svelte b/packages/svelte/tests/runtime-runes/samples/log-trace/main.svelte new file mode 100644 index 0000000000..652ba16758 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log-trace/main.svelte @@ -0,0 +1,9 @@ + + + + diff --git a/packages/svelte/tests/runtime-runes/samples/log/_config.js b/packages/svelte/tests/runtime-runes/samples/log/_config.js new file mode 100644 index 0000000000..3cd1a95227 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log/_config.js @@ -0,0 +1,34 @@ +import { test } from '../../test'; + +/** + * @type {any[]} + */ +let log; +/** + * @type {typeof console.log}} + */ +let original_log; + +export default test({ + compileOptions: { + dev: true + }, + before_test() { + log = []; + original_log = console.log; + console.log = (...v) => { + log.push(...v); + }; + }, + after_test() { + console.log = original_log; + }, + async test({ assert, target, component }) { + const [b1, b2] = target.querySelectorAll('button'); + b1.click(); + b2.click(); + await Promise.resolve(); + + assert.deepEqual(log, [0, 1]); + } +}); diff --git a/packages/svelte/tests/runtime-runes/samples/log/main.svelte b/packages/svelte/tests/runtime-runes/samples/log/main.svelte new file mode 100644 index 0000000000..395b71730a --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/log/main.svelte @@ -0,0 +1,9 @@ + + + +