@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
49 lines (48 loc) • 1.22 kB
JavaScript
import {
Enum,
text,
toList
} from "../chunk-AVHYDITZ.mjs";
import "../chunk-EBIF6AMC.mjs";
import "../chunk-KCY4RPFR.mjs";
import "../chunk-SSROJBD5.mjs";
import "../chunk-S3NSPQ7M.mjs";
import {
kebab
} from "../chunk-NNA77YYC.mjs";
import "../chunk-SJGQU3OG.mjs";
import "../chunk-D5IYAIMK.mjs";
import "../chunk-PF7HDF6B.mjs";
import "../chunk-IXK47WKF.mjs";
import "../chunk-PIRWVOO2.mjs";
import {
isIn,
isString
} from "../chunk-AAND4MKF.mjs";
import "../chunk-4N72FQFX.mjs";
// src/process/UseCase.ts
var UseCase = class _UseCase extends Enum {
constructor(app, name, id = text(name).kebab, scopes = toList()) {
super(name, id.toString());
this.app = app;
this.scopes = scopes;
}
static byScopes(...s) {
return this.filter((u) => u.scopes.some((us) => isIn(us, s)));
}
with(...s) {
this.scopes.add(
...toList(s).flatMap((s2) => s2.expand()).distinct()
);
return this;
}
for(item) {
return new _UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(
...this.scopes.map((s) => s?.for(item))
);
}
};
export {
UseCase
};
//# sourceMappingURL=UseCase.mjs.map