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