65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.parseSync = parseSync;
|
||
|
exports.parseAsync = parseAsync;
|
||
|
exports.parse = void 0;
|
||
|
|
||
|
var _config = _interopRequireDefault(require("./config"));
|
||
|
|
||
|
var _normalizeFile = _interopRequireDefault(require("./transformation/normalize-file"));
|
||
|
|
||
|
var _normalizeOpts = _interopRequireDefault(require("./transformation/normalize-opts"));
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
const parse = function parse(code, opts, callback) {
|
||
|
if (typeof opts === "function") {
|
||
|
callback = opts;
|
||
|
opts = undefined;
|
||
|
}
|
||
|
|
||
|
if (callback === undefined) return parseSync(code, opts);
|
||
|
const config = (0, _config.default)(opts);
|
||
|
|
||
|
if (config === null) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
const cb = callback;
|
||
|
process.nextTick(() => {
|
||
|
let ast = null;
|
||
|
|
||
|
try {
|
||
|
const cfg = (0, _config.default)(opts);
|
||
|
if (cfg === null) return cb(null, null);
|
||
|
ast = (0, _normalizeFile.default)(cfg.passes, (0, _normalizeOpts.default)(cfg), code).ast;
|
||
|
} catch (err) {
|
||
|
return cb(err);
|
||
|
}
|
||
|
|
||
|
cb(null, ast);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
exports.parse = parse;
|
||
|
|
||
|
function parseSync(code, opts) {
|
||
|
const config = (0, _config.default)(opts);
|
||
|
|
||
|
if (config === null) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
return (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code).ast;
|
||
|
}
|
||
|
|
||
|
function parseAsync(code, opts) {
|
||
|
return new Promise((res, rej) => {
|
||
|
parse(code, opts, (err, result) => {
|
||
|
if (err == null) res(result);else rej(err);
|
||
|
});
|
||
|
});
|
||
|
}
|