Lint and format src/runtime/internal/ssr.js

pull/8569/head
S. Elliott Johnson 3 years ago
parent bcf02b5707
commit 79a4c8ad00

@ -2,7 +2,8 @@ import { set_current_component, current_component } from './lifecycle';
import { run_all, blank_object } from './utils'; import { run_all, blank_object } from './utils';
import { boolean_attributes } from '../../shared/boolean_attributes'; import { boolean_attributes } from '../../shared/boolean_attributes';
export { is_void } from '../../shared/utils/names'; export { is_void } from '../../shared/utils/names';
export const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u; export const invalid_attribute_name_character =
/[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
// https://infra.spec.whatwg.org/#noncharacter // https://infra.spec.whatwg.org/#noncharacter
/** @returns {string} */ /** @returns {string} */
@ -14,32 +15,28 @@ export function spread(args, attrs_to_add) {
if (classes_to_add) { if (classes_to_add) {
if (attributes.class == null) { if (attributes.class == null) {
attributes.class = classes_to_add; attributes.class = classes_to_add;
} } else {
else {
attributes.class += ' ' + classes_to_add; attributes.class += ' ' + classes_to_add;
} }
} }
if (styles_to_add) { if (styles_to_add) {
if (attributes.style == null) { if (attributes.style == null) {
attributes.style = style_object_to_string(styles_to_add); attributes.style = style_object_to_string(styles_to_add);
} } else {
else { attributes.style = style_object_to_string(
attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add)); merge_ssr_styles(attributes.style, styles_to_add)
);
} }
} }
} }
let str = ''; let str = '';
Object.keys(attributes).forEach((name) => { Object.keys(attributes).forEach((name) => {
if (invalid_attribute_name_character.test(name)) if (invalid_attribute_name_character.test(name)) return;
return;
const value = attributes[name]; const value = attributes[name];
if (value === true) if (value === true) str += ' ' + name;
str += ' ' + name;
else if (boolean_attributes.has(name.toLowerCase())) { else if (boolean_attributes.has(name.toLowerCase())) {
if (value) if (value) str += ' ' + name;
str += ' ' + name; } else if (value != null) {
}
else if (value != null) {
str += ` ${name}="${value}"`; str += ` ${name}="${value}"`;
} }
}); });
@ -52,16 +49,14 @@ export function merge_ssr_styles(style_attribute, style_directive) {
const colon_index = individual_style.indexOf(':'); const colon_index = individual_style.indexOf(':');
const name = individual_style.slice(0, colon_index).trim(); const name = individual_style.slice(0, colon_index).trim();
const value = individual_style.slice(colon_index + 1).trim(); const value = individual_style.slice(colon_index + 1).trim();
if (!name) if (!name) continue;
continue;
style_object[name] = value; style_object[name] = value;
} }
for (const name in style_directive) { for (const name in style_directive) {
const value = style_directive[name]; const value = style_directive[name];
if (value) { if (value) {
style_object[name] = value; style_object[name] = value;
} } else {
else {
delete style_object[name]; delete style_object[name];
} }
} }
@ -117,9 +112,10 @@ export const missing_component = {
/** @returns {any} */ /** @returns {any} */
export function validate_component(component, name) { export function validate_component(component, name) {
if (!component || !component.$$render) { if (!component || !component.$$render) {
if (name === 'svelte:component') if (name === 'svelte:component') name += ' this={...}';
name += ' this={...}'; throw new Error(
throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`); `<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules. Otherwise you may need to fix a <${name}>.`
);
} }
return component; return component;
} }
@ -171,8 +167,7 @@ export function create_ssr_component(fn) {
} }
/** @returns {string} */ /** @returns {string} */
export function add_attribute(name, value, boolean) { export function add_attribute(name, value, boolean) {
if (value == null || (boolean && !value)) if (value == null || (boolean && !value)) return '';
return '';
const assignment = boolean && value === true ? '' : `="${escape(value, true)}"`; const assignment = boolean && value === true ? '' : `="${escape(value, true)}"`;
return ` ${name}${assignment}`; return ` ${name}${assignment}`;
} }
@ -192,7 +187,3 @@ export function add_styles(style_object) {
const styles = style_object_to_string(style_object); const styles = style_object_to_string(style_object);
return styles ? ` style="${styles}"` : ''; return styles ? ` style="${styles}"` : '';
} }

Loading…
Cancel
Save