@projectwallace/css-layer-tree 1.0.1 → 2.0.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.
@@ -2,28 +2,28 @@ import * as u from "css-tree";
2
2
  class f {
3
3
  /** @param {string} name */
4
4
  constructor(e) {
5
- this.name = e, this.children = /* @__PURE__ */ new Map(), this.locations = [];
5
+ this.name = e, this.is_anonymous = !1, this.children = /* @__PURE__ */ new Map(), this.locations = [];
6
6
  }
7
7
  /**
8
- *
9
8
  * @param {string[]} path
10
9
  * @param {string} name
11
10
  * @param {T} location
12
11
  */
13
12
  add_child(e, l, p) {
14
- let i = this;
13
+ let s = this;
15
14
  if (e.forEach((t) => {
16
- i = i.children.get(t);
17
- }), i.children.has(l))
18
- i.children.get(l).locations.push(p);
15
+ s = s.children.get(t);
16
+ }), s.children.has(l))
17
+ s.children.get(l).locations.push(p);
19
18
  else {
20
19
  const t = new f(l);
21
- t.locations.push(p), i.children.set(l, t);
20
+ t.locations.push(p), t.is_anonymous = l.startsWith("__anonymous"), s.children.set(l, t);
22
21
  }
23
22
  }
24
23
  /**
25
24
  * @typedef PlainObject
26
25
  * @property {string} name
26
+ * @property {boolean} is_anonymous
27
27
  * @property {T[]} locations
28
28
  * @property {PlainObject[]} children
29
29
  */
@@ -34,12 +34,13 @@ class f {
34
34
  to_plain_object() {
35
35
  return {
36
36
  name: this.name,
37
+ is_anonymous: this.is_anonymous,
37
38
  locations: this.locations,
38
39
  children: Array.from(this.children.values(), (e) => e.to_plain_object())
39
40
  };
40
41
  }
41
42
  }
42
- function d(a) {
43
+ function _(a) {
43
44
  let e = a.loc;
44
45
  if (e)
45
46
  return {
@@ -49,7 +50,7 @@ function d(a) {
49
50
  end: e.end.offset
50
51
  };
51
52
  }
52
- function _(a) {
53
+ function d(a) {
53
54
  return a.name.toLowerCase() === "layer";
54
55
  }
55
56
  function c(a) {
@@ -57,41 +58,41 @@ function c(a) {
57
58
  }
58
59
  function h(a) {
59
60
  let e = [], l = new f("root"), p = 0;
60
- function i() {
61
+ function s() {
61
62
  return p++, `__anonymous-${p}__`;
62
63
  }
63
64
  return u.walk(a, {
64
65
  visit: "Atrule",
65
66
  enter(t) {
66
- if (_(t)) {
67
- let n = d(t);
67
+ if (d(t)) {
68
+ let i = _(t);
68
69
  if (t.prelude === null) {
69
- let r = i();
70
- l.add_child(e, r, n), e.push(r);
70
+ let r = s();
71
+ l.add_child(e, r, i), e.push(r);
71
72
  } else if (t.prelude.type === "AtrulePrelude")
72
73
  if (t.block === null) {
73
- let r = u.findAll(t.prelude, (s) => s.type === "Layer").map((s) => s.name);
74
- for (let s of r)
75
- l.add_child(e, s, n);
74
+ let r = u.findAll(t.prelude, (n) => n.type === "Layer").map((n) => n.name);
75
+ for (let n of r)
76
+ l.add_child(e, n, i);
76
77
  } else
77
78
  for (let r of c(t.prelude))
78
- l.add_child(e, r, n), e.push(r);
79
+ l.add_child(e, r, i), e.push(r);
79
80
  } else if (t.name.toLowerCase() === "import" && t.prelude !== null && t.prelude.type === "AtrulePrelude") {
80
- let n = d(t), r = t.prelude, s = u.find(r, (o) => o.type === "Layer");
81
- if (s) {
82
- for (let o of c(s))
83
- l.add_child(e, o, n), e.push(o);
81
+ let i = _(t), r = t.prelude, n = u.find(r, (o) => o.type === "Layer");
82
+ if (n) {
83
+ for (let o of c(n))
84
+ l.add_child(e, o, i), e.push(o);
84
85
  return this.skip;
85
86
  }
86
87
  if (u.find(r, (o) => o.type === "Identifier" && o.name.toLowerCase() === "layer"))
87
- return l.add_child([], i(), n), this.skip;
88
+ return l.add_child([], s(), i), this.skip;
88
89
  }
89
90
  },
90
91
  leave(t) {
91
- if (_(t))
92
+ if (d(t))
92
93
  if (t.prelude !== null && t.prelude.type === "AtrulePrelude") {
93
- let n = c(t.prelude);
94
- for (let r = 0; r < n.length; r++)
94
+ let i = c(t.prelude);
95
+ for (let r = 0; r < i.length; r++)
95
96
  e.pop();
96
97
  } else
97
98
  e.pop();
package/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export type Location = {
9
9
 
10
10
  export type TreeNode = {
11
11
  name: string;
12
+ is_anonymous: boolean;
12
13
  children: TreeNode[];
13
14
  locations: Location[];
14
15
  }
package/package.json CHANGED
@@ -1,25 +1,27 @@
1
1
  {
2
2
  "name": "@projectwallace/css-layer-tree",
3
- "version": "1.0.1",
4
- "description": "Discover the composition of your CSS @layers",
3
+ "version": "2.0.0",
4
+ "description": "Discover the composition of your CSS @layers in a tree-based format.",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/projectwallace/css-layer-tree.git"
8
8
  },
9
+ "author": {
10
+ "name": "Bart Veneman"
11
+ },
9
12
  "homepage": "https://github.com/projectwallace/css-layer-tree",
10
13
  "issues": "https://github.com/projectwallace/css-layer-tree/issues",
11
14
  "license": "MIT",
15
+ "engines": {
16
+ "node": ">=18.0.0"
17
+ },
12
18
  "type": "module",
13
- "source": "src/index.js",
19
+ "main": "./dist/css-layer-tree.js",
20
+ "types": "./index.d.ts",
14
21
  "exports": {
15
22
  "types": "./index.d.ts",
16
- "require": "./dist/css-layer-tree.umd.cjs",
17
23
  "default": "./dist/css-layer-tree.js"
18
24
  },
19
- "types": "./index.d.ts",
20
- "main": "./dist/css-layer-tree.umd.cjs",
21
- "module": "./dist/css-layer-tree.js",
22
- "unpkg": "./dist/css-layer-tree.umd.cjs",
23
25
  "scripts": {
24
26
  "build": "vite build",
25
27
  "test": "c8 --reporter=lcov uvu",
@@ -1 +0,0 @@
1
- (function(i,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("css-tree")):typeof define=="function"&&define.amd?define(["exports","css-tree"],p):(i=typeof globalThis<"u"?globalThis:i||self,p(i.cssLayerTree={},i.csstree))})(this,function(i,p){"use strict";function g(l){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(l){for(const r in l)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(l,r);Object.defineProperty(e,r,a.get?a:{enumerable:!0,get:()=>l[r]})}}return e.default=l,Object.freeze(e)}const f=g(p);class d{constructor(e){this.name=e,this.children=new Map,this.locations=[]}add_child(e,r,a){let s=this;if(e.forEach(t=>{s=s.children.get(t)}),s.children.has(r))s.children.get(r).locations.push(a);else{const t=new d(r);t.locations.push(a),s.children.set(r,t)}}to_plain_object(){return{name:this.name,locations:this.locations,children:Array.from(this.children.values(),e=>e.to_plain_object())}}}function y(l){let e=l.loc;if(e)return{line:e.start.line,column:e.start.column,start:e.start.offset,end:e.end.offset}}function h(l){return l.name.toLowerCase()==="layer"}function _(l){return f.generate(l).split(".").map(e=>e.trim())}function m(l){let e=[],r=new d("root"),a=0;function s(){return a++,`__anonymous-${a}__`}return f.walk(l,{visit:"Atrule",enter(t){if(h(t)){let o=y(t);if(t.prelude===null){let n=s();r.add_child(e,n,o),e.push(n)}else if(t.prelude.type==="AtrulePrelude")if(t.block===null){let n=f.findAll(t.prelude,u=>u.type==="Layer").map(u=>u.name);for(let u of n)r.add_child(e,u,o)}else for(let n of _(t.prelude))r.add_child(e,n,o),e.push(n)}else if(t.name.toLowerCase()==="import"&&t.prelude!==null&&t.prelude.type==="AtrulePrelude"){let o=y(t),n=t.prelude,u=f.find(n,c=>c.type==="Layer");if(u){for(let c of _(u))r.add_child(e,c,o),e.push(c);return this.skip}if(f.find(n,c=>c.type==="Identifier"&&c.name.toLowerCase()==="layer"))return r.add_child([],s(),o),this.skip}},leave(t){if(h(t))if(t.prelude!==null&&t.prelude.type==="AtrulePrelude"){let o=_(t.prelude);for(let n=0;n<o.length;n++)e.pop()}else e.pop();else t.name.toLowerCase()==="import"&&(e.length=0)}}),r.to_plain_object().children}function b(l){let e=f.parse(l,{positions:!0,parseAtrulePrelude:!0,parseValue:!1,parseRulePrelude:!1,parseCustomProperty:!1});return m(e)}i.layer_tree=b,i.layer_tree_from_ast=m,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});