perf: Make plugins a map instead of object
Fix plugin options
This commit is contained in:
parent
2dc1c91955
commit
59c4bbb4ab
@ -26,10 +26,11 @@ export default class BaseParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hasPlugin(name: string): boolean {
|
hasPlugin(name: string): boolean {
|
||||||
return Object.hasOwnProperty.call(this.plugins, name);
|
return this.plugins.has(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPluginOption(plugin: string, name: string) {
|
getPluginOption(plugin: string, name: string) {
|
||||||
if (this.hasPlugin(plugin)) return this.plugins[plugin][name];
|
// $FlowIssue
|
||||||
|
if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,7 @@ import type { PluginList } from "../plugin-utils";
|
|||||||
import { getOptions } from "../options";
|
import { getOptions } from "../options";
|
||||||
import StatementParser from "./statement";
|
import StatementParser from "./statement";
|
||||||
|
|
||||||
export type PluginsMap = {
|
export type PluginsMap = Map<string, { [string]: any }>;
|
||||||
[key: string]: { [option: string]: any },
|
|
||||||
};
|
|
||||||
|
|
||||||
export default class Parser extends StatementParser {
|
export default class Parser extends StatementParser {
|
||||||
// Forward-declaration so typescript plugin can override jsx plugin
|
// Forward-declaration so typescript plugin can override jsx plugin
|
||||||
@ -35,10 +33,10 @@ export default class Parser extends StatementParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function pluginsMap(plugins: PluginList): PluginsMap {
|
function pluginsMap(plugins: PluginList): PluginsMap {
|
||||||
const pluginMap: PluginsMap = (Object.create(null): Object);
|
const pluginMap: PluginsMap = new Map();
|
||||||
for (const plugin of plugins) {
|
for (const plugin of plugins) {
|
||||||
const [name, options = {}] = Array.isArray(plugin) ? plugin : [plugin, {}];
|
const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];
|
||||||
if (!pluginMap[name]) pluginMap[name] = options || {};
|
if (!pluginMap.has(name)) pluginMap.set(name, options || {});
|
||||||
}
|
}
|
||||||
return pluginMap;
|
return pluginMap;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user