CommunitySolidServer/docs/classes/ChainedConverter.html
2021-10-15 09:28:28 +00:00

57 lines
37 KiB
HTML

<!DOCTYPE html><html class="default no-js"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>ChainedConverter | Community Solid Server - v2.0.0</title><meta name="description" content="Documentation for Community Solid Server - v2.0.0"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">Community Solid Server - v2.0.0</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label><input type="checkbox" id="tsd-filter-externals" checked/><label class="tsd-widget" for="tsd-filter-externals">Externals</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../modules.html">Community Solid Server - v2.0.0</a></li><li><a href="ChainedConverter.html">ChainedConverter</a></li></ul><h1>Class ChainedConverter</h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><div class="lead">
<p>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.</p>
</div><div><p>This is not a TypedRepresentationConverter since the supported output types
might depend on what is the input content-type.</p>
<p>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.</p>
<p>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.</p>
<ul>
<li>The algorithm could start on both ends of a possible path and work towards the middle.</li>
<li>When creating a path, store the list of unused converters instead of checking every step.</li>
<li>Caching: <a href="https://github.com/solid/community-server/issues/832">https://github.com/solid/community-server/issues/832</a></li>
</ul>
</div></div></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="RepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">RepresentationConverter</a><ul class="tsd-hierarchy"><li><span class="target">ChainedConverter</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section tsd-is-private-protected"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#converters" class="tsd-kind-icon">converters</a></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><a href="ChainedConverter.html#logger" class="tsd-kind-icon">logger</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#canHandle" class="tsd-kind-icon">can<wbr/>Handle</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#findBest" class="tsd-kind-icon">find<wbr/>Best</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#findPath" class="tsd-kind-icon">find<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#generatePath" class="tsd-kind-icon">generate<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#handle" class="tsd-kind-icon">handle</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><a href="ChainedConverter.html#handleSafe" class="tsd-kind-icon">handle<wbr/>Safe</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#isMatchedPath" class="tsd-kind-icon">is<wbr/>Matched<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#modifyTypeWeights" class="tsd-kind-icon">modify<wbr/>Type<wbr/>Weights</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#removeBadPaths" class="tsd-kind-icon">remove<wbr/>Bad<wbr/>Paths</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#supportedConverters" class="tsd-kind-icon">supported<wbr/>Converters</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#takeStep" class="tsd-kind-icon">take<wbr/>Step</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><a name="constructor" class="tsd-anchor"></a><h3>constructor</h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">new <wbr/>Chained<wbr/>Converter<span class="tsd-signature-symbol">(</span>converters<span class="tsd-signature-symbol">: </span><a href="TypedRepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">TypedRepresentationConverter</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="ChainedConverter.html" class="tsd-signature-type" data-tsd-kind="Class">ChainedConverter</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><p>Overrides <a href="RepresentationConverter.html">RepresentationConverter</a>.<a href="RepresentationConverter.html#constructor">constructor</a></p><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L58">src/storage/conversion/ChainedConverter.ts:58</a></li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>converters: <a href="TypedRepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">TypedRepresentationConverter</a><span class="tsd-signature-symbol">[]</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="ChainedConverter.html" class="tsd-signature-type" data-tsd-kind="Class">ChainedConverter</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group tsd-is-private-protected"><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-private"><a name="converters" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> converters</h3><div class="tsd-signature tsd-kind-icon">converters<span class="tsd-signature-symbol">:</span> <a href="TypedRepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">TypedRepresentationConverter</a><span class="tsd-signature-symbol">[]</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L56">src/storage/conversion/ChainedConverter.ts:56</a></li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-protected"><a name="logger" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagProtected">Protected</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> logger</h3><div class="tsd-signature tsd-kind-icon">logger<span class="tsd-signature-symbol">:</span> <a href="Logger.html" class="tsd-signature-type" data-tsd-kind="Class">Logger</a><span class="tsd-signature-symbol"> = ...</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L54">src/storage/conversion/ChainedConverter.ts:54</a></li></ul></aside></section></section><section class="tsd-panel-group tsd-member-group "><h2>Methods</h2><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a name="canHandle" class="tsd-anchor"></a><h3>can<wbr/>Handle</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">can<wbr/>Handle<span class="tsd-signature-symbol">(</span>input<span class="tsd-signature-symbol">: </span><a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><p>Overrides <a href="RepresentationConverter.html">RepresentationConverter</a>.<a href="RepresentationConverter.html#canHandle">canHandle</a></p><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L66">src/storage/conversion/ChainedConverter.ts:66</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Checks if the input can be handled by this class.
If it cannot handle the input, rejects with an error explaining why.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>input: <a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div><p>A promise resolving if the input can be handled, rejecting with an Error if not.</p>
</div></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="findBest" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> find<wbr/>Best</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">find<wbr/>Best<span class="tsd-signature-symbol">(</span>type<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, preferences<span class="tsd-signature-symbol">: </span><a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a>, paths<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">MatchedPath</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L168">src/storage/conversion/ChainedConverter.ts:168</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Finds the path from the given list that can convert the given type 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.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>type: <span class="tsd-signature-type">string</span></h5></li><li><h5>preferences: <a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></h5></li><li><h5>paths: <span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">MatchedPath</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="findPath" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> find<wbr/>Path</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">find<wbr/>Path<span class="tsd-signature-symbol">(</span>input<span class="tsd-signature-symbol">: </span><a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../modules.html#ValuePreference" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreference</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">MatchedPath</span><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L102">src/storage/conversion/ChainedConverter.ts:102</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Finds a conversion path that can handle the given input.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>input: <a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../modules.html#ValuePreference" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreference</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">MatchedPath</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="generatePath" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> generate<wbr/>Path</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">generate<wbr/>Path<span class="tsd-signature-symbol">(</span>inType<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, outPreferences<span class="tsd-signature-symbol">: </span><a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">MatchedPath</span><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L121">src/storage/conversion/ChainedConverter.ts:121</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Tries to generate the optimal <code>ConversionPath</code> that supports the given parameters,
which will then be used to instantiate a specific <code>MatchedPath</code> for those parameters.</p>
</div><div><p>Errors if such a path does not exist.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>inType: <span class="tsd-signature-type">string</span></h5></li><li><h5>outPreferences: <a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">MatchedPath</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a name="handle" class="tsd-anchor"></a><h3>handle</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">handle<span class="tsd-signature-symbol">(</span>input<span class="tsd-signature-symbol">: </span><a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><p>Overrides <a href="RepresentationConverter.html">RepresentationConverter</a>.<a href="RepresentationConverter.html#handle">handle</a></p><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L73">src/storage/conversion/ChainedConverter.ts:73</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Handles the given input. This may only be called if <a href="ChainedConverter.html#canHandle">canHandle</a> did not reject.
When unconditionally calling both in sequence, consider <a href="ChainedConverter.html#handleSafe">handleSafe</a> instead.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>input: <a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h4><div><p>A promise resolving when handling is finished.</p>
</div></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><a name="handleSafe" class="tsd-anchor"></a><h3>handle<wbr/>Safe</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><li class="tsd-signature tsd-kind-icon">handle<wbr/>Safe<span class="tsd-signature-symbol">(</span>input<span class="tsd-signature-symbol">: </span><a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><p>Inherited from <a href="RepresentationConverter.html">RepresentationConverter</a>.<a href="RepresentationConverter.html#handleSafe">handleSafe</a></p><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/util/handlers/AsyncHandler.ts#L34">src/util/handlers/AsyncHandler.ts:34</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Helper function that first runs <a href="ChainedConverter.html#canHandle">canHandle</a> followed by <a href="ChainedConverter.html#handle">handle</a>.
Throws the error of <a href="ChainedConverter.html#canHandle">canHandle</a> if the data cannot be handled,
or returns the result of <a href="ChainedConverter.html#handle">handle</a> otherwise.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>input: <a href="../interfaces/RepresentationConverterArgs.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationConverterArgs</a></h5><div class="tsd-comment tsd-typography"><div><p>Input data that will be handled if it can be handled.</p>
</div></div></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/Representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h4><div><p>A promise resolving if the input can be handled, rejecting with an Error if not.</p>
</div></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="isMatchedPath" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> is<wbr/>Matched<wbr/>Path</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">is<wbr/>Matched<wbr/>Path<span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">path</span><span class="tsd-signature-symbol"> is </span><span class="tsd-signature-type">MatchedPath</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L95">src/storage/conversion/ChainedConverter.ts:95</a></li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>path: <span class="tsd-signature-type">unknown</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">path</span><span class="tsd-signature-symbol"> is </span><span class="tsd-signature-type">MatchedPath</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="modifyTypeWeights" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> modify<wbr/>Type<wbr/>Weights</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">modify<wbr/>Type<wbr/>Weights<span class="tsd-signature-symbol">(</span>weight<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, types<span class="tsd-signature-symbol">: </span><a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L231">src/storage/conversion/ChainedConverter.ts:231</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Creates a new ValuePreferences object, which is equal to the input object
with all values multiplied by the given weight.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>weight: <span class="tsd-signature-type">number</span></h5></li><li><h5>types: <a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="removeBadPaths" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> remove<wbr/>Bad<wbr/>Paths</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">remove<wbr/>Bad<wbr/>Paths<span class="tsd-signature-symbol">(</span>paths<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span>, maxWeight<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, inType<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, bestMatch<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">MatchedPath</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L190">src/storage/conversion/ChainedConverter.ts:190</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Filter 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.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>paths: <span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span></h5><div class="tsd-comment tsd-typography"><div><p>Paths to filter.</p>
</div></div></li><li><h5>maxWeight: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><div><p>The maximum weight in the output preferences.</p>
</div></div></li><li><h5>inType: <span class="tsd-signature-type">string</span></h5><div class="tsd-comment tsd-typography"><div><p>The input type.</p>
</div></div></li><li><h5><span class="tsd-flag ts-flagOptional">Optional</span> bestMatch: <span class="tsd-signature-type">MatchedPath</span></h5><div class="tsd-comment tsd-typography"><div><p>The current best path.</p>
</div></div></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="supportedConverters" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> supported<wbr/>Converters</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">supported<wbr/>Converters<span class="tsd-signature-symbol">(</span>types<span class="tsd-signature-symbol">: </span><a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a>, converters<span class="tsd-signature-symbol">: </span><a href="TypedRepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">TypedRepresentationConverter</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ConverterPreference</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L238">src/storage/conversion/ChainedConverter.ts:238</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Finds all converters in the given list that support taking any of the given types as input.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>types: <a href="../modules.html#ValuePreferences" class="tsd-signature-type" data-tsd-kind="Type alias">ValuePreferences</a></h5></li><li><h5>converters: <a href="TypedRepresentationConverter.html" class="tsd-signature-type" data-tsd-kind="Class">TypedRepresentationConverter</a><span class="tsd-signature-symbol">[]</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ConverterPreference</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-private"><a name="takeStep" class="tsd-anchor"></a><h3><span class="tsd-flag ts-flagPrivate">Private</span> take<wbr/>Step</h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-private"><li class="tsd-signature tsd-kind-icon">take<wbr/>Step<span class="tsd-signature-symbol">(</span>path<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/solid/community-server/blob/216788e/src/storage/conversion/ChainedConverter.ts#L214">src/storage/conversion/ChainedConverter.ts:214</a></li></ul></aside><div class="tsd-comment tsd-typography"><div class="lead">
<p>Finds 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.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>path: <span class="tsd-signature-type">ConversionPath</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ConversionPath</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../modules.html">Exports</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class"><a href="ChainedConverter.html" class="tsd-kind-icon">Chained<wbr/>Converter</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#constructor" class="tsd-kind-icon">constructor</a></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#converters" class="tsd-kind-icon">converters</a></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><a href="ChainedConverter.html#logger" class="tsd-kind-icon">logger</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#canHandle" class="tsd-kind-icon">can<wbr/>Handle</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#findBest" class="tsd-kind-icon">find<wbr/>Best</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#findPath" class="tsd-kind-icon">find<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#generatePath" class="tsd-kind-icon">generate<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="ChainedConverter.html#handle" class="tsd-kind-icon">handle</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><a href="ChainedConverter.html#handleSafe" class="tsd-kind-icon">handle<wbr/>Safe</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#isMatchedPath" class="tsd-kind-icon">is<wbr/>Matched<wbr/>Path</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#modifyTypeWeights" class="tsd-kind-icon">modify<wbr/>Type<wbr/>Weights</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#removeBadPaths" class="tsd-kind-icon">remove<wbr/>Bad<wbr/>Paths</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#supportedConverters" class="tsd-kind-icon">supported<wbr/>Converters</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><a href="ChainedConverter.html#takeStep" class="tsd-kind-icon">take<wbr/>Step</a></li></ul></li></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li><li class="tsd-kind-accessor tsd-parent-kind-class"><span class="tsd-kind-icon">Accessor</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>