{"version":3,"file":"license.mjs","names":[],"sources":["../../src/core/license.ts"],"sourcesContent":["/**\n * Normalize common license names to SPDX expressions.\n *\n * @param raw - License name or SPDX expression.\n * @returns {string} The normalized SPDX expression, or an empty string.\n */\nexport function normalizeLicense(raw: string | null | undefined): string {\n  if (!raw) return \"\";\n\n  const trimmed = raw.trim();\n  if (!trimmed) return \"\";\n\n  // Common mappings\n  const lower = trimmed.toLowerCase();\n  const known = LICENSE_MAP.get(lower);\n  if (known) return known;\n\n  // Already looks like SPDX — return as-is\n  return trimmed;\n}\n\nconst LICENSE_MAP = new Map<string, string>([\n  [\"mit license\", \"MIT\"],\n  [\"mit\", \"MIT\"],\n  [\"apache license 2.0\", \"Apache-2.0\"],\n  [\"apache 2.0\", \"Apache-2.0\"],\n  [\"apache-2.0\", \"Apache-2.0\"],\n  [\"apache license, version 2.0\", \"Apache-2.0\"],\n  [\"apache2\", \"Apache-2.0\"],\n  [\"bsd-2-clause\", \"BSD-2-Clause\"],\n  [\"bsd-3-clause\", \"BSD-3-Clause\"],\n  [\"bsd 2-clause\", \"BSD-2-Clause\"],\n  [\"bsd 3-clause\", \"BSD-3-Clause\"],\n  [\"simplified bsd license\", \"BSD-2-Clause\"],\n  [\"new bsd license\", \"BSD-3-Clause\"],\n  [\"isc license\", \"ISC\"],\n  [\"isc\", \"ISC\"],\n  [\"gpl-2.0\", \"GPL-2.0-only\"],\n  [\"gpl-3.0\", \"GPL-3.0-only\"],\n  [\"gpl-2.0-only\", \"GPL-2.0-only\"],\n  [\"gpl-3.0-only\", \"GPL-3.0-only\"],\n  [\"lgpl-2.1\", \"LGPL-2.1-only\"],\n  [\"lgpl-3.0\", \"LGPL-3.0-only\"],\n  [\"mpl-2.0\", \"MPL-2.0\"],\n  [\"mozilla public license 2.0\", \"MPL-2.0\"],\n  [\"unlicense\", \"Unlicense\"],\n  [\"the unlicense\", \"Unlicense\"],\n  [\"cc0-1.0\", \"CC0-1.0\"],\n  [\"cc0\", \"CC0-1.0\"],\n  [\"public domain\", \"Unlicense\"],\n  [\"zlib\", \"Zlib\"],\n  [\"wtfpl\", \"WTFPL\"],\n  [\"artistic-2.0\", \"Artistic-2.0\"],\n  [\"boost software license 1.0\", \"BSL-1.0\"],\n  [\"bsl-1.0\", \"BSL-1.0\"],\n]);\n\n/**\n * Combine license strings into one SPDX expression.\n *\n * @param licenses - License names or expressions to normalize.\n * @param operator - SPDX operator joining multiple licenses.\n * @returns {string} The combined SPDX expression, or an empty string.\n */\nexport function combineLicenses(\n  licenses: readonly (string | null | undefined)[],\n  operator: \"OR\" | \"AND\" = \"OR\",\n): string {\n  const normalized = licenses.map((l) => normalizeLicense(l)).filter(Boolean);\n\n  if (normalized.length === 0) return \"\";\n  if (normalized.length === 1) return normalized[0]!;\n  return normalized.join(` ${operator} `);\n}\n"],"mappings":";;;;;CAMA,MAAA,QAAgB,YAAiB,IAAwC,KAAA;CACvE,IAAI,OAAM,OAAO;CAEjB,OAAM;AACN;AAGA,MAAA,8BAAkC,IAAA,IAAA;CAClC,CAAA,eAAc,KAAA;CACd,CAAA,OAAI,KAAO;CAGX,CAAA,sBAAO,YAAA;CACT,CAAA,cAAA,YAAA;CAEA,CAAA,cAAM,YAAA;CACJ,CAAC,+BAAoB,YAAA;CACrB,CAAC,WAAO,YAAK;CACb,CAAC,gBAAA,cAAsB;CACvB,CAAC,gBAAc,cAAY;CAC3B,CAAC,gBAAc,cAAY;CAC3B,CAAC,gBAAA,cAAA;CACD,CAAC,0BAAuB,cAAA;CACxB,CAAC,mBAAgB,cAAc;CAC/B,CAAC,eAAA,KAAgB;CACjB,CAAC,OAAA,KAAA;CACD,CAAC,WAAA,cAAgB;CACjB,CAAC,WAAA,cAAA;CACD,CAAC,gBAAA,cAAmB;CACpB,CAAC,gBAAe,cAAK;CACrB,CAAC,YAAY,eAAA;CACb,CAAC,YAAW,eAAc;CAC1B,CAAC,WAAW,SAAA;CACZ,CAAC,8BAA8B,SAAA;CAC/B,CAAC,aAAA,WAAgB;CACjB,CAAC,iBAAY,WAAe;CAC5B,CAAC,WAAA,SAAY;CACb,CAAC,OAAA,SAAW;CACZ,CAAC,iBAAA,WAAA;CACD,CAAC,QAAA,MAAa;CACd,CAAC,SAAA,OAAA;CACD,CAAC,gBAAW,cAAS;CACrB,CAAC,8BAAgB,SAAA;CACjB,CAAC,WAAA,SAAiB;AAClB,CAAA;AAEA,SAAC,gBAAgB,UAAc,WAAA,MAAA;CAC/B,MAAC,aAAA,SAAA,KAA8B,MAAA,iBAAS,CAAA,CAAA,CAAA,CAAA,OAAA,OAAA;CACxC,IAAC,WAAW,WAAS,GAAA,OAAA;CACtB,IAAA,WAAA,WAAA,GAAA,OAAA,WAAA"}