vpremiss/crafty

Some essential helpers to rely on during TALL stack development.

Fund package maintenance!
VPremiss

v4.3.0 2024-05-03 02:22 UTC

This package is auto-updated.

Last update: 2024-05-03 02:26:52 UTC


README

بسم الله الرحمن الرحيم

Crafty

Some essential helpers to rely on during TALL stack development.

Latest Version on Packagist GitHub Tests Action Status Codecov Total Downloads

Description

Contains some helper service classes (that you can use as Laravel facades). And it has some global helper functions for quick actions as well... Pretty much the things we found ourselves needing and without having a "strong" reason to PR Laravel about.

Installation

  1. Install the package via composer:

    composer require VPremiss/Crafty
  2. Publish the config file using this Artisan command:

    php artisan vendor:publish --tag="crafty-config"

Upgrading

  1. Backup your current config.

  2. Republish the package stuff using this Artisan command:

    php artisan vendor:publish --tag="crafty-config" --force

Usage

  • Enumerified

    • Can be applied to enums to extend their TALL abilities.
  • Installable

    • Used along HasInstallationCommand trait on the package service provider, in order to implement an installation command.
    • Needs the installationCommand() method applied within the laravel-package-tools service provider's bootingPackage() method.
  • Configurated

    • Ensures, as a package service provider's interface, that package configurations are validated and handled gracefully.
    • During packageRegistered(), you have to call registerConfigurations() method that's available in ManagesConfigurations trait.
    • It's used along CraftyPackage::getConfiguration() method.

API

Below are the tables of all the Crafty package helpers:


Interface Description
Configurated Ensures that the package service provider has what's needed to deal with configurations internally. It Makes them compatible to be used in other packages and tests! Check out ManagesConfigurations trait.
Installable Ensures that the package service provider has what's needed for its installation command. Check out HasInstallationCommand trait.

Trait Description
Enumerified Extends enum functionality to retrieve counts, random instances, and enum collections.
HasInstallationCommand Makes installationCommand() method available to be used in bootingPackage() method in order to set up an installation command.
ManagesConfigurations Registers configurations and their validations for CraftyPackage to be able to handle them whenever they're needed.

Laravel Rule Description
EnumsArray A validation rule that ensures an attribute is a filled array of valid enum values from a specified class.

Crafty Facade Method Description
chunkedDatabaseInsertion(string $tableName, array $dataArrays, ?Closure $callback = null): void Handles database insertions in chunks with configurable chunk size and default properties.
uniquelyMetaHashSuffixed(string $string): string Appends a unique hash suffix to a string. Utilizes the global helper function unique_meta_hashing_number of this same package.
reverseString(string $string, EncodingType $encoding = EncodingType::UTF8): string Reverses a string according to the specified encoding type.

CraftyPackage Facade Method Description
getConfiguration(string $key, $default = null): mixed Returns the package configuration value gracefully after validation. Still, you must implement Configurated interface and ManagesConfigurations methods for it to work.
setConfiguration(string $key, mixed $value): void Sets a configuration value for a specified key. This method does not validate the value itself; use setConfigurationValidation to establish value constraints. Requires Configurated interface too.
setConfigurationValidation(string $key, callable $closure): void Registers a validation function for a specific configuration key. The function is called to validate the value each time it is set using setConfiguration. Requires Configurated interface too.

Global Function Description
is_enum(mixed $enum): bool Checks if the provided value is an instance of an enum.
unique_meta_hashing_number(string $string, ?int $digits = null): string Generates a unique hash number based on the input string and optional digit limit. Not for security purposes, merely for general meta information tagging.

Changelogs

You can check out the package's changelogs online via WTD.

Progress

You can also checkout the project's roadmap among others in the organization's dedicated section for projects.

Support

Support ongoing package maintenance as well as the development of other projects through sponsorship or one-time donations if you prefer.

And may Allah accept your strive; aameen.

License

This package is open-sourced software licensed under the MIT license.

Credits


والحمد لله رب العالمين