Deploy documentation and coverage

This commit is contained in:
github-actions[bot]
2025-04-02 19:53:16 +00:00
parent e4245380da
commit 57a7410ad4
60 changed files with 805 additions and 276 deletions

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="branches: 91.22%"><title>branches: 91.22%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#4c1"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">branches</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">branches</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">91.22%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">91.22%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="branches: 90.78%"><title>branches: 90.78%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#4c1"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">branches</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">branches</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">90.78%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">90.78%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="functions: 96.77%"><title>functions: 96.77%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#4c1"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">functions</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">functions</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">96.77%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">96.77%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="114" height="20" role="img" aria-label="functions: 97.29%"><title>functions: 97.29%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="114" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="53" height="20" fill="#4c1"/><rect width="114" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">functions</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">functions</text><text aria-hidden="true" x="865" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">97.29%</text><text x="865" y="140" transform="scale(.1)" fill="#fff" textLength="430">97.29%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="88" height="20" role="img" aria-label="lines: 96.96%"><title>lines: 96.96%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="88" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="35" height="20" fill="#555"/><rect x="35" width="53" height="20" fill="#4c1"/><rect width="88" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="185" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">lines</text><text x="185" y="140" transform="scale(.1)" fill="#fff" textLength="250">lines</text><text aria-hidden="true" x="605" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">96.96%</text><text x="605" y="140" transform="scale(.1)" fill="#fff" textLength="430">96.96%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="88" height="20" role="img" aria-label="lines: 97.52%"><title>lines: 97.52%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="88" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="35" height="20" fill="#555"/><rect x="35" width="53" height="20" fill="#4c1"/><rect width="88" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="185" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">lines</text><text x="185" y="140" transform="scale(.1)" fill="#fff" textLength="250">lines</text><text aria-hidden="true" x="605" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">97.52%</text><text x="605" y="140" transform="scale(.1)" fill="#fff" textLength="430">97.52%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="124" height="20" role="img" aria-label="statements: 97.08%"><title>statements: 97.08%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="124" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="71" height="20" fill="#555"/><rect x="71" width="53" height="20" fill="#4c1"/><rect width="124" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="365" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">statements</text><text x="365" y="140" transform="scale(.1)" fill="#fff" textLength="610">statements</text><text aria-hidden="true" x="965" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">97.08%</text><text x="965" y="140" transform="scale(.1)" fill="#fff" textLength="430">97.08%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="124" height="20" role="img" aria-label="statements: 96.87%"><title>statements: 96.87%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="124" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="71" height="20" fill="#555"/><rect x="71" width="53" height="20" fill="#4c1"/><rect width="124" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="365" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="610">statements</text><text x="365" y="140" transform="scale(.1)" fill="#fff" textLength="610">statements</text><text aria-hidden="true" x="965" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">96.87%</text><text x="965" y="140" transform="scale(.1)" fill="#fff" textLength="430">96.87%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,8 +1,9 @@
{"total": {"lines":{"total":99,"covered":96,"skipped":0,"pct":96.96},"statements":{"total":103,"covered":100,"skipped":0,"pct":97.08},"functions":{"total":31,"covered":30,"skipped":0,"pct":96.77},"branches":{"total":57,"covered":52,"skipped":0,"pct":91.22},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}}
{"total": {"lines":{"total":121,"covered":118,"skipped":0,"pct":97.52},"statements":{"total":128,"covered":124,"skipped":0,"pct":96.87},"functions":{"total":37,"covered":36,"skipped":0,"pct":97.29},"branches":{"total":76,"covered":69,"skipped":0,"pct":90.78},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":100}}
,"/home/runner/work/TSinjex/TSinjex/src/classes/TSinjex.ts": {"lines":{"total":19,"covered":19,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":21,"covered":21,"skipped":0,"pct":100},"branches":{"total":11,"covered":11,"skipped":0,"pct":100}}
,"/home/runner/work/TSinjex/TSinjex/src/decorators/Inject.ts": {"lines":{"total":29,"covered":28,"skipped":0,"pct":96.55},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":30,"covered":29,"skipped":0,"pct":96.66},"branches":{"total":31,"covered":27,"skipped":0,"pct":87.09}}
,"/home/runner/work/TSinjex/TSinjex/src/decorators/Inject.ts": {"lines":{"total":29,"covered":28,"skipped":0,"pct":96.55},"functions":{"total":9,"covered":9,"skipped":0,"pct":100},"statements":{"total":30,"covered":29,"skipped":0,"pct":96.66},"branches":{"total":25,"covered":22,"skipped":0,"pct":88}}
,"/home/runner/work/TSinjex/TSinjex/src/decorators/Register.ts": {"lines":{"total":25,"covered":25,"skipped":0,"pct":100},"functions":{"total":8,"covered":8,"skipped":0,"pct":100},"statements":{"total":25,"covered":25,"skipped":0,"pct":100},"branches":{"total":11,"covered":10,"skipped":0,"pct":90.9}}
,"/home/runner/work/TSinjex/TSinjex/src/decorators/RegisterInstance.ts": {"lines":{"total":5,"covered":5,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":6,"covered":6,"skipped":0,"pct":100},"branches":{"total":4,"covered":4,"skipped":0,"pct":100}}
,"/home/runner/work/TSinjex/TSinjex/src/functions/inject.ts": {"lines":{"total":22,"covered":22,"skipped":0,"pct":100},"functions":{"total":6,"covered":6,"skipped":0,"pct":100},"statements":{"total":25,"covered":24,"skipped":0,"pct":96},"branches":{"total":25,"covered":22,"skipped":0,"pct":88}}
,"/home/runner/work/TSinjex/TSinjex/src/functions/register.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
,"/home/runner/work/TSinjex/TSinjex/src/functions/resolve.ts": {"lines":{"total":3,"covered":3,"skipped":0,"pct":100},"functions":{"total":1,"covered":1,"skipped":0,"pct":100},"statements":{"total":3,"covered":3,"skipped":0,"pct":100},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}
,"/home/runner/work/TSinjex/TSinjex/src/interfaces/Exceptions.ts": {"lines":{"total":15,"covered":13,"skipped":0,"pct":86.66},"functions":{"total":5,"covered":4,"skipped":0,"pct":80},"statements":{"total":15,"covered":13,"skipped":0,"pct":86.66},"branches":{"total":0,"covered":0,"skipped":0,"pct":100}}

View File

@@ -223,7 +223,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">26x</span>
<span class="cline-any cline-yes">36x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -237,11 +237,11 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">53x</span>
<span class="cline-any cline-yes">26x</span>
<span class="cline-any cline-yes">73x</span>
<span class="cline-any cline-yes">36x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">53x</span>
<span class="cline-any cline-yes">73x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,7 +287,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21x</span>
<span class="cline-any cline-yes">29x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -297,36 +297,36 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">30x</span>
<span class="cline-any cline-yes">40x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">30x</span>
<span class="cline-any cline-yes">40x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">37x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">28x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">27x</span>
<span class="cline-any cline-yes">35x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">27x</span>
<span class="cline-any cline-yes">35x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Inject } from '../decorators/Inject';
import type { Register } from '../decorators/Register';
import type { RegisterInstance } from '../decorators/RegisterInstance';
import type { register } from '../functions/register';
import type { resolve } from '../functions/resolve';
import { ImplementsStatic } from '../helper/ImplementsStatic';
import { DependencyResolutionError } from '../interfaces/Exceptions';
import { IDependency } from '../interfaces/IDependency';
import { ITSinjex, ITSinjex_ } from '../interfaces/ITSinjex';
import { Identifier } from '../types/Identifier';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type { Inject } from '../decorators/Inject.js';
import type { Register } from '../decorators/Register.js';
import type { RegisterInstance } from '../decorators/RegisterInstance.js';
import type { register } from '../functions/register.js';
import type { resolve } from '../functions/resolve.js';
import { ImplementsStatic } from '../helper/ImplementsStatic.js';
import { DependencyResolutionError } from '../interfaces/Exceptions.js';
import { IDependency } from '../interfaces/IDependency.js';
import { ITSinjex, ITSinjex_ } from '../interfaces/ITSinjex.js';
import { Identifier } from '../types/Identifier.js';
&nbsp;
/**
* # TSinjex
@@ -451,7 +451,7 @@ export class TSinjex implements ITSinjex {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -101,7 +101,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -30,9 +30,9 @@
<div class='fl pad1y space-right2'>
<span class="strong">87.09% </span>
<span class="strong">88% </span>
<span class="quiet">Branches</span>
<span class='fraction'>27/31</span>
<span class='fraction'>22/25</span>
</div>
@@ -215,11 +215,6 @@
<a name='L150'></a><a href='#L150'>150</a>
<a name='L151'></a><a href='#L151'>151</a>
<a name='L152'></a><a href='#L152'>152</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -256,6 +251,11 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -365,15 +365,15 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex.js';
import {
DependencyResolutionError,
InitializationError,
InjectorError,
NoInstantiationMethodError,
} from 'src/interfaces/Exceptions';
import { TSinjex } from '../classes/TSinjex';
import { Identifier } from '../types/Identifier';
import { InitDelegate } from '../types/InitDelegate';
} from '../interfaces/Exceptions.js';
import { Identifier } from '../types/Identifier.js';
import { InitDelegate } from '../types/InitDelegate.js';
&nbsp;
/**
* A decorator to inject a dependency from a DI (Dependency Injection) container into a class property.
@@ -384,7 +384,7 @@ import { InitDelegate } from '../types/InitDelegate';
* @param init Optional an initializer function to transform the dependency before injection
* or true to instantiate the dependency if it has a constructor.
* @see {@link InitDelegate} for more information on initializer functions.
* @param necessary If true, throws an error if the dependency is not found.
* @param isNecessary If true, throws an error if the dependency is not found.
* @returns The resolved dependency or undefined if the dependency is not necessary
* and not found, or throws an error if the dependency is necessary and not found.
* @throws **Only throws errors if the dependency is necessary.**
@@ -410,7 +410,7 @@ import { InitDelegate } from '../types/InitDelegate';
export function Inject&lt;T, U&gt;(
identifier: Identifier,
init?: InitDelegate&lt;T, U&gt; | true,
necessary = true,
isNecessary = true,
) {
return function (target: unknown, propertyKey: string | symbol): void {
/**
@@ -419,7 +419,7 @@ export function Inject&lt;T, U&gt;(
* @returns The resolved dependency or undefined if the dependency is not found.
*/
const resolve = (): T | undefined =&gt; {
return TSinjex.getInstance().resolve&lt;T&gt;(identifier, necessary);
return TSinjex.getInstance().resolve&lt;T&gt;(identifier, isNecessary);
};
&nbsp;
Object.defineProperty(target, propertyKey, {
@@ -428,7 +428,7 @@ export function Inject&lt;T, U&gt;(
&nbsp;
const dependency: T | undefined = tryAndCatch(
() =&gt; resolve(),
necessary,
isNecessary,
identifier,
DependencyResolutionError,
);
@@ -445,13 +445,13 @@ export function Inject&lt;T, U&gt;(
else if (initFunction != null)
instance = tryAndCatch(
initFunction,
necessary,
isNecessary,
identifier,
InitializationError,
);
else if (necessary)
else if (isNecessary)
throw new NoInstantiationMethodError(identifier);
} else if (necessary)
} else if (isNecessary)
throw new DependencyResolutionError(identifier);
&nbsp;
/**
@@ -512,7 +512,7 @@ function hasConstructor&lt;T&gt;(obj: T): obj is T &amp; { new (): unknown } {
const _obj = obj as unknown as { prototype?: { constructor?: unknown } };
&nbsp;
return (
_obj<span class="branch-0 cbranch-no" title="branch not covered" >?.p</span>rototype != null &amp;&amp;
_obj?.prototype != null &amp;&amp;
typeof _obj.prototype.constructor === 'function'
);
}
@@ -523,7 +523,7 @@ function hasConstructor&lt;T&gt;(obj: T): obj is T &amp; { new (): unknown } {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -595,9 +595,9 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { InitDelegate } from 'src/types/InitDelegate';
import { TSinjex } from '../classes/TSinjex';
import { Identifier } from '../types/Identifier';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { InitDelegate } from 'src/types/InitDelegate.js';
import { TSinjex } from '../classes/TSinjex.js';
import { Identifier } from '../types/Identifier.js';
&nbsp;
//#region Overloads
&nbsp;
@@ -868,7 +868,7 @@ function initializeInstance&lt;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -141,9 +141,9 @@
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Register } from './Register';
import { Identifier } from '../types/Identifier';
import { InitDelegate } from '../types/InitDelegate';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Register } from './Register.js';
import { Identifier } from '../types/Identifier.js';
import { InitDelegate } from '../types/InitDelegate.js';
&nbsp;
/**
* A decorator to register an instance of a class in the DI (Dependency Injection) container.
@@ -187,7 +187,7 @@ export function RegisterInstance&lt;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -30,9 +30,9 @@
<div class='fl pad1y space-right2'>
<span class="strong">89.13% </span>
<span class="strong">90% </span>
<span class="quiet">Branches</span>
<span class='fraction'>41/46</span>
<span class='fraction'>36/40</span>
</div>
@@ -85,8 +85,8 @@
</td>
<td data-value="96.66" class="pct high">96.66%</td>
<td data-value="30" class="abs high">29/30</td>
<td data-value="87.09" class="pct medium">87.09%</td>
<td data-value="31" class="abs medium">27/31</td>
<td data-value="88" class="pct medium">88%</td>
<td data-value="25" class="abs medium">22/25</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="96.55" class="pct high">96.55%</td>
@@ -131,7 +131,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">96.77% </span>
<span class="quiet">Statements</span>
<span class='fraction'>6/6</span>
<span class='fraction'>30/31</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="strong">88% </span>
<span class="quiet">Branches</span>
<span class='fraction'>0/0</span>
<span class='fraction'>22/25</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>2/2</span>
<span class='fraction'>8/8</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>6/6</span>
<span class='fraction'>28/28</span>
</div>
@@ -79,6 +79,21 @@
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="inject.ts"><a href="./inject.ts.html">inject.ts</a></td>
<td data-value="96" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
</td>
<td data-value="96" class="pct high">96%</td>
<td data-value="25" class="abs high">24/25</td>
<td data-value="88" class="pct medium">88%</td>
<td data-value="25" class="abs medium">22/25</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="22" class="abs high">22/22</td>
</tr>
<tr>
<td class="file high" data-value="register.ts"><a href="./register.ts.html">register.ts</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
@@ -116,7 +131,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -0,0 +1,424 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for functions/inject.ts</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1><a href="../index.html">All files</a> / <a href="./index.html">functions</a> inject.ts</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">96% </span>
<span class="quiet">Statements</span>
<span class='fraction'>24/25</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">88% </span>
<span class="quiet">Branches</span>
<span class='fraction'>22/25</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Functions</span>
<span class='fraction'>6/6</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
<span class="quiet">Lines</span>
<span class='fraction'>22/22</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input type="search" id="fileSearch">
</div>
</template>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
<a name='L4'></a><a href='#L4'>4</a>
<a name='L5'></a><a href='#L5'>5</a>
<a name='L6'></a><a href='#L6'>6</a>
<a name='L7'></a><a href='#L7'>7</a>
<a name='L8'></a><a href='#L8'>8</a>
<a name='L9'></a><a href='#L9'>9</a>
<a name='L10'></a><a href='#L10'>10</a>
<a name='L11'></a><a href='#L11'>11</a>
<a name='L12'></a><a href='#L12'>12</a>
<a name='L13'></a><a href='#L13'>13</a>
<a name='L14'></a><a href='#L14'>14</a>
<a name='L15'></a><a href='#L15'>15</a>
<a name='L16'></a><a href='#L16'>16</a>
<a name='L17'></a><a href='#L17'>17</a>
<a name='L18'></a><a href='#L18'>18</a>
<a name='L19'></a><a href='#L19'>19</a>
<a name='L20'></a><a href='#L20'>20</a>
<a name='L21'></a><a href='#L21'>21</a>
<a name='L22'></a><a href='#L22'>22</a>
<a name='L23'></a><a href='#L23'>23</a>
<a name='L24'></a><a href='#L24'>24</a>
<a name='L25'></a><a href='#L25'>25</a>
<a name='L26'></a><a href='#L26'>26</a>
<a name='L27'></a><a href='#L27'>27</a>
<a name='L28'></a><a href='#L28'>28</a>
<a name='L29'></a><a href='#L29'>29</a>
<a name='L30'></a><a href='#L30'>30</a>
<a name='L31'></a><a href='#L31'>31</a>
<a name='L32'></a><a href='#L32'>32</a>
<a name='L33'></a><a href='#L33'>33</a>
<a name='L34'></a><a href='#L34'>34</a>
<a name='L35'></a><a href='#L35'>35</a>
<a name='L36'></a><a href='#L36'>36</a>
<a name='L37'></a><a href='#L37'>37</a>
<a name='L38'></a><a href='#L38'>38</a>
<a name='L39'></a><a href='#L39'>39</a>
<a name='L40'></a><a href='#L40'>40</a>
<a name='L41'></a><a href='#L41'>41</a>
<a name='L42'></a><a href='#L42'>42</a>
<a name='L43'></a><a href='#L43'>43</a>
<a name='L44'></a><a href='#L44'>44</a>
<a name='L45'></a><a href='#L45'>45</a>
<a name='L46'></a><a href='#L46'>46</a>
<a name='L47'></a><a href='#L47'>47</a>
<a name='L48'></a><a href='#L48'>48</a>
<a name='L49'></a><a href='#L49'>49</a>
<a name='L50'></a><a href='#L50'>50</a>
<a name='L51'></a><a href='#L51'>51</a>
<a name='L52'></a><a href='#L52'>52</a>
<a name='L53'></a><a href='#L53'>53</a>
<a name='L54'></a><a href='#L54'>54</a>
<a name='L55'></a><a href='#L55'>55</a>
<a name='L56'></a><a href='#L56'>56</a>
<a name='L57'></a><a href='#L57'>57</a>
<a name='L58'></a><a href='#L58'>58</a>
<a name='L59'></a><a href='#L59'>59</a>
<a name='L60'></a><a href='#L60'>60</a>
<a name='L61'></a><a href='#L61'>61</a>
<a name='L62'></a><a href='#L62'>62</a>
<a name='L63'></a><a href='#L63'>63</a>
<a name='L64'></a><a href='#L64'>64</a>
<a name='L65'></a><a href='#L65'>65</a>
<a name='L66'></a><a href='#L66'>66</a>
<a name='L67'></a><a href='#L67'>67</a>
<a name='L68'></a><a href='#L68'>68</a>
<a name='L69'></a><a href='#L69'>69</a>
<a name='L70'></a><a href='#L70'>70</a>
<a name='L71'></a><a href='#L71'>71</a>
<a name='L72'></a><a href='#L72'>72</a>
<a name='L73'></a><a href='#L73'>73</a>
<a name='L74'></a><a href='#L74'>74</a>
<a name='L75'></a><a href='#L75'>75</a>
<a name='L76'></a><a href='#L76'>76</a>
<a name='L77'></a><a href='#L77'>77</a>
<a name='L78'></a><a href='#L78'>78</a>
<a name='L79'></a><a href='#L79'>79</a>
<a name='L80'></a><a href='#L80'>80</a>
<a name='L81'></a><a href='#L81'>81</a>
<a name='L82'></a><a href='#L82'>82</a>
<a name='L83'></a><a href='#L83'>83</a>
<a name='L84'></a><a href='#L84'>84</a>
<a name='L85'></a><a href='#L85'>85</a>
<a name='L86'></a><a href='#L86'>86</a>
<a name='L87'></a><a href='#L87'>87</a>
<a name='L88'></a><a href='#L88'>88</a>
<a name='L89'></a><a href='#L89'>89</a>
<a name='L90'></a><a href='#L90'>90</a>
<a name='L91'></a><a href='#L91'>91</a>
<a name='L92'></a><a href='#L92'>92</a>
<a name='L93'></a><a href='#L93'>93</a>
<a name='L94'></a><a href='#L94'>94</a>
<a name='L95'></a><a href='#L95'>95</a>
<a name='L96'></a><a href='#L96'>96</a>
<a name='L97'></a><a href='#L97'>97</a>
<a name='L98'></a><a href='#L98'>98</a>
<a name='L99'></a><a href='#L99'>99</a>
<a name='L100'></a><a href='#L100'>100</a>
<a name='L101'></a><a href='#L101'>101</a>
<a name='L102'></a><a href='#L102'>102</a>
<a name='L103'></a><a href='#L103'>103</a>
<a name='L104'></a><a href='#L104'>104</a>
<a name='L105'></a><a href='#L105'>105</a>
<a name='L106'></a><a href='#L106'>106</a>
<a name='L107'></a><a href='#L107'>107</a>
<a name='L108'></a><a href='#L108'>108</a>
<a name='L109'></a><a href='#L109'>109</a>
<a name='L110'></a><a href='#L110'>110</a>
<a name='L111'></a><a href='#L111'>111</a>
<a name='L112'></a><a href='#L112'>112</a>
<a name='L113'></a><a href='#L113'>113</a>
<a name='L114'></a><a href='#L114'>114</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">14x</span>
<span class="cline-any cline-yes">14x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex.js';
import {
DependencyResolutionError,
InitializationError,
InjectorError,
NoInstantiationMethodError,
} from '../interfaces/Exceptions.js';
import { Identifier } from '../types/Identifier.js';
import { InitDelegate } from '../types/InitDelegate.js';
&nbsp;
/**
* A function to inject a dependency from a DI (Dependency Injection) container into a variable.
* @template T The type of the dependency to be injected.
* @template U The type of the property to be injected.
* @param identifier The identifier used to resolve the class in the DI container.
* @see {@link Identifier} for more information on identifiers.
* @param init Optional an initializer function to transform the dependency before injection
* or true to instantiate the dependency if it has a constructor.
* @see {@link InitDelegate} for more information on initializer functions.
* @param isNecessary If true, throws an error if the dependency is not found.
* @returns The resolved dependency or undefined if the dependency is not necessary
* and not found, or throws an error if the dependency is necessary and not found.
* @throws **Only throws errors if the dependency is necessary.**
* @throws A {@link DependencyResolutionError} if the dependency is not found.
* @throws A {@link InjectorError} if an error occurs during the injection process.
* @throws A {@link NoInstantiationMethodError} if the dependency does not have a constructor.
* @throws An {@link InitializationError} if an error occurs during the initialization process.
* @example
* ```ts
* let myDependency = inject&lt;MyDependency&gt;('MyDependencyIdentifier');
* ```
* @example
* ```ts
* let logger = inject&lt;ILogger&gt;('ILogger_', (x: ILogger_) =&gt; x.getLogger('Tags'), false);
* ```
*/
export function inject&lt;T, U&gt;(
identifier: Identifier,
init?: InitDelegate&lt;T, U&gt; | true,
isNecessary = true,
): T | U | undefined {
let instance: T | U | undefined;
&nbsp;
const dependency: T | undefined = tryAndCatch(
() =&gt; TSinjex.getInstance().resolve&lt;T&gt;(identifier, isNecessary),
isNecessary,
identifier,
DependencyResolutionError,
);
&nbsp;
if (dependency != null) {
const initFunction: (() =&gt; U) | undefined =
typeof init === 'function' &amp;&amp; dependency != null
? (): U =&gt; init(dependency)
: init === true &amp;&amp; hasConstructor(dependency)
? (): U =&gt; new dependency() as U
: undefined;
&nbsp;
if (init == null) instance = dependency;
else if (initFunction != null)
instance = tryAndCatch(
initFunction,
isNecessary,
identifier,
InitializationError,
);
else if (isNecessary) throw new NoInstantiationMethodError(identifier);
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (isNecessary) <span class="cstat-no" title="statement not covered" >throw new DependencyResolutionError(identifier);</span>
&nbsp;
return instance as T | U;
}
&nbsp;
/**
* Tries to execute a function and catches any errors that occur.
* If the function is necessary and an error occurs, it throws the error
* with the specified error class and identifier.
* @param fn The function to execute.
* @param necessary If true, throws an error if an error occurs.
* @param identifier The identifier of the dependency.
* @param errorClass The error class to throw if an error occurs.
* @returns The result of the function or undefined if an error occurs and the function is not necessary.
*/
function tryAndCatch&lt;ReturnType, ErrorType&gt;(
fn: () =&gt; ReturnType,
necessary: boolean,
identifier?: Identifier,
errorClass?: ErrorType,
): ReturnType | undefined {
try {
return fn();
} catch (error) {
if (necessary)
throw new (errorClass != null ? errorClass : <span class="branch-1 cbranch-no" title="branch not covered" >error)</span>(
identifier ?? <span class="branch-1 cbranch-no" title="branch not covered" >'not specified',</span>
error,
);
else return undefined;
}
}
&nbsp;
/**
* Checks if an object has a constructor.
* @param obj The object to check.
* @returns True if the object has a constructor, false otherwise.
*/
function hasConstructor&lt;T&gt;(obj: T): obj is T &amp; { new (): unknown } {
const _obj = obj as unknown as { prototype?: { constructor?: unknown } };
&nbsp;
return (
_obj?.prototype != null &amp;&amp;
typeof _obj.prototype.constructor === 'function'
);
}
&nbsp;</pre></td></tr></table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="../sorter.js"></script>
<script src="../block-navigation.js"></script>
<div style="position: fixed; bottom: 10px; right: 10px;"><a href="../../">Zur TypeDoc-Dokumentation</a></div></body>
</html>

View File

@@ -141,8 +141,8 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex';
import { Identifier } from '../types/Identifier';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex.js';
import { Identifier } from '../types/Identifier.js';
&nbsp;
/**
* Register a dependency.
@@ -187,7 +187,7 @@ export function register&lt;T&gt;(
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -143,9 +143,9 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex';
import { DependencyResolutionError } from '../interfaces/Exceptions';
import { Identifier } from '../types/Identifier';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { TSinjex } from '../classes/TSinjex.js';
import { DependencyResolutionError } from '../interfaces/Exceptions.js';
import { Identifier } from '../types/Identifier.js';
&nbsp;
/**
* Resolve a dependency.
@@ -160,12 +160,12 @@ export function resolve&lt;T&gt;(identifier: Identifier): T;
* Resolve a dependency
* @param identifier The identifier used to register the class in the DI container.
* @see {@link Identifier} for more information on identifiers.
* @param necessary The dependency is **not** necessary.
* @param isNecessary The dependency is **not** necessary.
* @returns The resolved dependency or undefined if the dependency is not found.
*/
export function resolve&lt;T&gt;(
identifier: Identifier,
necessary: false,
isNecessary: false,
): T | undefined;
&nbsp;
/**
@@ -190,7 +190,7 @@ export function resolve&lt;T&gt;(
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">97.08% </span>
<span class="strong">96.87% </span>
<span class="quiet">Statements</span>
<span class='fraction'>100/103</span>
<span class='fraction'>124/128</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">91.22% </span>
<span class="strong">90.78% </span>
<span class="quiet">Branches</span>
<span class='fraction'>52/57</span>
<span class='fraction'>69/76</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">96.77% </span>
<span class="strong">97.29% </span>
<span class="quiet">Functions</span>
<span class='fraction'>30/31</span>
<span class='fraction'>36/37</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">96.96% </span>
<span class="strong">97.52% </span>
<span class="quiet">Lines</span>
<span class='fraction'>96/99</span>
<span class='fraction'>118/121</span>
</div>
@@ -100,8 +100,8 @@
</td>
<td data-value="98.36" class="pct high">98.36%</td>
<td data-value="61" class="abs high">60/61</td>
<td data-value="89.13" class="pct medium">89.13%</td>
<td data-value="46" class="abs medium">41/46</td>
<td data-value="90" class="pct high">90%</td>
<td data-value="40" class="abs high">36/40</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="18" class="abs high">18/18</td>
<td data-value="98.3" class="pct high">98.3%</td>
@@ -110,17 +110,17 @@
<tr>
<td class="file high" data-value="functions"><a href="./functions/index.html">functions</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
<td data-value="96.77" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 96%"></div><div class="cover-empty" style="width: 4%"></div></div>
</td>
<td data-value="96.77" class="pct high">96.77%</td>
<td data-value="31" class="abs high">30/31</td>
<td data-value="88" class="pct medium">88%</td>
<td data-value="25" class="abs medium">22/25</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="8" class="abs high">8/8</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="2" class="abs high">2/2</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="6" class="abs high">6/6</td>
<td data-value="28" class="abs high">28/28</td>
</tr>
<tr>
@@ -146,7 +146,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="./prettify.js"></script>
<script>

View File

@@ -159,8 +159,8 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-yes">10x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -174,8 +174,8 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">4x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-yes">6x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -207,10 +207,10 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -225,14 +225,14 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Identifier } from 'src/types/Identifier';
import { ITSinjex } from './ITSinjex';
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Identifier } from 'src/types/Identifier.js';
import { ITSinjex } from './ITSinjex.js';
&nbsp;
/**
* General error class for {@link ITSinjex} interface.
@@ -322,7 +322,7 @@ export class InitializationError extends TSinjexError {
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -101,7 +101,7 @@
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="./https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-04-02T18:22:41.239Z
at 2025-04-02T19:53:14.343Z
</div>
<script src="../prettify.js"></script>
<script>

View File

@@ -8,43 +8,43 @@ FN:93,(anonymous_4)
FN:107,(anonymous_5)
FNF:6
FNH:6
FNDA:26,(anonymous_0)
FNDA:53,(anonymous_1)
FNDA:36,(anonymous_0)
FNDA:73,(anonymous_1)
FNDA:2,(anonymous_2)
FNDA:4,(anonymous_3)
FNDA:21,(anonymous_4)
FNDA:30,(anonymous_5)
FNDA:29,(anonymous_4)
FNDA:40,(anonymous_5)
DA:6,3
DA:7,3
DA:25,3
DA:34,26
DA:48,53
DA:49,26
DA:52,53
DA:34,36
DA:48,73
DA:49,36
DA:52,73
DA:65,2
DA:80,4
DA:98,21
DA:108,30
DA:110,30
DA:111,2
DA:112,28
DA:113,1
DA:116,27
DA:98,29
DA:108,40
DA:110,40
DA:111,3
DA:112,37
DA:113,2
DA:116,35
DA:117,1
DA:120,1
DA:123,27
DA:123,35
LF:19
LH:19
BRDA:48,0,0,26
BRDA:48,0,0,36
BRDA:63,1,0,1
BRDA:78,2,0,3
BRDA:96,3,0,20
BRDA:96,3,0,28
BRDA:107,4,0,16
BRDA:110,5,0,2
BRDA:110,5,1,28
BRDA:110,6,0,30
BRDA:110,6,1,27
BRDA:112,7,0,1
BRDA:110,5,0,3
BRDA:110,5,1,37
BRDA:110,6,0,40
BRDA:110,6,1,33
BRDA:112,7,0,2
BRDA:116,8,0,1
BRF:11
BRH:11
@@ -72,7 +72,7 @@ FNDA:1,(anonymous_6)
FNDA:13,tryAndCatch
FNDA:3,hasConstructor
DA:1,1
DA:7,1
DA:2,1
DA:43,1
DA:48,10
DA:54,10
@@ -125,16 +125,10 @@ BRDA:131,11,0,2
BRDA:131,11,1,0
BRDA:132,12,0,2
BRDA:132,12,1,0
BRDA:132,13,0,2
BRDA:132,13,1,2
BRDA:148,14,0,3
BRDA:148,14,1,1
BRDA:148,15,0,0
BRDA:148,15,1,3
BRDA:148,16,0,3
BRDA:148,16,1,3
BRF:31
BRH:27
BRDA:148,13,0,3
BRDA:148,13,1,1
BRF:25
BRH:22
end_of_record
TN:
SF:TSinjex/src/decorators/Register.ts
@@ -218,6 +212,74 @@ BRF:4
BRH:4
end_of_record
TN:
SF:TSinjex/src/functions/inject.ts
FN:37,inject
FN:45,(anonymous_1)
FN:54,(anonymous_2)
FN:56,(anonymous_3)
FN:83,tryAndCatch
FN:106,hasConstructor
FNF:6
FNH:6
FNDA:10,inject
FNDA:10,(anonymous_1)
FNDA:3,(anonymous_2)
FNDA:1,(anonymous_3)
FNDA:14,tryAndCatch
FNDA:3,hasConstructor
DA:1,1
DA:2,1
DA:37,1
DA:44,10
DA:45,10
DA:51,9
DA:53,7
DA:54,3
DA:56,1
DA:59,7
DA:60,6
DA:61,4
DA:67,2
DA:68,2
DA:70,7
DA:89,14
DA:90,14
DA:92,3
DA:93,2
DA:97,1
DA:107,3
DA:109,3
LF:22
LH:22
BRDA:40,0,0,6
BRDA:51,1,0,7
BRDA:51,1,1,2
BRDA:53,2,0,3
BRDA:53,2,1,4
BRDA:53,3,0,7
BRDA:53,3,1,3
BRDA:55,4,0,1
BRDA:55,4,1,3
BRDA:55,5,0,4
BRDA:55,5,1,3
BRDA:59,6,0,1
BRDA:59,6,1,6
BRDA:60,7,0,4
BRDA:60,7,1,2
BRDA:67,8,0,1
BRDA:68,9,0,0
BRDA:92,10,0,2
BRDA:92,10,1,1
BRDA:93,11,0,2
BRDA:93,11,1,0
BRDA:94,12,0,2
BRDA:94,12,1,0
BRDA:110,13,0,3
BRDA:110,13,1,1
BRF:25
BRH:22
end_of_record
TN:
SF:TSinjex/src/functions/register.ts
FN:33,register
FNF:1
@@ -254,26 +316,26 @@ FN:60,(anonymous_3)
FN:78,(anonymous_4)
FNF:5
FNH:4
FNDA:6,(anonymous_0)
FNDA:4,(anonymous_1)
FNDA:10,(anonymous_0)
FNDA:6,(anonymous_1)
FNDA:0,(anonymous_2)
FNDA:1,(anonymous_3)
FNDA:1,(anonymous_4)
FNDA:2,(anonymous_3)
FNDA:2,(anonymous_4)
DA:7,3
DA:13,6
DA:14,6
DA:13,10
DA:14,10
DA:22,3
DA:28,4
DA:29,4
DA:28,6
DA:29,6
DA:37,3
DA:44,0
DA:47,0
DA:55,3
DA:61,1
DA:64,1
DA:61,2
DA:64,2
DA:72,3
DA:79,1
DA:82,1
DA:79,2
DA:82,2
LF:15
LH:13
BRF:0