{
  "version": 3,
  "sources": ["../src/boundary/classes/boundary.class.ts"],
  "sourcesContent": ["import { get, set } from '@dikolab/private-parts';\nimport { UsecaseSymbol } from '../../symbol/classes/usecase-symbol.class';\nimport {\n   SUBTYPE_KEY,\n   TITLE_KEY,\n} from '../../utils/constants/symbol-keys.constant';\n\nimport { BOUNDARY_TYPE } from '../../utils/constants/symbol-tag.constant';\nimport type { BoundaryModel } from '../types/boundary-model.interface';\n\n/**\n * Represents a system boundary that groups\n * related goals and use cases under a typed\n * domain scope\n */\nexport class Boundary<Type extends string, Title extends string>\n   extends UsecaseSymbol<typeof BOUNDARY_TYPE, `${Type}:${Title}`>\n   implements BoundaryModel<Type, Title>\n{\n   get [SUBTYPE_KEY](): Type {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return get(this, SUBTYPE_KEY);\n   }\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   constructor(type: Type, title: Title) {\n      super(BOUNDARY_TYPE, `${type}:${title}`);\n\n      set(this, SUBTYPE_KEY, type);\n      set(this, TITLE_KEY, title);\n   }\n\n   /** Returns a plain object with type, name, and subtype */\n   toJSON() {\n      return {\n         ...super.toJSON(),\n         subtype: this[SUBTYPE_KEY],\n      };\n   }\n}\n"],
  "mappings": ";;;;;;;;;;;;AAAA,SAAS,KAAK,WAAW;AAelB,IAAM,WAAN,cACI,cAEX;AAAA,EACG,KAAK,WAAW,IAAU;AAEvB,WAAO,IAAI,MAAM,WAAW;AAAA,EAC/B;AAAA,EAEA,KAAK,SAAS,IAAW;AAEtB,WAAO,IAAI,MAAM,SAAS;AAAA,EAC7B;AAAA,EAEA,YAAY,MAAY,OAAc;AACnC,UAAM,eAAe,GAAG,IAAI,IAAI,KAAK,EAAE;AAEvC,QAAI,MAAM,aAAa,IAAI;AAC3B,QAAI,MAAM,WAAW,KAAK;AAAA,EAC7B;AAAA;AAAA,EAGA,SAAS;AACN,WAAO;AAAA,MACJ,GAAG,MAAM,OAAO;AAAA,MAChB,SAAS,KAAK,WAAW;AAAA,IAC5B;AAAA,EACH;AACH;",
  "names": []
}
