{"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":";;;;;;AAMA,SAAgB,iBAAiB,KAAwC;AACvE,KAAI,CAAC,IAAK,QAAO;CAEjB,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,QAAS,QAAO;CAGrB,MAAM,QAAQ,QAAQ,aAAa;CACnC,MAAM,QAAQ,YAAY,IAAI,MAAM;AACpC,KAAI,MAAO,QAAO;AAGlB,QAAO;;AAGT,MAAM,cAAc,IAAI,IAAoB;CAC1C,CAAC,eAAe,MAAM;CACtB,CAAC,OAAO,MAAM;CACd,CAAC,sBAAsB,aAAa;CACpC,CAAC,cAAc,aAAa;CAC5B,CAAC,cAAc,aAAa;CAC5B,CAAC,+BAA+B,aAAa;CAC7C,CAAC,WAAW,aAAa;CACzB,CAAC,gBAAgB,eAAe;CAChC,CAAC,gBAAgB,eAAe;CAChC,CAAC,gBAAgB,eAAe;CAChC,CAAC,gBAAgB,eAAe;CAChC,CAAC,0BAA0B,eAAe;CAC1C,CAAC,mBAAmB,eAAe;CACnC,CAAC,eAAe,MAAM;CACtB,CAAC,OAAO,MAAM;CACd,CAAC,WAAW,eAAe;CAC3B,CAAC,WAAW,eAAe;CAC3B,CAAC,gBAAgB,eAAe;CAChC,CAAC,gBAAgB,eAAe;CAChC,CAAC,YAAY,gBAAgB;CAC7B,CAAC,YAAY,gBAAgB;CAC7B,CAAC,WAAW,UAAU;CACtB,CAAC,8BAA8B,UAAU;CACzC,CAAC,aAAa,YAAY;CAC1B,CAAC,iBAAiB,YAAY;CAC9B,CAAC,WAAW,UAAU;CACtB,CAAC,OAAO,UAAU;CAClB,CAAC,iBAAiB,YAAY;CAC9B,CAAC,QAAQ,OAAO;CAChB,CAAC,SAAS,QAAQ;CAClB,CAAC,gBAAgB,eAAe;CAChC,CAAC,8BAA8B,UAAU;CACzC,CAAC,WAAW,UAAA;CACb,CAAC;;;;;;;;AASF,SAAgB,gBACd,UACA,WAAyB,MACjB;CACR,MAAM,aAAa,SAAS,KAAK,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,QAAQ;AAE3E,KAAI,WAAW,WAAW,EAAG,QAAO;AACpC,KAAI,WAAW,WAAW,EAAG,QAAO,WAAW;AAC/C,QAAO,WAAW,KAAK,IAAI,SAAS,GAAG"}