From da2920c8b5e4ba6a37fb0b3d864279fc4c4c25b0 Mon Sep 17 00:00:00 2001 From: qcqcqc <1220204124@zust.edu.cn> Date: Wed, 31 Dec 2025 14:25:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0trigger=E5=9C=A8?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=97=B6=E7=9A=84action=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=EF=BC=8C=E5=9B=A0=E4=B8=BA=E5=9C=A8=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=97=B6=E8=8B=A5=E5=87=BA=E7=8E=B0action=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=AE=9A=E4=B9=89=E7=9A=84trigger=E4=BC=9A=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/store/TriggerExecutor.js | 11 +++++++++++ src/store/TriggerExecutor.ts | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/store/TriggerExecutor.js b/lib/store/TriggerExecutor.js index cbd701c..33f2c06 100644 --- a/lib/store/TriggerExecutor.js +++ b/lib/store/TriggerExecutor.js @@ -104,6 +104,17 @@ class TriggerExecutor { || trigger.action instanceof Array && !trigger.action.includes('create'), `trigger【${trigger.name}】是create类型但却带有filter`); (0, assert_1.default)(trigger.when === 'before' || trigger.when === 'commit', `定义了filter的trigger【${trigger.name}】的when只能是before或者commit`); } + if (Array.isArray(trigger.action)) { + const actions = trigger.action; + const seen = new Set(); + const duplicate = actions.find(item => { + if (seen.has(item)) + return true; + seen.add(item); + return false; + }); + (0, assert_1.default)(!duplicate, `注册 trigger 「${trigger.name}」 时发现定义中出现了重复定义的action: 「${duplicate}」`); + } Object.assign(this.triggerNameMap, { [trigger.name]: trigger, }); diff --git a/src/store/TriggerExecutor.ts b/src/store/TriggerExecutor.ts index 37de691..6414eab 100644 --- a/src/store/TriggerExecutor.ts +++ b/src/store/TriggerExecutor.ts @@ -141,6 +141,16 @@ export class TriggerExecutor(); + const duplicate = actions.find(item => { + if (seen.has(item)) return true; + seen.add(item); + return false; + }); + assert(!duplicate, `注册 trigger 「${trigger.name}」 时发现定义中出现了重复定义的action: 「${duplicate}」`); + } Object.assign(this.triggerNameMap, { [trigger.name]: trigger, });