Private
Readonly
convertersProtected
Readonly
loggerChecks if the input can be handled by this class. If it cannot handle the input, rejects with an error explaining why.
Input that could potentially be handled.
A promise resolving if the input can be handled, rejecting with an Error if not.
Private
findFinds the path from the given list that can convert to the given preferences. If there are multiple matches the one with the highest result weight gets chosen. Will return undefined if there are no matches.
Private
findReturns a ConverterPreference if the given converter supports the given type. All types that have already been used will be removed from the output types.
Private
findFinds a conversion path that can handle the given input.
Private
generateTries to generate the optimal ConversionPath
that supports the given parameters,
which will then be used to instantiate a specific MatchedPath
for those parameters.
Errors if such a path does not exist.
Handles the given input. This may only be called if canHandle did not reject. When unconditionally calling both in sequence, consider handleSafe instead.
Input that needs to be handled.
A promise resolving when handling is finished.
Helper function that first runs canHandle followed by handle. Throws the error of canHandle if the data cannot be handled, or returns the result of handle otherwise.
Input data that will be handled if it can be handled.
A promise resolving if the input can be handled, rejecting with an Error if not.
Private
modifyCreates a new ValuePreferences object, which is equal to the input object with all values multiplied by the given weight.
Private
removeFilter out paths that can no longer be better than the current best solution. This depends on a valid path already being found, if not all the input paths will be returned.
Paths to filter.
The maximum weight in the output preferences.
Optional
bestMatch: ConversionPathThe current best path.
Private
supportedFinds all converters in the given list that support taking any of the given types as input. Filters out converters that would produce an already seen type.
Private
takeFinds all converters that could take the output of the given path as input. For each of these converters a new path gets created which is the input path appended by the converter.
Private
updateChecks if a path can match the requested preferences and updates the type and weight if it can.
A meta converter that takes an array of other converters as input. It chains these converters by finding a path of converters that can go from the given content-type to the given type preferences. In case there are multiple paths, the one with the highest weight gets found. Will error in case no path can be found.
This is not a TypedRepresentationConverter since the supported output types might depend on what is the input content-type.
This converter should be the last in a WaterfallHandler if there are multiple, since it will try to convert any representation with a content-type.
Some suggestions on how this class can be even more optimized should this ever be needed in the future. Most of these decrease computation time at the cost of more memory.