Use local svgo.cmd wrapper binary

Switch SVG optimizer resolution from bin/svgo-cli.exe to bin/svgo.cmd.

Update unit tests to validate the new local binary path behavior.

Co-Authored-By: Abacus.AI CLI <agent@abacus.ai>
This commit is contained in:
2026-06-08 14:50:19 +02:00
parent 75059f829a
commit 6c5a5256c7
1054 changed files with 152359 additions and 7 deletions
+56
View File
@@ -0,0 +1,56 @@
import { parseLanguageRangeList } from './lang.js';
const selectorList = {
parse() {
return this.createSingleNodeList(
this.SelectorList()
);
}
};
const selector = {
parse() {
return this.createSingleNodeList(
this.Selector()
);
}
};
const identList = {
parse() {
return this.createSingleNodeList(
this.Identifier()
);
}
};
const langList = {
parse: parseLanguageRangeList
};
const nth = {
parse() {
return this.createSingleNodeList(
this.Nth()
);
}
};
export default {
'dir': identList,
'has': selectorList,
'lang': langList,
'matches': selectorList,
'is': selectorList,
'-moz-any': selectorList,
'-webkit-any': selectorList,
'where': selectorList,
'not': selectorList,
'nth-child': nth,
'nth-last-child': nth,
'nth-last-of-type': nth,
'nth-of-type': nth,
'slotted': selector,
'host': selector,
'host-context': selector
};
+33
View File
@@ -0,0 +1,33 @@
import { Comma, String as StringToken, Ident, RightParenthesis } from '../../tokenizer/index.js';
export function parseLanguageRangeList() {
const children = this.createList();
this.skipSC();
loop: while (!this.eof) {
switch (this.tokenType) {
case Ident:
children.push(this.Identifier());
break;
case StringToken:
children.push(this.String());
break;
case Comma:
children.push(this.Operator());
break;
case RightParenthesis:
break loop;
default:
this.error('Identifier, string or comma is expected');
}
this.skipSC();
}
return children;
}