@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
1 lines • 1.91 kB
Source Map (JSON)
{"version":3,"sources":["../../src/process/UseCase.ts"],"sourcesContent":["import { Scope } from './Scope';\nimport { App } from './App';\nimport { Enum } from '../types/Enum';\nimport { kebab, Text } from '../types/Text';\nimport { List, toList } from '../types/List';\nimport { isIn, isString } from '../types/Is';\nimport { IdNamePlain } from '../types/IdName';\nimport { text } from '../types/ToText';\n\nexport class UseCase extends Enum {\n constructor(\n readonly app: App,\n name: string,\n id: Text = text(name).kebab,\n readonly scopes: List<Scope> = toList<Scope>()\n ) {\n super(name, id.toString());\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(\n ...toList(s)\n .flatMap(s => s.expand())\n .distinct()\n );\n return this;\n }\n\n for(item: string | IdNamePlain): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AASO,IAAM,UAAN,MAAM,iBAAgB,KAAK;AAAA,EAChC,YACW,KACT,MACA,KAAW,KAAK,IAAI,EAAE,OACb,SAAsB,OAAc,GAC7C;AACA,UAAM,MAAM,GAAG,SAAS,CAAC;AALhB;AAGA;AAAA,EAGX;AAAA,EAEA,OAAO,YAA+B,GAAqB;AACzD,WAAO,KAAK,OAAO,OAAK,EAAE,OAAO,KAAK,QAAM,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,EAC1D;AAAA,EAEA,QAAQ,GAAkB;AACxB,SAAK,OAAO;AAAA,MACV,GAAG,OAAO,CAAC,EACR,QAAQ,CAAAA,OAAKA,GAAE,OAAO,CAAC,EACvB,SAAS;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,MAAqC;AACvC,WAAO,IAAI,SAAQ,KAAK,KAAK,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,MAAM,GAAG,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,EAAE;AAAA,MACzI,GAAG,KAAK,OAAO,IAAI,OAAK,GAAG,IAAI,IAAI,CAAC;AAAA,IACtC;AAAA,EACF;AACF;","names":["s"]}