/*
 * Copyright (C) 2024 Puter Technologies Inc.
 * 
 * This file is part of Puter.
 * 
 * Puter is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */


const babelParser = require('@babel/parser');
const generate = (require('@babel/generator')).default;
const fs = require('fs');

const recast = require('recast');

const example = fs.readFileSync('./src/backend/src/filesystem/ll_operations/ll_read.js');

{
    const ast = recast.parse(example, {
        parser: {
            parse (source) {
                return babelParser.parse(source, {
                    ranges: true,
                    tokens: true,
                });
            },
        },
    });
    const { code } = recast.print(ast);
}

{
    const ast = babelParser.parse('' + example, {
        tokens: true,
    });

    console.log(JSON.stringify(ast, undefined, '  '));
}

/*
const { code } = generate(ast, {
    retainLines: true,
});
*/

// console.log(code);