first commit

This commit is contained in:
Llewellyn van der Merwe 2023-04-15 17:05:14 +02:00
commit 32d3a8b944
Signed by: Llewellyn
GPG Key ID: A9201372263741E7
6 changed files with 398 additions and 0 deletions

77
README.md Normal file
View File

@ -0,0 +1,77 @@
```
███████╗██╗ ██╗██████╗ ███████╗██████╗
██╔════╝██║ ██║██╔══██╗██╔════╝██╔══██╗
███████╗██║ ██║██████╔╝█████╗ ██████╔╝
╚════██║██║ ██║██╔═══╝ ██╔══╝ ██╔══██╗
███████║╚██████╔╝██║ ███████╗██║ ██║
╚══════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
██████╗ ██████╗ ██╗ ██╗███████╗██████╗ ███████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗██╔════╝
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝███████╗
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗╚════██║
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║███████║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝╚══════╝
```
### What is JCB Super Powers?
The Joomla Component Builder (JCB) Super Power features are designed to enhance JCB's functionality and streamline the development process. These Super Powers enable developers to efficiently manage and share their custom powers across multiple JCB instances through repositories hosted on [https://git.vdm.dev/[username]/[repository-name]](https://git.vdm.dev). JCB Super Powers are managed using a combination of layers, events, tasks, methods, switches, and algorithms, which work together to provide powerful customization and extensibility options. More details on JCB Super Powers can be found in the [Super Powers Documentation](https://git.vdm.dev/joomla/super-powers/wiki).
In summary, JCB Super Powers offer a flexible and efficient way to manage and share functionalities between JCB instances. By utilizing a sophisticated system of layers, events, tasks, methods, switches, and algorithms, developers can seamlessly integrate JCB core powers and their custom powers. For more information on how to work with JCB Super Powers, refer to the [Super Powers User Guide](https://git.vdm.dev/joomla/super-powers/wiki).
### What can I find here?
This repository contains an index (see below) of all the approved powers within the JCB GUI. During the compilation of a component, these powers are automatically added to the repository, ensuring a well-organized and accessible collection of functionalities.
# Index of powers
- **Namespace**: [VDM\Psr\Cache](#vdm-psr-cache)
- **interface CacheItemInterface** | [Details](src/171fcb39-ae27-4c2b-b091-2f70b824288b) | [Code](src/171fcb39-ae27-4c2b-b091-2f70b824288b/code.php) | [Settings](src/171fcb39-ae27-4c2b-b091-2f70b824288b/settings.json) | [171fcb39-ae27-4c2b-b091-2f70b824288b](src/171fcb39-ae27-4c2b-b091-2f70b824288b)
# Class Diagrams
## VDM Psr Cache
> namespace VDM\Psr\Cache
```uml
@startuml
namespace VDM\Psr\Cache #DarkCyan {
interface CacheItemInterface #Lavender {
+ getKey() : string
+ get() : mixed
+ isHit() : bool
+ set() : static
+ expiresAt() : static
+ expiresAfter() : static
}
}
@enduml
```
---
```
██╗ ██████╗ ██████╗ ███╗ ███╗██╗ █████╗
██║██╔═══██╗██╔═══██╗████╗ ████║██║ ██╔══██╗
██║██║ ██║██║ ██║██╔████╔██║██║ ███████║
██ ██║██║ ██║██║ ██║██║╚██╔╝██║██║ ██╔══██║
╚█████╔╝╚██████╔╝╚██████╔╝██║ ╚═╝ ██║███████╗██║ ██║
╚════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
██████╗ ██████╗ ███╗ ███╗██████╗ ██████╗ ███╗ ██╗███████╗███╗ ██╗████████╗
██╔════╝██╔═══██╗████╗ ████║██╔══██╗██╔═══██╗████╗ ██║██╔════╝████╗ ██║╚══██╔══╝
██║ ██║ ██║██╔████╔██║██████╔╝██║ ██║██╔██╗ ██║█████╗ ██╔██╗ ██║ ██║
██║ ██║ ██║██║╚██╔╝██║██╔═══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║╚██╗██║ ██║
╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚██████╔╝██║ ╚████║███████╗██║ ╚████║ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝╚═╝ ╚═══╝ ╚═╝
██████╗ ██╗ ██╗██╗██╗ ██████╗ ███████╗██████╗
██╔══██╗██║ ██║██║██║ ██╔══██╗██╔════╝██╔══██╗
██████╔╝██║ ██║██║██║ ██║ ██║█████╗ ██████╔╝
██╔══██╗██║ ██║██║██║ ██║ ██║██╔══╝ ██╔══██╗
██████╔╝╚██████╔╝██║███████╗██████╔╝███████╗██║ ██║
╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚══════╝╚═╝ ╚═╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,98 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# interface CacheItemInterface (Details)
> namespace: **VDM\Psr\Cache**
```uml
@startuml
interface CacheItemInterface #Lavender {
+ getKey() : string
+ get() : mixed
+ isHit() : bool
+ set(mixed $value) : static
+ expiresAt(?\DateTimeInterface $expiration) : static
+ expiresAfter(int|\DateInterval|null $time) : static
}
note right of CacheItemInterface::getKey
Returns the key for the current cache item.
The key is loaded by the Implementing Library, but should be available to
the higher level callers when needed.
The key string for this cache item.
return: string
end note
note right of CacheItemInterface::get
Retrieves the value of the item from the cache associated with this object's key.
The value returned must be identical to the value originally stored by set().
If isHit() returns false, this method MUST return null. Note that null
is a legitimate cached value, so the isHit() method SHOULD be used to
differentiate between "null value was found" and "no value was found."
The value corresponding to this cache item's key, or null if not found.
return: mixed
end note
note right of CacheItemInterface::isHit
Confirms if the cache item lookup resulted in a cache hit.
Note: This method MUST NOT have a race condition between calling isHit()
and calling get().
True if the request resulted in a cache hit. False otherwise.
return: bool
end note
note right of CacheItemInterface::set
Sets the value represented by this cache item.
The $value argument may be any item that can be serialized by PHP,
although the method of serialization is left up to the Implementing
Library.
The serializable value to be stored.
The invoked object.
return: static
end note
note right of CacheItemInterface::expiresAt
Sets the expiration time for this cache item.
The point in time after which the item MUST be considered expired.
If null is passed explicitly, a default value MAY be used. If none is set,
the value should be stored permanently or for as long as the
implementation allows.
The called object.
return: static
end note
note right of CacheItemInterface::expiresAfter
Sets the expiration time for this cache item.
The period of time from the present after which the item MUST be considered
expired. An integer parameter is understood to be the time in seconds until
expiration. If null is passed explicitly, a default value MAY be used.
If none is set, the value should be stored permanently or for as long as the
implementation allows.
The called object.
return: static
end note
@enduml
```
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,114 @@
<?php
/**
* @package Common interface for caching libraries
*
* @created Feb 9, 2021
* @author PHP-FIG <https://www.php-fig.org/>
* @git Caching Interface <https://github.com/php-fig/cache>
* @license MIT
*/
namespace VDM\Psr\Cache;
/**
* CacheItemInterface defines an interface for interacting with objects inside a cache.
*
* Each Item object MUST be associated with a specific key, which can be set
* according to the implementing system and is typically passed by the
* Cache\CacheItemPoolInterface object.
*
* The Cache\CacheItemInterface object encapsulates the storage and retrieval of
* cache items. Each Cache\CacheItemInterface is generated by a
* Cache\CacheItemPoolInterface object, which is responsible for any required
* setup as well as associating the object with a unique Key.
* Cache\CacheItemInterface objects MUST be able to store and retrieve any type
* of PHP value defined in the Data section of the specification.
*
* Calling Libraries MUST NOT instantiate Item objects themselves. They may only
* be requested from a Pool object via the getItem() method. Calling Libraries
* SHOULD NOT assume that an Item created by one Implementing Library is
* compatible with a Pool from another Implementing Library.
*/
interface CacheItemInterface
{
/**
* Returns the key for the current cache item.
*
* The key is loaded by the Implementing Library, but should be available to
* the higher level callers when needed.
*
* @return string
* The key string for this cache item.
*/
public function getKey(): string;
/**
* Retrieves the value of the item from the cache associated with this object's key.
*
* The value returned must be identical to the value originally stored by set().
*
* If isHit() returns false, this method MUST return null. Note that null
* is a legitimate cached value, so the isHit() method SHOULD be used to
* differentiate between "null value was found" and "no value was found."
*
* @return mixed
* The value corresponding to this cache item's key, or null if not found.
*/
public function get(): mixed;
/**
* Confirms if the cache item lookup resulted in a cache hit.
*
* Note: This method MUST NOT have a race condition between calling isHit()
* and calling get().
*
* @return bool
* True if the request resulted in a cache hit. False otherwise.
*/
public function isHit(): bool;
/**
* Sets the value represented by this cache item.
*
* The $value argument may be any item that can be serialized by PHP,
* although the method of serialization is left up to the Implementing
* Library.
*
* @param mixed $value
* The serializable value to be stored.
*
* @return static
* The invoked object.
*/
public function set(mixed $value): static;
/**
* Sets the expiration time for this cache item.
*
* @param ?\DateTimeInterface $expiration
* The point in time after which the item MUST be considered expired.
* If null is passed explicitly, a default value MAY be used. If none is set,
* the value should be stored permanently or for as long as the
* implementation allows.
*
* @return static
* The called object.
*/
public function expiresAt(?\DateTimeInterface $expiration): static;
/**
* Sets the expiration time for this cache item.
*
* @param int|\DateInterval|null $time
* The period of time from the present after which the item MUST be considered
* expired. An integer parameter is understood to be the time in seconds until
* expiration. If null is passed explicitly, a default value MAY be used.
* If none is set, the value should be stored permanently or for as long as the
* implementation allows.
*
* @return static
* The called object.
*/
public function expiresAfter(int|\DateInterval|null $time): static;
}

View File

@ -0,0 +1,79 @@
/**
* Returns the key for the current cache item.
*
* The key is loaded by the Implementing Library, but should be available to
* the higher level callers when needed.
*
* @return string
* The key string for this cache item.
*/
public function getKey(): string;
/**
* Retrieves the value of the item from the cache associated with this object's key.
*
* The value returned must be identical to the value originally stored by set().
*
* If isHit() returns false, this method MUST return null. Note that null
* is a legitimate cached value, so the isHit() method SHOULD be used to
* differentiate between "null value was found" and "no value was found."
*
* @return mixed
* The value corresponding to this cache item's key, or null if not found.
*/
public function get(): mixed;
/**
* Confirms if the cache item lookup resulted in a cache hit.
*
* Note: This method MUST NOT have a race condition between calling isHit()
* and calling get().
*
* @return bool
* True if the request resulted in a cache hit. False otherwise.
*/
public function isHit(): bool;
/**
* Sets the value represented by this cache item.
*
* The $value argument may be any item that can be serialized by PHP,
* although the method of serialization is left up to the Implementing
* Library.
*
* @param mixed $value
* The serializable value to be stored.
*
* @return static
* The invoked object.
*/
public function set(mixed $value): static;
/**
* Sets the expiration time for this cache item.
*
* @param ?\DateTimeInterface $expiration
* The point in time after which the item MUST be considered expired.
* If null is passed explicitly, a default value MAY be used. If none is set,
* the value should be stored permanently or for as long as the
* implementation allows.
*
* @return static
* The called object.
*/
public function expiresAt(?\DateTimeInterface $expiration): static;
/**
* Sets the expiration time for this cache item.
*
* @param int|\DateInterval|null $time
* The period of time from the present after which the item MUST be considered
* expired. An integer parameter is understood to be the time in seconds until
* expiration. If null is passed explicitly, a default value MAY be used.
* If none is set, the value should be stored permanently or for as long as the
* implementation allows.
*
* @return static
* The called object.
*/
public function expiresAfter(int|\DateInterval|null $time): static;

View File

@ -0,0 +1,18 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "0",
"guid": "171fcb39-ae27-4c2b-b091-2f70b824288b",
"implements": null,
"load_selection": null,
"name": "CacheItemInterface",
"power_version": "3.0.0",
"system_name": "Psr.Cache.CacheItemInterface",
"type": "interface",
"use_selection": null,
"namespace": "VDM\\Psr\\Cache.CacheItemInterface",
"description": "\/**\r\n * CacheItemInterface defines an interface for interacting with objects inside a cache.\r\n *\r\n * Each Item object MUST be associated with a specific key, which can be set\r\n * according to the implementing system and is typically passed by the\r\n * Cache\\CacheItemPoolInterface object.\r\n *\r\n * The Cache\\CacheItemInterface object encapsulates the storage and retrieval of\r\n * cache items. Each Cache\\CacheItemInterface is generated by a\r\n * Cache\\CacheItemPoolInterface object, which is responsible for any required\r\n * setup as well as associating the object with a unique Key.\r\n * Cache\\CacheItemInterface objects MUST be able to store and retrieve any type\r\n * of PHP value defined in the Data section of the specification.\r\n *\r\n * Calling Libraries MUST NOT instantiate Item objects themselves. They may only\r\n * be requested from a Pool object via the getItem() method. Calling Libraries\r\n * SHOULD NOT assume that an Item created by one Implementing Library is\r\n * compatible with a Pool from another Implementing Library.\r\n *\/",
"licensing_template": "\/**\r\n * @package Common interface for caching libraries\r\n *\r\n * @created Feb 9, 2021\r\n * @author PHP-FIG <https:\/\/www.php-fig.org\/>\r\n * @git Caching Interface <https:\/\/github.com\/php-fig\/cache>\r\n * @license MIT\r\n *\/",
"head": "",
"composer": ""
}

12
super-powers.json Normal file
View File

@ -0,0 +1,12 @@
{
"171fcb39-ae27-4c2b-b091-2f70b824288b": {
"name": "CacheItemInterface",
"type": "interface",
"namespace": "VDM\\Psr\\Cache",
"code": "src\/171fcb39-ae27-4c2b-b091-2f70b824288b\/code.php",
"power": "src\/171fcb39-ae27-4c2b-b091-2f70b824288b\/code.power",
"settings": "src\/171fcb39-ae27-4c2b-b091-2f70b824288b\/settings.json",
"path": "src\/171fcb39-ae27-4c2b-b091-2f70b824288b",
"guid": "171fcb39-ae27-4c2b-b091-2f70b824288b"
}
}