@glimmer/compiler
Version:
106 lines (94 loc) • 8.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAttrNamespace = getAttrNamespace;
exports.deflateTagName = deflateTagName;
exports.inflateTagName = inflateTagName;
exports.deflateAttrName = deflateAttrName;
exports.inflateAttrName = inflateAttrName;
// There is a small whitelist of namespaced attributes specially
// enumerated in
// https://www.w3.org/TR/html/syntax.html#attributes-0
//
// > When a foreign element has one of the namespaced attributes given by
// > the local name and namespace of the first and second cells of a row
// > from the following table, it must be written using the name given by
// > the third cell from the same row.
//
// In all other cases, colons are interpreted as a regular character
// with no special meaning:
//
// > No other namespaced attribute can be expressed in the HTML syntax.
const XLINK = 'http://www.w3.org/1999/xlink';
const XML = 'http://www.w3.org/XML/1998/namespace';
const XMLNS = 'http://www.w3.org/2000/xmlns/';
const WHITELIST = {
'xlink:actuate': XLINK,
'xlink:arcrole': XLINK,
'xlink:href': XLINK,
'xlink:role': XLINK,
'xlink:show': XLINK,
'xlink:title': XLINK,
'xlink:type': XLINK,
'xml:base': XML,
'xml:lang': XML,
'xml:space': XML,
xmlns: XMLNS,
'xmlns:xlink': XMLNS
};
function getAttrNamespace(attrName) {
return WHITELIST[attrName];
}
const DEFLATE_TAG_TABLE = {
div: 0
/* div */
,
span: 1
/* span */
,
p: 2
/* p */
,
a: 3
/* a */
};
const INFLATE_TAG_TABLE = ['div', 'span', 'p', 'a'];
function deflateTagName(tagName) {
var _a;
return (_a = DEFLATE_TAG_TABLE[tagName]) !== null && _a !== void 0 ? _a : tagName;
}
function inflateTagName(tagName) {
return typeof tagName === 'string' ? tagName : INFLATE_TAG_TABLE[tagName];
}
const DEFLATE_ATTR_TABLE = {
class: 0
/* class */
,
id: 1
/* id */
,
value: 2
/* value */
,
name: 3
/* name */
,
type: 4
/* type */
,
style: 5
/* style */
,
href: 6
/* href */
};
const INFLATE_ATTR_TABLE = ['class', 'id', 'value', 'name', 'type', 'style', 'href'];
function deflateAttrName(attrName) {
var _a;
return (_a = DEFLATE_ATTR_TABLE[attrName]) !== null && _a !== void 0 ? _a : attrName;
}
function inflateAttrName(attrName) {
return typeof attrName === 'string' ? attrName : INFLATE_ATTR_TABLE[attrName];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNLEtBQUssR0FBWCw4QkFBQTtBQUNBLE1BQU0sR0FBRyxHQUFULHNDQUFBO0FBQ0EsTUFBTSxLQUFLLEdBQVgsK0JBQUE7QUFFQSxNQUFNLFNBQVMsR0FBNkI7QUFDMUMsbUJBRDBDLEtBQUE7QUFFMUMsbUJBRjBDLEtBQUE7QUFHMUMsZ0JBSDBDLEtBQUE7QUFJMUMsZ0JBSjBDLEtBQUE7QUFLMUMsZ0JBTDBDLEtBQUE7QUFNMUMsaUJBTjBDLEtBQUE7QUFPMUMsZ0JBUDBDLEtBQUE7QUFRMUMsY0FSMEMsR0FBQTtBQVMxQyxjQVQwQyxHQUFBO0FBVTFDLGVBVjBDLEdBQUE7QUFXMUMsRUFBQSxLQUFLLEVBWHFDLEtBQUE7QUFZMUMsaUJBQWU7QUFaMkIsQ0FBNUM7O0FBZU0sU0FBQSxnQkFBQSxDQUFBLFFBQUEsRUFBMkM7QUFDL0MsU0FBTyxTQUFTLENBQWhCLFFBQWdCLENBQWhCO0FBQ0Q7O0FBRUQsTUFBTSxpQkFBaUIsR0FFbkI7QUFDRixFQUFBLEdBQUcsRUFBQTtBQUFBO0FBREQ7QUFFRixFQUFBLElBQUksRUFBQTtBQUFBO0FBRkY7QUFHRixFQUFBLENBQUMsRUFBQTtBQUFBO0FBSEM7QUFJRixFQUFBLENBQUMsRUFBQTtBQUFBOztBQUpDLENBRko7QUFTQSxNQUFNLGlCQUFpQixHQUVuQixDQUFBLEtBQUEsRUFBQSxNQUFBLEVBQUEsR0FBQSxFQUZKLEdBRUksQ0FGSjs7QUFJTSxTQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQXdDOzs7QUFDNUMsU0FBQSxDQUFBLEVBQUEsR0FBTyxpQkFBaUIsQ0FBeEIsT0FBd0IsQ0FBeEIsTUFBQSxJQUFBLElBQWlDLEVBQUEsS0FBQSxLQUFqQyxDQUFBLEdBQUEsRUFBQSxHQUFBLE9BQUE7QUFDRDs7QUFFSyxTQUFBLGNBQUEsQ0FBQSxPQUFBLEVBQTJEO0FBQy9ELFNBQU8sT0FBQSxPQUFBLEtBQUEsUUFBQSxHQUFBLE9BQUEsR0FBd0MsaUJBQWlCLENBQWhFLE9BQWdFLENBQWhFO0FBQ0Q7O0FBRUQsTUFBTSxrQkFBa0IsR0FFcEI7QUFDRixFQUFBLEtBQUssRUFBQTtBQUFBO0FBREg7QUFFRixFQUFBLEVBQUUsRUFBQTtBQUFBO0FBRkE7QUFHRixFQUFBLEtBQUssRUFBQTtBQUFBO0FBSEg7QUFJRixFQUFBLElBQUksRUFBQTtBQUFBO0FBSkY7QUFLRixFQUFBLElBQUksRUFBQTtBQUFBO0FBTEY7QUFNRixFQUFBLEtBQUssRUFBQTtBQUFBO0FBTkg7QUFPRixFQUFBLElBQUksRUFBQTtBQUFBOztBQVBGLENBRko7QUFZQSxNQUFNLGtCQUFrQixHQUVwQixDQUFBLE9BQUEsRUFBQSxJQUFBLEVBQUEsT0FBQSxFQUFBLE1BQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxFQUZKLE1BRUksQ0FGSjs7QUFJTSxTQUFBLGVBQUEsQ0FBQSxRQUFBLEVBQTBDOzs7QUFDOUMsU0FBQSxDQUFBLEVBQUEsR0FBTyxrQkFBa0IsQ0FBekIsUUFBeUIsQ0FBekIsTUFBQSxJQUFBLElBQW1DLEVBQUEsS0FBQSxLQUFuQyxDQUFBLEdBQUEsRUFBQSxHQUFBLFFBQUE7QUFDRDs7QUFFSyxTQUFBLGVBQUEsQ0FBQSxRQUFBLEVBQThEO0FBQ2xFLFNBQU8sT0FBQSxRQUFBLEtBQUEsUUFBQSxHQUFBLFFBQUEsR0FBMEMsa0JBQWtCLENBQW5FLFFBQW1FLENBQW5FO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0LCBXZWxsS25vd25BdHRyTmFtZSwgV2VsbEtub3duVGFnTmFtZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG4vLyBUaGVyZSBpcyBhIHNtYWxsIHdoaXRlbGlzdCBvZiBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMgc3BlY2lhbGx5XG4vLyBlbnVtZXJhdGVkIGluXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhdHRyaWJ1dGVzLTBcbi8vXG4vLyA+IFdoZW4gYSBmb3JlaWduIGVsZW1lbnQgaGFzIG9uZSBvZiB0aGUgbmFtZXNwYWNlZCBhdHRyaWJ1dGVzIGdpdmVuIGJ5XG4vLyA+IHRoZSBsb2NhbCBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgdGhlIGZpcnN0IGFuZCBzZWNvbmQgY2VsbHMgb2YgYSByb3dcbi8vID4gZnJvbSB0aGUgZm9sbG93aW5nIHRhYmxlLCBpdCBtdXN0IGJlIHdyaXR0ZW4gdXNpbmcgdGhlIG5hbWUgZ2l2ZW4gYnlcbi8vID4gdGhlIHRoaXJkIGNlbGwgZnJvbSB0aGUgc2FtZSByb3cuXG4vL1xuLy8gSW4gYWxsIG90aGVyIGNhc2VzLCBjb2xvbnMgYXJlIGludGVycHJldGVkIGFzIGEgcmVndWxhciBjaGFyYWN0ZXJcbi8vIHdpdGggbm8gc3BlY2lhbCBtZWFuaW5nOlxuLy9cbi8vID4gTm8gb3RoZXIgbmFtZXNwYWNlZCBhdHRyaWJ1dGUgY2FuIGJlIGV4cHJlc3NlZCBpbiB0aGUgSFRNTCBzeW50YXguXG5cbmNvbnN0IFhMSU5LID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnO1xuY29uc3QgWE1MID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5jb25zdCBYTUxOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyc7XG5cbmNvbnN0IFdISVRFTElTVDogRGljdDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0ge1xuICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LLFxuICAneGxpbms6YXJjcm9sZSc6IFhMSU5LLFxuICAneGxpbms6aHJlZic6IFhMSU5LLFxuICAneGxpbms6cm9sZSc6IFhMSU5LLFxuICAneGxpbms6c2hvdyc6IFhMSU5LLFxuICAneGxpbms6dGl0bGUnOiBYTElOSyxcbiAgJ3hsaW5rOnR5cGUnOiBYTElOSyxcbiAgJ3htbDpiYXNlJzogWE1MLFxuICAneG1sOmxhbmcnOiBYTUwsXG4gICd4bWw6c3BhY2UnOiBYTUwsXG4gIHhtbG5zOiBYTUxOUyxcbiAgJ3htbG5zOnhsaW5rJzogWE1MTlMsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0ck5hbWVzcGFjZShhdHRyTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFdISVRFTElTVFthdHRyTmFtZV07XG59XG5cbmNvbnN0IERFRkxBVEVfVEFHX1RBQkxFOiB7XG4gIFt0YWdOYW1lOiBzdHJpbmddOiBXZWxsS25vd25UYWdOYW1lIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgZGl2OiBXZWxsS25vd25UYWdOYW1lLmRpdixcbiAgc3BhbjogV2VsbEtub3duVGFnTmFtZS5zcGFuLFxuICBwOiBXZWxsS25vd25UYWdOYW1lLnAsXG4gIGE6IFdlbGxLbm93blRhZ05hbWUuYSxcbn07XG5cbmNvbnN0IElORkxBVEVfVEFHX1RBQkxFOiB7XG4gIFtJIGluIFdlbGxLbm93blRhZ05hbWVdOiBzdHJpbmc7XG59ID0gWydkaXYnLCAnc3BhbicsICdwJywgJ2EnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmxhdGVUYWdOYW1lKHRhZ05hbWU6IHN0cmluZyk6IHN0cmluZyB8IFdlbGxLbm93blRhZ05hbWUge1xuICByZXR1cm4gREVGTEFURV9UQUdfVEFCTEVbdGFnTmFtZV0gPz8gdGFnTmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZmxhdGVUYWdOYW1lKHRhZ05hbWU6IHN0cmluZyB8IFdlbGxLbm93blRhZ05hbWUpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHRhZ05hbWUgPT09ICdzdHJpbmcnID8gdGFnTmFtZSA6IElORkxBVEVfVEFHX1RBQkxFW3RhZ05hbWVdO1xufVxuXG5jb25zdCBERUZMQVRFX0FUVFJfVEFCTEU6IHtcbiAgW3RhZ05hbWU6IHN0cmluZ106IFdlbGxLbm93bkF0dHJOYW1lIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgY2xhc3M6IFdlbGxLbm93bkF0dHJOYW1lLmNsYXNzLFxuICBpZDogV2VsbEtub3duQXR0ck5hbWUuaWQsXG4gIHZhbHVlOiBXZWxsS25vd25BdHRyTmFtZS52YWx1ZSxcbiAgbmFtZTogV2VsbEtub3duQXR0ck5hbWUubmFtZSxcbiAgdHlwZTogV2VsbEtub3duQXR0ck5hbWUudHlwZSxcbiAgc3R5bGU6IFdlbGxLbm93bkF0dHJOYW1lLnN0eWxlLFxuICBocmVmOiBXZWxsS25vd25BdHRyTmFtZS5ocmVmLFxufTtcblxuY29uc3QgSU5GTEFURV9BVFRSX1RBQkxFOiB7XG4gIFtJIGluIFdlbGxLbm93bkF0dHJOYW1lXTogc3RyaW5nO1xufSA9IFsnY2xhc3MnLCAnaWQnLCAndmFsdWUnLCAnbmFtZScsICd0eXBlJywgJ3N0eWxlJywgJ2hyZWYnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmxhdGVBdHRyTmFtZShhdHRyTmFtZTogc3RyaW5nKTogc3RyaW5nIHwgV2VsbEtub3duQXR0ck5hbWUge1xuICByZXR1cm4gREVGTEFURV9BVFRSX1RBQkxFW2F0dHJOYW1lXSA/PyBhdHRyTmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluZmxhdGVBdHRyTmFtZShhdHRyTmFtZTogc3RyaW5nIHwgV2VsbEtub3duQXR0ck5hbWUpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIGF0dHJOYW1lID09PSAnc3RyaW5nJyA/IGF0dHJOYW1lIDogSU5GTEFURV9BVFRSX1RBQkxFW2F0dHJOYW1lXTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=