UNPKG

@aedart/contracts

Version:

The Ion contracts package. Contains types, interfaces and unique identifiers

94 lines (90 loc) 2.18 kB
/** * @aedart/contracts * * BSD-3-Clause, Copyright (c) 2023-present Alin Eugen Deac <aedart@gmail.com>. */ 'use strict'; /** * Support Concerns identifier * * @type {Symbol} */ const SUPPORT_CONCERNS = Symbol('@aedart/contracts/support/concerns'); /** * Symbol used by a [concern class]{@link ConcernConstructor} to indicate what properties * and methods can be aliased into a target class. * * **Note**: _Symbol MUST be used to as name for a "static" method in the desired Concern class._ * * **Example**: * ```ts * class MyConcern implements Concern * { * static [PROVIDES](): PropertyKey[] * { * // ...not shown... * } * * // ...remaining not shown... * } * ``` * * @see ConcernConstructor * * @type {symbol} */ const PROVIDES = Symbol('concern_provides'); /** * Symbol that can be used by a [concern class]{@link ConcernConstructor} to perform * pre-registration logic * * @see RegistrationAware * @see ConcernConstructor * * @type {symbol} */ const BEFORE = Symbol('concern_before_registration'); /** * Symbol that can be used by a [concern class]{@link ConcernConstructor} to perform * post-registration logic. * * @see RegistrationAware * @see ConcernConstructor * * @type {symbol} */ const AFTER = Symbol('concern_after_registration'); /** * Symbol used to define a list of the concern classes to be used by a target class. * * @see {UsesConcerns} * * @type {Symbol} */ const CONCERN_CLASSES = Symbol('concern_classes'); /** * Symbol used to list the aliases applied in a target class * * @see {UsesConcerns} * * @type {Symbol} */ const ALIASES = Symbol('aliases'); /** * Symbol used to define a "concerns container" property inside a target class' prototype * * @see {Owner} * @see {Container} * * @type {Symbol} */ const CONCERNS = Symbol('concerns'); exports.AFTER = AFTER; exports.ALIASES = ALIASES; exports.BEFORE = BEFORE; exports.CONCERNS = CONCERNS; exports.CONCERN_CLASSES = CONCERN_CLASSES; exports.PROVIDES = PROVIDES; exports.SUPPORT_CONCERNS = SUPPORT_CONCERNS; module.exports = Object.assign(exports.default, exports); //# sourceMappingURL=concerns.cjs.map