- Various bug fixes and improved performance on package reading/writing
- Corrected CHANGELOG.md
- Updated dependency `Symfony/polyfill-mbstring` to 1.28.0
- Updated dependency `Symfony/polyfill-uuid` to 1.28.0
- Updated dependency `Symfony/Process` to 6.3.4
- Updated dependency `Symfony/Uid` to 6.3.0
- Updated dependency `Symfony/Yaml` to 6.3.3
- Added support for Gitea repositories
- Added support for Packagist repositories
- Added a new default Gitea repository nocturn9x at git.nocturn9x.space
- Added a new default Gitea repository martinvlba at git.martinvlba.eu
- Added a new default Gitea repository kuny at git.it-kuny.ch
- Added dependency composer/semver version 3.4.0 for composer version comparison compatibility
- Added a new class \ncc\Classes\ArchiveExtractor to extract multiple archive types
- Refactored \ncc\Objects\RemoteRepository
- Refactored the repository system
- Refactored Github's repository interface
- Refactored Gitlab's repository interface
- Refactored SourcesMenu in the CLI to use the new repository system
- Updated dependency nikic/php-parser to version 4.17.1
- Added a simple security measure in \ncc\Objects\Value\Entry to delay returns randomly when the password is incorrect
- Refactored the CLI menu system to use a return exit code system
- Updated the installer to remove unused components and installation steps
- Updated dependency Symfony/Filesystem to 6.3.1
- Updated dependency Symfony/polyfill-ctype to 1.28.0
- Enforced credential storage security by applying 600 permissions to the storage file so that only the owner can read/write to the file; this will require root access to perform any operations on the credential file. A password will still be needed to decrypt entries in the file if any entries are encrypted.
- Removed \ncc\Classes\NccExtension\Runner in favor of the new Execution Unit system
- Removed \ncc\Managers\ExecutionPointerManager in favor of the new Execution Unit system
- Refactored execution unit system to use a new execution pointer system
- Refactored `PhpRunner` to use the new execution pointer system
- Refactored `BashRunner` to use the new execution pointer system
- Refactored `LuaRunner` to use the new execution pointer system
- Refactored `PerlRunner` to use the new execution pointer system
- Refactored `PythonRunner` to use the new execution pointer system
- Removed dependency `theseer\Autoload` in favor of ncc's own autoloader (screw you Arne Blankerts)
- Refactored ZiProto
- Removed runners `Python2` & `Python3` in favor of `Python`
- Added new template PhpLibraryTemplate `phplib`
- Implemented a template engine and refactored the CLI menu for the Project Manager and added a new `template` command
`$source` and `$version`
- `\ncc\Objects\ProjectConfiguration > Dependency > fromArray()` Throws an `ConfigurationException` if the property
`name` is missing in the dependency configuration
- Also updated a bunch of objects in a similar fashion to the ones above, (BuildConfiguration, Execute, ExitHandle,
ExitHandler, Repository, Assembly, Build, Dependency, ExecutionPolicy, Installer, Project, UpdateSource) I'm not
going to list them all here, but you can find them in the commit history.
- Added a new interface class `ValidatableObjectInterface` to implement validatable objects, this method will throw a
`ConfigurationException` if the object is not valid or a `NotSupportedException` if the object contains methods that
are not supported by the current version of ncc or project.
maximum supported compiler version for the selected extension
- `\ncc\Objects\ProjectConfiguration > Compiler > fromArray()` throws an ConfigurationException if the property `extension` is null
- `\ncc\Objects\ProjectConfiguration > Compiler > fromArray()` throws an NotSupportedException if the `extension` uses an
unsupported compiler extension
- `\ncc\Objects\ProjectConfiguration > Compiler > validate()` No longer accepts `$throw_exception` and throws an
`ConfigurationException` or `NotSupportedException` if the validation fails, otherwise it returns `True`.
- `\ncc\Objects\ProjectConfiguration > Project > fromArray()` Throws an `ConfigurationException` if the property `compiler`
is missing in the project configuration
- `\ncc\Objects > ProjectConfiguration > fromArray()` Throws an `ConfigurationException` if the property 'project' is
missing in the root configuration
- `\ncc\Objects\ProjectConfiguration > Project > __construct()` now requires the parameter `$compiler`
- Removed parameter `$throw_exception` from `\ncc\Objects\ProjectConfiguration > Project > validate()`
- Corrected code-smell and code style issues in `\ncc\Objects > InstallationPaths`
- Updated class `\ncc\Objects > NccVersionInformation` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects > Package` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects > PackageLock` to use method calls rather than direct property access and implemented
`BytecodeObjectInterface`
- Updated class `\ncc\Objects > ProjectConfiguration` to use method calls rather than direct property access
- Updated class `\ncc\Objects > ProjectDetectionResults` to use method calls rather than direct property access
- Updated class `\ncc\Objects > RemotePackageInput` to use method calls rather than direct property access
- Updated class `\ncc\Objects > RepositoryQueryResults` to use method calls rather than direct property access
- Updated class `\ncc\Objects > Vault` to use method calls rather than direct property access
- Removed unused `\ncc\Objects > NccUpdateInformation`
- Removed unused `\ncc\Objects > PhpConfiguration`
- Updated class `\ncc\Objects > ComposerJson` to use method calls rather than direct property access
- Updated class `\ncc\Objects > ComposerLock` to use method calls rather than direct property access
- Updated class `\ncc\Objects > DefinedRemoteSource` to use method calls rather than direct property access
- Updated class `\ncc\Objects > HttpRequest` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects > HttpResponse` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Fixed hash comparisons to use `hash_equals` implementations to combat against Timing Attacks
extends this interface to allow for serialization of compiled assets
- Updated class `\ncc\Objects\ComposerJson > Author` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > Autoloader` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > Funding` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > NamespacePointer` to use method calls rather than direct property access
and implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > PackageLink` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > Suggestion` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ComposerJson > Support` to use method calls rather than direct property access and
implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\ExecutionPointers > ExecutionPointer` to use method calls rather than direct property
access and implemented `BytecodeObjectInterface`
- Updated class `\ncc\Objects\NccVersionInformation > Component` to use method calls rather than direct property access
and implemented `SerializableObjectInterface`
- Updated class `\ncc\Objects\Package > Component` to use method calls rather than direct property access and
implemented `BytecodeObjectInterface`
- Updated class `\ncc\Objects\Package > ExecutionUnit` to use method calls rather than direct property access and
implemented `BytecodeObjectInterface`
- Updated class `\ncc\Objects\Package > Header` to use method calls rather than direct property access and implemented
`BytecodeObjectInterface`
- Updated class `\ncc\Objects\Package > Installer` to use method calls rather than direct property access and implemented
`BytecodeObjectInterface`
- Updated class `\ncc\Objects\Package > MagicBytes` to use method calls rather than direct property access and implemented
`SerializableObjectInterface`
- Updated class `\ncc\Objects\Package > Resource` to use method calls rather than direct property access and implemented
`BytecodeObjectInterface`
- Updated class `\ncc\Objects\PackageLock > DependencyEntry` to use method calls rather than direct property access
and implemented `BytecodeObjectInterface`
- Updated class `\ncc\Objects\PackageLock > PackageEntry` to use method calls rather than direct property access
and implemented `BytecodeObjectInterface`
- Updated class `\ncc\Objects\PackageLock > VersionEntry` to use method calls rather than direct property access
and implemented `BytecodeObjectInterface`
property access
- Updated class `\ncc\Objects\ProjectConfiguration\ExecutionPolicy > Execute` to use method calls rather than direct
property access
- Changed all uppercase occurrences of `NCC` to `ncc` in the entire project
- Corrected code-smell and code style issues in `\ncc\Utilities > Base64`
- Corrected code-smell and code style issues in `\ncc\Utilities > Console`
- Updated class `\ncc\Objects\ProjectConfiguration\ExecutionPolicy > ExitHandle` to use method calls rather than direct
property access
- Updated class `\ncc\Objects\ProjectConfiguration\ExecutionPolicy > ExitHandlers` to use method calls rather than
direct property access
- Updated class `\ncc\Objects\ProjectConfiguration\UpdateSource > Repository` to use method calls rather than direct
property access
- Updated class `\ncc\Objects\ProjectConfiguration > Assembly` to use method calls rather than direct property access
- Updated class `\ncc\Objects\ProjectConfiguration > Build` to use method calls rather than direct property access
- Updated class `\ncc\Objects\ProjectConfiguration > Compiler` to use method calls rather than direct property access
- Updated class `\ncc\Objects\ProjectConfiguration > ExecutionPolicy` to use method calls rather than direct property access
- Updated class `\ncc\Objects\ProjectConfiguration > Installer` to use method calls rather than direct property access
- Fixed all @throw tags in the project to use the correct exception class
- Removed unused `scope` property from `\ncc\Objects\ProjectConfiguration > Build`
- Removed unused exception `UnitsNotFoundException` in `\ncc\Exceptions` (not used)
- Removed unused exception `NoAvailableUnitsException` in `\ncc\Exceptions` in favor for `OperationException`
- Removed unused exception `InstallationException` in `\ncc\Exceptions` in favor for `OperationException`
- Removed all unused exceptions from the project, reduced the number of exceptions in total.
- Removed unused exception `ConstantReadonlyException` in `\ncc\Exceptions` in favor of `IntegrityException` & `\InvalidArgumentException`
- Removed unused exception `InvalidConstantName` in `\ncc\Exceptions` in favor for `IntegrityException`
- Removed unused exception `ComponentDecodeException` in `\ncc\Exceptions` in favor for `IntegrityException`
- Removed unused exception `ResourceChecksumException` in `\ncc\Exceptions` in favor for `IntegrityException`
- Removed unused exception `AutoloadGeneratorException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `SymlinkException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `PackageLockException` in `\ncc\Exceptions` in favor for `IOException`
- Removed unused exception `HttpException` in `\ncc\Exceptions` in favor of `NetworkException`
- Removed unused exception `ComposerDisabledException` in `\ncc\Exceptions` in favor of `ComposerException`
- Removed unused exception `ComposerNotAvailable` in `\ncc\Exceptions` in favor of `ComposerException`
- Removed unused exception `InternalComposerNotAvailable` in `\ncc\Exceptions` in favor of `ComposerException`
- Removed unused exception `PackagePreperationFailedException` in `\ncc\Exceptions` in favor of `PackageException`
- Removed unused exception `PackageParsingException` in `\ncc\Exceptions` in favor of `PackageException`
- Removed unused exception `MissingDependencyException` in `\ncc\Exceptions` (not used)
- Removed unused exception `PackageAlreadyInstalledException` in `\ncc\Exceptions` in favor of `PackageException`
- Removed unused exception `PackageFetchException` in `\ncc\Exceptions` in favor of `PackageException`
- Removed unused exception `InvalidPropertyValue` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `InvalidVersionConfiguration` in `\ncc\Exceptions` (not used)
- Removed unused exception `InvalidDependencyConfiguraiton` in `\ncc\Exceptions` (not used)
- Removed unused exception `ProjectConfigurationNotFoundException` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `UndefinedExecutionPolicyExpection` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `InvalidExecutionPolicyName` in `\ncc\Exceptions` (not used)
- Removed unused exception `InvalidProjectConfigurationException` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `InvalidScopeException` in `\ncc\Exceptions` in favor of `InvalidArgumentException` (standard php)
- Removed unused exception `InvalidCredentialsEntryException` in `\ncc\Exceptions` (not used)
- Removed unused exception `ComponentNotFoundException` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `InvalidPackageNameException` in `\ncc\Exceptions` (not used)
- Removed unused exception `InvalidVersionNumberException` in `\ncc\Exceptions` (not used)
- Removed unused exception `InvalidProjectException` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `InvalidProjectNameException` in `\ncc\Exceptions` in favor of `ConfigurationException`
- Removed unused exception `BuildConfigurationNotFoundException` in `\ncc\Exceptions` in favor of `ConfigurationException`