All files / src/internal/client/dev console-log.js

71.87% Statements 23/32
60% Branches 3/5
100% Functions 1/1
70% Lines 21/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 312x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 4x     4x 4x 4x 4x 2x 2x               2x 2x 2x  
import { STATE_SYMBOL } from '../constants.js';
import { snapshot } from '../../shared/clone.js';
 
/**
 * @param  {...any} objects
 */
export function log_if_contains_state(...objects) {
	let has_state = false;
	const transformed = [];
 
	for (const obj of objects) {
		if (obj && typeof obj === 'object' && STATE_SYMBOL in obj) {
			transformed.push(snapshot(obj, true));
			has_state = true;
		} else {
			transformed.push(obj);
		}
	}
 
	if (has_state) {
		// eslint-disable-next-line no-console
		console.log(
			'Your console.log contained $state objects. We recommend using $inspect or $state.snapshot when logging these for better results. The snapshotted value is:\n',
			...transformed,
			'\nThe original value is:\n'
		);
	}
 
	return objects;
}