UNPKG

@textlint/kernel

Version:
79 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TextlintPluginDescriptor = void 0; const fast_equals_1 = require("fast-equals"); /** * Get instance/static `availableExtensions()` from TextlintPluginProcessor */ const getAvailableExtensions = (pluginProcessor) => { if (typeof pluginProcessor.availableExtensions === "function") { return pluginProcessor.availableExtensions(); } // It is compatible for textlint@10<= // Recommended: `availableExtensions()` should be defined as instance method. // https://github.com/textlint/textlint/issues/531 const PluginProcessorConstructor = pluginProcessor.constructor; if (typeof PluginProcessorConstructor.availableExtensions === "function") { return PluginProcessorConstructor.availableExtensions(); } throw new Error(`Plugin(${pluginProcessor}) should implement availableExtensions() method`); }; /** * Textlint Plugin Descriptor */ class TextlintPluginDescriptor { constructor(plugin) { this.plugin = plugin; this.plugin = plugin; if (!this.plugin.plugin.Processor) { throw new Error(`Plugin should have Processor property. module.exports = { Processor: class Processor{ ... } } `); } this.processor = new plugin.plugin.Processor(this.normalizedOptions); } get id() { return this.plugin.pluginId; } /** * Return true if this rule is enabled. */ get enabled() { return this.rawOptions !== false; } /** * Return available extension of this plugin */ get availableExtensions() { return getAvailableExtensions(this.processor); } get normalizedOptions() { // default: { ruleName: true } const DefaultPluginOption = {}; if (typeof this.plugin.options === "boolean" || this.plugin.options === undefined) { return DefaultPluginOption; } else { return this.plugin.options; } } get rawOptions() { return this.plugin.options; } toKernel() { return this.plugin; } equals(target) { return this.plugin.plugin === target.plugin.plugin && (0, fast_equals_1.deepEqual)(this.plugin.options, target.plugin.options); } toJSON() { return { id: this.id, options: this.normalizedOptions }; } } exports.TextlintPluginDescriptor = TextlintPluginDescriptor; //# sourceMappingURL=TextlintPluginDescriptor.js.map