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);
 | |
|     });
 | |
|   });
 | |
| } |