@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
45 lines (40 loc) • 5.32 kB
JavaScript
export function normalizeStringValue(value) {
if (isEmpty(value)) {
return '';
}
return String(value);
}
export function normalizeTrustedValue(value) {
if (isEmpty(value)) {
return '';
}
if (isString(value)) {
return value;
}
if (isSafeString(value)) {
return value.toHTML();
}
if (isNode(value)) {
return value;
}
return String(value);
}
export function shouldCoerce(value) {
return isString(value) || isEmpty(value) || typeof value === 'boolean' || typeof value === 'number';
}
export function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
}
export function isSafeString(value) {
return typeof value === 'object' && value !== null && typeof value.toHTML === 'function';
}
export function isNode(value) {
return typeof value === 'object' && value !== null && typeof value.nodeType === 'number';
}
export function isFragment(value) {
return isNode(value) && value.nodeType === 11;
}
export function isString(value) {
return typeof value === 'string';
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2RvbS9ub3JtYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTSxTQUFVLG9CQUFWLENBQStCLEtBQS9CLEVBQTZDO0FBQ2pELE1BQUksT0FBTyxDQUFDLEtBQUQsQ0FBWCxFQUFvQjtBQUNsQixXQUFPLEVBQVA7QUFDRDs7QUFDRCxTQUFPLE1BQU0sQ0FBQyxLQUFELENBQWI7QUFDRDtBQUVELE9BQU0sU0FBVSxxQkFBVixDQUFnQyxLQUFoQyxFQUE4QztBQUNsRCxNQUFJLE9BQU8sQ0FBQyxLQUFELENBQVgsRUFBb0I7QUFDbEIsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsTUFBSSxRQUFRLENBQUMsS0FBRCxDQUFaLEVBQXFCO0FBQ25CLFdBQU8sS0FBUDtBQUNEOztBQUNELE1BQUksWUFBWSxDQUFDLEtBQUQsQ0FBaEIsRUFBeUI7QUFDdkIsV0FBTyxLQUFLLENBQUMsTUFBTixFQUFQO0FBQ0Q7O0FBQ0QsTUFBSSxNQUFNLENBQUMsS0FBRCxDQUFWLEVBQW1CO0FBQ2pCLFdBQU8sS0FBUDtBQUNEOztBQUNELFNBQU8sTUFBTSxDQUFDLEtBQUQsQ0FBYjtBQUNEO0FBRUQsT0FBTSxTQUFVLFlBQVYsQ0FDSixLQURJLEVBQ1U7QUFFZCxTQUNFLFFBQVEsQ0FBQyxLQUFELENBQVIsSUFBbUIsT0FBTyxDQUFDLEtBQUQsQ0FBMUIsSUFBcUMsT0FBTyxLQUFQLEtBQWlCLFNBQXRELElBQW1FLE9BQU8sS0FBUCxLQUFpQixRQUR0RjtBQUdEO0FBRUQsT0FBTSxTQUFVLE9BQVYsQ0FBa0IsS0FBbEIsRUFBZ0M7QUFDcEMsU0FBTyxLQUFLLEtBQUssSUFBVixJQUFrQixLQUFLLEtBQUssU0FBNUIsSUFBeUMsT0FBUSxLQUFjLENBQUMsUUFBdkIsS0FBb0MsVUFBcEY7QUFDRDtBQUVELE9BQU0sU0FBVSxZQUFWLENBQXVCLEtBQXZCLEVBQXFDO0FBQ3pDLFNBQU8sT0FBTyxLQUFQLEtBQWlCLFFBQWpCLElBQTZCLEtBQUssS0FBSyxJQUF2QyxJQUErQyxPQUFRLEtBQWEsQ0FBQyxNQUF0QixLQUFpQyxVQUF2RjtBQUNEO0FBRUQsT0FBTSxTQUFVLE1BQVYsQ0FBaUIsS0FBakIsRUFBK0I7QUFDbkMsU0FBTyxPQUFPLEtBQVAsS0FBaUIsUUFBakIsSUFBNkIsS0FBSyxLQUFLLElBQXZDLElBQStDLE9BQVEsS0FBYSxDQUFDLFFBQXRCLEtBQW1DLFFBQXpGO0FBQ0Q7QUFFRCxPQUFNLFNBQVUsVUFBVixDQUFxQixLQUFyQixFQUFtQztBQUN2QyxTQUFPLE1BQU0sQ0FBQyxLQUFELENBQU4sSUFBaUIsS0FBSyxDQUFDLFFBQU4sS0FBbUIsRUFBM0M7QUFDRDtBQUVELE9BQU0sU0FBVSxRQUFWLENBQW1CLEtBQW5CLEVBQWlDO0FBQ3JDLFNBQU8sT0FBTyxLQUFQLEtBQWlCLFFBQXhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTaW1wbGVOb2RlLCBTaW1wbGVEb2N1bWVudEZyYWdtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTYWZlU3RyaW5nIHtcbiAgdG9IVE1MKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSW5zZXJ0aW9uID0gQ2F1dGlvdXNJbnNlcnRpb24gfCBUcnVzdGluZ0luc2VydGlvbjtcbmV4cG9ydCB0eXBlIENhdXRpb3VzSW5zZXJ0aW9uID0gc3RyaW5nIHwgU2FmZVN0cmluZyB8IFNpbXBsZU5vZGU7XG5leHBvcnQgdHlwZSBUcnVzdGluZ0luc2VydGlvbiA9IHN0cmluZyB8IFNpbXBsZU5vZGU7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmdWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogdW5rbm93bik6IFRydXN0aW5nSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9IVE1MKCk7XG4gIH1cbiAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRDb2VyY2UoXG4gIHZhbHVlOiB1bmtub3duXG4pOiB2YWx1ZSBpcyBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiAoXG4gICAgaXNTdHJpbmcodmFsdWUpIHx8IGlzRW1wdHkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcidcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mICh2YWx1ZSBhcyBEaWN0KS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFNhZmVTdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgKHZhbHVlIGFzIGFueSkudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU2ltcGxlTm9kZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiAodmFsdWUgYXMgYW55KS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZyYWdtZW50KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU2ltcGxlRG9jdW1lbnRGcmFnbWVudCB7XG4gIHJldHVybiBpc05vZGUodmFsdWUpICYmIHZhbHVlLm5vZGVUeXBlID09PSAxMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9