Files
klz-cables.com/.pnpm-store/v10/files/47/0e96cb2108059fd44ef81287d15f1dd13170bf2f40322421ae5dc13e00d507451e9a283d9ed81c0fd4f6c2f0de4ae3d55322c004607d0bc3615836eb2bb809
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

46 lines
1.2 KiB
Plaintext

import type {CodeKeywordDefinition, KeywordCxt, JSONSchemaType, Name} from "ajv"
import {_} from "ajv/dist/compile/codegen"
import {usePattern} from "./_util"
interface RegexpSchema {
pattern: string
flags?: string
}
const regexpMetaSchema: JSONSchemaType<RegexpSchema> = {
type: "object",
properties: {
pattern: {type: "string"},
flags: {type: "string", nullable: true},
},
required: ["pattern"],
additionalProperties: false,
}
const metaRegexp = /^\/(.*)\/([gimuy]*)$/
export default function getDef(): CodeKeywordDefinition {
return {
keyword: "regexp",
type: "string",
schemaType: ["string", "object"],
code(cxt: KeywordCxt) {
const {data, schema} = cxt
const regx = getRegExp(schema)
cxt.pass(_`${regx}.test(${data})`)
function getRegExp(sch: string | RegexpSchema): Name {
if (typeof sch == "object") return usePattern(cxt, sch.pattern, sch.flags)
const rx = metaRegexp.exec(sch)
if (rx) return usePattern(cxt, rx[1], rx[2])
throw new Error("cannot parse string into RegExp")
}
},
metaSchema: {
anyOf: [{type: "string"}, regexpMetaSchema],
},
}
}
module.exports = getDef