You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/packages/svelte/src/internal/shared/validate.js

38 lines
900 B

/** @import { TemplateNode } from '#client' */
/** @import { Getters } from '#shared' */
import { is_void } from '../../utils.js';
import * as w from './warnings.js';
import * as e from './errors.js';
export { invalid_default_snippet } from './errors.js';
/**
* @param {() => string} tag_fn
* @returns {void}
*/
export function validate_void_dynamic_element(tag_fn) {
const tag = tag_fn();
if (tag && is_void(tag)) {
w.dynamic_void_element_content(tag);
}
}
/** @param {() => unknown} tag_fn */
export function validate_dynamic_element_tag(tag_fn) {
const tag = tag_fn();
const is_string = typeof tag === 'string';
if (tag && !is_string) {
e.svelte_element_invalid_this_value();
}
}
/**
* @param {any} store
* @param {string} name
*/
export function validate_store(store, name) {
if (store != null && typeof store.subscribe !== 'function') {
e.store_invalid_shape(name);
}
}