mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-02 17:09:30 +08:00
58 lines
No EOL
3.2 KiB
Text
58 lines
No EOL
3.2 KiB
Text
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.analyze = void 0;
|
|
const visitor_keys_1 = require("@typescript-eslint/visitor-keys");
|
|
const referencer_1 = require("./referencer");
|
|
const ScopeManager_1 = require("./ScopeManager");
|
|
const lib_1 = require("./lib");
|
|
const DEFAULT_OPTIONS = {
|
|
childVisitorKeys: visitor_keys_1.visitorKeys,
|
|
ecmaVersion: 2018,
|
|
globalReturn: false,
|
|
impliedStrict: false,
|
|
jsxPragma: 'React',
|
|
jsxFragmentName: null,
|
|
lib: ['es2018'],
|
|
sourceType: 'script',
|
|
emitDecoratorMetadata: false,
|
|
};
|
|
/**
|
|
* Convert ecmaVersion to lib.
|
|
* `'latest'` is converted to 1e8 at parser.
|
|
*/
|
|
function mapEcmaVersion(version) {
|
|
if (version == null || version === 3 || version === 5) {
|
|
return 'es5';
|
|
}
|
|
const year = version > 2000 ? version : 2015 + (version - 6);
|
|
const lib = `es${year}`;
|
|
return lib in lib_1.lib ? lib : year > 2020 ? 'esnext' : 'es5';
|
|
}
|
|
/**
|
|
* Takes an AST and returns the analyzed scopes.
|
|
*/
|
|
function analyze(tree, providedOptions) {
|
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
const ecmaVersion = (_a = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.ecmaVersion) !== null && _a !== void 0 ? _a : DEFAULT_OPTIONS.ecmaVersion;
|
|
const options = {
|
|
childVisitorKeys: (_b = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.childVisitorKeys) !== null && _b !== void 0 ? _b : DEFAULT_OPTIONS.childVisitorKeys,
|
|
ecmaVersion,
|
|
globalReturn: (_c = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.globalReturn) !== null && _c !== void 0 ? _c : DEFAULT_OPTIONS.globalReturn,
|
|
impliedStrict: (_d = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.impliedStrict) !== null && _d !== void 0 ? _d : DEFAULT_OPTIONS.impliedStrict,
|
|
jsxPragma: (providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.jsxPragma) === undefined
|
|
? DEFAULT_OPTIONS.jsxPragma
|
|
: providedOptions.jsxPragma,
|
|
jsxFragmentName: (_e = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.jsxFragmentName) !== null && _e !== void 0 ? _e : DEFAULT_OPTIONS.jsxFragmentName,
|
|
sourceType: (_f = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.sourceType) !== null && _f !== void 0 ? _f : DEFAULT_OPTIONS.sourceType,
|
|
lib: (_g = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.lib) !== null && _g !== void 0 ? _g : [mapEcmaVersion(ecmaVersion)],
|
|
emitDecoratorMetadata: (_h = providedOptions === null || providedOptions === void 0 ? void 0 : providedOptions.emitDecoratorMetadata) !== null && _h !== void 0 ? _h : DEFAULT_OPTIONS.emitDecoratorMetadata,
|
|
};
|
|
// ensure the option is lower cased
|
|
options.lib = options.lib.map(l => l.toLowerCase());
|
|
const scopeManager = new ScopeManager_1.ScopeManager(options);
|
|
const referencer = new referencer_1.Referencer(options, scopeManager);
|
|
referencer.visit(tree);
|
|
return scopeManager;
|
|
}
|
|
exports.analyze = analyze;
|
|
//# sourceMappingURL=analyze.js.map |