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
+60
View File
@@ -0,0 +1,60 @@
'use strict';
const lang = require('./lang.cjs');
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: lang.parseLanguageRangeList
};
const nth = {
parse() {
return this.createSingleNodeList(
this.Nth()
);
}
};
const pseudo = {
'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
};
module.exports = pseudo;
+37
View File
@@ -0,0 +1,37 @@
'use strict';
const types = require('../../tokenizer/types.cjs');
function parseLanguageRangeList() {
const children = this.createList();
this.skipSC();
loop: while (!this.eof) {
switch (this.tokenType) {
case types.Ident:
children.push(this.Identifier());
break;
case types.String:
children.push(this.String());
break;
case types.Comma:
children.push(this.Operator());
break;
case types.RightParenthesis:
break loop;
default:
this.error('Identifier, string or comma is expected');
}
this.skipSC();
}
return children;
}
exports.parseLanguageRangeList = parseLanguageRangeList;