Files
klz-cables.com/.pnpm-store/v10/files/37/7fc61808c2ba5329f50c04422407a740d3ac02f8afe288afaa204718c8d37130428983c6ae66950cd0f3137c38cfde06ebcabfbad48e0025574ac4d4061fdf
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

47 lines
1.4 KiB
Plaintext

import type {CodeKeywordDefinition, KeywordCxt, KeywordErrorDefinition, ErrorObject} from "ajv"
import {_, str, and} from "ajv/dist/compile/codegen"
import {usePattern} from "./_util"
export type PatternRequiredError = ErrorObject<"patternRequired", {missingPattern: string}>
const error: KeywordErrorDefinition = {
message: ({params: {missingPattern}}) =>
str`should have property matching pattern '${missingPattern}'`,
params: ({params: {missingPattern}}) => _`{missingPattern: ${missingPattern}}`,
}
export default function getDef(): CodeKeywordDefinition {
return {
keyword: "patternRequired",
type: "object",
schemaType: "array",
error,
code(cxt: KeywordCxt) {
const {gen, schema, data} = cxt
if (schema.length === 0) return
const valid = gen.let("valid", true)
for (const pat of schema) validateProperties(pat)
function validateProperties(pattern: string): void {
const matched = gen.let("matched", false)
gen.forIn("key", data, (key) => {
gen.assign(matched, _`${usePattern(cxt, pattern)}.test(${key})`)
gen.if(matched, () => gen.break())
})
cxt.setParams({missingPattern: pattern})
gen.assign(valid, and(valid, matched))
cxt.pass(valid)
}
},
metaSchema: {
type: "array",
items: {type: "string", format: "regex"},
uniqueItems: true,
},
}
}
module.exports = getDef