188c88e8eSopenharmony_ci// code sample of hacking old script
288c88e8eSopenharmony_ci;({
388c88e8eSopenharmony_ci  "type": "Program",
488c88e8eSopenharmony_ci  "body": [
588c88e8eSopenharmony_ci    {
688c88e8eSopenharmony_ci      "type": "ExpressionStatement",
788c88e8eSopenharmony_ci      "expression": {
888c88e8eSopenharmony_ci        "type": "AssignmentExpression",
988c88e8eSopenharmony_ci        "operator": "=",
1088c88e8eSopenharmony_ci        "left": {
1188c88e8eSopenharmony_ci          "type": "MemberExpression",
1288c88e8eSopenharmony_ci          "computed": false,
1388c88e8eSopenharmony_ci          "object": {
1488c88e8eSopenharmony_ci            "type": "Identifier",
1588c88e8eSopenharmony_ci            "name": "module"
1688c88e8eSopenharmony_ci          },
1788c88e8eSopenharmony_ci          "property": {
1888c88e8eSopenharmony_ci            "type": "Identifier",
1988c88e8eSopenharmony_ci            "name": "exports"
2088c88e8eSopenharmony_ci          }
2188c88e8eSopenharmony_ci        },
2288c88e8eSopenharmony_ci        "right": {
2388c88e8eSopenharmony_ci          "type": "ObjectExpression",
2488c88e8eSopenharmony_ci          "properties": [
2588c88e8eSopenharmony_ci            {
2688c88e8eSopenharmony_ci              "type": "Property",
2788c88e8eSopenharmony_ci              "key": {
2888c88e8eSopenharmony_ci                "type": "Identifier",
2988c88e8eSopenharmony_ci                "name": "data"
3088c88e8eSopenharmony_ci              },
3188c88e8eSopenharmony_ci              "computed": false,
3288c88e8eSopenharmony_ci              "value": {
3388c88e8eSopenharmony_ci                // "type": "FunctionExpression",
3488c88e8eSopenharmony_ci                // "id": null,
3588c88e8eSopenharmony_ci                // "params": [],
3688c88e8eSopenharmony_ci                // "defaults": [],
3788c88e8eSopenharmony_ci                // "body": {
3888c88e8eSopenharmony_ci                  // "type": "BlockStatement",
3988c88e8eSopenharmony_ci                  // "body": [
4088c88e8eSopenharmony_ci                    // {
4188c88e8eSopenharmony_ci                      // "type": "ReturnStatement",
4288c88e8eSopenharmony_ci                      // "argument": {
4388c88e8eSopenharmony_ci                        "type": "ObjectExpression",
4488c88e8eSopenharmony_ci                        "properties": []
4588c88e8eSopenharmony_ci                      // }
4688c88e8eSopenharmony_ci                    // }
4788c88e8eSopenharmony_ci                  // ]
4888c88e8eSopenharmony_ci                // },
4988c88e8eSopenharmony_ci                // "generator": false,
5088c88e8eSopenharmony_ci                // "expression": false
5188c88e8eSopenharmony_ci              },
5288c88e8eSopenharmony_ci              "kind": "init",
5388c88e8eSopenharmony_ci              "method": false,
5488c88e8eSopenharmony_ci              "shorthand": false
5588c88e8eSopenharmony_ci            }
5688c88e8eSopenharmony_ci          ]
5788c88e8eSopenharmony_ci        }
5888c88e8eSopenharmony_ci      }
5988c88e8eSopenharmony_ci    }
6088c88e8eSopenharmony_ci  ],
6188c88e8eSopenharmony_ci  "sourceType": "script"
6288c88e8eSopenharmony_ci})
6388c88e8eSopenharmony_ci
6488c88e8eSopenharmony_civar LEFT_MODULE_EXPORTS_AST = {
6588c88e8eSopenharmony_ci  "type": "MemberExpression",
6688c88e8eSopenharmony_ci  "computed": false,
6788c88e8eSopenharmony_ci  "object": {
6888c88e8eSopenharmony_ci    "type": "Identifier",
6988c88e8eSopenharmony_ci    "name": "module"
7088c88e8eSopenharmony_ci  },
7188c88e8eSopenharmony_ci  "property": {
7288c88e8eSopenharmony_ci    "type": "Identifier",
7388c88e8eSopenharmony_ci    "name": "exports"
7488c88e8eSopenharmony_ci  }
7588c88e8eSopenharmony_ci}
7688c88e8eSopenharmony_ci
7788c88e8eSopenharmony_cifunction removeAllLoc(ast) {
7888c88e8eSopenharmony_ci  ast = JSON.parse(JSON.stringify(ast))
7988c88e8eSopenharmony_ci  function remove(o) {
8088c88e8eSopenharmony_ci    if (Array.isArray(o)) {
8188c88e8eSopenharmony_ci      o.forEach(remove)
8288c88e8eSopenharmony_ci    }
8388c88e8eSopenharmony_ci    else if (typeof o === 'object') {
8488c88e8eSopenharmony_ci      for (var i in o) {
8588c88e8eSopenharmony_ci        if (i === 'loc') {
8688c88e8eSopenharmony_ci          delete o[i]
8788c88e8eSopenharmony_ci        }
8888c88e8eSopenharmony_ci        if (i === 'range') {
8988c88e8eSopenharmony_ci          delete o[i]
9088c88e8eSopenharmony_ci        }
9188c88e8eSopenharmony_ci        else {
9288c88e8eSopenharmony_ci          if (typeof o[i] === 'object') {
9388c88e8eSopenharmony_ci            remove(o[i])
9488c88e8eSopenharmony_ci          }
9588c88e8eSopenharmony_ci        }
9688c88e8eSopenharmony_ci      }
9788c88e8eSopenharmony_ci    }
9888c88e8eSopenharmony_ci  }
9988c88e8eSopenharmony_ci  remove(ast)
10088c88e8eSopenharmony_ci  return ast
10188c88e8eSopenharmony_ci}
10288c88e8eSopenharmony_ci
10388c88e8eSopenharmony_cifunction findDataValue(ast) {
10488c88e8eSopenharmony_ci  var exp, left, right, dataValue
10588c88e8eSopenharmony_ci  if (ast && ast.body && ast.body.length) {
10688c88e8eSopenharmony_ci    ast.body.forEach(function (bodyItem) {
10788c88e8eSopenharmony_ci      if (bodyItem.type === 'ExpressionStatement') {
10888c88e8eSopenharmony_ci        exp = bodyItem.expression
10988c88e8eSopenharmony_ci        if (exp.type === 'AssignmentExpression' && exp.operator === '=') {
11088c88e8eSopenharmony_ci          left = removeAllLoc(exp.left || {})
11188c88e8eSopenharmony_ci          if (JSON.stringify(left) === JSON.stringify(LEFT_MODULE_EXPORTS_AST)) {
11288c88e8eSopenharmony_ci            right = exp.right
11388c88e8eSopenharmony_ci            if (right.type === 'ObjectExpression') {
11488c88e8eSopenharmony_ci              right.properties.some(function (prop) {
11588c88e8eSopenharmony_ci                if (prop.type === 'Property' && prop.key && prop.key.name === 'data') {
11688c88e8eSopenharmony_ci                  if (prop.value && prop.value.type === 'ObjectExpression') {
11788c88e8eSopenharmony_ci                    dataValue = prop
11888c88e8eSopenharmony_ci                    return true
11988c88e8eSopenharmony_ci                  }
12088c88e8eSopenharmony_ci                }
12188c88e8eSopenharmony_ci              })
12288c88e8eSopenharmony_ci            }
12388c88e8eSopenharmony_ci          }
12488c88e8eSopenharmony_ci        }
12588c88e8eSopenharmony_ci      }
12688c88e8eSopenharmony_ci    })
12788c88e8eSopenharmony_ci  }
12888c88e8eSopenharmony_ci  return dataValue
12988c88e8eSopenharmony_ci}
13088c88e8eSopenharmony_ci
13188c88e8eSopenharmony_cifunction convertValueAst(value) {
13288c88e8eSopenharmony_ci  var data = {
13388c88e8eSopenharmony_ci    type: "FunctionExpression",
13488c88e8eSopenharmony_ci    id: null,
13588c88e8eSopenharmony_ci    params: [],
13688c88e8eSopenharmony_ci    defaults: [],
13788c88e8eSopenharmony_ci    body: {
13888c88e8eSopenharmony_ci      type: "BlockStatement",
13988c88e8eSopenharmony_ci      body: [
14088c88e8eSopenharmony_ci        {
14188c88e8eSopenharmony_ci          type: "ReturnStatement",
14288c88e8eSopenharmony_ci          argument: value
14388c88e8eSopenharmony_ci        }
14488c88e8eSopenharmony_ci      ]
14588c88e8eSopenharmony_ci    },
14688c88e8eSopenharmony_ci    generator: false,
14788c88e8eSopenharmony_ci    expression: false
14888c88e8eSopenharmony_ci  }
14988c88e8eSopenharmony_ci  return data
15088c88e8eSopenharmony_ci}
15188c88e8eSopenharmony_cifunction format(code, needCodegen) {
15288c88e8eSopenharmony_ci  return code
15388c88e8eSopenharmony_ci}
15488c88e8eSopenharmony_ci
15588c88e8eSopenharmony_cifunction formatBetter(code) {
15688c88e8eSopenharmony_ci  return code
15788c88e8eSopenharmony_ci}
15888c88e8eSopenharmony_ci
15988c88e8eSopenharmony_ciexports.fix = formatBetter
16088c88e8eSopenharmony_ciexports.formatWhenFix = format
161