diff options
author | Florian Dold <florian.dold@gmail.com> | 2019-03-27 21:01:33 +0100 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2019-03-27 21:01:33 +0100 |
commit | cc97a4dd2a967e1c2273bd5f4c5f49a5bf2e2585 (patch) | |
tree | 92c5d88706a6ffc654d1b133618d357890e7096b /node_modules/concordance/lib/pluginRegistry.js | |
parent | 3771b4d6b67b34c130f3a9a1a15f42deefdb2eda (diff) |
remove node_modules
Diffstat (limited to 'node_modules/concordance/lib/pluginRegistry.js')
-rw-r--r-- | node_modules/concordance/lib/pluginRegistry.js | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/node_modules/concordance/lib/pluginRegistry.js b/node_modules/concordance/lib/pluginRegistry.js deleted file mode 100644 index b4fb76b37..000000000 --- a/node_modules/concordance/lib/pluginRegistry.js +++ /dev/null @@ -1,222 +0,0 @@ -'use strict' - -const semver = require('semver') - -const pkg = require('../package.json') -const constants = require('./constants') -const object = require('./complexValues/object') -const lineBuilder = require('./lineBuilder') -const formatUtils = require('./formatUtils') -const itemDescriptor = require('./metaDescriptors/item') -const propertyDescriptor = require('./metaDescriptors/property') -const stringDescriptor = require('./primitiveValues/string') -const recursorUtils = require('./recursorUtils') -const themeUtils = require('./themeUtils') - -const API_VERSION = 1 -const CONCORDANCE_VERSION = pkg.version - -const descriptorRegistry = new Map() -const registry = new Map() - -class PluginError extends Error { - constructor (message, plugin) { - super(message) - this.name = 'PluginError' - this.plugin = plugin - } -} - -class PluginTypeError extends TypeError { - constructor (message, plugin) { - super(message) - this.name = 'PluginTypeError' - this.plugin = plugin - } -} - -class UnsupportedApiError extends PluginError { - constructor (plugin) { - super('Plugin requires an unsupported API version', plugin) - this.name = 'UnsupportedApiError' - } -} - -class UnsupportedError extends PluginError { - constructor (plugin) { - super('Plugin does not support this version of Concordance', plugin) - this.name = 'UnsupportedError' - } -} - -class DuplicateDescriptorTagError extends PluginError { - constructor (tag, plugin) { - super(`Could not add descriptor: tag ${String(tag)} has already been registered`, plugin) - this.name = 'DuplicateDescriptorTagError' - this.tag = tag - } -} - -class DuplicateDescriptorIdError extends PluginError { - constructor (id, plugin) { - const printed = typeof id === 'number' - ? `0x${id.toString(16).toUpperCase()}` - : String(id) - super(`Could not add descriptor: id ${printed} has already been registered`, plugin) - this.name = 'DuplicateDescriptorIdError' - this.id = id - } -} - -function verify (plugin) { - if (typeof plugin.name !== 'string' || !plugin.name) { - throw new PluginTypeError('Plugin must have a `name`', plugin) - } - - if (plugin.apiVersion !== API_VERSION) { - throw new UnsupportedApiError(plugin) - } - - if ('minimalConcordanceVersion' in plugin) { - if (!semver.valid(plugin.minimalConcordanceVersion)) { - throw new PluginTypeError('If specified, `minimalConcordanceVersion` must be a valid SemVer version', plugin) - } - - const range = `>=${plugin.minimalConcordanceVersion}` - if (!semver.satisfies(CONCORDANCE_VERSION, range)) { - throw new UnsupportedError(plugin) - } - } -} - -// Selectively expose descriptor tags. -const publicDescriptorTags = Object.freeze({ - complexItem: itemDescriptor.complexTag, - primitiveItem: itemDescriptor.primitiveTag, - primitiveProperty: propertyDescriptor.primitiveTag, - string: stringDescriptor.tag -}) - -// Don't expose `setDefaultGutter()`. -const publicLineBuilder = Object.freeze({ - buffer: lineBuilder.buffer, - first: lineBuilder.first, - last: lineBuilder.last, - line: lineBuilder.line, - single: lineBuilder.single, - actual: Object.freeze({ - buffer: lineBuilder.actual.buffer, - first: lineBuilder.actual.first, - last: lineBuilder.actual.last, - line: lineBuilder.actual.line, - single: lineBuilder.actual.single - }), - expected: Object.freeze({ - buffer: lineBuilder.expected.buffer, - first: lineBuilder.expected.first, - last: lineBuilder.expected.last, - line: lineBuilder.expected.line, - single: lineBuilder.expected.single - }) -}) - -function modifyTheme (descriptor, modifier) { - themeUtils.addModifier(descriptor, modifier) - return descriptor -} - -function add (plugin) { - verify(plugin) - - const name = plugin.name - if (registry.has(name)) return registry.get(name) - - const id2deserialize = new Map() - const tag2id = new Map() - const addDescriptor = (id, tag, deserialize) => { - if (id2deserialize.has(id)) throw new DuplicateDescriptorIdError(id, plugin) - if (descriptorRegistry.has(tag) || tag2id.has(tag)) throw new DuplicateDescriptorTagError(tag, plugin) - - id2deserialize.set(id, deserialize) - tag2id.set(tag, id) - } - - const tryDescribeValue = plugin.register({ - // Concordance makes assumptions about when AMBIGUOUS occurs. Do not expose - // it to plugins. - UNEQUAL: constants.UNEQUAL, - SHALLOW_EQUAL: constants.SHALLOW_EQUAL, - DEEP_EQUAL: constants.DEEP_EQUAL, - - ObjectValue: object.ObjectValue, - DescribedMixin: object.DescribedMixin, - DeserializedMixin: object.DeserializedMixin, - - addDescriptor, - applyThemeModifiers: themeUtils.applyModifiers, - descriptorTags: publicDescriptorTags, - lineBuilder: publicLineBuilder, - mapRecursor: recursorUtils.map, - modifyTheme, - wrapFromTheme: formatUtils.wrap - }) - - const registered = { - id2deserialize, - serializerVersion: plugin.serializerVersion, - name, - tag2id, - theme: plugin.theme || {}, - tryDescribeValue - } - - registry.set(name, registered) - for (const tag of tag2id.keys()) { - descriptorRegistry.set(tag, registered) - } - - return registered -} -exports.add = add - -function getDeserializers (plugins) { - return plugins.map(plugin => { - const registered = add(plugin) - return { - id2deserialize: registered.id2deserialize, - name: registered.name, - serializerVersion: registered.serializerVersion - } - }) -} -exports.getDeserializers = getDeserializers - -function getThemes (plugins) { - return plugins.map(plugin => { - const registered = add(plugin) - return { - name: registered.name, - theme: registered.theme - } - }) -} -exports.getThemes = getThemes - -function getTryDescribeValues (plugins) { - return plugins.map(plugin => add(plugin).tryDescribeValue) -} -exports.getTryDescribeValues = getTryDescribeValues - -function resolveDescriptorRef (tag) { - if (!descriptorRegistry.has(tag)) return null - - const registered = descriptorRegistry.get(tag) - return { - id: registered.tag2id.get(tag), - name: registered.name, - serialization: { - serializerVersion: registered.serializerVersion - } - } -} -exports.resolveDescriptorRef = resolveDescriptorRef |