{"version":3,"sources":["../src/compass.ts"],"sourcesContent":["import yaml from 'js-yaml';\nimport fs from 'fs';\n\n//Object generated from the compass.yml file\n// reference in https://developer.atlassian.com/cloud/compass/config-as-code/structure-and-contents-of-a-compass-yml-file/\n\nenum TypeId {\n  APPLICATION = 'APPLICATION',\n  SERVICE = 'SERVICE',\n  CAPABILITY = 'CAPABILITY',\n  CLOUD_RESOURCE = 'CLOUD_RESOURCE',\n  DATA_PIPELINE = 'DATA_PIPELINE',\n  LIBRARY = 'LIBRARY',\n  MACHINE_LEARNING_MODEL = 'MACHINE_LEARNING_MODEL',\n  OTHER = 'OTHER',\n  UI_ELEMENT = 'UI_ELEMENT',\n  WEBSITE = 'WEBSITE',\n}\n\nenum Lifecycle {\n  PRERELEASE = 'Pre-release',\n  ACTIVE = 'Active',\n  DEPRECATED = 'Deprecated',\n}\n\nenum UrlType {\n  CHAT_CHANNEL = 'CHAT_CHANNEL',\n  DOCUMENT = 'DOCUMENT',\n  DASHBOARD = 'DASHBOARD',\n  ON_CALL = 'ON_CALL',\n  PROJECT = 'PROJECT',\n  REPOSITORY = 'REPOSITORY',\n  OTHER_LINK = 'OTHER_LINK',\n}\n\ntype Field = {\n  tier?: 1 | 2 | 3 | 4;\n  lifecycle: Lifecycle;\n};\n\ntype Link = {\n  type: UrlType;\n  url: string;\n  name?: string;\n};\n\nenum CustomFieldType {\n  TEXT = 'text',\n  BOOLEAN = 'boolean',\n  NUMBER = 'number',\n  USER = 'user',\n  SINGLE_SELECT = 'single_select',\n  MULTIPLE_SELECT = 'multi_select',\n}\n\ntype CustomField = {\n  type: CustomFieldType;\n  name: string;\n  value: string;\n};\n\nexport type ScorecardScore = {\n  name: string;\n  score: number;\n  maxScore: number;\n};\n\nexport type CompassConfig = {\n  configVersion?: number;\n  name: string;\n  id?: string;\n  description?: string;\n  typeId?: TypeId;\n  ownerId?: string;\n  fields?: Field;\n  links?: Link[];\n  relationships?: {\n    DEPENDS_ON?: string[];\n  };\n  customFields?: CustomField[];\n  labels?: string[];\n  scorecards?: ScorecardScore[];\n};\n\nexport function loadConfig(path: string): CompassConfig {\n  const raw = yaml.load(fs.readFileSync(path, 'utf8'));\n  if (!raw || typeof raw !== 'object' || !('name' in raw) || typeof (raw as Record<string, unknown>).name !== 'string') {\n    throw new Error(`Invalid Compass config in ${path}: missing required \"name\" field`);\n  }\n  return raw as CompassConfig;\n}\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AAmFR,SAAS,WAAW,MAA6B;AACtD,QAAM,MAAM,KAAK,KAAK,GAAG,aAAa,MAAM,MAAM,CAAC;AACnD,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,EAAE,UAAU,QAAQ,OAAQ,IAAgC,SAAS,UAAU;AACpH,UAAM,IAAI,MAAM,6BAA6B,IAAI,iCAAiC;AAAA,EACpF;AACA,SAAO;AACT;","names":[]}