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, });