{"version":3,"file":"formatList.js","sourceRoot":"","sources":["../../src/jsutils/formatList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,wBAAuB;AAO3C,MAAM,UAAU,MAAM,CAAC,KAA4B;IACjD,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAOD,MAAM,UAAU,OAAO,CAAC,KAA4B;IAClD,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAE,KAA4B;UACzD,KAAK,CAAC,MAAM,KAAK,CAAC;QAA5B,SAAS;IAET,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC;AACrE,CAAC","sourcesContent":["import { invariant } from './invariant.ts';\n\n/**\n * Given [A, B, C] return 'A, B, or C'.\n *\n * @internal\n */\nexport function orList(items: ReadonlyArray<string>): string {\n  return formatList('or', items);\n}\n\n/**\n * Given [A, B, C] return 'A, B, and C'.\n *\n * @internal\n */\nexport function andList(items: ReadonlyArray<string>): string {\n  return formatList('and', items);\n}\n\nfunction formatList(conjunction: string, items: ReadonlyArray<string>): string {\n  invariant(items.length !== 0);\n\n  switch (items.length) {\n    case 1:\n      return items[0];\n    case 2:\n      return items[0] + ' ' + conjunction + ' ' + items[1];\n  }\n\n  const allButLast = items.slice(0, -1);\n  const lastItem = items.at(-1);\n  return allButLast.join(', ') + ', ' + conjunction + ' ' + lastItem;\n}\n"]}