@projectwallace/format-css 2.1.2 → 2.2.0

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.
Files changed (2) hide show
  1. package/dist/format-css.js +207 -177
  2. package/package.json +63 -64
@@ -1,188 +1,218 @@
1
- import { parse as te } from "css-tree";
2
- const o = " ", p = "", $ = ":", x = ";", L = '"', Y = "(", g = ")", re = "[", ne = "]", V = "{", W = "}", le = "{}", Z = ",", j = "Atrule", F = "Rule", G = "Block", Q = "SelectorList", I = "Selector", q = "PseudoElementSelector", w = "Declaration", B = "Operator";
3
- function C(y) {
4
- return /[A-Z]/.test(y) ? y.toLowerCase() : y;
5
- }
6
- function fe(y, { minify: T = !1, tab_size: P = void 0 } = /* @__PURE__ */ Object.create(null)) {
7
- if (P !== void 0 && Number(P) < 1)
1
+ import { parse as X, NODE_TYPES as l, ATTR_FLAG_CASE_INSENSITIVE as z, ATTR_FLAG_CASE_SENSITIVE as tt, ATTR_OPERATOR_EQUAL as et, ATTR_OPERATOR_STAR_EQUAL as rt, ATTR_OPERATOR_DOLLAR_EQUAL as st, ATTR_OPERATOR_CARET_EQUAL as it, ATTR_OPERATOR_PIPE_EQUAL as lt, ATTR_OPERATOR_TILDE_EQUAL as nt } from "@projectwallace/css-parser";
2
+ const f = " ", c = "", k = ":", b = ";", $ = '"', P = "(", N = ")", ut = "[", ct = "]", w = "{", g = "}", D = ",";
3
+ function pt(R, { minify: O = !1, tab_size: L = void 0 } = /* @__PURE__ */ Object.create(null)) {
4
+ if (L !== void 0 && Number(L) < 1)
8
5
  throw new TypeError("tab_size must be a number greater than 0");
9
- let S = [];
10
- function J(n, e) {
11
- S.push(e.start.offset, e.end.offset);
12
- }
13
- let N = te(y, {
14
- positions: !0,
15
- parseAtrulePrelude: !1,
16
- parseCustomProperty: !0,
17
- parseValue: !0,
18
- onComment: J
19
- });
20
- const u = T ? p : `
21
- `, c = T ? p : o, X = T ? p : x;
22
- let s = 0;
23
- function a(n) {
24
- return T === !0 ? p : P !== void 0 ? o.repeat(P * n) : " ".repeat(n);
25
- }
26
- function O(n) {
27
- let e = n.loc;
28
- return e == null ? p : y.slice(e.start.offset, e.end.offset);
29
- }
30
- function b(n) {
31
- var e;
32
- return (e = n.loc) == null ? void 0 : e.start.offset;
33
- }
34
- function E(n) {
35
- var e;
36
- return (e = n.loc) == null ? void 0 : e.end.offset;
37
- }
38
- function m(n, e) {
39
- if (T === !0 || n === void 0 || e === void 0)
40
- return p;
41
- let t = p;
42
- for (let r = 0; r < S.length; r += 2) {
43
- let l = S[r];
44
- if (l === void 0 || l < n) continue;
45
- let f = S[r + 1];
46
- if (f === void 0 || f > e) break;
47
- t.length > 0 && (t += u + a(s)), t += y.slice(l, f);
6
+ const E = O ? c : `
7
+ `, p = O ? c : f, M = O ? c : b;
8
+ let A = [], d = X(R, {
9
+ on_comment: ({ start: t, end: e }) => {
10
+ A.push(t, e);
11
+ }
12
+ }), a = 0;
13
+ function o(t) {
14
+ return O === !0 ? c : L !== void 0 ? f.repeat(L * t) : " ".repeat(t);
15
+ }
16
+ function _(t, e, r = a) {
17
+ if (O || t === void 0 || e === void 0)
18
+ return c;
19
+ let s = c;
20
+ for (let i = 0; i < A.length; i += 2) {
21
+ let n = A[i];
22
+ if (n === void 0 || n < t) continue;
23
+ let u = A[i + 1];
24
+ if (u === void 0 || u > e) break;
25
+ s.length > 0 && (s += E + o(r)), s += R.slice(n, u);
26
+ }
27
+ return s;
28
+ }
29
+ function Q(t) {
30
+ return t.replace(/(?:^['"])|(?:['"]$)/g, c);
31
+ }
32
+ function m(t) {
33
+ return t = (t == null ? void 0 : t.toString()) || "", $ + Q(t) + $;
34
+ }
35
+ function B(t) {
36
+ let e = [], r = t.text, s = r.charCodeAt(0);
37
+ return s === 43 || s === 45 ? e.push(f) : s !== 44 && e.push(p), e.push(r), s === 43 || s === 45 ? e.push(f) : e.push(p), e.join(c);
38
+ }
39
+ function S(t) {
40
+ var r, s;
41
+ let e = [];
42
+ for (let i of t) {
43
+ if (i.type === l.FUNCTION) {
44
+ let n = i.name.toLowerCase();
45
+ e.push(n, P), e.push(S(i.children)), e.push(N);
46
+ } else i.type === l.DIMENSION ? e.push(i.value, (r = i.unit) == null ? void 0 : r.toLowerCase()) : i.type === l.STRING ? e.push(m(i.text)) : i.type === l.OPERATOR ? e.push(B(i)) : i.type === l.PARENTHESIS ? e.push(P, S(i.children), N) : i.type === l.URL && typeof i.value == "string" ? (e.push("url("), e.push(m(i.value)), e.push(N)) : e.push(i.text);
47
+ i.type !== l.OPERATOR && i.has_next && ((s = i.next_sibling) == null ? void 0 : s.type) !== l.OPERATOR && e.push(f);
48
48
  }
49
- return t;
50
- }
51
- function M(n) {
52
- let e = "", t = n.prelude, r = n.block;
53
- t.type === Q && (e = z(t));
54
- let l = m(E(t), b(r));
55
- return l && (e += u + a(s) + l), r.type === G && (e += U(r)), e;
56
- }
57
- function z(n) {
58
- let e = p;
59
- return n.children.forEach((t, r) => {
60
- t.type === I && (e += a(s) + v(t)), r.next !== null && (e += Z + u);
61
- let l = r.next !== null ? b(r.next.data) : E(n), f = m(E(t), l);
62
- f && (e += a(s) + f + u);
63
- }), e;
64
- }
65
- function v(n) {
66
- let e = p, t = n.children;
67
- return t == null || t.forEach((r) => {
68
- switch (r.type) {
69
- case "TypeSelector": {
70
- e += C(r.name);
71
- break;
72
- }
73
- case "Combinator": {
74
- r.name === " " ? e += o : e += c + r.name + c;
75
- break;
76
- }
77
- case "PseudoClassSelector":
78
- case q: {
79
- e += $;
80
- let l = C(r.name);
81
- (l === "before" || l === "after" || r.type === q) && (e += $), e += l, r.children !== null && (e += Y + v(r) + g);
82
- break;
83
- }
84
- case Q: {
85
- r.children.forEach((l, f) => {
86
- l.type === I && (e += v(l)), f.next !== null && f.next.data.type === I && (e += Z + c);
87
- });
88
- break;
89
- }
90
- case "Nth": {
91
- let l = r.nth;
92
- if (l.type === "AnPlusB") {
93
- let f = l.a, i = l.b;
94
- f !== null && (e += f + "n"), f !== null && i !== null && (e += o), i !== null && (f !== null && !i.startsWith("-") && (e += "+" + o), e += i);
95
- } else
96
- e += O(l);
97
- r.selector !== null && (e += o + "of" + o + v(r.selector));
98
- break;
99
- }
100
- case "AttributeSelector": {
101
- e += re, e += r.name.name, r.matcher !== null && r.value !== null && (e += r.matcher, e += L, r.value.type === "String" ? e += r.value.value : r.value.type === "Identifier" && (e += r.value.name), e += L), r.flags !== null && (e += o + r.flags), e += ne;
102
- break;
103
- }
104
- case "NestingSelector": {
105
- e += "&";
106
- break;
107
- }
108
- default: {
109
- e += O(r);
110
- break;
111
- }
49
+ return e.join(c);
50
+ }
51
+ function H(t) {
52
+ return t === null ? c : S(t);
53
+ }
54
+ function F(t) {
55
+ let e = [];
56
+ if (t.is_important) {
57
+ let i = t.text, n = i.endsWith(b), u = i.lastIndexOf("!"), T = n ? -1 : void 0;
58
+ e.push(p, i.slice(u, T).toLowerCase());
59
+ }
60
+ let r = H(t.value), s = t.property;
61
+ return s === "font" && (r = r.replace(/\s*\/\s*/, "/")), r === c && O === !0 && (r += f), s.startsWith("--") || (s = s.toLowerCase()), s + k + p + r + e.join(c);
62
+ }
63
+ function G(t) {
64
+ switch (t) {
65
+ case nt:
66
+ return "~=";
67
+ case lt:
68
+ return "|=";
69
+ case it:
70
+ return "^=";
71
+ case st:
72
+ return "$=";
73
+ case rt:
74
+ return "*=";
75
+ case et:
76
+ default:
77
+ return "=";
78
+ }
79
+ }
80
+ function I(t) {
81
+ let e = [], r = t.nth_a, s = t.nth_b;
82
+ return r && e.push(r), r && s && e.push(p), s && (r && !s.startsWith("-") && e.push("+", p), e.push(parseFloat(s))), e.join(c);
83
+ }
84
+ function Y(t) {
85
+ var r, s;
86
+ let e = [];
87
+ return ((r = t.children[0]) == null ? void 0 : r.type) === l.NTH_SELECTOR && (e.push(I(t.children[0])), e.push(f, "of", f)), ((s = t.children[1]) == null ? void 0 : s.type) === l.SELECTOR_LIST && e.push(y(t.children[1])), e.join(c);
88
+ }
89
+ function W(t, e = !1) {
90
+ switch (t.type) {
91
+ case l.TYPE_SELECTOR:
92
+ return t.name.toLowerCase();
93
+ case l.COMBINATOR: {
94
+ let r = t.text;
95
+ return /^\s+$/.test(r) ? f : (e ? c : p) + r + p;
96
+ }
97
+ case l.PSEUDO_ELEMENT_SELECTOR:
98
+ case l.PSEUDO_CLASS_SELECTOR: {
99
+ let r = [k], s = t.name.toLowerCase();
100
+ return (s === "before" || s === "after" || t.type === l.PSEUDO_ELEMENT_SELECTOR) && r.push(k), r.push(s), t.has_children && (r.push(P), t.children.length > 0 && (s === "highlight" ? r.push(S(t.children)) : r.push(y(t))), r.push(N)), r.join(c);
112
101
  }
113
- }), e;
102
+ case l.ATTRIBUTE_SELECTOR: {
103
+ let r = [ut, t.name.toLowerCase()];
104
+ return t.attr_operator && (r.push(G(t.attr_operator)), typeof t.value == "string" && r.push(m(t.value)), t.attr_flags === z ? r.push(f, "i") : t.attr_flags === tt && r.push(f, "s")), r.push(ct), r.join(c);
105
+ }
106
+ default:
107
+ return t.text;
108
+ }
114
109
  }
115
- function U(n) {
116
- let e = n.children, t = c;
117
- if (e.isEmpty) {
118
- let f = m(b(n), E(n));
119
- return f ? (t += V + u, t += a(s + 1) + f, t += u + a(s) + W, t) : t + le;
110
+ function v(t) {
111
+ if (t.type === l.NTH_SELECTOR)
112
+ return I(t);
113
+ if (t.type === l.NTH_OF_SELECTOR)
114
+ return Y(t);
115
+ if (t.type === l.SELECTOR_LIST)
116
+ return y(t);
117
+ if (t.type === l.LANG_SELECTOR)
118
+ return m(t.text);
119
+ let e = [];
120
+ return t.children.forEach((r, s) => {
121
+ const i = W(r, s === 0);
122
+ e.push(i);
123
+ }), e.join(c);
124
+ }
125
+ function y(t) {
126
+ let e = [];
127
+ for (let r of t)
128
+ e.push(v(r)), r.has_next && e.push(D, p);
129
+ return e.join(c);
130
+ }
131
+ function K(t) {
132
+ let e = [], r;
133
+ for (let s of t) {
134
+ if (r !== void 0) {
135
+ let n = _(r, s.start);
136
+ n && e.push(o(a) + n);
137
+ }
138
+ let i = v(s);
139
+ s.has_next && (i += D), e.push(o(a) + i), r = s.end;
120
140
  }
121
- t += V + u, s++;
122
- let r = m(b(n), b(e.first));
123
- r && (t += a(s) + r + u), e.forEach((f, i) => {
124
- if (i.prev !== null) {
125
- let H = m(E(i.prev.data), b(f));
126
- H && (t += a(s) + H + u);
141
+ return e.join(E);
142
+ }
143
+ function x(t) {
144
+ var T;
145
+ let e = [];
146
+ a++;
147
+ let r = t.children;
148
+ if (r.length === 0) {
149
+ let h = _(t.start, t.end);
150
+ if (h)
151
+ return e.push(o(a) + h), a--, e.push(o(a) + g), e.join(E);
152
+ }
153
+ let s = r[0], i = _(t.start, s == null ? void 0 : s.start);
154
+ i && e.push(o(a) + i);
155
+ let n;
156
+ for (let h of r) {
157
+ if (n !== void 0) {
158
+ let C = _(n, h.start);
159
+ C && e.push(o(a) + C);
127
160
  }
128
- f.type === w ? (t += d(f), i.next === null ? t += X : t += x) : (i.prev !== null && i.prev.data.type === w && (t += u), f.type === F ? t += M(f) : f.type === j ? t += D(f) : t += k(f, s)), i.next !== null && (t += u, f.type !== w && (t += u));
129
- });
130
- let l = m(E(e.last), E(n));
131
- return l && (t += u + a(s) + l), s--, t += u + a(s) + W, t;
132
- }
133
- function D(n) {
134
- let e = a(s) + "@", t = n.prelude, r = n.block;
135
- return e += C(n.name), t !== null && (e += o + h(t)), r === null ? e += x : r.type === G && (e += U(r)), e;
136
- }
137
- function h(n) {
138
- let e = O(n);
139
- return e.replace(/\s*([:,])/g, e.toLowerCase().includes("selector(") ? "$1" : "$1 ").replace(/\)([a-zA-Z])/g, ") $1").replace(/\s*(=>|<=)\s*/g, " $1 ").replace(/([^<>=\s])([<>])([^<>=\s])/g, `$1${c}$2${c}$3`).replace(/\s+/g, c).replace(/calc\(\s*([^()+\-*/]+)\s*([*/+-])\s*([^()+\-*/]+)\s*\)/g, (t, r, l, f) => {
140
- let i = l === "+" || l === "-" ? o : c;
141
- return `calc(${r.trim()}${i}${l}${i}${f.trim()})`;
142
- }).replace(/selector|url|supports|layer\(/gi, (t) => C(t));
143
- }
144
- function d(n) {
145
- let e = n.property;
146
- e.charCodeAt(0) === 45 && e.charCodeAt(1) === 45 || (e = C(e));
147
- let t = K(n.value);
148
- return e === "font" && (t = t.replace(/\s*\/\s*/, "/")), t === p && T === !0 && (t += o), n.important === !0 ? t += c + "!important" : typeof n.important == "string" && (t += c + "!" + C(n.important)), a(s) + e + $ + c + t;
149
- }
150
- function R(n) {
151
- let e = p;
152
- return n.forEach((t, r) => {
153
- t.type === "Identifier" ? e += t.name : t.type === "Function" ? e += C(t.name) + Y + R(t.children) + g : t.type === "Dimension" ? e += t.value + C(t.unit) : t.type === "Value" ? e += K(t) : t.type === B ? e += ee(t) : t.type === "Parentheses" ? e += Y + R(t.children) + g : t.type === "Url" ? e += "url(" + L + t.value + L + g : e += O(t), t.type !== B && r.next !== null && r.next.data.type !== B && (e += o);
154
- }), e;
155
- }
156
- function ee(n) {
157
- let e = p, t = n.value.trim(), r = t.charCodeAt(0);
158
- return r === 43 || r === 45 ? e += o : r !== 44 && (e += c), e += t, r === 43 || r === 45 ? e += o : e += c, e;
159
- }
160
- function K(n) {
161
- return n.type === "Raw" ? k(n, 0) : R(n.children);
162
- }
163
- function k(n, e) {
164
- return a(e) + O(n).trim();
165
- }
166
- let A = N.children, _ = p;
167
- if (A.first !== null) {
168
- let n = m(0, b(A.first));
169
- n && (_ += n + u), A.forEach((t, r) => {
170
- if (t.type === F ? _ += M(t) : t.type === j ? _ += D(t) : _ += k(t, s), r.next !== null) {
171
- _ += u;
172
- let l = m(E(t), b(r.next.data));
173
- l && (_ += a(s) + l), _ += u;
161
+ let Z = ((T = h.next_sibling) == null ? void 0 : T.type) !== l.DECLARATION;
162
+ if (h.type === l.DECLARATION) {
163
+ let C = F(h), J = Z ? M : b;
164
+ e.push(o(a) + C + J);
165
+ } else h.type === l.STYLE_RULE ? (n !== void 0 && e.length !== 0 && e.push(c), e.push(j(h))) : h.type === l.AT_RULE && (n !== void 0 && e.length !== 0 && e.push(c), e.push(o(a) + U(h)));
166
+ n = h.end;
167
+ }
168
+ let u = _(n, t.end);
169
+ return u && e.push(o(a) + u), a--, e.push(o(a) + g), e.join(E);
170
+ }
171
+ function j(t) {
172
+ var r, s;
173
+ let e = [];
174
+ if (((r = t.first_child) == null ? void 0 : r.type) === l.SELECTOR_LIST) {
175
+ let i = K(t.first_child), n = _(t.first_child.end, (s = t.block) == null ? void 0 : s.start);
176
+ n && (i += E + o(a) + n), i += p + w, t.block && (t.block.has_children || _(t.block.start, t.block.end)) || (i += g), e.push(i);
177
+ }
178
+ return t.block && (t.block.has_children || _(t.block.start, t.block.end)) && e.push(x(t.block)), e.join(E);
179
+ }
180
+ function V(t) {
181
+ return t.replace(/\s*([:,])/g, t.toLowerCase().includes("selector(") ? "$1" : "$1 ").replace(/\)([a-zA-Z])/g, ") $1").replace(/\s*(=>|<=)\s*/g, " $1 ").replace(/([^<>=\s])([<>])([^<>=\s])/g, `$1${p}$2${p}$3`).replace(/\s+/g, p).replace(/calc\(\s*([^()+\-*/]+)\s*([*/+-])\s*([^()+\-*/]+)\s*\)/g, (e, r, s, i) => {
182
+ let n = s === "+" || s === "-" ? f : p;
183
+ return `calc(${r.trim()}${n}${s}${n}${i.trim()})`;
184
+ }).replace(/selector|url|supports|layer\(/gi, (e) => e.toLowerCase());
185
+ }
186
+ function U(t) {
187
+ let e = [], r = ["@", t.name.toLowerCase()];
188
+ return t.prelude && r.push(f, V(t.prelude.text)), t.block === null ? r.push(b) : (r.push(p, w), !t.block.is_empty || _(t.block.start, t.block.end) || r.push(g)), e.push(r.join(c)), t.block !== null && (!t.block.is_empty || _(t.block.start, t.block.end)) && e.push(x(t.block)), e.join(E);
189
+ }
190
+ function q(t) {
191
+ let e = [], r = t.children;
192
+ if (r.length === 0)
193
+ return _(0, t.end, 0);
194
+ let s = r[0];
195
+ if (s) {
196
+ let u = _(0, s.start, 0);
197
+ u && e.push(u);
198
+ }
199
+ let i;
200
+ for (let u of t) {
201
+ if (i !== void 0) {
202
+ let T = _(i, u.start, 0);
203
+ T && e.push(T);
174
204
  }
175
- });
176
- let e = m(E(A.last), E(N));
177
- e && (_ += u + e);
178
- } else
179
- _ += m(0, E(N));
180
- return _;
205
+ u.type === l.STYLE_RULE ? e.push(j(u)) : u.type === l.AT_RULE && e.push(U(u)), i = u.end, u.has_next && (u.next_sibling && _(u.end, u.next_sibling.start, 0) || e.push(c));
206
+ }
207
+ let n = _(i, t.end, 0);
208
+ return n && e.push(n), e.join(E);
209
+ }
210
+ return q(d).trimEnd();
181
211
  }
182
- function se(y) {
183
- return fe(y, { minify: !0 });
212
+ function _t(R) {
213
+ return pt(R, { minify: !0 });
184
214
  }
185
215
  export {
186
- fe as format,
187
- se as minify
216
+ pt as format,
217
+ _t as minify
188
218
  };
package/package.json CHANGED
@@ -1,66 +1,65 @@
1
1
  {
2
- "name": "@projectwallace/format-css",
3
- "version": "2.1.2",
4
- "description": "Fast, small, zero-config library to format or minify CSS with basic rules.",
5
- "repository": {
6
- "type": "git",
7
- "url": "git+https://github.com/projectwallace/format-css.git"
8
- },
9
- "homepage": "https://github.com/projectwallace/format-css",
10
- "issues": "https://github.com/projectwallace/format-css/issues",
11
- "license": "MIT",
12
- "author": "Bart Veneman <bart@projectwallace.com>",
13
- "engines": {
14
- "node": ">=18.0.0"
15
- },
16
- "type": "module",
17
- "main": "./dist/format-css.js",
18
- "exports": {
19
- "types": "./dist/index.d.ts",
20
- "default": "./dist/format-css.js"
21
- },
22
- "types": "./dist/index.d.ts",
23
- "scripts": {
24
- "build": "vite build",
25
- "test": "vitest --coverage",
26
- "check": "tsc",
27
- "prettier": "prettier --check index.ts test/**/*.ts",
28
- "lint": "oxlint",
29
- "lint-package": "publint"
30
- },
31
- "devDependencies": {
32
- "@codecov/vite-plugin": "^1.9.1",
33
- "@types/css-tree": "^2.3.11",
34
- "@vitest/coverage-v8": "^4.0.3",
35
- "c8": "^10.1.3",
36
- "oxlint": "^1.24.0",
37
- "prettier": "^3.6.2",
38
- "publint": "^0.3.15",
39
- "typescript": "^5.9.3",
40
- "vite": "^6.2.6",
41
- "vite-plugin-dts": "^4.5.4",
42
- "vitest": "^4.0.3"
43
- },
44
- "dependencies": {
45
- "css-tree": "^3.1.0"
46
- },
47
- "files": [
48
- "dist"
49
- ],
50
- "keywords": [
51
- "css",
52
- "stylesheet",
53
- "formatter",
54
- "format",
55
- "print",
56
- "prettifier",
57
- "pretty",
58
- "prettier"
59
- ],
60
- "prettier": {
61
- "semi": false,
62
- "useTabs": true,
63
- "printWidth": 140,
64
- "singleQuote": true
65
- }
2
+ "name": "@projectwallace/format-css",
3
+ "version": "2.2.0",
4
+ "description": "Fast, small, zero-config library to format or minify CSS with basic rules.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/projectwallace/format-css.git"
8
+ },
9
+ "homepage": "https://github.com/projectwallace/format-css",
10
+ "issues": "https://github.com/projectwallace/format-css/issues",
11
+ "license": "MIT",
12
+ "author": "Bart Veneman <bart@projectwallace.com>",
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ },
16
+ "type": "module",
17
+ "main": "./dist/format-css.js",
18
+ "exports": {
19
+ "types": "./dist/index.d.ts",
20
+ "default": "./dist/format-css.js"
21
+ },
22
+ "types": "./dist/index.d.ts",
23
+ "scripts": {
24
+ "build": "vite build",
25
+ "test": "vitest --coverage",
26
+ "check": "tsc",
27
+ "prettier": "prettier --check index.ts test/**/*.ts",
28
+ "lint": "oxlint",
29
+ "lint-package": "publint"
30
+ },
31
+ "devDependencies": {
32
+ "@codecov/vite-plugin": "^1.9.1",
33
+ "@vitest/coverage-v8": "^4.0.3",
34
+ "c8": "^10.1.3",
35
+ "oxlint": "^1.24.0",
36
+ "prettier": "^3.6.2",
37
+ "publint": "^0.3.15",
38
+ "typescript": "^5.9.3",
39
+ "vite": "^6.2.6",
40
+ "vite-plugin-dts": "^4.5.4",
41
+ "vitest": "^4.0.3"
42
+ },
43
+ "files": [
44
+ "dist"
45
+ ],
46
+ "keywords": [
47
+ "css",
48
+ "stylesheet",
49
+ "formatter",
50
+ "format",
51
+ "print",
52
+ "prettifier",
53
+ "pretty",
54
+ "prettier"
55
+ ],
56
+ "prettier": {
57
+ "semi": false,
58
+ "useTabs": true,
59
+ "printWidth": 140,
60
+ "singleQuote": true
61
+ },
62
+ "dependencies": {
63
+ "@projectwallace/css-parser": "^0.12.2"
64
+ }
66
65
  }