Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
bemhint-estree
Advanced tools
Плагины к bemhint для парсинга js и поиска недостающих депсов.
plugins/browser
— плагин для технологии js
.plugins/templates
— плагин для технологий bh.js
и bemhtml.js
.Оба плагина используют хелпер, который умеет парсить js-файлы, и искать в AST объектные литералы, которые
похожи на BEMJSON (есть поля block
, elem
, mods
, elemMods
). Плагины, затем, проверяют наличие зависимостей от
найденных БЭМ-сущностей в deps.js
.
Когда мы пишем BEMJSON в шаблонах, мы, обычно, хотим передать его в applyCtx
или вернуть из дефолтной моды,
то есть хотим вместо текущего BEMJSON обработать какой-то другой. Чтобы для нового BEMJSON отработали шаблоны и на
клиент попали стили и javascript, нужно чтобы все БЭМ-сущности были указаны в shouldDeps или в mustDeps.
У блока могут быть опциональные зависимости, которые нужно подключать только если API блока используется определённым образом.
Например, если у блока button2
используется поле icon
, нужно дополнительно прописать зависимость от блока icon
.
Чтобы уменьшить вероятность ложных срабатываний в таких случаях, плагин игнорирует код находящийся внутри
условных конструкций (if
, ? :
, &&
, ||
).
// a.bemhtml.js
block('a').def()(function() {
return {
block: 'b',
mix: [{block: 'mixed', mods: {name: 'val'}, js: true}],
content: [
{elem: 'e'},
this.ctx.d && {elem: 'd'}
]
}
});
// a.deps.js
({
mustDeps: [
// Такая зависимость должна быть у всех блоков с bemhtml (до bem-xjst 4.0), плагин это не проверяет
{block: 'i-bem', elem: 'html'},
// Элемент d опциональный, находится за логическим оператором, плагином игнорируется
{block: 'b', elems: ['e']},
{block: 'mixed', mods: {name: 'val'}}
]
});
Когда BEMJSON встречается внутри клиентского js, это значит, обычно, что мы собираемся передать его шаблонизатору.
В этом случае справедливо всё что написано в предыдущем абзаце: нужно указать shouldDeps/mustDeps от всех сущностей из
BEMJSON, кроме опциональных. Кроме того, в клиентский js должны попасть шаблоны этих сущностей.
Для этого должны быть правильно прописаны depsByTech
: в зависимости по технологиям js
→bemhtml
нужно прописать все
блоки, кроме тех, которые переданы в поле mix
(они не участвуют в шаблонизации). Для защиты от ложных срабатываний,
кроме конструкций ветвления, плагин игнорирет findBlock*()
методы, BEM.create()
, BEM.HTML.decl()
,
BEM.HTML.build()
, первый аргумент BEM.DOM.decl()
.
// a.js
BEM.dom.decl({block: 'a'}, {
method: function() {
var c = this.findBlockInside({block: 'c'});
BEM.DOM.update(this.elem('e'), BEMHTML.apply({
block: 'b',
mix: {block: 'a', elem: 'e'},
content: [
{elem: 'e1'},
_buildOther(),
this.params.d ? {block: 'd'} : ''
]
}))
},
_buildOther: function() {
return [
{elem: 'e2'},
{block: 'f'}
],
}
});
// a.deps.js
([{
mustDeps: [
// Зависимость должна быть у всех блоков использующих BEM.DOM
{block: 'i-bem', elem: 'dom'}
],
shouldDeps: [
// Элемент используется внутри поля mix, depsByTech для него не нужны
{elem: 'e'},
// Плагин игнорирует не предупреждает про e2, т.к. не умеет прокидывать контекст блока в другой литерал
{block: 'b', elems: ['e1', 'e2']},
{block: 'f'}
// Блок d опциональный, находится за условным оператором, плагином игнорируется
]
}, {
// Для сущностей участвующих в шаблонизации прописываем depsByTech
tech: 'js',
shouldDeps: [
{tech: 'bemhtml', block: 'b', elems: ['e1', 'e2']},
{tech: 'bemhtml', block: 'f'}
]
}]);
FAQs
acorn-based plugins for bemhint
The npm package bemhint-estree receives a total of 2 weekly downloads. As such, bemhint-estree popularity was classified as not popular.
We found that bemhint-estree demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers 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.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.