{
  "version": 3,
  "sources": ["../src/goal/classes/goal.class.ts"],
  "sourcesContent": ["import { get, set } from '@dikolab/private-parts';\nimport { UsecaseSymbol } from '../../symbol/classes/usecase-symbol.class';\nimport { GOAL_TYPE } from '../../utils/constants/symbol-tag.constant';\nimport type { GoalModel } from '../types/goal-model.interface';\nimport type { AnyBoundary } from '../../boundary/types/utility.type';\nimport {\n   BOUNDARY_KEY,\n   TITLE_KEY,\n} from '../../utils/constants/symbol-keys.constant';\nimport type { GoalName } from '../types/goal-name.type';\nimport { createGoalName } from '../functions/create-goal-name.function';\nimport type { GoalEventMap } from '../types/goal-event-map.type';\n\n/**\n * Represents an outcome that a use case aims\n * to achieve within a boundary\n */\nexport class Goal<Title extends string, Boundary extends AnyBoundary>\n   extends UsecaseSymbol<\n      typeof GOAL_TYPE,\n      GoalName<Title, Boundary>,\n      GoalEventMap\n   >\n   implements GoalModel<Title, Boundary>\n{\n   get [TITLE_KEY](): Title {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return get(this, TITLE_KEY);\n   }\n\n   get [BOUNDARY_KEY](): Boundary {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return get(this, BOUNDARY_KEY);\n   }\n\n   constructor(title: Title, boundary: Boundary) {\n      super(GOAL_TYPE, createGoalName(title, boundary));\n      set(this, TITLE_KEY, title);\n      set(this, BOUNDARY_KEY, boundary);\n   }\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;AAAA,SAAS,KAAK,WAAW;AAiBlB,IAAM,OAAN,cACI,cAMX;AAAA,EACG,KAAK,SAAS,IAAW;AAEtB,WAAO,IAAI,MAAM,SAAS;AAAA,EAC7B;AAAA,EAEA,KAAK,YAAY,IAAc;AAE5B,WAAO,IAAI,MAAM,YAAY;AAAA,EAChC;AAAA,EAEA,YAAY,OAAc,UAAoB;AAC3C,UAAM,WAAW,eAAe,OAAO,QAAQ,CAAC;AAChD,QAAI,MAAM,WAAW,KAAK;AAC1B,QAAI,MAAM,cAAc,QAAQ;AAAA,EACnC;AACH;",
  "names": []
}
