{"version":3,"sources":["../../src/parser/parse-defs.ts"],"sourcesContent":["import parse          from \".\"\r\nimport ParserOptions  from \"./parser-options\"\r\nimport Definitions    from \"../core/definitions\"\r\n\r\n/**\r\n * Parses a string containing schema, variable, or metadata definitions.\r\n * Returns a Definitions object containing the parsed definitions.\r\n *\r\n * Useful for pre-loading schemas that will be used across multiple documents.\r\n *\r\n * @param source - The definition string (e.g., `~ $Person: { name: string }`).\r\n * @param externalDefs - Optional base definitions to extend/inherit from.\r\n * @param options - Parser options.\r\n * @returns The parsed Definitions object, or null if input is empty.\r\n *\r\n * @example\r\n * ```typescript\r\n * const defs = parseDefinitions(`\r\n *   ~ $Person: { name: string, age: int }\r\n *   ~ @baseUrl: https://api.example.com\r\n * `);\r\n * const schema = defs.get('$Person');\r\n * ```\r\n */\r\nexport default function parseDefinitions(source: string): Definitions | null;\r\nexport default function parseDefinitions(\r\n  source: string,\r\n  externalDefs: Definitions | null,\r\n  options?: ParserOptions\r\n): Definitions | null;\r\nexport default function parseDefinitions(\r\n  source: string,\r\n  options?: ParserOptions\r\n): Definitions | null;\r\nexport default function parseDefinitions(\r\n  source: string,\r\n  externalDefsOrOptions?: Definitions | ParserOptions | null,\r\n  options?: ParserOptions\r\n): Definitions | null {\r\n\r\n  let externalDefs: Definitions | null = null\r\n  let resolvedOptions: ParserOptions | undefined = undefined\r\n\r\n  if (externalDefsOrOptions instanceof Definitions || externalDefsOrOptions === null) {\r\n    externalDefs = externalDefsOrOptions ?? null\r\n    resolvedOptions = options\r\n  } else {\r\n    resolvedOptions = externalDefsOrOptions\r\n  }\r\n\r\n  source = source.trim()\r\n  if (!source) { return null }\r\n\r\n  if (!source.endsWith(\"---\")) {\r\n    source += \"\\n---\"\r\n  }\r\n\r\n  // If the definition does not start with ~, then it must be\r\n  // a default schema. So, add \"~ $schema: \" in the beginning to make it a\r\n  // definition.\r\n  // if (!source.startsWith(\"~\")) {\r\n  //   source = \"~ $schema: \" + source\r\n  // }\r\n\r\n  const doc = parse(source, externalDefs, undefined, resolvedOptions)\r\n  return doc.header.definitions\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAA2B;AAE3B,yBAA2B;AAgCZ,SAAR,iBACL,QACA,uBACA,SACoB;AAEpB,MAAI,eAAmC;AACvC,MAAI,kBAA6C;AAEjD,MAAI,iCAAiC,mBAAAA,WAAe,0BAA0B,MAAM;AAClF,mBAAe,yBAAyB;AACxC,sBAAkB;AAAA,EACpB,OAAO;AACL,sBAAkB;AAAA,EACpB;AAEA,WAAS,OAAO,KAAK;AACrB,MAAI,CAAC,QAAQ;AAAE,WAAO;AAAA,EAAK;AAE3B,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,cAAU;AAAA,EACZ;AASA,QAAM,UAAM,SAAAC,SAAM,QAAQ,cAAc,QAAW,eAAe;AAClE,SAAO,IAAI,OAAO;AACpB;","names":["Definitions","parse"]}