diff --git a/bun.lockb b/bun.lockb index 1aa0c80..6f6c34d 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 1b4681c..edf713a 100644 --- a/package.json +++ b/package.json @@ -29,10 +29,12 @@ }, "dependencies": { "hotscript": "^1.0.13", + "lodash-es": "^4.17.21", "type-fest": "^4.10.2" }, "devDependencies": { "@rollup/plugin-node-resolve": "^15.2.3", + "@types/lodash-es": "^4.17.12", "bun-types": "latest", "npm-check-updates": "^16.14.14", "npm-sort": "^0.0.4", diff --git a/src/TraitExpressionBuilder.ts b/src/TraitExpressionBuilder.ts index 8ab8d30..0e9ed0d 100644 --- a/src/TraitExpressionBuilder.ts +++ b/src/TraitExpressionBuilder.ts @@ -1,4 +1,5 @@ import { Call, Fn, Pipe, Tuples } from "hotscript" +import { uniq } from "lodash-es" import { AbstractClass } from "type-fest" import { Trait } from "./Trait" import { TraitExpression, emptyTraitExpression } from "./TraitExpression" @@ -96,8 +97,8 @@ class TraitExpressionBuilder< return new TraitExpressionBuilder( new TraitExpression( this.expression.superclass, - [...this.expression.ownTraits, ...traits], - [...this.expression.allTraits, ...this.spreadSupertraits(traits)], + uniq([...this.expression.ownTraits, ...traits]) as [...OwnTraits, ...Traits], + uniq([...this.expression.allTraits, ...this.spreadSupertraits(traits)]) as [...AllTraits, ...SpreadSupertraits], ) ) }