(node: T)
| 124 | } |
| 125 | |
| 126 | export function cloneAstNode<T extends AstNode>(node: T): T { |
| 127 | switch (node.kind) { |
| 128 | case class="st">'rule': |
| 129 | return { |
| 130 | kind: node.kind, |
| 131 | selector: node.selector, |
| 132 | nodes: node.nodes.map(cloneAstNode), |
| 133 | src: node.src, |
| 134 | dst: node.dst, |
| 135 | } satisfies StyleRule as T |
| 136 | |
| 137 | case class="st">'at-rule': |
| 138 | return { |
| 139 | kind: node.kind, |
| 140 | name: node.name, |
| 141 | params: node.params, |
| 142 | nodes: node.nodes.map(cloneAstNode), |
| 143 | src: node.src, |
| 144 | dst: node.dst, |
| 145 | } satisfies AtRule as T |
| 146 | |
| 147 | case class="st">'at-root': |
| 148 | return { |
| 149 | kind: node.kind, |
| 150 | nodes: node.nodes.map(cloneAstNode), |
| 151 | src: node.src, |
| 152 | dst: node.dst, |
| 153 | } satisfies AtRoot as T |
| 154 | |
| 155 | case class="st">'context': |
| 156 | return { |
| 157 | kind: node.kind, |
| 158 | context: { ...node.context }, |
| 159 | nodes: node.nodes.map(cloneAstNode), |
| 160 | src: node.src, |
| 161 | dst: node.dst, |
| 162 | } satisfies Context as T |
| 163 | |
| 164 | case class="st">'declaration': |
| 165 | return { |
| 166 | kind: node.kind, |
| 167 | property: node.property, |
| 168 | value: node.value, |
| 169 | important: node.important, |
| 170 | src: node.src, |
| 171 | dst: node.dst, |
| 172 | } satisfies Declaration as T |
| 173 | |
| 174 | case class="st">'comment': |
| 175 | return { |
| 176 | kind: node.kind, |
| 177 | value: node.value, |
| 178 | src: node.src, |
| 179 | dst: node.dst, |
| 180 | } satisfies Comment as T |
| 181 | |
| 182 | default: |
| 183 | node satisfies never |
no outgoing calls
no test coverage detected