blob: 09302fd8168058aaae892eb9b0a57cbfce5d2c80 [file] [log] [blame]
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getParserServices = void 0;
const ERROR_MESSAGE = 'You have used a rule which requires parserServices to be generated. You must therefore provide a value for the "parserOptions.project" property for @typescript-eslint/parser.';
/**
* Try to retrieve typescript parser service from context
*/
function getParserServices(context, allowWithoutFullTypeInformation = false) {
var _a;
// backwards compatibility check
// old versions of the parser would not return any parserServices unless parserOptions.project was set
if (!context.parserServices ||
!context.parserServices.program ||
!context.parserServices.esTreeNodeToTSNodeMap ||
!context.parserServices.tsNodeToESTreeNodeMap) {
throw new Error(ERROR_MESSAGE);
}
const hasFullTypeInformation = (_a = context.parserServices.hasFullTypeInformation) !== null && _a !== void 0 ? _a :
/* backwards compatible */ true;
// if a rule requires full type information, then hard fail if it doesn't exist
// this forces the user to supply parserOptions.project
if (!hasFullTypeInformation && !allowWithoutFullTypeInformation) {
throw new Error(ERROR_MESSAGE);
}
return context.parserServices;
}
exports.getParserServices = getParserServices;
//# sourceMappingURL=getParserServices.js.map