Files
klz-cables.com/.pnpm-store/v10/files/9e/e53d1b03aa911509836412c0f6e96d98e1c38ac4ea623103a2f882d68f5df197eff7e1dfbd90c20cd45171e64b949f128264f552272971d0d15a9a8c767b27
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

69 lines
2.2 KiB
Plaintext

/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
/** @typedef {import("../../declarations/WebpackOptions").RuleSetConditionOrConditions} RuleSetConditionOrConditions */
/** @typedef {import("../../declarations/WebpackOptions").RuleSetConditionOrConditionsAbsolute} RuleSetConditionOrConditionsAbsolute */
/** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
/** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
/**
* @template T
* @template {T[keyof T]} V
* @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
*/
/** @typedef {KeysOfTypes<RuleSetRule, RuleSetConditionOrConditions | RuleSetConditionOrConditionsAbsolute>} BasicMatcherRuleKeys */
const PLUGIN_NAME = "BasicMatcherRulePlugin";
class BasicMatcherRulePlugin {
/**
* @param {BasicMatcherRuleKeys} ruleProperty the rule property
* @param {string=} dataProperty the data property
* @param {boolean=} invert if true, inverts the condition
*/
constructor(ruleProperty, dataProperty, invert) {
/** @type {BasicMatcherRuleKeys} */
this.ruleProperty = ruleProperty;
/** @type {string | BasicMatcherRuleKeys} */
this.dataProperty = dataProperty || ruleProperty;
/** @type {boolean} */
this.invert = invert || false;
}
/**
* @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
* @returns {void}
*/
apply(ruleSetCompiler) {
ruleSetCompiler.hooks.rule.tap(
PLUGIN_NAME,
(path, rule, unhandledProperties, result) => {
if (unhandledProperties.has(this.ruleProperty)) {
unhandledProperties.delete(this.ruleProperty);
const value = rule[this.ruleProperty];
const condition = ruleSetCompiler.compileCondition(
`${path}.${this.ruleProperty}`,
/** @type {RuleSetConditionOrConditions | RuleSetConditionOrConditionsAbsolute} */
(value)
);
const fn = condition.fn;
result.conditions.push({
property: this.dataProperty,
matchWhenEmpty: this.invert
? !condition.matchWhenEmpty
: condition.matchWhenEmpty,
fn: this.invert ? (v) => !fn(v) : fn
});
}
}
);
}
}
module.exports = BasicMatcherRulePlugin;