@projectwallace/format-css 1.0.3 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/format.cjs CHANGED
@@ -1,2 +1,2 @@
1
- function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("css-tree/parser"));function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function n(e,r){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e){return"\t".repeat(e)}function l(e,r){if(null===e.loc)return"";var t=r.substring(e.loc.start.offset,e.loc.end.offset);return e.loc.start.line===e.loc.end.line?t:t.split("\n").map(function(e){return e.trim()}).join(" ")}function a(e,r,t){var o="";return null!==e.prelude&&(o+="SelectorList"===e.prelude.type?function(e,r,t){for(var o,l="",a=n(e.children);!(o=a()).done;){var u=o.value;u!==e.children.first&&(l+="\n"),l+="Selector"===u.type?i(u,r,t):d(u,r,t),u!==e.children.last&&(l+=",")}return l}(e.prelude,r,t):d(e.prelude,r,t)),null!==e.block&&"Block"===e.block.type&&(o+=c(e.block,r,t)),o}function u(e,r){var t="";if(e.children)for(var o,a=n(e.children);!(o=a()).done;){var i=o.value;switch(i.type){case"Combinator":t+=" "," "!==i.name&&(t+=i.name+" ");break;case"PseudoClassSelector":t+=":"+i.name,i.children&&(t+="("+u(i,r)+")");break;case"SelectorList":for(var c,f=n(i.children);!(c=f()).done;){var s=c.value;t+=u(s,r),s!==i.children.last&&(t+=", ")}break;case"Nth":if(i.nth)if("AnPlusB"===i.nth.type){var d=i.nth.a,p=i.nth.b,v=null!==d,y=null!==p;v&&(t+=d+"n"),v&&y&&(t+=" "),y&&(v&&!p.startsWith("-")&&(t+="+ "),t+=p)}else t+=l(i.nth,r);null!==i.selector&&(t+=" of "+u(i.selector,r));break;default:t+=l(i,r)}}return t}function i(e,r,t){return o(r)+u(e,t)}function c(e,r,t){var l=e.children;if(l.isEmpty)return" {}";var u,i=" {\n";r++;for(var c,p=n(l);!(c=p()).done;){var v=c.value;"Declaration"===v.type?i+=s(v,r,t):"Rule"===v.type?(void 0!==u&&"Declaration"===u&&(i+="\n"),i+=a(v,r,t)):"Atrule"===v.type?(void 0!==u&&"Declaration"===u&&(i+="\n"),i+=f(v,r,t)):i+=d(v,r,t),v!==l.last&&(i+="Declaration"===v.type?"\n":"\n\n"),u=v.type}return(i+="\n")+o(--r)+"}"}function f(e,r,t){var n=o(r)+"@"+e.name;return e.prelude&&(n+=" "+l(e.prelude,t)),n+(e.block&&"Block"===e.block.type?c(e.block,r,t):";")}function s(e,r,t){return o(r)+e.property+": "+l(e.value,t)+";"}function d(e,r,t){return o(r)+function(e,r){return null===e.loc?"":r.substring(e.loc.start.offset,e.loc.end.offset)}(e,t).trim()}exports.format=function(e){return function(e,r,t){void 0===r&&(r=0);for(var o,l="",u=e.children,i=n(u);!(o=i()).done;){var c=o.value;l+="Rule"===c.type?a(c,r,t):"Atrule"===c.type?f(c,r,t):d(c,r,t),c!==u.last&&(l+="\n\n")}return l}(r.default(e,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!1,parseValue:!1}),0,e)};
1
+ function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/e(require("css-tree/parser"));function t(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function n(e,r){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(e){return"\t".repeat(e)}function a(e,r){var t=e.loc;if(!t)return"";var n=t.start,o=t.end,a=r.substring(n.offset,o.offset);return n.line===o.line?a:a.replace(/\s+/g," ")}function l(e,r,t){var o;return o="SelectorList"===e.prelude.type?function(e,r,t){for(var o,a="",l=n(e.children);!(o=l()).done;){var u=o.value;a+="Selector"===u.type?i(u,r,t):b(u,r,t),u!==e.children.last&&(a+=",\n")}return a}(e.prelude,r,t):b(e.prelude,r,t),null!==e.block&&"Block"===e.block.type&&(o+=c(e.block,r,t)),o}function u(e,r){var t="";if(e.children)for(var o,l=n(e.children);!(o=l()).done;){var i=o.value;switch(i.type){case"Combinator":t+=" "," "!==i.name&&(t+=i.name+" ");break;case"PseudoClassSelector":t+=":"+i.name,i.children&&(t+="("+u(i,r)+")");break;case"SelectorList":for(var c,s=n(i.children);!(c=s()).done;){var f=c.value;t+=u(f,r),f!==i.children.last&&(t+=", ")}break;case"Nth":if(i.nth)if("AnPlusB"===i.nth.type){var p=i.nth.a,d=i.nth.b;null!==p&&(t+=p+"n"),null!==p&&null!==d&&(t+=" "),null!==d&&(null===p||d.startsWith("-")||(t+="+ "),t+=d)}else t+=a(i.nth,r);null!==i.selector&&(t+=" of "+u(i.selector,r));break;default:t+=a(i,r)}}return t}function i(e,r,t){return o(r)+u(e,t)}function c(e,r,t){var a=e.children;if(a.isEmpty)return" {}";var u,i=" {\n";r++;for(var c,p=n(a);!(c=p()).done;){var d=c.value;"Declaration"===d.type?i+=f(d,r,t)+";":"Rule"===d.type?("Declaration"===u&&(i+="\n"),i+=l(d,r,t)):"Atrule"===d.type?("Declaration"===u&&(i+="\n"),i+=s(d,r,t)):i+=b(d,r,t),d!==a.last&&(i+="\n","Declaration"!==d.type&&(i+="\n")),u=d.type}return(i+="\n")+o(--r)+"}"}function s(e,r,t){var n=o(r)+"@"+e.name.toLowerCase();return null!==e.prelude&&(n+=" "+function(e,r,t){return a(e,t).replace(/\s*([:,])/g,"$1 ").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/\s+/g," ")}(e.prelude,0,t)),null===e.block?n+=";":"Block"===e.block.type&&(n+=c(e.block,r,t)),n}function f(e,r,t){var n=e.property.toLowerCase(),a=v(e.value,0,t).trim();return"font"===n&&(a=a.replace(/\s*\/\s*/,"/")),o(r)+n+": "+a}function p(e,r,t){for(var o,l="",u=n(e);!(o=u()).done;){var i=o.value;i!==e.first&&"Operator"!==i.type&&(l+=" "),"Identifier"===i.type?l+=i.name.toLowerCase():"Function"===i.type?l+=y(i,0,t):"Dimension"===i.type?l+=d(i):"Value"===i.type?l+=v(i,0,t):"Operator"===i.type?(","!==i.value&&(l+=" "),l+=a(i,t)):l+=a(i,t)}return l}function d(e,r,t){return e.value+e.unit.toLowerCase()}function v(e,r,t){return"Raw"===e.type?b(e,0,t):p(e.children,0,t)}function y(e,r,t){var n=e.name.toLowerCase()+"(";return(n+=p(e.children,0,t))+")"}function b(e,r,t){return o(r)+function(e,r){return e.loc?r.substring(e.loc.start.offset,e.loc.end.offset):""}(e,t).trim()}exports.format=function(e){return function(e,r,t){void 0===r&&(r=0);for(var o,a="",u=e.children,i=n(u);!(o=i()).done;){var c=o.value;a+="Rule"===c.type?l(c,r,t):"Atrule"===c.type?s(c,r,t):b(c,r,t),c!==u.last&&(a+="\n\n")}return a}(r.default(e,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!0,parseValue:!0}),0,e)};
2
2
  //# sourceMappingURL=format.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.cjs","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tif (node.loc === null) return ''\n\tlet str = css.substring(node.loc.start.offset, node.loc.end.offset)\n\n\t// Single-line node, most common case\n\tif (node.loc.start.line === node.loc.end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.split('\\n').map(part => part.trim()).join(' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (node.loc === null) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer = ''\n\n\tif (node.prelude !== null) {\n\t\tif (node.prelude.type === 'SelectorList') {\n\t\t\tbuffer += print_selectorlist(node.prelude, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(node.prelude, indent_level, css)\n\t\t}\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector !== node.children.first) {\n\t\t\tbuffer += '\\n'\n\t\t}\n\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += ','\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\t\t\t\t\t\t\tlet hasA = a !== null\n\t\t\t\t\t\t\tlet hasB = b !== null\n\n\t\t\t\t\t\t\tif (hasA) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasA && hasB) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasB) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (hasA && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css)\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tif (child.type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t} else {\n\t\t\t\tbuffer += '\\n\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name\n\n\t// @font-face has no prelude\n\tif (node.prelude) {\n\t\tbuffer += ' ' + substr(node.prelude, css)\n\t}\n\n\tif (node.block && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t} else {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Declation} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\treturn indent(indent_level) + node.property + ': ' + substr(node.value, css) + ';'\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: false,\n\t\tparseValue: false,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","str","substring","start","offset","end","line","split","map","part","trim","join","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","first","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","hasA","hasB","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","undefined","print_atrule","property","substr_raw","_step5","_iterator5","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
1
+ {"version":3,"file":"format.cjs","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tlet loc = node.loc\n\n\tif (!loc) return ''\n\n\tlet start = loc.start\n\tlet end = loc.end\n\tlet str = css.substring(start.offset, end.offset)\n\n\t// Single-line node, most common case\n\tif (start.line === end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.replace(/\\s+/g, ' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (!node.loc) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer\n\n\tif (node.prelude.type === 'SelectorList') {\n\t\tbuffer = print_selectorlist(node.prelude, indent_level, css)\n\t} else {\n\t\tbuffer = print_unknown(node.prelude, indent_level, css)\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += `,\\n`\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector|import('css-tree').PseudoClassSelector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\n\t\t\t\t\t\t\tif (a !== null) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (a !== null && b !== null) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (b !== null) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (a !== null && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css) + ';'\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n'\n\n\t\t\tif (child.type !== 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name.toLowerCase()\n\n\t// @font-face has no prelude\n\tif (node.prelude !== null) {\n\t\tbuffer += ' ' + print_prelude(node.prelude, 0, css)\n\t}\n\n\tif (node.block === null) {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t} else if (node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * Pretty-printing atrule preludes takes an insane amount of rules,\n * so we're opting for a couple of 'good-enough' string replacements\n * here to force some nice formatting.\n * Should be OK perf-wise, since the amount of atrules in most\n * stylesheets are limited, so this won't be called too often.\n * @param {import('css-tree').AtrulePrelude | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_prelude(node, indent_level, css) {\n\tlet buffer = substr(node, css)\n\treturn buffer\n\t\t.replace(/\\s*([:,])/g, '$1 ') // force whitespace after colon or comma\n\t\t.replace(/\\(\\s+/g, '(') // remove whitespace after (\n\t\t.replace(/\\s+\\)/g, ')') // remove whitespace before )\n\t\t.replace(/\\s+/g, ' ') // collapse multiple whitespaces into one\n}\n\n/**\n * @param {import('css-tree').Declaration} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\tlet property = node.property.toLowerCase()\n\tlet value = print_value(node.value, indent_level, css).trim()\n\n\t// Special case for `font` shorthand: remove whitespace around /\n\tif (property === 'font') {\n\t\tvalue = value.replace(/\\s*\\/\\s*/, '/')\n\t}\n\n\treturn indent(indent_level) + property + ': ' + value\n}\n\n/**\n * @param {import('css-tree').List} children\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_list(children, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let node of children) {\n\t\tif (node !== children.first && node.type !== 'Operator') {\n\t\t\tbuffer += ' '\n\t\t}\n\n\t\tif (node.type === 'Identifier') {\n\t\t\t// TODO: new CSS keywork NaN should not be lowercased\n\t\t\tbuffer += node.name.toLowerCase()\n\t\t} else if (node.type === 'Function') {\n\t\t\tbuffer += print_function(node, 0, css)\n\t\t} else if (node.type === 'Dimension') {\n\t\t\tbuffer += print_dimension(node, 0, css)\n\t\t} else if (node.type === 'Value') {\n\t\t\t// Values can be inside var() as fallback\n\t\t\t// var(--prop, VALUE)\n\t\t\tbuffer += print_value(node, 0, css)\n\t\t} else if (node.type === 'Operator') {\n\t\t\t// Put extra spacing around + - / *\n\t\t\t// but not before a comma\n\t\t\tif (node.value !== ',') {\n\t\t\t\tbuffer += ' '\n\t\t\t}\n\t\t\tbuffer += substr(node, css)\n\t\t} else {\n\t\t\tbuffer += substr(node, css)\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Dimension} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_dimension(node, indent_level, css) {\n\treturn node.value + node.unit.toLowerCase()\n}\n\n/**\n * @param {import('css-tree').Value | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_value(node, indent_level, css) {\n\tif (node.type === 'Raw') {\n\t\treturn print_unknown(node, 0, css)\n\t}\n\n\treturn print_list(node.children, 0, css)\n}\n\n/**\n * @param {import('css-tree').FunctionNode} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_function(node, indent_level, css) {\n\tlet buffer = node.name.toLowerCase() + '('\n\tbuffer += print_list(node.children, 0, css)\n\tbuffer += ')'\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: true,\n\t\tparseValue: true,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","start","end","str","substring","offset","line","replace","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","print_atrule","toLowerCase","print_prelude","property","print_value","trim","print_list","_step5","_iterator5","first","print_function","print_dimension","unit","substr_raw","_step6","_iterator6","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"css-tree/parser";function t(e){return"\t".repeat(e)}function n(e,t){if(null===e.loc)return"";let n=t.substring(e.loc.start.offset,e.loc.end.offset);return e.loc.start.line===e.loc.end.line?n:n.split("\n").map(e=>e.trim()).join(" ")}function r(e,t,n){let r="";return null!==e.prelude&&(r+="SelectorList"===e.prelude.type?function(e,t,n){let r="";for(let l of e.children)l!==e.children.first&&(r+="\n"),r+="Selector"===l.type?o(l,t,n):s(l,t,n),l!==e.children.last&&(r+=",");return r}(e.prelude,t,n):s(e.prelude,t,n)),null!==e.block&&"Block"===e.block.type&&(r+=c(e.block,t,n)),r}function l(e,t){let r="";if(e.children)for(let o of e.children)switch(o.type){case"Combinator":r+=" "," "!==o.name&&(r+=o.name+" ");break;case"PseudoClassSelector":r+=":"+o.name,o.children&&(r+="("+l(o,t)+")");break;case"SelectorList":for(let e of o.children)r+=l(e,t),e!==o.children.last&&(r+=", ");break;case"Nth":if(o.nth)if("AnPlusB"===o.nth.type){let e=o.nth.a,t=o.nth.b,n=null!==e,l=null!==t;n&&(r+=e+"n"),n&&l&&(r+=" "),l&&(n&&!t.startsWith("-")&&(r+="+ "),r+=t)}else r+=n(o.nth,t);null!==o.selector&&(r+=" of "+l(o.selector,t));break;default:r+=n(o,t)}return r}function o(e,n,r){return t(n)+l(e,r)}function c(e,n,l){let o=e.children;if(o.isEmpty)return" {}";let c,a=" {\n";n++;for(let e of o)"Declaration"===e.type?a+=i(e,n,l):"Rule"===e.type?(void 0!==c&&"Declaration"===c&&(a+="\n"),a+=r(e,n,l)):"Atrule"===e.type?(void 0!==c&&"Declaration"===c&&(a+="\n"),a+=u(e,n,l)):a+=s(e,n,l),e!==o.last&&(a+="Declaration"===e.type?"\n":"\n\n"),c=e.type;return a+="\n",a+=t(--n)+"}",a}function u(e,r,l){let o=t(r)+"@"+e.name;return e.prelude&&(o+=" "+n(e.prelude,l)),o+=e.block&&"Block"===e.block.type?c(e.block,r,l):";",o}function i(e,r,l){return t(r)+e.property+": "+n(e.value,l)+";"}function s(e,n,r){return t(n)+function(e,t){return null===e.loc?"":t.substring(e.loc.start.offset,e.loc.end.offset)}(e,r).trim()}function a(t){return function(e,t=0,n){let l="",o=e.children;for(let e of o)l+="Rule"===e.type?r(e,t,n):"Atrule"===e.type?u(e,t,n):s(e,t,n),e!==o.last&&(l+="\n\n");return l}(e(t,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!1,parseValue:!1}),0,t)}export{a as format};
1
+ import e from"css-tree/parser";function t(e){return"\t".repeat(e)}function r(e,t){let r=e.loc;if(!r)return"";let n=r.start,l=r.end,o=t.substring(n.offset,l.offset);return n.line===l.line?o:o.replace(/\s+/g," ")}function n(e,t,r){let n;return n="SelectorList"===e.prelude.type?function(e,t,r){let n="";for(let l of e.children)n+="Selector"===l.type?o(l,t,r):y(l,t,r),l!==e.children.last&&(n+=",\n");return n}(e.prelude,t,r):y(e.prelude,t,r),null!==e.block&&"Block"===e.block.type&&(n+=u(e.block,t,r)),n}function l(e,t){let n="";if(e.children)for(let o of e.children)switch(o.type){case"Combinator":n+=" "," "!==o.name&&(n+=o.name+" ");break;case"PseudoClassSelector":n+=":"+o.name,o.children&&(n+="("+l(o,t)+")");break;case"SelectorList":for(let e of o.children)n+=l(e,t),e!==o.children.last&&(n+=", ");break;case"Nth":if(o.nth)if("AnPlusB"===o.nth.type){let e=o.nth.a,t=o.nth.b;null!==e&&(n+=e+"n"),null!==e&&null!==t&&(n+=" "),null!==t&&(null===e||t.startsWith("-")||(n+="+ "),n+=t)}else n+=r(o.nth,t);null!==o.selector&&(n+=" of "+l(o.selector,t));break;default:n+=r(o,t)}return n}function o(e,r,n){return t(r)+l(e,n)}function u(e,r,l){let o=e.children;if(o.isEmpty)return" {}";let u,a=" {\n";r++;for(let e of o)"Declaration"===e.type?a+=i(e,r,l)+";":"Rule"===e.type?("Declaration"===u&&(a+="\n"),a+=n(e,r,l)):"Atrule"===e.type?("Declaration"===u&&(a+="\n"),a+=c(e,r,l)):a+=y(e,r,l),e!==o.last&&(a+="\n","Declaration"!==e.type&&(a+="\n")),u=e.type;return a+="\n",a+=t(--r)+"}",a}function c(e,n,l){let o=t(n)+"@"+e.name.toLowerCase();return null!==e.prelude&&(o+=" "+function(e,t,n){return r(e,n).replace(/\s*([:,])/g,"$1 ").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/\s+/g," ")}(e.prelude,0,l)),null===e.block?o+=";":"Block"===e.block.type&&(o+=u(e.block,n,l)),o}function i(e,r,n){let l=e.property.toLowerCase(),o=f(e.value,0,n).trim();return"font"===l&&(o=o.replace(/\s*\/\s*/,"/")),t(r)+l+": "+o}function a(e,t,n){let l="";for(let t of e)t!==e.first&&"Operator"!==t.type&&(l+=" "),"Identifier"===t.type?l+=t.name.toLowerCase():"Function"===t.type?l+=p(t,0,n):"Dimension"===t.type?l+=s(t):"Value"===t.type?l+=f(t,0,n):"Operator"===t.type?(","!==t.value&&(l+=" "),l+=r(t,n)):l+=r(t,n);return l}function s(e,t,r){return e.value+e.unit.toLowerCase()}function f(e,t,r){return"Raw"===e.type?y(e,0,r):a(e.children,0,r)}function p(e,t,r){let n=e.name.toLowerCase()+"(";return n+=a(e.children,0,r),n+=")",n}function y(e,r,n){return t(r)+function(e,t){return e.loc?t.substring(e.loc.start.offset,e.loc.end.offset):""}(e,n).trim()}function d(t){return function(e,t=0,r){let l="",o=e.children;for(let e of o)l+="Rule"===e.type?n(e,t,r):"Atrule"===e.type?c(e,t,r):y(e,t,r),e!==o.last&&(l+="\n\n");return l}(e(t,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!0,parseValue:!0}),0,t)}export{d as format};
2
2
  //# sourceMappingURL=format.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.modern.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tif (node.loc === null) return ''\n\tlet str = css.substring(node.loc.start.offset, node.loc.end.offset)\n\n\t// Single-line node, most common case\n\tif (node.loc.start.line === node.loc.end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.split('\\n').map(part => part.trim()).join(' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (node.loc === null) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer = ''\n\n\tif (node.prelude !== null) {\n\t\tif (node.prelude.type === 'SelectorList') {\n\t\t\tbuffer += print_selectorlist(node.prelude, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(node.prelude, indent_level, css)\n\t\t}\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector !== node.children.first) {\n\t\t\tbuffer += '\\n'\n\t\t}\n\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += ','\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\t\t\t\t\t\t\tlet hasA = a !== null\n\t\t\t\t\t\t\tlet hasB = b !== null\n\n\t\t\t\t\t\t\tif (hasA) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasA && hasB) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasB) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (hasA && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css)\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tif (child.type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t} else {\n\t\t\t\tbuffer += '\\n\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name\n\n\t// @font-face has no prelude\n\tif (node.prelude) {\n\t\tbuffer += ' ' + substr(node.prelude, css)\n\t}\n\n\tif (node.block && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t} else {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Declation} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\treturn indent(indent_level) + node.property + ': ' + substr(node.value, css) + ';'\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: false,\n\t\tparseValue: false,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","str","substring","start","offset","end","line","split","map","part","trim","join","print_rule","indent_level","buffer","prelude","type","selector","children","first","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","child","name","grandchild","nth","a","b","hasA","hasB","startsWith","isEmpty","prev_type","print_declaration","undefined","print_atrule","property","value","substr_raw","format","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
1
+ {"version":3,"file":"format.modern.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tlet loc = node.loc\n\n\tif (!loc) return ''\n\n\tlet start = loc.start\n\tlet end = loc.end\n\tlet str = css.substring(start.offset, end.offset)\n\n\t// Single-line node, most common case\n\tif (start.line === end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.replace(/\\s+/g, ' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (!node.loc) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer\n\n\tif (node.prelude.type === 'SelectorList') {\n\t\tbuffer = print_selectorlist(node.prelude, indent_level, css)\n\t} else {\n\t\tbuffer = print_unknown(node.prelude, indent_level, css)\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += `,\\n`\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector|import('css-tree').PseudoClassSelector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\n\t\t\t\t\t\t\tif (a !== null) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (a !== null && b !== null) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (b !== null) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (a !== null && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css) + ';'\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n'\n\n\t\t\tif (child.type !== 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name.toLowerCase()\n\n\t// @font-face has no prelude\n\tif (node.prelude !== null) {\n\t\tbuffer += ' ' + print_prelude(node.prelude, 0, css)\n\t}\n\n\tif (node.block === null) {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t} else if (node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * Pretty-printing atrule preludes takes an insane amount of rules,\n * so we're opting for a couple of 'good-enough' string replacements\n * here to force some nice formatting.\n * Should be OK perf-wise, since the amount of atrules in most\n * stylesheets are limited, so this won't be called too often.\n * @param {import('css-tree').AtrulePrelude | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_prelude(node, indent_level, css) {\n\tlet buffer = substr(node, css)\n\treturn buffer\n\t\t.replace(/\\s*([:,])/g, '$1 ') // force whitespace after colon or comma\n\t\t.replace(/\\(\\s+/g, '(') // remove whitespace after (\n\t\t.replace(/\\s+\\)/g, ')') // remove whitespace before )\n\t\t.replace(/\\s+/g, ' ') // collapse multiple whitespaces into one\n}\n\n/**\n * @param {import('css-tree').Declaration} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\tlet property = node.property.toLowerCase()\n\tlet value = print_value(node.value, indent_level, css).trim()\n\n\t// Special case for `font` shorthand: remove whitespace around /\n\tif (property === 'font') {\n\t\tvalue = value.replace(/\\s*\\/\\s*/, '/')\n\t}\n\n\treturn indent(indent_level) + property + ': ' + value\n}\n\n/**\n * @param {import('css-tree').List} children\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_list(children, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let node of children) {\n\t\tif (node !== children.first && node.type !== 'Operator') {\n\t\t\tbuffer += ' '\n\t\t}\n\n\t\tif (node.type === 'Identifier') {\n\t\t\t// TODO: new CSS keywork NaN should not be lowercased\n\t\t\tbuffer += node.name.toLowerCase()\n\t\t} else if (node.type === 'Function') {\n\t\t\tbuffer += print_function(node, 0, css)\n\t\t} else if (node.type === 'Dimension') {\n\t\t\tbuffer += print_dimension(node, 0, css)\n\t\t} else if (node.type === 'Value') {\n\t\t\t// Values can be inside var() as fallback\n\t\t\t// var(--prop, VALUE)\n\t\t\tbuffer += print_value(node, 0, css)\n\t\t} else if (node.type === 'Operator') {\n\t\t\t// Put extra spacing around + - / *\n\t\t\t// but not before a comma\n\t\t\tif (node.value !== ',') {\n\t\t\t\tbuffer += ' '\n\t\t\t}\n\t\t\tbuffer += substr(node, css)\n\t\t} else {\n\t\t\tbuffer += substr(node, css)\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Dimension} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_dimension(node, indent_level, css) {\n\treturn node.value + node.unit.toLowerCase()\n}\n\n/**\n * @param {import('css-tree').Value | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_value(node, indent_level, css) {\n\tif (node.type === 'Raw') {\n\t\treturn print_unknown(node, 0, css)\n\t}\n\n\treturn print_list(node.children, 0, css)\n}\n\n/**\n * @param {import('css-tree').FunctionNode} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_function(node, indent_level, css) {\n\tlet buffer = node.name.toLowerCase() + '('\n\tbuffer += print_list(node.children, 0, css)\n\tbuffer += ')'\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: true,\n\t\tparseValue: true,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","start","end","str","substring","offset","line","replace","print_rule","indent_level","buffer","prelude","type","selector","children","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","child","name","grandchild","nth","a","b","startsWith","isEmpty","prev_type","print_declaration","print_atrule","toLowerCase","print_prelude","property","value","print_value","trim","print_list","first","print_function","print_dimension","unit","substr_raw","format","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from"css-tree/parser";function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function t(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(e){return"\t".repeat(e)}function o(e,r){if(null===e.loc)return"";var t=r.substring(e.loc.start.offset,e.loc.end.offset);return e.loc.start.line===e.loc.end.line?t:t.split("\n").map(function(e){return e.trim()}).join(" ")}function l(e,r,n){var o="";return null!==e.prelude&&(o+="SelectorList"===e.prelude.type?function(e,r,n){for(var o,l="",a=t(e.children);!(o=a()).done;){var i=o.value;i!==e.children.first&&(l+="\n"),l+="Selector"===i.type?u(i,r,n):f(i,r,n),i!==e.children.last&&(l+=",")}return l}(e.prelude,r,n):f(e.prelude,r,n)),null!==e.block&&"Block"===e.block.type&&(o+=i(e.block,r,n)),o}function a(e,r){var n="";if(e.children)for(var l,u=t(e.children);!(l=u()).done;){var i=l.value;switch(i.type){case"Combinator":n+=" "," "!==i.name&&(n+=i.name+" ");break;case"PseudoClassSelector":n+=":"+i.name,i.children&&(n+="("+a(i,r)+")");break;case"SelectorList":for(var c,s=t(i.children);!(c=s()).done;){var f=c.value;n+=a(f,r),f!==i.children.last&&(n+=", ")}break;case"Nth":if(i.nth)if("AnPlusB"===i.nth.type){var p=i.nth.a,d=i.nth.b,v=null!==p,y=null!==d;v&&(n+=p+"n"),v&&y&&(n+=" "),y&&(v&&!d.startsWith("-")&&(n+="+ "),n+=d)}else n+=o(i.nth,r);null!==i.selector&&(n+=" of "+a(i.selector,r));break;default:n+=o(i,r)}}return n}function u(e,r,t){return n(r)+a(e,t)}function i(e,r,o){var a=e.children;if(a.isEmpty)return" {}";var u,i=" {\n";r++;for(var p,d=t(a);!(p=d()).done;){var v=p.value;"Declaration"===v.type?i+=s(v,r,o):"Rule"===v.type?(void 0!==u&&"Declaration"===u&&(i+="\n"),i+=l(v,r,o)):"Atrule"===v.type?(void 0!==u&&"Declaration"===u&&(i+="\n"),i+=c(v,r,o)):i+=f(v,r,o),v!==a.last&&(i+="Declaration"===v.type?"\n":"\n\n"),u=v.type}return(i+="\n")+n(--r)+"}"}function c(e,r,t){var l=n(r)+"@"+e.name;return e.prelude&&(l+=" "+o(e.prelude,t)),l+(e.block&&"Block"===e.block.type?i(e.block,r,t):";")}function s(e,r,t){return n(r)+e.property+": "+o(e.value,t)+";"}function f(e,r,t){return n(r)+function(e,r){return null===e.loc?"":r.substring(e.loc.start.offset,e.loc.end.offset)}(e,t).trim()}function p(r){return function(e,r,n){void 0===r&&(r=0);for(var o,a="",u=e.children,i=t(u);!(o=i()).done;){var s=o.value;a+="Rule"===s.type?l(s,r,n):"Atrule"===s.type?c(s,r,n):f(s,r,n),s!==u.last&&(a+="\n\n")}return a}(e(r,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!1,parseValue:!1}),0,r)}export{p as format};
1
+ import e from"css-tree/parser";function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function t(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(e){return"\t".repeat(e)}function o(e,r){var t=e.loc;if(!t)return"";var n=t.start,o=t.end,a=r.substring(n.offset,o.offset);return n.line===o.line?a:a.replace(/\s+/g," ")}function a(e,r,n){var o;return o="SelectorList"===e.prelude.type?function(e,r,n){for(var o,a="",l=t(e.children);!(o=l()).done;){var i=o.value;a+="Selector"===i.type?u(i,r,n):y(i,r,n),i!==e.children.last&&(a+=",\n")}return a}(e.prelude,r,n):y(e.prelude,r,n),null!==e.block&&"Block"===e.block.type&&(o+=i(e.block,r,n)),o}function l(e,r){var n="";if(e.children)for(var a,u=t(e.children);!(a=u()).done;){var i=a.value;switch(i.type){case"Combinator":n+=" "," "!==i.name&&(n+=i.name+" ");break;case"PseudoClassSelector":n+=":"+i.name,i.children&&(n+="("+l(i,r)+")");break;case"SelectorList":for(var c,s=t(i.children);!(c=s()).done;){var f=c.value;n+=l(f,r),f!==i.children.last&&(n+=", ")}break;case"Nth":if(i.nth)if("AnPlusB"===i.nth.type){var p=i.nth.a,v=i.nth.b;null!==p&&(n+=p+"n"),null!==p&&null!==v&&(n+=" "),null!==v&&(null===p||v.startsWith("-")||(n+="+ "),n+=v)}else n+=o(i.nth,r);null!==i.selector&&(n+=" of "+l(i.selector,r));break;default:n+=o(i,r)}}return n}function u(e,r,t){return n(r)+l(e,t)}function i(e,r,o){var l=e.children;if(l.isEmpty)return" {}";var u,i=" {\n";r++;for(var f,p=t(l);!(f=p()).done;){var v=f.value;"Declaration"===v.type?i+=s(v,r,o)+";":"Rule"===v.type?("Declaration"===u&&(i+="\n"),i+=a(v,r,o)):"Atrule"===v.type?("Declaration"===u&&(i+="\n"),i+=c(v,r,o)):i+=y(v,r,o),v!==l.last&&(i+="\n","Declaration"!==v.type&&(i+="\n")),u=v.type}return(i+="\n")+n(--r)+"}"}function c(e,r,t){var a=n(r)+"@"+e.name.toLowerCase();return null!==e.prelude&&(a+=" "+function(e,r,t){return o(e,t).replace(/\s*([:,])/g,"$1 ").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/\s+/g," ")}(e.prelude,0,t)),null===e.block?a+=";":"Block"===e.block.type&&(a+=i(e.block,r,t)),a}function s(e,r,t){var o=e.property.toLowerCase(),a=v(e.value,0,t).trim();return"font"===o&&(a=a.replace(/\s*\/\s*/,"/")),n(r)+o+": "+a}function f(e,r,n){for(var a,l="",u=t(e);!(a=u()).done;){var i=a.value;i!==e.first&&"Operator"!==i.type&&(l+=" "),"Identifier"===i.type?l+=i.name.toLowerCase():"Function"===i.type?l+=d(i,0,n):"Dimension"===i.type?l+=p(i):"Value"===i.type?l+=v(i,0,n):"Operator"===i.type?(","!==i.value&&(l+=" "),l+=o(i,n)):l+=o(i,n)}return l}function p(e,r,t){return e.value+e.unit.toLowerCase()}function v(e,r,t){return"Raw"===e.type?y(e,0,t):f(e.children,0,t)}function d(e,r,t){var n=e.name.toLowerCase()+"(";return(n+=f(e.children,0,t))+")"}function y(e,r,t){return n(r)+function(e,r){return e.loc?r.substring(e.loc.start.offset,e.loc.end.offset):""}(e,t).trim()}function h(r){return function(e,r,n){void 0===r&&(r=0);for(var o,l="",u=e.children,i=t(u);!(o=i()).done;){var s=o.value;l+="Rule"===s.type?a(s,r,n):"Atrule"===s.type?c(s,r,n):y(s,r,n),s!==u.last&&(l+="\n\n")}return l}(e(r,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!0,parseValue:!0}),0,r)}export{h as format};
2
2
  //# sourceMappingURL=format.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.module.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tif (node.loc === null) return ''\n\tlet str = css.substring(node.loc.start.offset, node.loc.end.offset)\n\n\t// Single-line node, most common case\n\tif (node.loc.start.line === node.loc.end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.split('\\n').map(part => part.trim()).join(' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (node.loc === null) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer = ''\n\n\tif (node.prelude !== null) {\n\t\tif (node.prelude.type === 'SelectorList') {\n\t\t\tbuffer += print_selectorlist(node.prelude, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(node.prelude, indent_level, css)\n\t\t}\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector !== node.children.first) {\n\t\t\tbuffer += '\\n'\n\t\t}\n\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += ','\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\t\t\t\t\t\t\tlet hasA = a !== null\n\t\t\t\t\t\t\tlet hasB = b !== null\n\n\t\t\t\t\t\t\tif (hasA) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasA && hasB) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasB) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (hasA && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css)\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tif (child.type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t} else {\n\t\t\t\tbuffer += '\\n\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name\n\n\t// @font-face has no prelude\n\tif (node.prelude) {\n\t\tbuffer += ' ' + substr(node.prelude, css)\n\t}\n\n\tif (node.block && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t} else {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Declation} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\treturn indent(indent_level) + node.property + ': ' + substr(node.value, css) + ';'\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: false,\n\t\tparseValue: false,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","str","substring","start","offset","end","line","split","map","part","trim","join","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","first","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","hasA","hasB","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","undefined","print_atrule","property","substr_raw","format","_step5","_iterator5","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
1
+ {"version":3,"file":"format.module.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tlet loc = node.loc\n\n\tif (!loc) return ''\n\n\tlet start = loc.start\n\tlet end = loc.end\n\tlet str = css.substring(start.offset, end.offset)\n\n\t// Single-line node, most common case\n\tif (start.line === end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.replace(/\\s+/g, ' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (!node.loc) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer\n\n\tif (node.prelude.type === 'SelectorList') {\n\t\tbuffer = print_selectorlist(node.prelude, indent_level, css)\n\t} else {\n\t\tbuffer = print_unknown(node.prelude, indent_level, css)\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += `,\\n`\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector|import('css-tree').PseudoClassSelector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\n\t\t\t\t\t\t\tif (a !== null) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (a !== null && b !== null) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (b !== null) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (a !== null && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css) + ';'\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n'\n\n\t\t\tif (child.type !== 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name.toLowerCase()\n\n\t// @font-face has no prelude\n\tif (node.prelude !== null) {\n\t\tbuffer += ' ' + print_prelude(node.prelude, 0, css)\n\t}\n\n\tif (node.block === null) {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t} else if (node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * Pretty-printing atrule preludes takes an insane amount of rules,\n * so we're opting for a couple of 'good-enough' string replacements\n * here to force some nice formatting.\n * Should be OK perf-wise, since the amount of atrules in most\n * stylesheets are limited, so this won't be called too often.\n * @param {import('css-tree').AtrulePrelude | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_prelude(node, indent_level, css) {\n\tlet buffer = substr(node, css)\n\treturn buffer\n\t\t.replace(/\\s*([:,])/g, '$1 ') // force whitespace after colon or comma\n\t\t.replace(/\\(\\s+/g, '(') // remove whitespace after (\n\t\t.replace(/\\s+\\)/g, ')') // remove whitespace before )\n\t\t.replace(/\\s+/g, ' ') // collapse multiple whitespaces into one\n}\n\n/**\n * @param {import('css-tree').Declaration} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\tlet property = node.property.toLowerCase()\n\tlet value = print_value(node.value, indent_level, css).trim()\n\n\t// Special case for `font` shorthand: remove whitespace around /\n\tif (property === 'font') {\n\t\tvalue = value.replace(/\\s*\\/\\s*/, '/')\n\t}\n\n\treturn indent(indent_level) + property + ': ' + value\n}\n\n/**\n * @param {import('css-tree').List} children\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_list(children, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let node of children) {\n\t\tif (node !== children.first && node.type !== 'Operator') {\n\t\t\tbuffer += ' '\n\t\t}\n\n\t\tif (node.type === 'Identifier') {\n\t\t\t// TODO: new CSS keywork NaN should not be lowercased\n\t\t\tbuffer += node.name.toLowerCase()\n\t\t} else if (node.type === 'Function') {\n\t\t\tbuffer += print_function(node, 0, css)\n\t\t} else if (node.type === 'Dimension') {\n\t\t\tbuffer += print_dimension(node, 0, css)\n\t\t} else if (node.type === 'Value') {\n\t\t\t// Values can be inside var() as fallback\n\t\t\t// var(--prop, VALUE)\n\t\t\tbuffer += print_value(node, 0, css)\n\t\t} else if (node.type === 'Operator') {\n\t\t\t// Put extra spacing around + - / *\n\t\t\t// but not before a comma\n\t\t\tif (node.value !== ',') {\n\t\t\t\tbuffer += ' '\n\t\t\t}\n\t\t\tbuffer += substr(node, css)\n\t\t} else {\n\t\t\tbuffer += substr(node, css)\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Dimension} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_dimension(node, indent_level, css) {\n\treturn node.value + node.unit.toLowerCase()\n}\n\n/**\n * @param {import('css-tree').Value | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_value(node, indent_level, css) {\n\tif (node.type === 'Raw') {\n\t\treturn print_unknown(node, 0, css)\n\t}\n\n\treturn print_list(node.children, 0, css)\n}\n\n/**\n * @param {import('css-tree').FunctionNode} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_function(node, indent_level, css) {\n\tlet buffer = node.name.toLowerCase() + '('\n\tbuffer += print_list(node.children, 0, css)\n\tbuffer += ')'\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: true,\n\t\tparseValue: true,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","start","end","str","substring","offset","line","replace","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","print_atrule","toLowerCase","print_prelude","property","print_value","trim","print_list","_step5","_iterator5","first","print_function","print_dimension","unit","substr_raw","format","_step6","_iterator6","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("css-tree/parser")):"function"==typeof define&&define.amd?define(["exports","css-tree/parser"],r):r((e||self).formatCss={},e.parse)}(this,function(e,r){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=/*#__PURE__*/t(r);function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function l(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(e){return"\t".repeat(e)}function u(e,r){if(null===e.loc)return"";var t=r.substring(e.loc.start.offset,e.loc.end.offset);return e.loc.start.line===e.loc.end.line?t:t.split("\n").map(function(e){return e.trim()}).join(" ")}function i(e,r,t){var n="";return null!==e.prelude&&(n+="SelectorList"===e.prelude.type?function(e,r,t){for(var n,o="",a=l(e.children);!(n=a()).done;){var u=n.value;u!==e.children.first&&(o+="\n"),o+="Selector"===u.type?f(u,r,t):v(u,r,t),u!==e.children.last&&(o+=",")}return o}(e.prelude,r,t):v(e.prelude,r,t)),null!==e.block&&"Block"===e.block.type&&(n+=s(e.block,r,t)),n}function c(e,r){var t="";if(e.children)for(var n,o=l(e.children);!(n=o()).done;){var a=n.value;switch(a.type){case"Combinator":t+=" "," "!==a.name&&(t+=a.name+" ");break;case"PseudoClassSelector":t+=":"+a.name,a.children&&(t+="("+c(a,r)+")");break;case"SelectorList":for(var i,f=l(a.children);!(i=f()).done;){var s=i.value;t+=c(s,r),s!==a.children.last&&(t+=", ")}break;case"Nth":if(a.nth)if("AnPlusB"===a.nth.type){var d=a.nth.a,p=a.nth.b,v=null!==d,y=null!==p;v&&(t+=d+"n"),v&&y&&(t+=" "),y&&(v&&!p.startsWith("-")&&(t+="+ "),t+=p)}else t+=u(a.nth,r);null!==a.selector&&(t+=" of "+c(a.selector,r));break;default:t+=u(a,r)}}return t}function f(e,r,t){return a(r)+c(e,t)}function s(e,r,t){var n=e.children;if(n.isEmpty)return" {}";var o,u=" {\n";r++;for(var c,f=l(n);!(c=f()).done;){var s=c.value;"Declaration"===s.type?u+=p(s,r,t):"Rule"===s.type?(void 0!==o&&"Declaration"===o&&(u+="\n"),u+=i(s,r,t)):"Atrule"===s.type?(void 0!==o&&"Declaration"===o&&(u+="\n"),u+=d(s,r,t)):u+=v(s,r,t),s!==n.last&&(u+="Declaration"===s.type?"\n":"\n\n"),o=s.type}return(u+="\n")+a(--r)+"}"}function d(e,r,t){var n=a(r)+"@"+e.name;return e.prelude&&(n+=" "+u(e.prelude,t)),n+(e.block&&"Block"===e.block.type?s(e.block,r,t):";")}function p(e,r,t){return a(r)+e.property+": "+u(e.value,t)+";"}function v(e,r,t){return a(r)+function(e,r){return null===e.loc?"":r.substring(e.loc.start.offset,e.loc.end.offset)}(e,t).trim()}e.format=function(e){return function(e,r,t){void 0===r&&(r=0);for(var n,o="",a=e.children,u=l(a);!(n=u()).done;){var c=n.value;o+="Rule"===c.type?i(c,r,t):"Atrule"===c.type?d(c,r,t):v(c,r,t),c!==a.last&&(o+="\n\n")}return o}(n.default(e,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!1,parseValue:!1}),0,e)}});
1
+ !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("css-tree/parser")):"function"==typeof define&&define.amd?define(["exports","css-tree/parser"],r):r((e||self).formatCss={},e.parse)}(this,function(e,r){function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var n=/*#__PURE__*/t(r);function o(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function a(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return o(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(e){return"\t".repeat(e)}function u(e,r){var t=e.loc;if(!t)return"";var n=t.start,o=t.end,a=r.substring(n.offset,o.offset);return n.line===o.line?a:a.replace(/\s+/g," ")}function i(e,r,t){var n;return n="SelectorList"===e.prelude.type?function(e,r,t){for(var n,o="",l=a(e.children);!(n=l()).done;){var u=n.value;o+="Selector"===u.type?s(u,r,t):m(u,r,t),u!==e.children.last&&(o+=",\n")}return o}(e.prelude,r,t):m(e.prelude,r,t),null!==e.block&&"Block"===e.block.type&&(n+=f(e.block,r,t)),n}function c(e,r){var t="";if(e.children)for(var n,o=a(e.children);!(n=o()).done;){var l=n.value;switch(l.type){case"Combinator":t+=" "," "!==l.name&&(t+=l.name+" ");break;case"PseudoClassSelector":t+=":"+l.name,l.children&&(t+="("+c(l,r)+")");break;case"SelectorList":for(var i,s=a(l.children);!(i=s()).done;){var f=i.value;t+=c(f,r),f!==l.children.last&&(t+=", ")}break;case"Nth":if(l.nth)if("AnPlusB"===l.nth.type){var p=l.nth.a,d=l.nth.b;null!==p&&(t+=p+"n"),null!==p&&null!==d&&(t+=" "),null!==d&&(null===p||d.startsWith("-")||(t+="+ "),t+=d)}else t+=u(l.nth,r);null!==l.selector&&(t+=" of "+c(l.selector,r));break;default:t+=u(l,r)}}return t}function s(e,r,t){return l(r)+c(e,t)}function f(e,r,t){var n=e.children;if(n.isEmpty)return" {}";var o,u=" {\n";r++;for(var c,s=a(n);!(c=s()).done;){var f=c.value;"Declaration"===f.type?u+=d(f,r,t)+";":"Rule"===f.type?("Declaration"===o&&(u+="\n"),u+=i(f,r,t)):"Atrule"===f.type?("Declaration"===o&&(u+="\n"),u+=p(f,r,t)):u+=m(f,r,t),f!==n.last&&(u+="\n","Declaration"!==f.type&&(u+="\n")),o=f.type}return(u+="\n")+l(--r)+"}"}function p(e,r,t){var n=l(r)+"@"+e.name.toLowerCase();return null!==e.prelude&&(n+=" "+function(e,r,t){return u(e,t).replace(/\s*([:,])/g,"$1 ").replace(/\(\s+/g,"(").replace(/\s+\)/g,")").replace(/\s+/g," ")}(e.prelude,0,t)),null===e.block?n+=";":"Block"===e.block.type&&(n+=f(e.block,r,t)),n}function d(e,r,t){var n=e.property.toLowerCase(),o=b(e.value,0,t).trim();return"font"===n&&(o=o.replace(/\s*\/\s*/,"/")),l(r)+n+": "+o}function y(e,r,t){for(var n,o="",l=a(e);!(n=l()).done;){var i=n.value;i!==e.first&&"Operator"!==i.type&&(o+=" "),"Identifier"===i.type?o+=i.name.toLowerCase():"Function"===i.type?o+=h(i,0,t):"Dimension"===i.type?o+=v(i):"Value"===i.type?o+=b(i,0,t):"Operator"===i.type?(","!==i.value&&(o+=" "),o+=u(i,t)):o+=u(i,t)}return o}function v(e,r,t){return e.value+e.unit.toLowerCase()}function b(e,r,t){return"Raw"===e.type?m(e,0,t):y(e.children,0,t)}function h(e,r,t){var n=e.name.toLowerCase()+"(";return(n+=y(e.children,0,t))+")"}function m(e,r,t){return l(r)+function(e,r){return e.loc?r.substring(e.loc.start.offset,e.loc.end.offset):""}(e,t).trim()}e.format=function(e){return function(e,r,t){void 0===r&&(r=0);for(var n,o="",l=e.children,u=a(l);!(n=u()).done;){var c=n.value;o+="Rule"===c.type?i(c,r,t):"Atrule"===c.type?p(c,r,t):m(c,r,t),c!==l.last&&(o+="\n\n")}return o}(n.default(e,{positions:!0,parseAtrulePrelude:!1,parseCustomProperty:!0,parseValue:!0}),0,e)}});
2
2
  //# sourceMappingURL=format.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.umd.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tif (node.loc === null) return ''\n\tlet str = css.substring(node.loc.start.offset, node.loc.end.offset)\n\n\t// Single-line node, most common case\n\tif (node.loc.start.line === node.loc.end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.split('\\n').map(part => part.trim()).join(' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (node.loc === null) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer = ''\n\n\tif (node.prelude !== null) {\n\t\tif (node.prelude.type === 'SelectorList') {\n\t\t\tbuffer += print_selectorlist(node.prelude, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(node.prelude, indent_level, css)\n\t\t}\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector !== node.children.first) {\n\t\t\tbuffer += '\\n'\n\t\t}\n\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += ','\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\t\t\t\t\t\t\tlet hasA = a !== null\n\t\t\t\t\t\t\tlet hasB = b !== null\n\n\t\t\t\t\t\t\tif (hasA) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasA && hasB) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (hasB) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (hasA && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css)\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type !== undefined && prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tif (child.type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t} else {\n\t\t\t\tbuffer += '\\n\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name\n\n\t// @font-face has no prelude\n\tif (node.prelude) {\n\t\tbuffer += ' ' + substr(node.prelude, css)\n\t}\n\n\tif (node.block && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t} else {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Declation} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\treturn indent(indent_level) + node.property + ': ' + substr(node.value, css) + ';'\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: false,\n\t\tparseValue: false,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","str","substring","start","offset","end","line","split","map","part","trim","join","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","first","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","hasA","hasB","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","undefined","print_atrule","property","substr_raw","_step5","_iterator5","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"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"}
1
+ {"version":3,"file":"format.umd.js","sources":["../index.js"],"sourcesContent":["import parse from 'css-tree/parser'\n\n/**\n * Indent a string\n * @param {number} size\n * @returns A string with {size} tabs\n */\nfunction indent(size) {\n\treturn '\\t'.repeat(size)\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr(node, css) {\n\tlet loc = node.loc\n\n\tif (!loc) return ''\n\n\tlet start = loc.start\n\tlet end = loc.end\n\tlet str = css.substring(start.offset, end.offset)\n\n\t// Single-line node, most common case\n\tif (start.line === end.line) {\n\t\treturn str\n\t}\n\n\t// Multi-line nodes, not common\n\treturn str.replace(/\\s+/g, ' ')\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {string} css\n * @returns A portion of the CSS\n */\nfunction substr_raw(node, css) {\n\tif (!node.loc) return ''\n\treturn css.substring(node.loc.start.offset, node.loc.end.offset)\n}\n\n/**\n * @param {import('css-tree').Rule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Rule\n */\nfunction print_rule(node, indent_level, css) {\n\tlet buffer\n\n\tif (node.prelude.type === 'SelectorList') {\n\t\tbuffer = print_selectorlist(node.prelude, indent_level, css)\n\t} else {\n\t\tbuffer = print_unknown(node.prelude, indent_level, css)\n\t}\n\n\tif (node.block !== null && node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').SelectorList} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted SelectorList\n */\nfunction print_selectorlist(node, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let selector of node.children) {\n\t\tif (selector.type === 'Selector') {\n\t\t\tbuffer += print_selector(selector, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(selector, indent_level, css)\n\t\t}\n\n\t\tif (selector !== node.children.last) {\n\t\t\tbuffer += `,\\n`\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector|import('css-tree').PseudoClassSelector} node\n * @param {string} css\n */\nfunction print_simple_selector(node, css) {\n\tlet buffer = ''\n\n\tif (node.children) {\n\t\tfor (let child of node.children) {\n\t\t\tswitch (child.type) {\n\t\t\t\tcase 'Combinator': {\n\t\t\t\t\t// putting spaces around `child.name`, unless the combinator is ' '\n\t\t\t\t\tbuffer += ' '\n\t\t\t\t\tif (child.name !== ' ') {\n\t\t\t\t\t\tbuffer += child.name + ' '\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'PseudoClassSelector': {\n\t\t\t\t\tbuffer += ':' + child.name\n\n\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\tbuffer += '(' + print_simple_selector(child, css) + ')'\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'SelectorList': {\n\t\t\t\t\tfor (let grandchild of child.children) {\n\t\t\t\t\t\tbuffer += print_simple_selector(grandchild, css)\n\n\t\t\t\t\t\tif (grandchild !== child.children.last) {\n\t\t\t\t\t\t\tbuffer += ', '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase 'Nth': {\n\t\t\t\t\tif (child.nth) {\n\t\t\t\t\t\tif (child.nth.type === 'AnPlusB') {\n\t\t\t\t\t\t\tlet a = child.nth.a\n\t\t\t\t\t\t\tlet b = child.nth.b\n\n\t\t\t\t\t\t\tif (a !== null) {\n\t\t\t\t\t\t\t\tbuffer += a + 'n'\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (a !== null && b !== null) {\n\t\t\t\t\t\t\t\tbuffer += ' '\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (b !== null) {\n\t\t\t\t\t\t\t\t// When (1n + x) but not (1n - x)\n\t\t\t\t\t\t\t\tif (a !== null && !b.startsWith('-')) {\n\t\t\t\t\t\t\t\t\tbuffer += '+ '\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbuffer += b\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// For odd/even or maybe other identifiers later on\n\t\t\t\t\t\t\tbuffer += substr(child.nth, css)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (child.selector !== null) {\n\t\t\t\t\t\t// `of .selector`\n\t\t\t\t\t\tbuffer += ' of ' + print_simple_selector(child.selector, css)\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tbuffer += substr(child, css)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Selector} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Selector\n */\nfunction print_selector(node, indent_level, css) {\n\treturn indent(indent_level) + print_simple_selector(node, css)\n}\n\n/**\n * @param {import('css-tree').Block} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Block\n */\nfunction print_block(node, indent_level, css) {\n\tlet children = node.children\n\n\tif (children.isEmpty) {\n\t\treturn ' {}'\n\t}\n\n\tlet buffer = ' {\\n'\n\n\tindent_level++\n\n\tlet prev_type\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Declaration') {\n\t\t\tbuffer += print_declaration(child, indent_level, css) + ';'\n\t\t} else if (child.type === 'Rule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tif (prev_type === 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n'\n\n\t\t\tif (child.type !== 'Declaration') {\n\t\t\t\tbuffer += '\\n'\n\t\t\t}\n\t\t}\n\n\t\tprev_type = child.type\n\t}\n\n\tindent_level--\n\n\tbuffer += '\\n'\n\tbuffer += indent(indent_level) + '}'\n\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Atrule} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Atrule\n */\nfunction print_atrule(node, indent_level, css) {\n\tlet buffer = indent(indent_level) + '@' + node.name.toLowerCase()\n\n\t// @font-face has no prelude\n\tif (node.prelude !== null) {\n\t\tbuffer += ' ' + print_prelude(node.prelude, 0, css)\n\t}\n\n\tif (node.block === null) {\n\t\t// `@import url(style.css);` has no block, neither does `@layer layer1;`\n\t\tbuffer += ';'\n\t} else if (node.block.type === 'Block') {\n\t\tbuffer += print_block(node.block, indent_level, css)\n\t}\n\n\treturn buffer\n}\n\n/**\n * Pretty-printing atrule preludes takes an insane amount of rules,\n * so we're opting for a couple of 'good-enough' string replacements\n * here to force some nice formatting.\n * Should be OK perf-wise, since the amount of atrules in most\n * stylesheets are limited, so this won't be called too often.\n * @param {import('css-tree').AtrulePrelude | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_prelude(node, indent_level, css) {\n\tlet buffer = substr(node, css)\n\treturn buffer\n\t\t.replace(/\\s*([:,])/g, '$1 ') // force whitespace after colon or comma\n\t\t.replace(/\\(\\s+/g, '(') // remove whitespace after (\n\t\t.replace(/\\s+\\)/g, ')') // remove whitespace before )\n\t\t.replace(/\\s+/g, ' ') // collapse multiple whitespaces into one\n}\n\n/**\n * @param {import('css-tree').Declaration} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Declaration\n */\nfunction print_declaration(node, indent_level, css) {\n\tlet property = node.property.toLowerCase()\n\tlet value = print_value(node.value, indent_level, css).trim()\n\n\t// Special case for `font` shorthand: remove whitespace around /\n\tif (property === 'font') {\n\t\tvalue = value.replace(/\\s*\\/\\s*/, '/')\n\t}\n\n\treturn indent(indent_level) + property + ': ' + value\n}\n\n/**\n * @param {import('css-tree').List} children\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_list(children, indent_level, css) {\n\tlet buffer = ''\n\n\tfor (let node of children) {\n\t\tif (node !== children.first && node.type !== 'Operator') {\n\t\t\tbuffer += ' '\n\t\t}\n\n\t\tif (node.type === 'Identifier') {\n\t\t\t// TODO: new CSS keywork NaN should not be lowercased\n\t\t\tbuffer += node.name.toLowerCase()\n\t\t} else if (node.type === 'Function') {\n\t\t\tbuffer += print_function(node, 0, css)\n\t\t} else if (node.type === 'Dimension') {\n\t\t\tbuffer += print_dimension(node, 0, css)\n\t\t} else if (node.type === 'Value') {\n\t\t\t// Values can be inside var() as fallback\n\t\t\t// var(--prop, VALUE)\n\t\t\tbuffer += print_value(node, 0, css)\n\t\t} else if (node.type === 'Operator') {\n\t\t\t// Put extra spacing around + - / *\n\t\t\t// but not before a comma\n\t\t\tif (node.value !== ',') {\n\t\t\t\tbuffer += ' '\n\t\t\t}\n\t\t\tbuffer += substr(node, css)\n\t\t} else {\n\t\t\tbuffer += substr(node, css)\n\t\t}\n\t}\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').Dimension} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_dimension(node, indent_level, css) {\n\treturn node.value + node.unit.toLowerCase()\n}\n\n/**\n * @param {import('css-tree').Value | import('css-tree').Raw} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_value(node, indent_level, css) {\n\tif (node.type === 'Raw') {\n\t\treturn print_unknown(node, 0, css)\n\t}\n\n\treturn print_list(node.children, 0, css)\n}\n\n/**\n * @param {import('css-tree').FunctionNode} node\n * @param {number} indent_level\n * @param {string} css\n */\nfunction print_function(node, indent_level, css) {\n\tlet buffer = node.name.toLowerCase() + '('\n\tbuffer += print_list(node.children, 0, css)\n\tbuffer += ')'\n\treturn buffer\n}\n\n/**\n * @param {import('css-tree').CssNode} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted unknown CSS string\n */\nfunction print_unknown(node, indent_level, css) {\n\treturn indent(indent_level) + substr_raw(node, css).trim()\n}\n\n/**\n * @param {import('css-tree').StyleSheet} node\n * @param {number} indent_level\n * @param {string} css\n * @returns {string} A formatted Stylesheet\n */\nfunction print(node, indent_level = 0, css) {\n\tlet buffer = ''\n\tlet children = node.children\n\n\tfor (let child of children) {\n\t\tif (child.type === 'Rule') {\n\t\t\tbuffer += print_rule(child, indent_level, css)\n\t\t} else if (child.type === 'Atrule') {\n\t\t\tbuffer += print_atrule(child, indent_level, css)\n\t\t} else {\n\t\t\tbuffer += print_unknown(child, indent_level, css)\n\t\t}\n\n\t\tif (child !== children.last) {\n\t\t\tbuffer += '\\n\\n'\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * Take a string of CSS (minified or not) and format it with some simple rules\n * @param {string} css The original CSS\n * @returns {string} The newly formatted CSS\n */\nexport function format(css) {\n\tlet ast = parse(css, {\n\t\tpositions: true,\n\t\tparseAtrulePrelude: false,\n\t\tparseCustomProperty: true,\n\t\tparseValue: true,\n\t})\n\treturn print(ast, 0, css)\n}\n"],"names":["indent","size","repeat","substr","node","css","loc","start","end","str","substring","offset","line","replace","print_rule","indent_level","buffer","prelude","type","_step","_iterator","_createForOfIteratorHelperLoose","children","done","selector","value","print_selector","print_unknown","last","print_selectorlist","block","print_block","print_simple_selector","_iterator2","_step2","child","name","_step3","_iterator3","grandchild","nth","a","b","startsWith","isEmpty","prev_type","_iterator4","_step4","print_declaration","print_atrule","toLowerCase","print_prelude","property","print_value","trim","print_list","_step5","_iterator5","first","print_function","print_dimension","unit","substr_raw","_step6","_iterator6","print","parse","positions","parseAtrulePrelude","parseCustomProperty","parseValue"],"mappings":"grCAOA,SAASA,EAAOC,GACf,MAAO,KAAKC,OAAOD,EACpB,CAOA,SAASE,EAAOC,EAAMC,GACrB,IAAIC,EAAMF,EAAKE,IAEf,IAAKA,EAAK,MAAO,GAEjB,IAAIC,EAAQD,EAAIC,MACZC,EAAMF,EAAIE,IACVC,EAAMJ,EAAIK,UAAUH,EAAMI,OAAQH,EAAIG,QAG1C,OAAIJ,EAAMK,OAASJ,EAAII,KACfH,EAIDA,EAAII,QAAQ,OAAQ,IAC5B,CAkBA,SAASC,EAAWV,EAAMW,EAAcV,GACvC,IAAIW,EAYJ,OATCA,EADyB,iBAAtBZ,EAAKa,QAAQC,KAmBlB,SAA4Bd,EAAMW,EAAcV,GAG/C,IAFA,IAEkCc,EAF9BH,EAAS,GAEbI,EAAAC,EAAqBjB,EAAKkB,YAAQH,EAAAC,KAAAG,MAAE,KAA3BC,EAAQL,EAAAM,MAEfT,GADqB,aAAlBQ,EAASN,KACFQ,EAAeF,EAAUT,EAAcV,GAEvCsB,EAAcH,EAAUT,EAAcV,GAG7CmB,IAAapB,EAAKkB,SAASM,OAC9BZ,GACD,MACD,CACA,OAAOA,CACR,CAjCWa,CAAmBzB,EAAKa,QAASF,EAAcV,GAE/CsB,EAAcvB,EAAKa,QAASF,EAAcV,GAGjC,OAAfD,EAAK0B,OAAsC,UAApB1B,EAAK0B,MAAMZ,OACrCF,GAAUe,EAAY3B,EAAK0B,MAAOf,EAAcV,IAG1CW,CACR,CA6BA,SAASgB,EAAsB5B,EAAMC,GACpC,IAAIW,EAAS,GAEb,GAAIZ,EAAKkB,SACR,IAAAW,IAA+BC,EAA/BD,EAAAZ,EAAkBjB,EAAKkB,YAAQY,EAAAD,KAAAV,MAAE,KAAxBY,EAAKD,EAAAT,MACb,OAAQU,EAAMjB,MACb,IAAK,aAEJF,GAAU,IACS,MAAfmB,EAAMC,OACTpB,GAAUmB,EAAMC,KAAO,KAExB,MAED,IAAK,sBACJpB,GAAU,IAAMmB,EAAMC,KAElBD,EAAMb,WACTN,GAAU,IAAMgB,EAAsBG,EAAO9B,GAAO,KAErD,MAED,IAAK,eACJ,IAAA,IAAqCgC,EAArCC,EAAAjB,EAAuBc,EAAMb,YAAQe,EAAAC,KAAAf,MAAE,KAA9BgB,EAAUF,EAAAZ,MAClBT,GAAUgB,EAAsBO,EAAYlC,GAExCkC,IAAeJ,EAAMb,SAASM,OACjCZ,GAAU,KAEZ,CACA,MAED,IAAK,MACJ,GAAImB,EAAMK,IACT,GAAuB,YAAnBL,EAAMK,IAAItB,KAAoB,CACjC,IAAIuB,EAAIN,EAAMK,IAAIC,EACdC,EAAIP,EAAMK,IAAIE,EAER,OAAND,IACHzB,GAAUyB,EAAI,KAGL,OAANA,GAAoB,OAANC,IACjB1B,GAAU,KAGD,OAAN0B,IAEO,OAAND,GAAeC,EAAEC,WAAW,OAC/B3B,GAAU,MAGXA,GAAU0B,EAEZ,MAEC1B,GAAUb,EAAOgC,EAAMK,IAAKnC,GAIP,OAAnB8B,EAAMX,WAETR,GAAU,OAASgB,EAAsBG,EAAMX,SAAUnB,IAE1D,MAED,QACCW,GAAUb,EAAOgC,EAAO9B,GAI3B,CAGD,OAAOW,CACR,CAQA,SAASU,EAAetB,EAAMW,EAAcV,GAC3C,OAAOL,EAAOe,GAAgBiB,EAAsB5B,EAAMC,EAC3D,CAQA,SAAS0B,EAAY3B,EAAMW,EAAcV,GACxC,IAAIiB,EAAWlB,EAAKkB,SAEpB,GAAIA,EAASsB,QACZ,MAAO,MAGR,IAIIC,EAJA7B,EAAS,OAEbD,IAIA,IAAA+B,IAA0BC,EAA1BD,EAAAzB,EAAkBC,KAAQyB,EAAAD,KAAAvB,MAAE,KAAnBY,EAAKY,EAAAtB,MACM,gBAAfU,EAAMjB,KACTF,GAAUgC,EAAkBb,EAAOpB,EAAcV,GAAO,IAC/B,SAAf8B,EAAMjB,MACE,gBAAd2B,IACH7B,GAAU,MAEXA,GAAUF,EAAWqB,EAAOpB,EAAcV,IACjB,WAAf8B,EAAMjB,MACE,gBAAd2B,IACH7B,GAAU,MAEXA,GAAUiC,EAAad,EAAOpB,EAAcV,IAE5CW,GAAUW,EAAcQ,EAAOpB,EAAcV,GAG1C8B,IAAUb,EAASM,OACtBZ,GAAU,KAES,gBAAfmB,EAAMjB,OACTF,GAAU,OAIZ6B,EAAYV,EAAMjB,IACnB,CAOA,OAHAF,GAAU,MACAhB,IAHVe,GAGiC,GAGlC,CAQA,SAASkC,EAAa7C,EAAMW,EAAcV,GACzC,IAAIW,EAAShB,EAAOe,GAAgB,IAAMX,EAAKgC,KAAKc,cAcpD,OAXqB,OAAjB9C,EAAKa,UACRD,GAAU,IAuBZ,SAAuBZ,EAAMW,EAAcV,GAE1C,OADaF,EAAOC,EAAMC,GAExBQ,QAAQ,aAAc,OACtBA,QAAQ,SAAU,KAClBA,QAAQ,SAAU,KAClBA,QAAQ,OAAQ,IACnB,CA9BkBsC,CAAc/C,EAAKa,QAAS,EAAGZ,IAG7B,OAAfD,EAAK0B,MAERd,GAAU,IACoB,UAApBZ,EAAK0B,MAAMZ,OACrBF,GAAUe,EAAY3B,EAAK0B,MAAOf,EAAcV,IAG1CW,CACR,CA2BA,SAASgC,EAAkB5C,EAAMW,EAAcV,GAC9C,IAAI+C,EAAWhD,EAAKgD,SAASF,cACzBzB,EAAQ4B,EAAYjD,EAAKqB,MAAOV,EAAcV,GAAKiD,OAOvD,MAJiB,SAAbF,IACH3B,EAAQA,EAAMZ,QAAQ,WAAY,MAG5Bb,EAAOe,GAAgBqC,EAAW,KAAO3B,CACjD,CAOA,SAAS8B,EAAWjC,EAAUP,EAAcV,GAG3C,IAFA,IAEyBmD,EAFrBxC,EAAS,GAEbyC,EAAApC,EAAiBC,KAAQkC,EAAAC,KAAAlC,MAAE,CAAlB,IAAAnB,EAAIoD,EAAA/B,MACRrB,IAASkB,EAASoC,OAAuB,aAAdtD,EAAKc,OACnCF,GAAU,KAGO,eAAdZ,EAAKc,KAERF,GAAUZ,EAAKgC,KAAKc,cACI,aAAd9C,EAAKc,KACfF,GAAU2C,EAAevD,EAAM,EAAGC,GACV,cAAdD,EAAKc,KACfF,GAAU4C,EAAgBxD,GACF,UAAdA,EAAKc,KAGfF,GAAUqC,EAAYjD,EAAM,EAAGC,GACP,aAAdD,EAAKc,MAGI,MAAfd,EAAKqB,QACRT,GAAU,KAEXA,GAAUb,EAAOC,EAAMC,IAEvBW,GAAUb,EAAOC,EAAMC,EAEzB,CACA,OAAOW,CACR,CAOA,SAAS4C,EAAgBxD,EAAMW,EAAcV,GAC5C,OAAOD,EAAKqB,MAAQrB,EAAKyD,KAAKX,aAC/B,CAOA,SAASG,EAAYjD,EAAMW,EAAcV,GACxC,MAAkB,QAAdD,EAAKc,KACDS,EAAcvB,EAAM,EAAGC,GAGxBkD,EAAWnD,EAAKkB,SAAU,EAAGjB,EACrC,CAOA,SAASsD,EAAevD,EAAMW,EAAcV,GAC3C,IAAIW,EAASZ,EAAKgC,KAAKc,cAAgB,IAGvC,OAFAlC,GAAUuC,EAAWnD,EAAKkB,SAAU,EAAGjB,IAC7B,GAEX,CAQA,SAASsB,EAAcvB,EAAMW,EAAcV,GAC1C,OAAOL,EAAOe,GAhVf,SAAoBX,EAAMC,GACzB,OAAKD,EAAKE,IACHD,EAAIK,UAAUN,EAAKE,IAAIC,MAAMI,OAAQP,EAAKE,IAAIE,IAAIG,QADnC,EAEvB,CA6U+BmD,CAAW1D,EAAMC,GAAKiD,MACrD,UAkCO,SAAgBjD,GAOtB,OAjCD,SAAeD,EAAMW,EAAkBV,YAAlBU,IAAAA,EAAe,GAInC,IAHA,IAG0BgD,EAHtB/C,EAAS,GACTM,EAAWlB,EAAKkB,SAEpB0C,EAAA3C,EAAkBC,KAAQyC,EAAAC,KAAAzC,MAAE,CAAA,IAAnBY,EAAK4B,EAAAtC,MAEZT,GADkB,SAAfmB,EAAMjB,KACCJ,EAAWqB,EAAOpB,EAAcV,GACjB,WAAf8B,EAAMjB,KACN+B,EAAad,EAAOpB,EAAcV,GAElCsB,EAAcQ,EAAOpB,EAAcV,GAG1C8B,IAAUb,EAASM,OACtBZ,GAAU,OAEZ,CAEA,OAAOA,CACR,CAcQiD,CANGC,EAAK,QAAC7D,EAAK,CACpB8D,WAAW,EACXC,oBAAoB,EACpBC,qBAAqB,EACrBC,YAAY,IAEK,EAAGjE,EACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectwallace/format-css",
3
- "version": "1.0.3",
3
+ "version": "1.0.6",
4
4
  "type": "module",
5
5
  "source": "index.js",
6
6
  "exports": {
@@ -16,7 +16,7 @@
16
16
  "test": "uvu"
17
17
  },
18
18
  "devDependencies": {
19
- "@types/css-tree": "^2.3.1",
19
+ "@types/css-tree": "^2.3.4",
20
20
  "microbundle": "^0.15.1",
21
21
  "uvu": "^0.5.6"
22
22
  },