{"version":3,"file":"valid-extra-dialects.d.ts","sourceRoot":"","sources":["../../src/valid-extra-dialects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;;AAuCvC,wBA0CC","sourcesContent":["// validate esmDialects and commonjsDialects\nimport fail from './fail.js'\nimport { TshyConfig } from './types.js'\n\nconst arrayOverlap = (\n  a: string[] | undefined,\n  b: string[] | undefined,\n): string | false => {\n  if (!a || !b) return false\n  for (const av of a) {\n    if (b.includes(av)) return av\n  }\n  return false\n}\n\nconst validExtraDialectSet = (\n  e: string[],\n  which: 'commonjs' | 'esm' | 'source',\n) => {\n  for (const d of e) {\n    if (typeof d !== 'string') {\n      fail(`${which} must be an array of strings, got: ${d}`)\n      return process.exit(1)\n    }\n    if (\n      d === 'commonjs' ||\n      d === 'cjs' ||\n      d === 'esm' ||\n      d === 'require' ||\n      d === 'import' ||\n      d === 'node' ||\n      d === 'source' ||\n      d === 'default'\n    ) {\n      fail(`tshy.${which}Dialects must not contain ${JSON.stringify(d)}`)\n      return process.exit(1)\n    }\n  }\n  return true\n}\n\nexport default ({\n  commonjsDialects,\n  esmDialects,\n  sourceDialects,\n}: TshyConfig) => {\n  if (\n    commonjsDialects === undefined &&\n    esmDialects === undefined &&\n    sourceDialects === undefined\n  ) {\n    return true\n  }\n  if (\n    commonjsDialects &&\n    !validExtraDialectSet(commonjsDialects, 'commonjs')\n  ) {\n    return false\n  }\n  if (esmDialects && !validExtraDialectSet(esmDialects, 'esm')) {\n    return false\n  }\n  if (sourceDialects && !validExtraDialectSet(sourceDialects, 'source')) {\n    return false\n  }\n  for (const [aname, bname, a, b] of [\n    ['commonjsDialects', 'esmDialects', commonjsDialects, esmDialects],\n    [\n      'commonjsDialects',\n      'sourceDialects',\n      commonjsDialects,\n      sourceDialects,\n    ],\n    ['esmDialects', 'sourceDialects', esmDialects, sourceDialects],\n  ] as const) {\n    const overlap = arrayOverlap(a, b)\n    if (!overlap) continue\n    fail(\n      `${aname} and ${bname} must be unique, found ${overlap} in both lists`,\n    )\n    return process.exit(1)\n  }\n  return true\n}\n"]}