
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Сеточка — инструмент для выделения CSS-свойств исходного CSS в отдельные файлы. Также может использоваться для удаления этих свойств без записи.
Для установки следует выполнить команду npm install setochka
.
Для обновления следует выполнить команду npm update setochka
.
Для удаления следует выполнить команду npm uninstall setochka
.
Кратко (копия файла USAGE):
setochka
setochka -h
setochka --help
показывает этот текст
setochka -v
setochka --version
показывает версию "Сеточки"
setochka -i <CSS_filename>
setochka --input <CSS_filename>
принимает <CSS_filename> на вход
setochka -a "alias0,alias1,aliasN"
setochka -a alias0 -a "alias1,aliasN"
setochka --aliases "alias0,alias1,aliasN"
setochka --aliases alias0 --aliases "alias1,aliasN"
перечисляет синонимы для использования
setochka -mc <config_filename>
setochka --merge-config <config_filename>
совмещает настройки по умолчанию с настройками из <config_filename>
setochka -rc <config_filename>
setochka --replace-config <config_filename>
замещает настройки по умолчанию настройками из <config_filename>
setochka -l
setochka --list
показывает настройки
Файл настроек представляет собою JavaScript-файл.
exports.config = {
outFile: function(filename) { return .. }, <- имя файла для записи CSS без отфильтрованных свойств
aliases: { <- набор синонимов
'синоним0': { <- уникальный синоним для группирования настроек
mark: 'метка', <- метка для маркировки свойства
description: 'краткое описание', <- краткое описание синонима
outFile: function(filename) { return .. }, <- имя файла для записи выделенных свойств
tokens: { <- токены для сверки с шаблоном
'declaration': [/regexp/, function(s) {..}, ..], <- CSS-свойство в целом
'property': [/regexp/, function(s) {..}, ..], <- имя CSS-свойства
'value': [/regexp/, function(s) {..}, ..] <- значение CSS-свойства
}
},
'синоним1': {
..
},
'синонимN': {
..
}
}
}
Функция, возвращающая имя файла, в который следует записывать результат обработки. В случае с outFile высшего уровня (не относящийся к alias) это CSS, из которого отфильтровали свойства. В случае с alias.outFile это файл, в который записываются все свойства, попавшие под шаблоны.
Если outFile отсутствует или его значение равно false
(null
, undefined
, пустая строка, 0
), файл записан не будет. Этим можно пользоваться для удаления свойств.
Синоним (alias) — имя группы, в которую включаются шаблоны, метка, описание, настройки исходящего файла и всё прочее, что имеет смысл вносить в группу. Группа, в свою очередь, нужна для того, чтобы пользователь мог уникально идентифицировать наборы шаблонов и применять их посредством вызова. В общем, очевидная концепция.
Маркер, которым в CSS помечаются свойства для безусловной фильтрации: свойство будет перемещено вне зависимости от того, попадает оно под шаблоны или нет. В CSS маркер должен быть заключён в комментарий и находиться до свойства, при этом между маркером и свойством не должно быть пробелов и чего-либо ещё:
.test {
/*webkit*/color: red
}
Краткое описание синонима.
Токен представляет собою имя CSS-части (токена), к которой применять шаблоны. Шаблон — регулярное выражение JavaScript или функция, которая получает аргументом текст токена и возвращает true
(в случае совпадения) или false
(несовпадения). Если текстовое представление токена соответствует шаблону, свойство (NB: свойство целиком!), к которому относится эта часть, выделяется.
Напоминание: в CSS свойство – это declaration
в виде property:value
.
declaration
— массив шаблонов и функций для применения к свойству целиком.property
— массив шаблонов и функций для применения к именам свойств.value
— массив шаблонов и функций для применения к значениям свойств.exports.config = {
outFile: function(filename) { return 'base.' + filename },
aliases: {
'moz': {
mark: 'moz',
description: 'Gecko (Mozilla): -moz-',
outFile: function(filename) { return 'moz.' + filename },
tokens: {
'property': [/^\-moz\-/]
}
}
}
}
Основным сценарием использования видится выделение вендорных свойств по шаблонам — то, ради чего создана Сеточка, и под эту задачу созданы настройки по умолчанию, которые можно посмотреть здесь.
Если пользователь нуждается в переопределении или дополнении настроек (вероятно, изменение имени исходящих файлов или дополнение настроек), следует использовать сценарии "Дополнение настроек" и "Замещение настроек".
В настройках должны быть заполнены следующие параметры:
Запуск: setochka -i my.css
В настройках должны быть заполнены следующие параметры:
Этот параметр должен быть пустым (или иметь значение, равное false
):
Запуск: setochka -i my.css
При дополнении настроек пользовательские настройки замещают собою пересекающуюся часть настроек по умолчанию, а также дополняют то, чего в настройках не было. NB: массивы шаблонов не дополняются, но замещаются целиком!
Пример настроек по умолчанию (фактические отличаются):
exports.config = {
outFile: function(filename) { return 'base.' + filename },
aliases: {
'moz': {
mark: 'moz',
description: 'Gecko (Mozilla): -moz-',
outFile: function(filename) { return 'moz.' + filename },
tokens: {
'property': [/^\-moz\-/]
}
}
}
}
Пример пользовательских настроек (/foo/bar/myconfig.js
):
exports.config = {
outFile: function(filename) { return 'my.' + filename },
aliases: {
'moz': {
tokens: {
'property': [/^\-moz\-color/],
'value': [/^\mozilla\-/]
}
},
'test': {
mark: 'test'
}
}
}
Итог:
exports.config = {
outFile: function(filename) { return 'my.' + filename },
aliases: {
'moz': {
mark: 'moz',
description: 'Gecko (Mozilla): -moz-',
outFile: function(filename) { return 'moz.' + filename },
tokens: {
'property': [/^\-moz\-color/],
'value': [/^\mozilla\-/]
}
},
'test': {
mark: 'test'
}
}
}
Запуск: setochka -i my.css -mc /foo/bar/myconfig.js
Запуск: setochka -i my.css -rc /foo/bar/myconfig.js
FAQs
Setochka — divide et impera
We found that setochka demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.