diff --git a/packages/config/src/Repository.ts b/packages/config/src/Repository.ts index 01fc4485..234ffa4e 100644 --- a/packages/config/src/Repository.ts +++ b/packages/config/src/Repository.ts @@ -1,4 +1,7 @@ -import type { Repository as RepositoryContract } from "@aedart/contracts/config"; +import type { + Repository as RepositoryContract, + Items +} from "@aedart/contracts/config"; import type { Key } from "@aedart/contracts/support"; import { set, @@ -18,18 +21,18 @@ export default class Repository implements RepositoryContract /** * The configuration items * - * @type {Record} + * @type {Items} * * @protected */ - protected items: Record; /* eslint-disable-line @typescript-eslint/no-explicit-any */ + protected items: Items; /** * Create a new Configuration Repository instance * - * @param {Record} [items] + * @param {Items} [items] */ - public constructor(items: Record = {}) /* eslint-disable-line @typescript-eslint/no-explicit-any */ + public constructor(items: Items = {}) { this.items = shallowMerge(items); } @@ -136,11 +139,11 @@ export default class Repository implements RepositoryContract * * **Caution**: _Merging is performed via [shallow coping](https://developer.mozilla.org/en-US/docs/Glossary/Shallow_copy) of items._ * - * @param {Record} items + * @param {Items} items * * @return {this} */ - public merge(items: Record): this /* eslint-disable-line @typescript-eslint/no-explicit-any */ + public merge(items: Items): this { this.items = shallowMerge(this.items, items); @@ -150,9 +153,9 @@ export default class Repository implements RepositoryContract /** * Get all configuration items * - * @return {Record} + * @return {Items} */ - public all(): Record /* eslint-disable-line @typescript-eslint/no-explicit-any */ + public all(): Items { return this.items; } diff --git a/packages/contracts/src/config/Repository.ts b/packages/contracts/src/config/Repository.ts index 5c00249b..3a7bb86f 100644 --- a/packages/contracts/src/config/Repository.ts +++ b/packages/contracts/src/config/Repository.ts @@ -1,4 +1,5 @@ import { Key } from "@aedart/contracts/support"; +import { Items } from './types'; /** * Configuration Repository @@ -75,16 +76,16 @@ export default interface Repository * * **Caution**: _Merging is performed via [shallow coping](https://developer.mozilla.org/en-US/docs/Glossary/Shallow_copy) of items._ * - * @param {Record} items + * @param {Items} items * * @return {this} */ - merge(items: Record): this; /* eslint-disable-line @typescript-eslint/no-explicit-any */ + merge(items: Items): this; /** * Get all configuration items * - * @return {Record} + * @return {Items} */ - all(): Record; /* eslint-disable-line @typescript-eslint/no-explicit-any */ + all(): Items; } \ No newline at end of file diff --git a/packages/contracts/src/config/index.ts b/packages/contracts/src/config/index.ts index 348476ef..1309b15d 100644 --- a/packages/contracts/src/config/index.ts +++ b/packages/contracts/src/config/index.ts @@ -8,4 +8,6 @@ export const CONFIG: unique symbol = Symbol('@aedart/contracts/config'); import Repository from './Repository'; export { type Repository -} \ No newline at end of file +} + +export type * from './types'; \ No newline at end of file diff --git a/packages/contracts/src/config/types.ts b/packages/contracts/src/config/types.ts new file mode 100644 index 00000000..0d97e44b --- /dev/null +++ b/packages/contracts/src/config/types.ts @@ -0,0 +1,7 @@ +/** + * Configuration Items + * + * A general type for describing a key-value store containing configuration items + * for an application or component. + */ +export type Items = Record; /* eslint-disable-line @typescript-eslint/no-explicit-any */ \ No newline at end of file diff --git a/packages/contracts/src/core/configuration/Configurator.ts b/packages/contracts/src/core/configuration/Configurator.ts index e256be42..3f2d7266 100644 --- a/packages/contracts/src/core/configuration/Configurator.ts +++ b/packages/contracts/src/core/configuration/Configurator.ts @@ -7,6 +7,7 @@ import { IdentifierAliasTuple, IdentifierInstanceTuple, } from "@aedart/contracts/container"; +import { Items } from "@aedart/contracts/config"; import BootstrapperConstructor from "../BootstrapperConstructor"; import Application from '../Application'; @@ -32,11 +33,11 @@ export default interface Configurator * * @see {import('@aedart/contracts/config').Repository} * - * @param {Record} items + * @param {Items} items * * @return {this} */ - with(items: Record): this; /* eslint-disable-line @typescript-eslint/no-explicit-any */ + with(items: Items): this; /** * Add "core" bindings to be registered diff --git a/packages/core/src/configuration/BaseConfigurator.ts b/packages/core/src/configuration/BaseConfigurator.ts index e18fefde..feac77ed 100644 --- a/packages/core/src/configuration/BaseConfigurator.ts +++ b/packages/core/src/configuration/BaseConfigurator.ts @@ -12,7 +12,7 @@ import type { IdentifierAliasTuple, IdentifierInstanceTuple } from "@aedart/contracts/container"; -import type { Repository } from "@aedart/contracts/config"; +import type { Repository, Items } from "@aedart/contracts/config"; import { CONFIG } from "@aedart/contracts/config"; import { AbstractClassError } from "@aedart/support/exceptions"; import { isset } from "@aedart/support/misc"; @@ -40,11 +40,11 @@ export default abstract class BaseConfigurator implements Configurator { /** * Configuration items for the application * - * @type {Record} + * @type {Items} * * @protected */ - protected configurationItems: Record = {}; + protected configurationItems: Items = {}; /** * List of bindings to be registered @@ -135,11 +135,11 @@ export default abstract class BaseConfigurator implements Configurator { * * @see {import('@aedart/contracts/config').Repository} * - * @param {Record} items + * @param {Items} items * * @return {this} */ - public with(items: Record): this /* eslint-disable-line @typescript-eslint/no-explicit-any */ + public with(items: Items): this { this.configurationItems = shallowMerge(this.configurationItems, items);