All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.14.0 - 2025-01-01
- Updated dependencies (service update).
- License year changed to
2023-present
.
0.13.0 - 2024-09-27
Breaking
- Various argument and return types changed in the navigation utilities (
Archive
andPagesCollection
), in@aedart/vuepress-utils
(due to upgrade to newervuepress
release).
Non-breaking Changes
- Adjusted styles and colours for the documentation (due to upgrade to newer
vuepress
release). - Updated docs for
@aedart/vuepress-utils
package.
- Unable to build documentation, due to missing
sass
module dependency, in@aedart/vuepress-utils
. - Unable to navigate to "next" or "current" documentation via top navigation (caused by missing trailing slashes for
_currentPath
and_nextPath
, inArchive
), in@aedart/vuepress-utils
. - Incorrect colours in
VersionDisclaimer.vue
, in@aedart/vuepress-utils
(after upgrade to newervuepress
release).
0.12.1 - 2024-09-26
.eslintignore
file no longer supported (replaced with neweslint.config.mjs
file).
0.12.0 - 2024-09-26
- Updated dependencies (service update).
node_modules
directory inside packages/* is not ignored by git.
0.11.0 - 2024-04-09
- Service Container package (
@aedart/container
). Facade
abstraction, in@aedart/support/facades
.DEPENDENCIES
symbol andIdentifier
type in@aedart/contracts/container
.dependsOn()
,dependencies()
,hasDependencies()
, andgetDependencies()
, in@aedart/support/container
.isBindingIdentifier
, in@aedart/support/container
.ClassMethodName
andClassMethodReference
type aliases in@aedart/contracts
.isMethod()
util in@aedart/support/reflections
.ConstructorLike
andCallback
type aliases, in@aedart/constracts
.CallbackWrapper
util class, in@aedart/support
.isCallbackWrapper
util, in@aedart/support
.ArbitraryData
concern, in@aedart/support
.arrayMergeOptions
in objectmerge()
.- Add upgrade guide for "v0.7.x- to v0.10.x".
Breaking
- Added
hasAny()
method inTargetRepository
interface, in@aedart/contracts/meta
. - Default generic for
defaultValue
changed toundefined
, forget()
methods in metaRepository
andTargetRepository
.
Non-breaking Changes
- Root package Typescript dependency changed to
^5.4.2
. @typescript-eslint/eslint-plugin
upgraded to^7.1.1
, in root package.- Refactored all classes' fields, changed from private to protected visibility (see private is not inherited for details in).
- Removed decorator return types for
use()
,meta()
,targetMeta()
, andinheritTargetMeta()
(continued to cause TS1270 and TS1238 errors). #8, #9. - Refactored
hasAllMethods()
to use newisMethod()
internally, in@aedart/support/reflections
. - Refactored all components that used deprecated
ConstructorOrAbstractConstructor
to use newConstructorLike
type alias. - Marked
isClassConstructor()
andisCallable()
as stable, in@aedart/support/reflections
. - Refactored / redesigned the array
merge()
to use a newArrayMerger
component, that allows custom merge callback and options. - Upgraded root package dependencies (service update).
- Decorator types aliases (TS1270 and TS1238 issues when applying the various decorator and decorator result types). #8.
- Broken link in docs for
isArrayLike
. - Missing
tslib
as peer dependency for@aedart/support
package. - Unable to merge arrays containing functions, in
MetaRepository
. NOTICE
file not included in distributions.
ConstructorOrAbstractConstructor
type alias. It has been replaced with the newConstructorLike
type., in@aedart/constracts
.
0.10.0 - 2024-03-07
hasMeta()
util, in@aedart/support/meta
.MetaRepository
,TargetMetaRepository
,TargetContext
,Entry
, andhasTargetMeta()
in@aedart/support/meta
.ClassDecorator
,ClassMethodDecorator
,ClassGetterDecorator
,ClassSetterDecorator
,ClassFieldDecorator
,ClassAutoAccessorDecorator
, andDecorator
types, in@aedart/contracts
.ClassDecoratorResult
,ClassMethodDecoratorResult
,ClassGetterDecoratorResult
,ClassSetterDecoratorResult
,ClassFieldDecoratorResult
,ClassAutoAccessorDecoratorResult
, andDecoratorResult
types, in@aedart/contracts
.
Breaking
targetMeta()
andinheritTargetMeta()
now throwMetaError
(TypeError
was previously thrown), in@aedart/support/meta
.
Non-breaking Changes
- Refactored / Redesigned
meta()
,getMeta()
, andgetAllMeta()
to use newMetaRepository
as its underlying core component for dealing with metadata. - Refactored / Redesigned
targetMeta()
,getTargetMeta()
, andinheritTargetMeta()
to use newTargetMetaRepository
underneath. - Return type of
meta()
changed toDecorator
. MetaTargetContext
expanded with acontext: Context
property.@aedart/contracts/support/meta
.
- Broken links in support/exceptions and in support/objects docs.
ClassContext
,MethodContext
,GetterContext
,SetterContext
,FieldContext
,AccessorContext
andMetadataContext
, in@aedart/contracts/support/meta
(components were deprecated inv0.7.0
).MemberContext
type in@aedart/contracts/support/meta
(type was deprecated inv0.7.0
).
0.9.0 - 2024-03-05
- Concerns - an alternative to mixins, in
@aedart/contracts/support/concerns
. @aedart/contracts/support/exceptions
and@aedart/support/exceptions
submodules.@aedart/contracts/support/objects
submodule.@aedart/contracts/support/arrays
and@aedart/support/arrays
submodules.ConcatSpreadable
(extends TypeScript'sArrayLike
interface) interface in@aedart/contracts/support/arrays
.Throwable
(extends TypeScript'sError
interface) interface in@aedart/contracts/support/exceptions
.Cloneable
andPopulatable
interfaces in@aedart/contracts/support/objects
.LogicalError
andAbstractClassError
exceptions in@aedart/support/exceptions
.getErrorMessage()
,configureCustomError()
andconfigureStackTrace()
in@aedart/support/exceptions
.FUNCTION_PROTOTYPE
andTYPED_ARRAY_PROTOTYPE
constants in@aedart/contracts/support/reflections
.ClassBlueprint
interface in@aedart/contracts/support/reflections
.DANGEROUS_PROPERTIES
constant in@aedart/contracts/support/objects
.hasPrototypeProperty()
andassertHasPrototypeProperty()
in@aedart/support/reflections
.getParentOfClass()
andgetAllParentsOfClass()
in@aedart/support/reflections
.getClassPropertyDescriptor()
andgetClassPropertyDescriptors()
in@aedart/support/reflections
.isWeakKind()
in@aedart/support/reflections
.isKeySafe()
andisKeyUnsafe()
in@aedart/support/reflections
.getConstructorName()
andgetNameOrDesc()
in@aedart/support/reflections
.isSubclass()
,classLooksLike()
,isSubclassOrLooksLike()
,classOwnKeys()
,hasMethod()
andhasAllMethods()
in@aedart/support/reflections
.merge()
,populate()
,isCloneable()
andisPopulatable()
in@aedart/support/objects
.- Objects
Merger
(underlying component for the objectsmerge()
util) in@aedart/support/objects
. merge()
,isTypedArray()
,isArrayLike()
,isSafeArrayLike()
,isTypedArray()
andisConcatSpreadable()
in@aedart/support/arrays
.includesAny()
andincludesAll()
in@aedart/support/arrays
.
- Split the "support" submodules docs into several smaller pages.
- Lodash JSDoc references in
get()
,set()
,unset()
andforget()
, in@aedart/support/objects
. jasmine-core
v4.x
was used bykarma-jasmine
, which caused thrown exceptions that containedErrorOptions
to not being rendered correctly in the CLI. See GitHub issue for details.- Default
defaultTheme
deprecated, replaced with named import, in docsconfig.ts
. defineClientConfig()
does not exist in docsclient.ts
(replaced with an object of the typeClientConfig
).
0.8.0 - 2024-02-12
@aedart/support/mixins
submodule that offers an adaptation of Justin Fagnani'smixwith.js
.NOTICE
files for the root package, and all provided packages.
- Generic type is now optional (defaults to
object
) forConstructor
,AbstractConstructor
andConstructorOrAbstractConstructor
types, in@aedart/contracts/support
.
0.7.0 - 2024-02-02
targetMeta()
,inheritTargetMeta()
andgetTargetMeta()
utils method in@aedart/support/meta
.isConstructor()
util method in@aedart/support/reflections
.isCallable()
andisClassConstructor()
util methods in@aedart/support/reflections
(Unsafe / unstable!).Kind
enum which contains cases of the kind of element that is being decorated (defined in a decorator context object).Arrayable
interface, in@aedart/contracts/support
submodule.toWeakRef()
util method in@aedart/support/misc
.mergeKets()
util method in@aedart/support/misc
.isKey()
util method in@aedart/support/misc
.isPropertyKey()
util method in@aedart/support/misc
.- Documentation for
uniqueId()
andhasUniqueId()
util methods, in the@aedart/support/objects
package.
Breaking
- Node
^v20.11.0
is now required when working with the ion mono-repository. - Decorator
Context
is now an alias for TypeScript'sDecoratorContext
(affects@aedart/support/meta
). - Decorator
MetadataRecord
is now an alias for TypeScript'sDecoratorMetadata
(affects@aedart/support/meta
).
Non-Breaking
- Bumped license year.
- Dependencies updated (service update).
- Refactored internal
save()
method to no longer attempt to overwritecontext.metadata
because it has been defined as read-only property by TypeScript. - JSDoc now clearly states that
meta()
is intended to be used as a decorator.
- Private
@aedart/reflections
package. Desired features added as a submodule in@aedart/support
package. - Experimental reflection components in
@aedart/support/reflections
submodule (was never published). PropertyKey
from@aedart/contacts/support
(Replaced by TypeScript's own definition hereof).
ClassContext
,MethodContext
,GetterContext
,SetterContext
,FieldContext
,AccessorContext
andMetadataContext
, in@aedart/contracts/support/meta
- replaced by corresponding TypeScript declarations and will be removed in next version.MemberContext
in@aedart/contracts/support/meta
(no longer needed).
- Docs broken due to out-of-date vuepress dependencies (switched to
@vuepress
v2.0.0-rc.2
). @vuepress/utils
not resolved by rollup during tests (missing dependency, in the@aedart/vuepress-utils
package).- Missing
@lerna-lite/publish
as dev-dependency in root package.
0.6.1 - 2023-04-28
- Fixed possible prototype pollution for the
MetadataRecord
, when merged with a base class' metadata object, inmeta
decorator (@aedart/support
).
0.6.0 - 2023-04-23
meta
decorator, in@aedart/support
package. #3.Key
,PropertyKey
, andPrimitive
types in contracts.isPrimitive()
method, in@aedart/support
.ObjectId
helper that can generate/obtain a numeric ID for a target object, in@aedart/support
.- Cleanup script for removing leftover
*.d.ts
files in source dirs.
- Methods in
@aedart/support/objects
now use the newKey
type (previously used Lodash'sPropertyKey
type). empty()
new uses a switch case internally, which appears to be much faster, in@aedart/support/misc
.- Removed
"gitHead"
from allpackage.json
files (should not have been committed in the first place).
- Broken link to
isset()
, in Objectsisset()
documentation. deploy.docs.sh
fails when.build
directory does not exist.
0.5.0 - 2023-04-09
- Set "sideEffects" property to
false
, inpackage.json
files (all packages except@aedart/vuepress-utils
). - Adapted
lerna-json
for use with Lerna-lite.
@aedart/contracts
dependency not specified in published@aedart/support
package (peer dependencies bump not supported by lerna). This has been fixed by migrating to Lerna-lite and explicit use of--allow-peer-dependencies-update
option for the version command (configured in rootlerna.json
).
0.4.0 - 2023-04-09
@aedart/support/misc
submodule, which containsdescTag()
,empty()
andisset()
methods.
Breaking Changes
forgetAll()
,hasAll()
andhasAny()
now accepts rest parameters instead of an array of property paths, in@aedart/support/object
.
Non-breaking Changes
@aedart/support/object
'sisset()
now uses theisset()
from@aedart/support/misc
.
hasAll()
returns true when no paths given, in@aedart/support/objects
submodule.- Documentation code examples (examples where marked to be TypeScript, but are written as plain JavaScript).
- Navigation sidebar closes unexpectedly for support "objects" submodule, in documentation site.
- Unable to "build" packages when interdependent on other packages, due to applied settings in rollup typescript plugin.
0.3.1 - 2023-04-07
@aedart/support/object
'sisset()
method returnstrue
when object argument is undefined, and when no paths argument given.
0.3.0 - 2023-04-06
@aedart/contracts
package, which is intended to define common types, interfaces and unique identifiers.@aedart/support
package for various helpers and utilities.- Enabled eslint for TypeScript, which is now also run during CI tests.
publish.sh
now runs lerna publish with--force-publish
flag.- Improved the "packages" introduction (again).
- Improved description of
@aedart/vuepress-utils
.
- Various minor issues identified by eslint.
0.2.0 - 2023-03-29
- Enabled CI testing via GitHub Actions. Currently testing in Chrome and Firefox.
- Troubleshooting section for npm installation of
@aedart/vuepress-utils
.
- Refactored location of "browser" tests. These are now located within the
tests/browser/*
directory. - Firefox Headless is now also used when running tests.
- Improved the "packages" introduction.
- Reformatted the "how to install" section for
@aedart/vuepress-utils
. - Commit message for lerna "version" command.
- Duplicate code in bundle output for submodules, when importing a function (or anything for that matter) from the "root" module of a package.
0.1.1 - 2023-03-25
- "homepage" URL in all
package.json
files. - Links to documentation, in vuepress utils package's
README.md
. - Version headings in
CHANGELOG.md
.
0.1.0 - 2023-03-25
@aedart/vuepress-utils
package, which includes anArchive
component, a plugin to format "last updated" datetime, and other minor utilities.@aedart/xyz
package (private, not published) for testing various configurations, exports and features.publish.sh
(helper to publish to npm).deploy-docs.sh
(ported and adapted from Athenaeum).- Version warning component in docs (ported and adapted from Athenaeum).
- Code of conduct, contribution guide and other "introduction" documents (ported and adapted from Athenaeum).
- Templates for issues, pull request, etc. (ported and adapted from Athenaeum).
- Vuepress documentation boilerplate.
- "Special" Rollup package bundling configuration (tailored for this exporting multiple submodules).
- Typescript version
5.x
. - Proposal decorators for when running browser tests.
- Browser tests setup using karma, webpack, and jasmine.
- Project init, lerna, directory structure, ...etc.