{"version":3,"file":"index.cjs","sources":["analyse-amd.js","convert-to-esm.js","improve-code.js","index.js"],"sourcesContent":["import { types } from 'recast'\n\nconst { namedTypes, builders } = types\nconst {\n  ArrayExpression, CallExpression, ExpressionStatement, FunctionExpression,\n  Identifier, Literal, ObjectExpression\n} = namedTypes\nconst { arrayExpression } = builders\n\nclass ConvertError extends Error {\n  constructor(message) {\n    super(message)\n    this.name = 'ConvertError'\n  }\n}\n\nfunction checkDeps(deps) {\n  for (const dep of deps.elements) {\n    if (!Literal.check(dep)) throw new ConvertError('dependency not a literal')\n    if (typeof dep.value !== 'string') throw new ConvertError('dependency not a string')\n  }\n}\n\nfunction checkParams(func) {\n  for (const param of func.params) {\n    if (!Identifier.check(param)) throw new ConvertError('argument not an identifier')\n  }\n}\n\nfunction analyseStatement(statement) {\n  if (!ExpressionStatement.check(statement)) throw new ConvertError('no expression statement')\n  const { expression } = statement\n  if (!CallExpression.check(expression)) throw new ConvertError('no call expression')\n\n  const { arguments: args } = expression\n  const { length } = args\n  if (length === 0) throw new ConvertError('no call arguments')\n\n  const { callee } = expression\n  if (!Identifier.check(callee)) throw new ConvertError('callee not an identifier')\n\n  // define('name', [deps], factory)\n  if (callee.name === 'define') {\n    let deps = args[0]\n    let factory\n    let name\n    if (ArrayExpression.check(deps)) {\n      if (length === 1) throw new ConvertError('too few arguments')\n      if (length > 2) throw new ConvertError('too many arguments')\n      checkDeps(deps)\n      factory = args[1]\n    } else if (Literal.check(deps)) {\n      if (length === 1) throw new ConvertError('too few arguments')\n      if (length > 3) throw new ConvertError('too many arguments')\n      name = deps.value\n      deps = args[1]\n      if (ArrayExpression.check(deps)) {\n        if (length === 2) throw new ConvertError('too few arguments')\n        checkDeps(deps)\n        factory = args[2]\n      } else {\n        if (length > 2) throw new ConvertError('too many arguments')\n        factory = deps\n        deps = arrayExpression([])\n      }\n    } else {\n      if (length > 1) throw new ConvertError('too many arguments')\n      factory = deps\n      deps = arrayExpression([])\n    }\n\n    if (ObjectExpression.check(factory)) return { statement, deps, object: factory, name }\n\n    if (!FunctionExpression.check(factory)) throw new ConvertError('factory neither function nor object')\n\n    checkParams(factory)\n    return { statement, deps, factory, name }\n  }\n\n  // require([deps], success, error)\n  if (callee.name === 'require') {\n    const [deps, callback, failure] = args\n    if (!ArrayExpression.check(deps)) throw new ConvertError('missing dependencies')\n    if (length === 1) throw new ConvertError('missing callback')\n    if (!FunctionExpression.check(callback)) throw new ConvertError('callback not a function')\n    if (length > 3) throw new ConvertError('too many arguments')\n    let warnings\n    if (length === 3) {\n      if (!FunctionExpression.check(failure)) throw new ConvertError('error handler not a function')\n      warnings = ['error handler ignored']\n    }\n\n    checkDeps(deps)\n    checkParams(callback)\n\n    return { statement, deps, callback, warnings }\n  }\n}\n\n// define with factory: { statement, deps, factory }\n// define with object: { statement, deps, object }\n// require: { statement, deps, callback, warnings }\nexport default function analyseAmd(program) {\n  const { body } = program\n  const { length } = body\n  if (length === 0) throw new ConvertError('no statement')\n  if (length !== 1) throw new ConvertError('multiple statements')\n\n  return analyseStatement(body[0])\n}\n","import { types } from 'recast'\n\nconst { namedTypes, builders } = types\nconst { ReturnStatement, ExpressionStatement, Literal } = namedTypes\nconst {\n  importDeclaration, importDefaultSpecifier, identifier, literal,\n  exportDefaultDeclaration\n} = builders\n\nfunction cloneString(source) {\n  const { value } = source\n  const clone = literal(value)\n  clone.extra = { raw: source.raw, rawValue: value }\n  return clone\n}\n\nexport default function convertToEsm(program, { statement, deps, factory, object, callback }) {\n  const { params = [] } = factory || {}\n  const imps = deps.elements.map((dep, index) => {\n    const param = params[index]\n    const spec = param ? [importDefaultSpecifier(identifier(param.name))] : []\n    const imp = importDeclaration(spec, cloneString(dep))\n    imp.comments = dep.comments\n    return imp\n  })\n\n  let stats = []\n  let exps = []\n  if (factory) {\n    stats = factory.body.body.filter(stat => {\n      if (ExpressionStatement.check(stat) && Literal.check(stat.expression) && stat.expression.value === 'use strict') {\n        return false\n      }\n      if (!ReturnStatement.check(stat)) return true\n      const exp = exportDefaultDeclaration(stat.argument)\n      exp.comments = stat.comments\n      exps = [exp]\n      return false;\n    })\n  } else if (object) {\n    const exp = exportDefaultDeclaration(object)\n    exp.comments = object.comments\n    exps = [exp]\n  } else {\n    stats = callback.body.body\n  }\n\n  const { comments } = statement\n  if (comments) program.comments = [...(program.comments || []), ...comments]\n  program.body = [...imps, ...stats, ...exps]\n}\n","function ensureLineBreak (output, input) {\n  if (input.endsWith('\\n') && !output.endsWith('\\n')) {\n    output += '\\n'\n  }\n  return output\n}\n\nexport default function improveCode(output, input, warnings = []) {\n  const lines = output.split(/\\r?\\n/)\n  let imported\n  let separated\n  let emptied\n  for (let i = 0, l = lines.length; i < l; ++i) {\n    const line = lines[i]\n    if (!emptied && line === ';') {\n      emptied = true\n      lines.splice(i--, 1)\n      --l;\n      warnings.push('\"use strict\" removed')\n    } else if (!separated) {\n      if (line.startsWith('import')) {\n        imported = true\n      } else if (imported) {\n        separated = true\n        if (line.length) {\n          lines.splice(i++, 0, '')\n          ++l;\n          warnings.push('imports separated')\n        }\n      }\n    }\n  }\n  const code = ensureLineBreak(lines.join('\\n'), input)\n  return { code, warnings }\n}\n","import { parse as parseScript } from 'meriyah'\nimport { parse, print } from 'recast'\nimport analyseAmd from './analyse-amd.js'\nimport convertToEsm from './convert-to-esm.js'\nimport improveCode from './improve-code.js'\n\nconst convertComment = comment => {\n  let { type } = comment\n  type = type[0] === 'S' ? 'Line' : 'Block'\n  return { ...comment, type }\n}\n\nconst parser = {\n  parse(source) {\n    const comments = []\n    const tokens = []\n    const ast = parseScript(source, {\n      module: true, next: true, raw: true, loc: true,\n      onComment: comments, onToken: tokens\n    })\n    ast.comments = comments.map(convertComment)\n    ast.tokens = tokens\n    return ast\n  }\n}\n\nexport function convert(source) {\n  const ast = parse(source, { parser })\n  const { program } = ast\n\n  const analysis = analyseAmd(program)\n  const { warnings = [] } = analysis\n\n  convertToEsm(program, analysis)\n  let { code } = print(ast);\n  ({ code } = improveCode(code, source, warnings))\n  return { code, warnings, name: analysis.name }\n}\n"],"names":["namedTypes","builders","types","ExpressionStatement","Literal","parseScript","parse","print"],"mappings":"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"}