@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
45 lines (40 loc) • 5.29 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2RvbS9ub3JtYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTSxTQUFBLG9CQUFBLENBQUEsS0FBQSxFQUE2QztBQUNqRCxNQUFJLE9BQU8sQ0FBWCxLQUFXLENBQVgsRUFBb0I7QUFDbEIsV0FBQSxFQUFBO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLENBQWIsS0FBYSxDQUFiO0FBQ0Q7QUFFRCxPQUFNLFNBQUEscUJBQUEsQ0FBQSxLQUFBLEVBQThDO0FBQ2xELE1BQUksT0FBTyxDQUFYLEtBQVcsQ0FBWCxFQUFvQjtBQUNsQixXQUFBLEVBQUE7QUFDRDs7QUFDRCxNQUFJLFFBQVEsQ0FBWixLQUFZLENBQVosRUFBcUI7QUFDbkIsV0FBQSxLQUFBO0FBQ0Q7O0FBQ0QsTUFBSSxZQUFZLENBQWhCLEtBQWdCLENBQWhCLEVBQXlCO0FBQ3ZCLFdBQU8sS0FBSyxDQUFaLE1BQU8sRUFBUDtBQUNEOztBQUNELE1BQUksTUFBTSxDQUFWLEtBQVUsQ0FBVixFQUFtQjtBQUNqQixXQUFBLEtBQUE7QUFDRDs7QUFDRCxTQUFPLE1BQU0sQ0FBYixLQUFhLENBQWI7QUFDRDtBQUVELE9BQU0sU0FBQSxZQUFBLENBQUEsS0FBQSxFQUNVO0FBRWQsU0FDRSxRQUFRLENBQVIsS0FBUSxDQUFSLElBQW1CLE9BQU8sQ0FBMUIsS0FBMEIsQ0FBMUIsSUFBcUMsT0FBQSxLQUFBLEtBQXJDLFNBQUEsSUFBbUUsT0FBQSxLQUFBLEtBRHJFLFFBQUE7QUFHRDtBQUVELE9BQU0sU0FBQSxPQUFBLENBQUEsS0FBQSxFQUFnQztBQUNwQyxTQUFPLEtBQUssS0FBTCxJQUFBLElBQWtCLEtBQUssS0FBdkIsU0FBQSxJQUF5QyxPQUFRLEtBQWMsQ0FBdEIsUUFBQSxLQUFoRCxVQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsWUFBQSxDQUFBLEtBQUEsRUFBcUM7QUFDekMsU0FBTyxPQUFBLEtBQUEsS0FBQSxRQUFBLElBQTZCLEtBQUssS0FBbEMsSUFBQSxJQUErQyxPQUFRLEtBQWEsQ0FBckIsTUFBQSxLQUF0RCxVQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsTUFBQSxDQUFBLEtBQUEsRUFBK0I7QUFDbkMsU0FBTyxPQUFBLEtBQUEsS0FBQSxRQUFBLElBQTZCLEtBQUssS0FBbEMsSUFBQSxJQUErQyxPQUFRLEtBQWEsQ0FBckIsUUFBQSxLQUF0RCxRQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsVUFBQSxDQUFBLEtBQUEsRUFBbUM7QUFDdkMsU0FBTyxNQUFNLENBQU4sS0FBTSxDQUFOLElBQWlCLEtBQUssQ0FBTCxRQUFBLEtBQXhCLEVBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxRQUFBLENBQUEsS0FBQSxFQUFpQztBQUNyQyxTQUFPLE9BQUEsS0FBQSxLQUFQLFFBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpY3QgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNpbXBsZU5vZGUsIFNpbXBsZURvY3VtZW50RnJhZ21lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHJpbmcge1xuICB0b0hUTUwoKTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJbnNlcnRpb24gPSBDYXV0aW91c0luc2VydGlvbiB8IFRydXN0aW5nSW5zZXJ0aW9uO1xuZXhwb3J0IHR5cGUgQ2F1dGlvdXNJbnNlcnRpb24gPSBzdHJpbmcgfCBTYWZlU3RyaW5nIHwgU2ltcGxlTm9kZTtcbmV4cG9ydCB0eXBlIFRydXN0aW5nSW5zZXJ0aW9uID0gc3RyaW5nIHwgU2ltcGxlTm9kZTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZ1ZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlOiB1bmtub3duKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZENvZXJjZShcbiAgdmFsdWU6IHVua25vd25cbik6IHZhbHVlIGlzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChcbiAgICBpc1N0cmluZyh2YWx1ZSkgfHwgaXNFbXB0eSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgKHZhbHVlIGFzIERpY3QpLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgU2FmZVN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiAodmFsdWUgYXMgYW55KS50b0hUTUwgPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTaW1wbGVOb2RlIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mICh2YWx1ZSBhcyBhbnkpLm5vZGVUeXBlID09PSAnbnVtYmVyJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnJhZ21lbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTaW1wbGVEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGlzTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDExO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=