From 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 18:09:58 +0800
Subject: [PATCH] 上报转运调试

---
 node_modules/ajv/lib/vocabularies/validation/pattern.ts |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/node_modules/ajv/lib/vocabularies/validation/pattern.ts b/node_modules/ajv/lib/vocabularies/validation/pattern.ts
index 7b27b7d..bb0203b 100644
--- a/node_modules/ajv/lib/vocabularies/validation/pattern.ts
+++ b/node_modules/ajv/lib/vocabularies/validation/pattern.ts
@@ -1,6 +1,7 @@
 import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from "../../types"
 import type {KeywordCxt} from "../../compile/validate"
 import {usePattern} from "../code"
+import {useFunc} from "../../compile/util"
 import {_, str} from "../../compile/codegen"
 
 export type PatternError = ErrorObject<"pattern", {pattern: string}, string | {$data: string}>
@@ -17,11 +18,21 @@
   $data: true,
   error,
   code(cxt: KeywordCxt) {
-    const {data, $data, schema, schemaCode, it} = cxt
-    // TODO regexp should be wrapped in try/catchs
+    const {gen, data, $data, schema, schemaCode, it} = cxt
     const u = it.opts.unicodeRegExp ? "u" : ""
-    const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)
-    cxt.fail$data(_`!${regExp}.test(${data})`)
+    if ($data) {
+      const {regExp} = it.opts.code
+      const regExpCode = regExp.code === "new RegExp" ? _`new RegExp` : useFunc(gen, regExp)
+      const valid = gen.let("valid")
+      gen.try(
+        () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),
+        () => gen.assign(valid, false)
+      )
+      cxt.fail$data(_`!${valid}`)
+    } else {
+      const regExp = usePattern(cxt, schema)
+      cxt.fail$data(_`!${regExp}.test(${data})`)
+    }
   },
 }
 

--
Gitblit v1.9.3