diff --git a/.gitignore b/.gitignore
index 7ef8328..921165c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
.idea/
.php-cs-fixer.cache
.phpunit.cache/
+.phpdoc/cache
composer.lock
test*.php
vendor/
diff --git a/.phpdoc/template/base.html.twig b/.phpdoc/template/base.html.twig
new file mode 100644
index 0000000..ad6407e
--- /dev/null
+++ b/.phpdoc/template/base.html.twig
@@ -0,0 +1,13 @@
+{% extends 'layout.html.twig' %}
+
+{%
+ set topMenu = {
+ "menu": [
+ { "name": "What is Nostr?", "url": "https://nostr.how"}
+ ],
+ "social": [
+ { "iconClass": "fab fa-telegram", "url": "https://t.me/nostr_php"},
+ { "iconClass": "fab fa-github", "url": "https://github.com/nostrver-se/nostr-php"}
+ ]
+}
+%}
\ No newline at end of file
diff --git a/.phpdoc/template/components/header-title.css.twig b/.phpdoc/template/components/header-title.css.twig
new file mode 100644
index 0000000..5352b4f
--- /dev/null
+++ b/.phpdoc/template/components/header-title.css.twig
@@ -0,0 +1,54 @@
+.phpdocumentor-title {
+ box-sizing: border-box;
+ color: var(--title-text-color);
+ font-size: var(--text-xxl);
+ letter-spacing: .05rem;
+ font-weight: normal;
+ width: auto;
+ margin: 0;
+ display: flex;
+ align-items: center;
+}
+
+.phpdocumentor-title.-without-divider {
+ border: none;
+}
+
+.phpdocumentor-title__link {
+ transition: all .3s ease-out;
+ display: flex;
+ color: var(--title-text-color);
+ text-decoration: none;
+ font-weight: normal;
+ white-space: nowrap;
+ transform: scale(.75);
+ transform-origin: left;
+}
+
+.phpdocumentor-title__link:hover {
+ transform: perspective(15rem) translateX(.5rem);
+ font-weight: 600;
+}
+
+@media (min-width: {{ breakpoints['menu'] }}) {
+ .phpdocumentor-title {
+ width: 22%;
+ border-right: var(--sidebar-border-color) solid 1px;
+ }
+
+ .phpdocumentor-title__link {
+ transform-origin: left;
+ }
+}
+
+@media (min-width: {{ breakpoints['xl'] }}) {
+ .phpdocumentor-title__link {
+ transform: scale(.85);
+ }
+}
+
+@media (min-width: {{ breakpoints['xxl'] }}) {
+ .phpdocumentor-title__link {
+ transform: scale(1);
+ }
+}
\ No newline at end of file
diff --git a/.phpdoc/template/components/header-title.html.twig b/.phpdoc/template/components/header-title.html.twig
new file mode 100644
index 0000000..e8995b3
--- /dev/null
+++ b/.phpdoc/template/components/header-title.html.twig
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/.phpdoc/template/components/sidebar.html.twig b/.phpdoc/template/components/sidebar.html.twig
new file mode 100644
index 0000000..36f6021
--- /dev/null
+++ b/.phpdoc/template/components/sidebar.html.twig
@@ -0,0 +1,37 @@
+
+
+
\ No newline at end of file
diff --git a/.phpdoc/template/css/custom.css.twig b/.phpdoc/template/css/custom.css.twig
new file mode 100644
index 0000000..ae06635
--- /dev/null
+++ b/.phpdoc/template/css/custom.css.twig
@@ -0,0 +1 @@
+{# this file is meant as a catch-all location for consumers to provide overrides without having to override specific parts #}
\ No newline at end of file
diff --git a/.phpdoc/template/homepage.html.twig b/.phpdoc/template/homepage.html.twig
new file mode 100644
index 0000000..69653f1
--- /dev/null
+++ b/.phpdoc/template/homepage.html.twig
@@ -0,0 +1,3 @@
+{% block content %}
+ Custom homepage template here
+{% endblock %}
\ No newline at end of file
diff --git a/.phpdoc/template/index.html.twig b/.phpdoc/template/index.html.twig
new file mode 100644
index 0000000..4211b0f
--- /dev/null
+++ b/.phpdoc/template/index.html.twig
@@ -0,0 +1,22 @@
+{% extends 'base.html.twig' %}
+
+{% block content %}
+
+ {{ project.name }} documentation
+
+ {% set node = project.namespace %}
+
+ {{
+ include(
+ 'components/table-of-contents.html.twig',
+ {
+ 'node': project.namespace,
+ 'namespaces': usesNamespaces or not usesPackages ? node.children : [],
+ 'packages': usesPackages ? project.package.children : []
+ }
+ )
+ }}
+ {{ include('components/constants.html.twig', {'node': project.namespace}) }}
+ {{ include('components/functions.html.twig', {'node': project.namespace}) }}
+
+{% endblock %}
\ No newline at end of file
diff --git a/.phpdoc/template/layout.html.twig b/.phpdoc/template/layout.html.twig
new file mode 100644
index 0000000..ee345fa
--- /dev/null
+++ b/.phpdoc/template/layout.html.twig
@@ -0,0 +1,64 @@
+
+
+
+
+ {% block head %}
+ {% block title %}{{ project.name }}{% endblock %}
+ {% endblock %}
+
+
+ {{ renderBaseUrlHeader() }}
+
+
+
+ {% block stylesheets %}
+
+
+
+
+
+
+
+
+ {% endblock %}
+ {% block javascripts %}
+
+
+
+
+
+ {% endblock %}
+
+
+{% include 'components/header.html.twig' %}
+
+
+
+ {% include 'components/sidebar.html.twig' %}
+
+
+ {% if block('on_this_page') is defined %}
+
+ {% endif %}
+ {% block content %}{% endblock %}
+ {% if block('on_this_page') is defined %}
+
+
+ {% endif %}
+
+ {% include 'components/search-results.html.twig' %}
+
+ {{ include('components/back-to-top.html.twig') }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.phpdoc/template/template.xml b/.phpdoc/template/template.xml
new file mode 100644
index 0000000..48b6b83
--- /dev/null
+++ b/.phpdoc/template/template.xml
@@ -0,0 +1,12 @@
+
+
+ phpdoc
+ Sebastian Hagens
+ info@sebastix.nl
+ 1.0.0
+ default
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index d299dfc..fe20e32 100644
--- a/README.md
+++ b/README.md
@@ -246,6 +246,19 @@ All tests can be found in `tests`.
$ php vendor/bin/phpunit
```
+## Documentation with phpDocumentor
+
+Generate documentation with [phpDocumentor](https://phpdoc.org/).
+
+```console
+$ phpdoc
+```
+
+All documentation is saved in the `phpdoc.nostr-php.dev` directory where the `index.html` can be opened in any browser.
+This directory also serves as the root directory for https://phpdoc.nostr-php.dev.
+
+The documentation of phpDocumentor can be found at https://docs.phpdoc.org/.
+
## nostr-php script (cli client)
The library ships with a simple CLI client (`bin/nostr-php`) to post a short text note to a Nostr relay.
diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml
new file mode 100644
index 0000000..fcf7715
--- /dev/null
+++ b/phpdoc.dist.xml
@@ -0,0 +1,20 @@
+
+
+ nostr-php
+
+ phpdoc.nostr-php.dev
+
+
+
+
+ bin
+ src
+ tests
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/ConvertTest.html b/phpdoc.nostr-php.dev/classes/ConvertTest.html
new file mode 100644
index 0000000..9dff69a
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/ConvertTest.html
@@ -0,0 +1,379 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ConvertTest
+
+
+ extends TestCase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ testKeyConversion()
+
+ : mixed
+
+Tests key conversion.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ testKeyConversion()
+
+
+
+
+
+ Tests key conversion.
+
+
+ public
+ testKeyConversion ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/GenerateTest.html b/phpdoc.nostr-php.dev/classes/GenerateTest.html
new file mode 100644
index 0000000..0095ad9
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/GenerateTest.html
@@ -0,0 +1,379 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GenerateTest
+
+
+ extends TestCase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ testGetPublicKey()
+
+ : mixed
+
+Tests getting public key from private key.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ testGetPublicKey()
+
+
+
+
+
+ Tests getting public key from private key.
+
+
+ public
+ testGetPublicKey ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/RelayTest.html b/phpdoc.nostr-php.dev/classes/RelayTest.html
new file mode 100644
index 0000000..700358a
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/RelayTest.html
@@ -0,0 +1,379 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RelayTest
+
+
+ extends TestCase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ testSendNoteToRelay()
+
+ : mixed
+
+Tests sending a note to a relay.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ testSendNoteToRelay()
+
+
+
+
+
+ Tests sending a note to a relay.
+
+
+ public
+ testSendNoteToRelay ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/SerializeTest.html b/phpdoc.nostr-php.dev/classes/SerializeTest.html
new file mode 100644
index 0000000..bb1c9f2
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/SerializeTest.html
@@ -0,0 +1,381 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SerializeTest
+
+
+ extends TestCase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ testSerializeEvent()
+
+ : mixed
+
+Tests serializing event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ testSerializeEvent()
+
+
+
+
+
+ Tests serializing event.
+
+
+ public
+ testSerializeEvent ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/VerifyTest.html b/phpdoc.nostr-php.dev/classes/VerifyTest.html
new file mode 100644
index 0000000..fa45b53
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/VerifyTest.html
@@ -0,0 +1,483 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VerifyTest
+
+
+ extends TestCase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ invalidEventsProvider()
+
+ : array<string|int, mixed>
+
+
+
+ testInvalidEventsValidation()
+
+ : mixed
+
+
+
+ testValidEventValidation()
+
+ : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ invalidEventsProvider()
+
+
+
+
+
+
+
+ public
+ static invalidEventsProvider ( ) : array<string|int, mixed>
+
+
+
+
+
+
+
+
+ Return values
+ array<string|int, mixed>
+
+
+
+
+
+ testInvalidEventsValidation()
+
+
+
+
+
+
+
+ public
+ testInvalidEventsValidation ( string $json ) : mixed
+
+
+
+
+ Parameters
+
+
+ $json
+ : string
+
+
+
+
+
+
+
+
+
+
+ dataProvider
+
+
+
+
+
+
+
+
+
+
+
+
+ testValidEventValidation()
+
+
+
+
+
+
+
+ public
+ testValidEventValidation ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Application-Client.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Application-Client.html
new file mode 100644
index 0000000..5be7eaf
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Application-Client.html
@@ -0,0 +1,437 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ run()
+
+ : void
+
+Run the Nostr Client.
+
+
+ showHelp()
+
+ : void
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run()
+
+
+
+
+
+ Run the Nostr Client.
+
+
+ public
+ run ( $args ) : void
+
+
+
+
+ Parameters
+
+
+ $args
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+ showHelp()
+
+
+
+
+
+
+
+ protected
+ showHelp ( mixed $message ) : void
+
+
+
+
+ Parameters
+
+
+ $message
+ : mixed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-CommandResultInterface.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-CommandResultInterface.html
new file mode 100644
index 0000000..f36b798
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-CommandResultInterface.html
@@ -0,0 +1,459 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommandResultInterface
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ getEventId()
+
+ : string
+
+Returns the event id.
+
+
+ isSuccess()
+
+ : bool
+
+Returns whether the request was successful.
+
+
+ message()
+
+ : string
+
+Returns the message, if any.
+
+
+
+
+
+
+
+
+
+
+
+
+ getEventId()
+
+
+
+
+
+ Returns the event id.
+
+
+ public
+ getEventId ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ isSuccess()
+
+
+
+
+
+ Returns whether the request was successful.
+
+
+ public
+ isSuccess ( ) : bool
+
+
+
+
+
+
+
+
+
+
+
+
+ message()
+
+
+
+
+
+ Returns the message, if any.
+
+
+ public
+ message ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Event-Event.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Event-Event.html
new file mode 100644
index 0000000..f0d9358
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Event-Event.html
@@ -0,0 +1,1605 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Event
+
+
+
+
+
+ implements
+ EventInterface
+
+
+
+
+
+
+
+
+
+
+ Generic Nostr event class.
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ EventInterface Nostr Event interface.
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+ $content
+
+ : string
+
+The event content.
+
+
+ $created_at
+
+ : int
+
+The created at unix timestamp in seconds.
+
+
+ $id
+
+ : string
+
+The event id.
+
+
+ $kind
+
+ : int
+
+The event kind which is an integer between 0 and 65535.
+
+
+ $pubkey
+
+ : string
+
+32-bytes lowercase hex-encoded public key of the event creator.
+
+
+ $sig
+
+ : string
+
+The event signature.
+
+
+ $tags
+
+ : array<string|int, mixed>
+
+Tags of the event.
+
+
+
+
+ Methods
+
+
+
+
+
+ __construct()
+
+ : mixed
+
+Base constructor for events.
+
+
+ addTag()
+
+ : $this
+
+Add a single tag to the event.
+
+
+ getContent()
+
+ : string
+
+Get the event content.
+
+
+ getCreatedAt()
+
+ : int
+
+Get the event created time.
+
+
+ getId()
+
+ : string
+
+Get the event id.
+
+
+ getKind()
+
+ : int
+
+Returns the kind.
+
+
+ getPublicKey()
+
+ : string
+
+Get the public key.
+
+
+ getSignature()
+
+ : string
+
+Get the signature.
+
+
+ getTags()
+
+ : array<string|int, mixed>
+
+Get the event tags.
+
+
+ setContent()
+
+ : $this
+
+Set the event content.
+
+
+ setCreatedAt()
+
+ : $this
+
+Set the event created time.
+
+
+ setId()
+
+ : $this
+
+Set the event id.
+
+
+ setKind()
+
+ : $this
+
+Set the event kind.
+
+
+ setPublicKey()
+
+ : $this
+
+Set the public key.
+
+
+ setSignature()
+
+ : $this
+
+Set the signature.
+
+
+ setTags()
+
+ : $this
+
+Set the event tags with values.
+
+
+ toArray()
+
+ : array<string|int, mixed>
+
+Convert the object to an array.
+
+
+ toJson()
+
+ : string
+
+Convert the event object to a JSON string.
+
+
+ verify()
+
+ : bool
+
+Returns true if event object encodes to a valid Nostr event JSON string.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $content
+
+
+
+
+
+
+
+ The event content.
+
+
+ protected
+ string
+ $content
+ = ''
+
+
+
+
+
+
+
+
+ $created_at
+
+
+
+
+
+
+
+ The created at unix timestamp in seconds.
+
+
+ protected
+ int
+ $created_at
+ = 0
+
+
+
+
+
+
+
+
+ $id
+
+
+
+
+
+
+
+ The event id.
+
+
+ protected
+ string
+ $id
+ = ''
+
+ 32-bytes lowercase hex-encoded sha256 of the serialized event data.
+
+
+
+
+
+
+
+
+ $kind
+
+
+
+
+
+
+
+ The event kind which is an integer between 0 and 65535.
+
+
+ protected
+ int
+ $kind
+ = 0
+
+ Override this property in your custom events to set the value
+immediately.
+
+
+
+
+
+
+
+
+ $pubkey
+
+
+
+
+
+
+
+ 32-bytes lowercase hex-encoded public key of the event creator.
+
+
+ protected
+ string
+ $pubkey
+
+
+
+
+
+
+
+
+
+ $sig
+
+
+
+
+
+
+
+ The event signature.
+
+
+ protected
+ string
+ $sig
+ = ''
+
+ 64-bytes lowercase hex of the signature of the sha256 hash of the serialized event data, which is the same as the "id" field.
+
+
+
+
+
+
+
+
+
+
+ Tags of the event.
+
+
+ protected
+ array<string|int, mixed>
+ $tags
+ = []
+
+
+
+
+
+
+
+
+
+
+
+
+ __construct()
+
+
+
+
+
+ Base constructor for events.
+
+
+ public
+ __construct ( ) : mixed
+
+
+
+
+
+
+
+
+
+
+
+ addTag()
+
+
+
+
+
+ Add a single tag to the event.
+
+
+ public
+ addTag ( array<string|int, mixed> $tag ) : $this
+
+
+
+
+ Parameters
+
+
+ $tag
+ : array<string|int, mixed>
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ getContent()
+
+
+
+
+
+ Get the event content.
+
+
+ public
+ getContent ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getCreatedAt()
+
+
+
+
+
+ Get the event created time.
+
+
+ public
+ getCreatedAt ( ) : int
+
+
+
+
+
+
+
+
+
+
+
+
+ getId()
+
+
+
+
+
+ Get the event id.
+
+
+ public
+ getId ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getKind()
+
+
+
+
+
+ Returns the kind.
+
+
+ public
+ getKind ( ) : int
+
+
+
+
+
+
+
+
+
+
+
+
+ getPublicKey()
+
+
+
+
+
+ Get the public key.
+
+
+ public
+ getPublicKey ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getSignature()
+
+
+
+
+
+ Get the signature.
+
+
+ public
+ getSignature ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+ Get the event tags.
+
+
+ public
+ getTags ( ) : array<string|int, mixed>
+
+
+
+
+
+
+
+
+ Return values
+ array<string|int, mixed>
+
+
+
+
+
+ setContent()
+
+
+
+
+
+ Set the event content.
+
+
+ public
+ setContent ( string $content ) : $this
+
+
+
+
+ Parameters
+
+
+ $content
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setCreatedAt()
+
+
+
+
+
+ Set the event created time.
+
+
+ public
+ setCreatedAt ( int $time ) : $this
+
+
+
+
+ Parameters
+
+
+ $time
+ : int
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setId()
+
+
+
+
+
+ Set the event id.
+
+
+ public
+ setId ( string $id ) : $this
+
+
+
+
+ Parameters
+
+
+ $id
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setKind()
+
+
+
+
+
+ Set the event kind.
+
+
+ public
+ setKind ( int $kind ) : $this
+
+
+
+
+ Parameters
+
+
+ $kind
+ : int
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setPublicKey()
+
+
+
+
+
+ Set the public key.
+
+
+ public
+ setPublicKey ( string $public_key ) : $this
+
+
+
+
+ Parameters
+
+
+ $public_key
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setSignature()
+
+
+
+
+
+ Set the signature.
+
+
+ public
+ setSignature ( string $sig ) : $this
+
+
+
+
+ Parameters
+
+
+ $sig
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+
+
+ Set the event tags with values.
+
+
+ public
+ setTags ( array<string|int, mixed> $tags ) : $this
+
+
+
+
+ Parameters
+
+
+ $tags
+ : array<string|int, mixed>
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ toArray()
+
+
+
+
+
+ Convert the object to an array.
+
+
+ public
+ toArray ( [ array<string|int, mixed> $ignore_properties = [] ] ) : array<string|int, mixed>
+
+
+
+
+ Parameters
+
+
+ $ignore_properties
+ : array<string|int, mixed>
+ = []
+
+
+
+
+
+
+
+
+
+ Return values
+ array<string|int, mixed>
+
+
+
+
+
+ toJson()
+
+
+
+
+
+ Convert the event object to a JSON string.
+
+
+ public
+ toJson ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ verify()
+
+
+
+
+
+ Returns true if event object encodes to a valid Nostr event JSON string.
+
+
+ public
+ verify ( [ string $json = '' ] ) : bool
+
+
+
+
+ Parameters
+
+
+ $json
+ : string
+ = ''
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-EventInterface.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-EventInterface.html
new file mode 100644
index 0000000..b59ab50
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-EventInterface.html
@@ -0,0 +1,1214 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventInterface
+
+
+
+
+
+ Nostr Event interface.
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ addTag()
+
+ : $this
+
+Add a single tag to the event.
+
+
+ getContent()
+
+ : string
+
+Get the event content.
+
+
+ getCreatedAt()
+
+ : int
+
+Get the event created time.
+
+
+ getId()
+
+ : string
+
+Get the event id.
+
+
+ getKind()
+
+ : int
+
+Returns the kind.
+
+
+ getPublicKey()
+
+ : string
+
+Get the public key.
+
+
+ getSignature()
+
+ : string
+
+Get the signature.
+
+
+ getTags()
+
+ : array<string|int, mixed>
+
+Get the event tags.
+
+
+ setContent()
+
+ : $this
+
+Set the event content.
+
+
+ setCreatedAt()
+
+ : $this
+
+Set the event created time.
+
+
+ setId()
+
+ : $this
+
+Set the event id.
+
+
+ setKind()
+
+ : $this
+
+Set the event kind.
+
+
+ setPublicKey()
+
+ : $this
+
+Set the public key.
+
+
+ setSignature()
+
+ : $this
+
+Set the signature.
+
+
+ setTags()
+
+ : $this
+
+Set the event tags with values.
+
+
+ toArray()
+
+ : array<string|int, mixed>
+
+Convert the object to an array.
+
+
+ toJson()
+
+ : string
+
+Convert the event object to a JSON string.
+
+
+ verify()
+
+ : bool
+
+Returns true if event object encodes to a valid Nostr event JSON string.
+
+
+
+
+
+
+
+
+
+
+
+
+ addTag()
+
+
+
+
+
+ Add a single tag to the event.
+
+
+ public
+ addTag ( array<string|int, mixed> $tag ) : $this
+
+
+
+
+ Parameters
+
+
+ $tag
+ : array<string|int, mixed>
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ getContent()
+
+
+
+
+
+ Get the event content.
+
+
+ public
+ getContent ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getCreatedAt()
+
+
+
+
+
+ Get the event created time.
+
+
+ public
+ getCreatedAt ( ) : int
+
+
+
+
+
+
+
+
+
+
+
+
+ getId()
+
+
+
+
+
+ Get the event id.
+
+
+ public
+ getId ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getKind()
+
+
+
+
+
+ Returns the kind.
+
+
+ public
+ getKind ( ) : int
+
+
+
+
+
+
+
+
+
+
+
+
+ getPublicKey()
+
+
+
+
+
+ Get the public key.
+
+
+ public
+ getPublicKey ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getSignature()
+
+
+
+
+
+ Get the signature.
+
+
+ public
+ getSignature ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+ Get the event tags.
+
+
+ public
+ getTags ( ) : array<string|int, mixed>
+
+
+
+
+
+
+
+
+ Return values
+ array<string|int, mixed>
+
+
+
+
+
+ setContent()
+
+
+
+
+
+ Set the event content.
+
+
+ public
+ setContent ( string $content ) : $this
+
+
+
+
+ Parameters
+
+
+ $content
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setCreatedAt()
+
+
+
+
+
+ Set the event created time.
+
+
+ public
+ setCreatedAt ( int $time ) : $this
+
+
+
+ Format is a unix timestamp in seconds.
+
+
+ Parameters
+
+
+ $time
+ : int
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setId()
+
+
+
+
+
+ Set the event id.
+
+
+ public
+ setId ( string $id ) : $this
+
+
+
+
+ Parameters
+
+
+ $id
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setKind()
+
+
+
+
+
+ Set the event kind.
+
+
+ public
+ setKind ( int $kind ) : $this
+
+
+
+
+ Parameters
+
+
+ $kind
+ : int
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setPublicKey()
+
+
+
+
+
+ Set the public key.
+
+
+ public
+ setPublicKey ( string $public_key ) : $this
+
+
+
+
+ Parameters
+
+
+ $public_key
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ setSignature()
+
+
+
+
+
+ Set the signature.
+
+
+ public
+ setSignature ( string $sig ) : $this
+
+
+
+
+ Parameters
+
+
+ $sig
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+
+
+ Set the event tags with values.
+
+
+ public
+ setTags ( array<string|int, mixed> $tags ) : $this
+
+
+
+
+ Parameters
+
+
+ $tags
+ : array<string|int, mixed>
+
+
+
+
+
+
+
+
+
+ Return values
+ $this
+
+
+
+
+
+ toArray()
+
+
+
+
+
+ Convert the object to an array.
+
+
+ public
+ toArray ( [ array<string|int, mixed> $ignore_properties = [] ] ) : array<string|int, mixed>
+
+
+
+
+ Parameters
+
+
+ $ignore_properties
+ : array<string|int, mixed>
+ = []
+
+
+
+
+
+
+
+
+
+ Return values
+ array<string|int, mixed>
+
+
+
+
+
+ toJson()
+
+
+
+
+
+ Convert the event object to a JSON string.
+
+
+ public
+ toJson ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ verify()
+
+
+
+
+
+ Returns true if event object encodes to a valid Nostr event JSON string.
+
+
+ public
+ verify ( ) : bool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Key-Key.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Key-Key.html
new file mode 100644
index 0000000..e40b4b0
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Key-Key.html
@@ -0,0 +1,660 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ convertPrivateKeyToBech32()
+
+ : string
+
+Convert a private hex key to bech32.
+
+
+ convertPublicKeyToBech32()
+
+ : string
+
+Convert a public hex key to bech32.
+
+
+ convertToHex()
+
+ : string
+
+Convert a key to hex.
+
+
+ generatePrivateKey()
+
+ : string
+
+Generate private key as hex.
+
+
+ getPublicKey()
+
+ : string
+
+Generate public key from private key as hex.
+
+
+ convertToBech32()
+
+ : string
+
+Convert a hex key to bech32.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ convertPrivateKeyToBech32()
+
+
+
+
+
+ Convert a private hex key to bech32.
+
+
+ public
+ convertPrivateKeyToBech32 ( string $key ) : string
+
+
+
+
+ Parameters
+
+
+ $key
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ convertPublicKeyToBech32()
+
+
+
+
+
+ Convert a public hex key to bech32.
+
+
+ public
+ convertPublicKeyToBech32 ( string $key ) : string
+
+
+
+
+ Parameters
+
+
+ $key
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ convertToHex()
+
+
+
+
+
+ Convert a key to hex.
+
+
+ public
+ convertToHex ( string $key ) : string
+
+
+
+
+ Parameters
+
+
+ $key
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ generatePrivateKey()
+
+
+
+
+
+ Generate private key as hex.
+
+
+ public
+ generatePrivateKey ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ getPublicKey()
+
+
+
+
+
+ Generate public key from private key as hex.
+
+
+ public
+ getPublicKey ( string $private_hex ) : string
+
+
+
+
+ Parameters
+
+
+ $private_hex
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ convertToBech32()
+
+
+
+
+
+ Convert a hex key to bech32.
+
+
+ protected
+ convertToBech32 ( string $key , string $prefix ) : string
+
+
+
+
+ Parameters
+
+
+ $key
+ : string
+
+
+
+
+
+ $prefix
+ : string
+
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Message-EventMessage.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Message-EventMessage.html
new file mode 100644
index 0000000..bc2b925
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Message-EventMessage.html
@@ -0,0 +1,503 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventMessage
+
+
+
+
+
+ implements
+ MessageInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ MessageInterface
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+ $event
+
+ : EventInterface
+
+The event.
+
+
+
+
+ Methods
+
+
+
+
+
+ __construct()
+
+ : mixed
+
+
+
+ generate()
+
+ : string
+
+Generate the message ready to be sent to a relay.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $event
+
+
+
+
+
+
+
+ The event.
+
+
+ protected
+ EventInterface
+ $event
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __construct()
+
+
+
+
+
+
+
+ public
+ __construct ( EventInterface $event ) : mixed
+
+
+
+
+ Parameters
+
+
+ $event
+ : EventInterface
+
+
+
+
+
+
+
+
+
+
+
+
+ generate()
+
+
+
+
+
+ Generate the message ready to be sent to a relay.
+
+
+ public
+ generate ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-MessageInterface.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-MessageInterface.html
new file mode 100644
index 0000000..37583ef
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-MessageInterface.html
@@ -0,0 +1,371 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageInterface
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ generate()
+
+ : string
+
+Generate the message ready to be sent to a relay.
+
+
+
+
+
+
+
+
+
+
+
+
+ generate()
+
+
+
+
+
+ Generate the message ready to be sent to a relay.
+
+
+ public
+ generate ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-CommandResult.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-CommandResult.html
new file mode 100644
index 0000000..7251720
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-CommandResult.html
@@ -0,0 +1,677 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommandResult
+
+
+
+
+
+ implements
+ CommandResultInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ CommandResultInterface
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+ $eventId
+
+ : mixed|string
+
+The event ID.
+
+
+ $message
+
+ : string
+
+The message.
+
+
+ $success
+
+ : bool
+
+Whether the request was successful or not.
+
+
+
+
+ Methods
+
+
+
+
+
+ __construct()
+
+ : mixed
+
+Constructs the Relay Response.
+
+
+ getEventId()
+
+ : string
+
+Returns the event id.
+
+
+ isSuccess()
+
+ : bool
+
+Returns whether the request was successful.
+
+
+ message()
+
+ : string
+
+Returns the message, if any.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $eventId
+
+
+
+
+
+
+
+ The event ID.
+
+
+ protected
+ mixed|string
+ $eventId
+ = ''
+
+
+
+
+
+
+
+
+ $message
+
+
+
+
+
+
+
+ The message.
+
+
+ protected
+ string
+ $message
+ = ''
+
+
+
+
+
+
+
+
+ $success
+
+
+
+
+
+
+
+ Whether the request was successful or not.
+
+
+ protected
+ bool
+ $success
+ = false
+
+
+
+
+
+
+
+
+
+
+
+
+ __construct()
+
+
+
+
+
+ Constructs the Relay Response.
+
+
+ public
+ __construct ( array<string|int, mixed> $response ) : mixed
+
+
+
+
+ Parameters
+
+
+ $response
+ : array<string|int, mixed>
+
+
+
+
+
+
+
+
+
+
+
+
+ getEventId()
+
+
+
+
+
+ Returns the event id.
+
+
+ public
+ getEventId ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ isSuccess()
+
+
+
+
+
+ Returns whether the request was successful.
+
+
+ public
+ isSuccess ( ) : bool
+
+
+
+
+
+
+
+
+
+
+
+
+ message()
+
+
+
+
+
+ Returns the message, if any.
+
+
+ public
+ message ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-Relay.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-Relay.html
new file mode 100644
index 0000000..87d5fcc
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Relay-Relay.html
@@ -0,0 +1,600 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Relay
+
+
+
+
+
+ implements
+ RelayInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ RelayInterface
+
+
+
+
+
+
+
+ Properties
+
+
+
+
+
+ $payload
+
+ : string
+
+the payload to send.
+
+
+ $url
+
+ : string
+
+The relay URL.
+
+
+
+
+ Methods
+
+
+
+
+
+ __construct()
+
+ : mixed
+
+Constructs the Relay.
+
+
+ getUrl()
+
+ : string
+
+Get url of the relay.
+
+
+ send()
+
+ : CommandResultInterface
+
+Send the message to the relay.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $payload
+
+
+
+
+
+
+
+ the payload to send.
+
+
+ private
+ string
+ $payload
+
+
+
+
+
+
+
+
+
+ $url
+
+
+
+
+
+
+
+ The relay URL.
+
+
+ private
+ string
+ $url
+
+
+
+
+
+
+
+
+
+
+
+
+
+ __construct()
+
+
+
+
+
+ Constructs the Relay.
+
+
+ public
+ __construct ( string $websocket , MessageInterface $message ) : mixed
+
+
+
+
+ Parameters
+
+
+ $websocket
+ : string
+
+
+
+
+
+
+ $message
+ : MessageInterface
+
+
+
+
+
+
+
+
+
+
+
+
+ getUrl()
+
+
+
+
+
+ Get url of the relay.
+
+
+ public
+ getUrl ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ send()
+
+
+
+
+
+ Send the message to the relay.
+
+
+ public
+ send ( ) : CommandResultInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-RelayInterface.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-RelayInterface.html
new file mode 100644
index 0000000..bd2df02
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-RelayInterface.html
@@ -0,0 +1,415 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RelayInterface
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ getUrl()
+
+ : string
+
+Get url of the relay.
+
+
+ send()
+
+ : CommandResultInterface
+
+Send the message to the relay.
+
+
+
+
+
+
+
+
+
+
+
+
+ getUrl()
+
+
+
+
+
+ Get url of the relay.
+
+
+ public
+ getUrl ( ) : string
+
+
+
+
+
+
+
+
+ Return values
+ string
+
+
+
+
+
+ send()
+
+
+
+
+
+ Send the message to the relay.
+
+
+ public
+ send ( ) : CommandResultInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/classes/swentel-nostr-Sign-Sign.html b/phpdoc.nostr-php.dev/classes/swentel-nostr-Sign-Sign.html
new file mode 100644
index 0000000..b7c9c91
--- /dev/null
+++ b/phpdoc.nostr-php.dev/classes/swentel-nostr-Sign-Sign.html
@@ -0,0 +1,454 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Methods
+
+
+
+
+
+ serializeEvent()
+
+ : bool|string
+
+Serialize the event so the id can be created.
+
+
+ signEvent()
+
+ : void
+
+Sign an event.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ serializeEvent()
+
+
+
+
+
+ Serialize the event so the id can be created.
+
+
+ public
+ serializeEvent ( EventInterface $event ) : bool|string
+
+
+
+
+ Parameters
+
+
+ $event
+ : EventInterface
+
+
+
+
+
+
+
+
+
+ Return values
+ bool|string
+
+
+
+
+
+ signEvent()
+
+
+
+
+
+ Sign an event.
+
+
+ public
+ signEvent ( EventInterface $event , string $private_key ) : void
+
+
+
+
+ Parameters
+
+
+ $event
+ : EventInterface
+
+
+ The event to be signed.
+
+
+
+
+ $private_key
+ : string
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/css/base.css b/phpdoc.nostr-php.dev/css/base.css
new file mode 100644
index 0000000..f1e5041
--- /dev/null
+++ b/phpdoc.nostr-php.dev/css/base.css
@@ -0,0 +1,1230 @@
+
+
+:root {
+ /* Typography */
+ --font-primary: 'Open Sans', Helvetica, Arial, sans-serif;
+ --font-secondary: 'Open Sans', Helvetica, Arial, sans-serif;
+ --font-monospace: 'Source Code Pro', monospace;
+ --line-height--primary: 1.6;
+ --letter-spacing--primary: .05rem;
+ --text-base-size: 1em;
+ --text-scale-ratio: 1.2;
+
+ --text-xxs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio) / var(--text-scale-ratio));
+ --text-xs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio));
+ --text-sm: calc(var(--text-base-size) / var(--text-scale-ratio));
+ --text-md: var(--text-base-size);
+ --text-lg: calc(var(--text-base-size) * var(--text-scale-ratio));
+ --text-xl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio));
+ --text-xxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio));
+ --text-xxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio));
+ --text-xxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio));
+ --text-xxxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio));
+
+ --color-hue-red: 4;
+ --color-hue-pink: 340;
+ --color-hue-purple: 291;
+ --color-hue-deep-purple: 262;
+ --color-hue-indigo: 231;
+ --color-hue-blue: 207;
+ --color-hue-light-blue: 199;
+ --color-hue-cyan: 187;
+ --color-hue-teal: 174;
+ --color-hue-green: 122;
+ --color-hue-phpdocumentor-green: 96;
+ --color-hue-light-green: 88;
+ --color-hue-lime: 66;
+ --color-hue-yellow: 54;
+ --color-hue-amber: 45;
+ --color-hue-orange: 36;
+ --color-hue-deep-orange: 14;
+ --color-hue-brown: 16;
+
+ /* Colors */
+ --primary-color-hue: var(--color-hue-phpdocumentor-green, --color-hue-phpdocumentor-green);
+ --primary-color-saturation: 57%;
+ --primary-color: hsl(var(--primary-color-hue), var(--primary-color-saturation), 60%);
+ --primary-color-darken: hsl(var(--primary-color-hue), var(--primary-color-saturation), 40%);
+ --primary-color-darker: hsl(var(--primary-color-hue), var(--primary-color-saturation), 25%);
+ --primary-color-darkest: hsl(var(--primary-color-hue), var(--primary-color-saturation), 10%);
+ --primary-color-lighten: hsl(var(--primary-color-hue), calc(var(--primary-color-saturation) - 20%), 85%);
+ --primary-color-lighter: hsl(var(--primary-color-hue), calc(var(--primary-color-saturation) - 45%), 97.5%);
+ --dark-gray: #d1d1d1;
+ --light-gray: #f0f0f0;
+
+ --text-color: var(--primary-color-darkest);
+
+ --header-height: var(--spacing-xxxxl);
+ --header-bg-color: var(--primary-color);
+ --code-background-color: var(--primary-color-lighter);
+ --code-border-color: --primary-color-lighten;
+ --button-border-color: var(--primary-color-darken);
+ --button-color: transparent;
+ --button-color-primary: var(--primary-color);
+ --button-text-color: #555;
+ --button-text-color-primary: white;
+ --popover-background-color: rgba(255, 255, 255, 0.75);
+ --link-color-primary: var(--primary-color-darker);
+ --link-hover-color-primary: var(--primary-color-darkest);
+ --form-field-border-color: var(--dark-gray);
+ --form-field-color: #fff;
+ --admonition-success-color: var(--primary-color);
+ --admonition-border-color: silver;
+ --table-separator-color: var(--primary-color-lighten);
+ --title-text-color: var(--primary-color);
+
+ --sidebar-border-color: var(--primary-color-lighten);
+
+ /* Grid */
+ --container-width: 1400px;
+
+ /* Spacing */
+ --spacing-base-size: 1rem;
+ --spacing-scale-ratio: 1.5;
+
+ --spacing-xxxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio));
+ --spacing-xxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio));
+ --spacing-xs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio));
+ --spacing-sm: calc(var(--spacing-base-size) / var(--spacing-scale-ratio));
+ --spacing-md: var(--spacing-base-size);
+ --spacing-lg: calc(var(--spacing-base-size) * var(--spacing-scale-ratio));
+ --spacing-xl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio));
+ --spacing-xxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio));
+ --spacing-xxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio));
+ --spacing-xxxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio));
+
+ --border-radius-base-size: 3px;
+}
+
+/* Base Styles
+-------------------------------------------------- */
+body {
+ color: var(--text-color);
+ font-family: var(--font-primary);
+ font-size: var(--text-md);
+ letter-spacing: var(--letter-spacing--primary);
+ line-height: var(--line-height--primary);
+ width: 100%;
+}
+
+.phpdocumentor h1,
+.phpdocumentor h2,
+.phpdocumentor h3,
+.phpdocumentor h4,
+.phpdocumentor h5,
+.phpdocumentor h6 {
+ margin-bottom: var(--spacing-lg);
+ margin-top: var(--spacing-lg);
+ font-weight: 600;
+}
+
+.phpdocumentor h1 {
+ font-size: var(--text-xxxxl);
+ letter-spacing: var(--letter-spacing--primary);
+ line-height: 1.2;
+ margin-top: 0;
+}
+
+.phpdocumentor h2 {
+ font-size: var(--text-xxxl);
+ letter-spacing: var(--letter-spacing--primary);
+ line-height: 1.25;
+}
+
+.phpdocumentor h3 {
+ font-size: var(--text-xxl);
+ letter-spacing: var(--letter-spacing--primary);
+ line-height: 1.3;
+}
+
+.phpdocumentor h4 {
+ font-size: var(--text-xl);
+ letter-spacing: calc(var(--letter-spacing--primary) / 2);
+ line-height: 1.35;
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor h5 {
+ font-size: var(--text-lg);
+ letter-spacing: calc(var(--letter-spacing--primary) / 4);
+ line-height: 1.5;
+ margin-bottom: var(--spacing-md);
+ margin-top: var(--spacing-md);
+}
+
+.phpdocumentor h6 {
+ font-size: var(--text-md);
+ letter-spacing: 0;
+ line-height: var(--line-height--primary);
+ margin-bottom: var(--spacing-md);
+ margin-top: var(--spacing-md);
+}
+.phpdocumentor h1 .headerlink,
+.phpdocumentor h2 .headerlink,
+.phpdocumentor h3 .headerlink,
+.phpdocumentor h4 .headerlink,
+.phpdocumentor h5 .headerlink,
+.phpdocumentor h6 .headerlink
+{
+ display: none;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor h1 .headerlink,
+ .phpdocumentor h2 .headerlink,
+ .phpdocumentor h3 .headerlink,
+ .phpdocumentor h4 .headerlink,
+ .phpdocumentor h5 .headerlink,
+ .phpdocumentor h6 .headerlink {
+ display: inline;
+ transition: all .3s ease-in-out;
+ opacity: 0;
+ text-decoration: none;
+ color: silver;
+ font-size: 80%;
+ }
+
+ .phpdocumentor h1:hover .headerlink,
+ .phpdocumentor h2:hover .headerlink,
+ .phpdocumentor h3:hover .headerlink,
+ .phpdocumentor h4:hover .headerlink,
+ .phpdocumentor h5:hover .headerlink,
+ .phpdocumentor h6:hover .headerlink {
+ opacity: 1;
+ }
+}
+.phpdocumentor p {
+ margin-top: 0;
+ margin-bottom: var(--spacing-md);
+}
+.phpdocumentor figure {
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor figcaption {
+ text-align: center;
+ font-style: italic;
+ font-size: 80%;
+}
+
+.phpdocumentor-uml-diagram svg {
+ max-width: 100%;
+ height: auto !important;
+}
+.phpdocumentor-line {
+ border-top: 1px solid #E1E1E1;
+ border-width: 0;
+ margin-bottom: var(--spacing-xxl);
+ margin-top: var(--spacing-xxl);
+}
+.phpdocumentor-section {
+ box-sizing: border-box;
+ margin: 0 auto;
+ max-width: var(--container-width);
+ padding: 0 var(--spacing-sm);
+ position: relative;
+ width: 100%;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-section {
+ padding: 0 var(--spacing-lg);
+ }
+}
+
+@media (min-width: 1200px) {
+ .phpdocumentor-section {
+ padding: 0;
+ width: 95%;
+ }
+}
+.phpdocumentor-column {
+ box-sizing: border-box;
+ float: left;
+ width: 100%;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-column {
+ margin-left: 4%;
+ }
+
+ .phpdocumentor-column:first-child {
+ margin-left: 0;
+ }
+
+ .-one.phpdocumentor-column {
+ width: 4.66666666667%;
+ }
+
+ .-two.phpdocumentor-column {
+ width: 13.3333333333%;
+ }
+
+ .-three.phpdocumentor-column {
+ width: 22%;
+ }
+
+ .-four.phpdocumentor-column {
+ width: 30.6666666667%;
+ }
+
+ .-five.phpdocumentor-column {
+ width: 39.3333333333%;
+ }
+
+ .-six.phpdocumentor-column {
+ width: 48%;
+ }
+
+ .-seven.phpdocumentor-column {
+ width: 56.6666666667%;
+ }
+
+ .-eight.phpdocumentor-column {
+ width: 65.3333333333%;
+ }
+
+ .-nine.phpdocumentor-column {
+ width: 74.0%;
+ }
+
+ .-ten.phpdocumentor-column {
+ width: 82.6666666667%;
+ }
+
+ .-eleven.phpdocumentor-column {
+ width: 91.3333333333%;
+ }
+
+ .-twelve.phpdocumentor-column {
+ margin-left: 0;
+ width: 100%;
+ }
+
+ .-one-third.phpdocumentor-column {
+ width: 30.6666666667%;
+ }
+
+ .-two-thirds.phpdocumentor-column {
+ width: 65.3333333333%;
+ }
+
+ .-one-half.phpdocumentor-column {
+ width: 48%;
+ }
+
+ /* Offsets */
+ .-offset-by-one.phpdocumentor-column {
+ margin-left: 8.66666666667%;
+ }
+
+ .-offset-by-two.phpdocumentor-column {
+ margin-left: 17.3333333333%;
+ }
+
+ .-offset-by-three.phpdocumentor-column {
+ margin-left: 26%;
+ }
+
+ .-offset-by-four.phpdocumentor-column {
+ margin-left: 34.6666666667%;
+ }
+
+ .-offset-by-five.phpdocumentor-column {
+ margin-left: 43.3333333333%;
+ }
+
+ .-offset-by-six.phpdocumentor-column {
+ margin-left: 52%;
+ }
+
+ .-offset-by-seven.phpdocumentor-column {
+ margin-left: 60.6666666667%;
+ }
+
+ .-offset-by-eight.phpdocumentor-column {
+ margin-left: 69.3333333333%;
+ }
+
+ .-offset-by-nine.phpdocumentor-column {
+ margin-left: 78.0%;
+ }
+
+ .-offset-by-ten.phpdocumentor-column {
+ margin-left: 86.6666666667%;
+ }
+
+ .-offset-by-eleven.phpdocumentor-column {
+ margin-left: 95.3333333333%;
+ }
+
+ .-offset-by-one-third.phpdocumentor-column {
+ margin-left: 34.6666666667%;
+ }
+
+ .-offset-by-two-thirds.phpdocumentor-column {
+ margin-left: 69.3333333333%;
+ }
+
+ .-offset-by-one-half.phpdocumentor-column {
+ margin-left: 52%;
+ }
+}
+.phpdocumentor a {
+ color: var(--link-color-primary);
+}
+
+.phpdocumentor a:hover {
+ color: var(--link-hover-color-primary);
+}
+.phpdocumentor-button {
+ background-color: var(--button-color);
+ border: 1px solid var(--button-border-color);
+ border-radius: var(--border-radius-base-size);
+ box-sizing: border-box;
+ color: var(--button-text-color);
+ cursor: pointer;
+ display: inline-block;
+ font-size: var(--text-sm);
+ font-weight: 600;
+ height: 38px;
+ letter-spacing: .1rem;
+ line-height: 38px;
+ padding: 0 var(--spacing-xxl);
+ text-align: center;
+ text-decoration: none;
+ text-transform: uppercase;
+ white-space: nowrap;
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor-button .-wide {
+ width: 100%;
+}
+
+.phpdocumentor-button:hover,
+.phpdocumentor-button:focus {
+ border-color: #888;
+ color: #333;
+ outline: 0;
+}
+
+.phpdocumentor-button.-primary {
+ background-color: var(--button-color-primary);
+ border-color: var(--button-color-primary);
+ color: var(--button-text-color-primary);
+}
+
+.phpdocumentor-button.-primary:hover,
+.phpdocumentor-button.-primary:focus {
+ background-color: var(--link-color-primary);
+ border-color: var(--link-color-primary);
+ color: var(--button-text-color-primary);
+}
+.phpdocumentor form {
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor-field {
+ background-color: var(--form-field-color);
+ border: 1px solid var(--form-field-border-color);
+ border-radius: var(--border-radius-base-size);
+ box-shadow: none;
+ box-sizing: border-box;
+ height: 38px;
+ padding: var(--spacing-xxxs) var(--spacing-xxs); /* The 6px vertically centers text on FF, ignored by Webkit */
+ margin-bottom: var(--spacing-md);
+}
+
+/* Removes awkward default styles on some inputs for iOS */
+input[type="email"],
+input[type="number"],
+input[type="search"],
+input[type="text"],
+input[type="tel"],
+input[type="url"],
+input[type="password"],
+textarea {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+.phpdocumentor-textarea {
+ min-height: 65px;
+ padding-bottom: var(--spacing-xxxs);
+ padding-top: var(--spacing-xxxs);
+}
+
+.phpdocumentor-field:focus {
+ border: 1px solid var(--button-color-primary);
+ outline: 0;
+}
+
+label.phpdocumentor-label {
+ display: block;
+ margin-bottom: var(--spacing-xs);
+}
+
+.phpdocumentor-fieldset {
+ border-width: 0;
+ padding: 0;
+}
+
+input[type="checkbox"].phpdocumentor-field,
+input[type="radio"].phpdocumentor-field {
+ display: inline;
+}
+.phpdocumentor-column ul,
+div.phpdocumentor-list > ul,
+ul.phpdocumentor-list {
+ list-style: circle;
+}
+
+.phpdocumentor-column ol,
+div.phpdocumentor-list > ol,
+ol.phpdocumentor-list {
+ list-style: decimal;
+}
+
+
+.phpdocumentor-column ul,
+div.phpdocumentor-list > ul,
+ol.phpdocumentor-list,
+ul.phpdocumentor-list {
+ margin-top: 0;
+ padding-left: var(--spacing-md);
+ margin-bottom: var(--spacing-sm);
+}
+
+.phpdocumentor-column ul.-clean,
+div.phpdocumentor-list > ul.-clean,
+ul.phpdocumentor-list.-clean {
+ list-style: none;
+ padding-left: 0;
+}
+
+dl {
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor-column ul ul,
+div.phpdocumentor-list > ul ul,
+ul.phpdocumentor-list ul.phpdocumentor-list,
+ul.phpdocumentor-list ol.phpdocumentor-list,
+ol.phpdocumentor-list ol.phpdocumentor-list,
+ol.phpdocumentor-list ul.phpdocumentor-list {
+ font-size: var(--text-sm);
+ margin: 0 0 0 calc(var(--spacing-xs) * 2);
+}
+
+.phpdocumentor-column ul li,
+.phpdocumentor-list li {
+ padding-bottom: var(--spacing-xs);
+}
+
+.phpdocumentor dl dt {
+ margin-bottom: var(--spacing-xs);
+}
+
+.phpdocumentor dl dd {
+ margin-bottom: var(--spacing-md);
+}
+.phpdocumentor pre {
+ margin-bottom: var(--spacing-md);
+}
+
+.phpdocumentor-code {
+ font-family: var(--font-monospace);
+ background: var(--code-background-color);
+ border: 1px solid var(--code-border-color);
+ border-radius: var(--border-radius-base-size);
+ font-size: var(--text-sm);
+ padding: var(--spacing-sm) var(--spacing-md);
+ width: 100%;
+ box-sizing: border-box;
+}
+
+.phpdocumentor-code.-dark {
+ background: var(--primary-color-darkest);
+ color: var(--light-gray);
+ box-shadow: 0 2px 3px var(--dark-gray);
+}
+
+pre > .phpdocumentor-code {
+ display: block;
+ white-space: pre;
+}
+.phpdocumentor blockquote {
+ border-left: 4px solid var(--primary-color-darken);
+ margin: var(--spacing-md) 0;
+ padding: var(--spacing-xs) var(--spacing-sm);
+ color: var(--primary-color-darker);
+ font-style: italic;
+}
+
+.phpdocumentor blockquote p:last-of-type {
+ margin-bottom: 0;
+}
+.phpdocumentor table {
+ margin-bottom: var(--spacing-md);
+}
+
+th.phpdocumentor-heading,
+td.phpdocumentor-cell {
+ border-bottom: 1px solid var(--table-separator-color);
+ padding: var(--spacing-sm) var(--spacing-md);
+ text-align: left;
+}
+
+th.phpdocumentor-heading:first-child,
+td.phpdocumentor-cell:first-child {
+ padding-left: 0;
+}
+
+th.phpdocumentor-heading:last-child,
+td.phpdocumentor-cell:last-child {
+ padding-right: 0;
+}
+.phpdocumentor-label-line {
+ display: flex;
+ flex-direction: row;
+ gap: 1rem
+}
+
+.phpdocumentor-label {
+ background: #f6f6f6;
+ border-radius: .25rem;
+ font-size: 80%;
+ display: inline-block;
+ overflow: hidden
+}
+
+/*
+It would be better if the phpdocumentor-element class were to become a flex element with a gap, but for #3337 that
+is too big a fix and needs to be done in a new design iteration.
+*/
+.phpdocumentor-signature + .phpdocumentor-label-line .phpdocumentor-label {
+ margin-top: var(--spacing-sm);
+}
+
+.phpdocumentor-label span {
+ display: inline-block;
+ padding: .125rem .5rem;
+}
+
+.phpdocumentor-label--success span:last-of-type {
+ background: #abe1ab;
+}
+
+.phpdocumentor-header {
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ height: auto;
+ padding: var(--spacing-md) var(--spacing-md);
+}
+
+.phpdocumentor-header__menu-button {
+ position: absolute;
+ top: -100%;
+ left: -100%;
+}
+
+.phpdocumentor-header__menu-icon {
+ font-size: 2rem;
+ color: var(--primary-color);
+}
+
+.phpdocumentor-header__menu-button:checked ~ .phpdocumentor-topnav {
+ max-height: 250px;
+ padding-top: var(--spacing-md);
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-header {
+ flex-direction: row;
+ padding: var(--spacing-lg) var(--spacing-lg);
+ min-height: var(--header-height);
+ }
+
+ .phpdocumentor-header__menu-icon {
+ display: none;
+ }
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-header {
+ padding-top: 0;
+ padding-bottom: 0;
+ }
+}
+@media (min-width: 1200px) {
+ .phpdocumentor-header {
+ padding: 0;
+ }
+}
+.phpdocumentor-title {
+ box-sizing: border-box;
+ color: var(--title-text-color);
+ font-size: var(--text-xxl);
+ letter-spacing: .05rem;
+ font-weight: normal;
+ width: auto;
+ margin: 0;
+ display: flex;
+ align-items: center;
+}
+
+.phpdocumentor-title.-without-divider {
+ border: none;
+}
+
+.phpdocumentor-title__link {
+ transition: all .3s ease-out;
+ display: flex;
+ color: var(--title-text-color);
+ text-decoration: none;
+ font-weight: normal;
+ white-space: nowrap;
+ transform: scale(.75);
+ transform-origin: left;
+}
+
+.phpdocumentor-title__link:hover {
+ transform: perspective(15rem) translateX(.5rem);
+ font-weight: 600;
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-title {
+ width: 22%;
+ border-right: var(--sidebar-border-color) solid 1px;
+ }
+
+ .phpdocumentor-title__link {
+ transform-origin: left;
+ }
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-title__link {
+ transform: scale(.85);
+ }
+}
+
+@media (min-width: 1200px) {
+ .phpdocumentor-title__link {
+ transform: scale(1);
+ }
+}.phpdocumentor-topnav {
+ display: flex;
+ align-items: center;
+ margin: 0;
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.2s ease-out;
+ flex-basis: 100%;
+}
+
+.phpdocumentor-topnav__menu {
+ text-align: right;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ flex: 1;
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: center;
+}
+
+.phpdocumentor-topnav__menu-item {
+ margin: 0;
+ width: 100%;
+ display: inline-block;
+ text-align: center;
+ padding: var(--spacing-sm) 0
+}
+
+.phpdocumentor-topnav__menu-item.-social {
+ width: auto;
+ padding: var(--spacing-sm)
+}
+
+.phpdocumentor-topnav__menu-item a {
+ display: inline-block;
+ color: var(--text-color);
+ text-decoration: none;
+ font-size: var(--text-lg);
+ transition: all .3s ease-out;
+ border-bottom: 1px dotted transparent;
+ line-height: 1;
+}
+
+.phpdocumentor-topnav__menu-item a:hover {
+ transform: perspective(15rem) translateY(.1rem);
+ border-bottom: 1px dotted var(--text-color);
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-topnav {
+ max-height: none;
+ overflow: visible;
+ flex-basis: auto;
+ }
+
+ .phpdocumentor-topnav__menu {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: flex-end;
+ }
+
+ .phpdocumentor-topnav__menu-item,
+ .phpdocumentor-topnav__menu-item.-social {
+ width: auto;
+ display: inline;
+ text-align: right;
+ padding: 0 0 0 var(--spacing-md)
+ }
+}
+.phpdocumentor-sidebar {
+ margin: 0;
+ overflow: hidden;
+ max-height: 0;
+}
+
+.phpdocumentor .phpdocumentor-sidebar .phpdocumentor-list {
+ padding: var(--spacing-xs) var(--spacing-md);
+ list-style: none;
+ margin: 0;
+}
+
+.phpdocumentor .phpdocumentor-sidebar li {
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ padding: 0 0 var(--spacing-xxxs) var(--spacing-md);
+}
+
+.phpdocumentor .phpdocumentor-sidebar abbr,
+.phpdocumentor .phpdocumentor-sidebar a {
+ text-decoration: none;
+ border-bottom: none;
+ color: var(--text-color);
+ font-size: var(--text-md);
+ padding-left: 0;
+ transition: padding-left .4s ease-out;
+}
+
+.phpdocumentor .phpdocumentor-sidebar a:hover,
+.phpdocumentor .phpdocumentor-sidebar a.-active {
+ padding-left: 5px;
+ font-weight: 600;
+}
+
+.phpdocumentor .phpdocumentor-sidebar__category > * {
+ border-left: 1px solid var(--primary-color-lighten);
+}
+
+.phpdocumentor .phpdocumentor-sidebar__category {
+ margin-bottom: var(--spacing-lg);
+}
+
+.phpdocumentor .phpdocumentor-sidebar__category-header {
+ font-size: var(--text-md);
+ margin-top: 0;
+ margin-bottom: var(--spacing-xs);
+ color: var(--link-color-primary);
+ font-weight: 600;
+ border-left: 0;
+}
+
+.phpdocumentor .phpdocumentor-sidebar__root-package,
+.phpdocumentor .phpdocumentor-sidebar__root-namespace {
+ font-size: var(--text-md);
+ margin: 0;
+ padding-top: var(--spacing-xs);
+ padding-left: var(--spacing-md);
+ color: var(--text-color);
+ font-weight: normal;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-sidebar {
+ border-right: var(--sidebar-border-color) solid 1px;
+ }
+}
+
+.phpdocumentor-sidebar__menu-button {
+ position: absolute;
+ top: -100%;
+ left: -100%;
+}
+
+.phpdocumentor-sidebar__menu-icon {
+ font-size: var(--text-md);
+ font-weight: 600;
+ background: var(--primary-color);
+ color: white;
+ margin: 0 0 var(--spacing-lg);
+ display: block;
+ padding: var(--spacing-sm);
+ text-align: center;
+ border-radius: 3px;
+ text-transform: uppercase;
+ letter-spacing: .15rem;
+}
+
+.phpdocumentor-sidebar__menu-button:checked ~ .phpdocumentor-sidebar {
+ max-height: 100%;
+ padding-top: var(--spacing-md);
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-sidebar {
+ overflow: visible;
+ max-height: 100%;
+ }
+
+ .phpdocumentor-sidebar__menu-icon {
+ display: none;
+ }
+}
+.phpdocumentor-admonition {
+ border: 1px solid var(--admonition-border-color);
+ border-radius: var(--border-radius-base-size);
+ border-color: var(--primary-color-lighten);
+ background-color: var(--primary-color-lighter);
+ padding: var(--spacing-lg);
+ margin: var(--spacing-lg) 0;
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+}
+
+.phpdocumentor-admonition p:last-of-type {
+ margin-bottom: 0;
+}
+
+.phpdocumentor-admonition--success,
+.phpdocumentor-admonition.-success {
+ border-color: var(--admonition-success-color);
+}
+
+.phpdocumentor-admonition__icon {
+ margin-right: var(--spacing-md);
+ color: var(--primary-color);
+ max-width: 3rem;
+}
+.phpdocumentor ul.phpdocumentor-breadcrumbs {
+ font-size: var(--text-md);
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.phpdocumentor ul.phpdocumentor-breadcrumbs a {
+ color: var(--text-color);
+ text-decoration: none;
+}
+
+.phpdocumentor ul.phpdocumentor-breadcrumbs > li {
+ display: inline-block;
+ margin: 0;
+}
+
+.phpdocumentor ul.phpdocumentor-breadcrumbs > li + li:before {
+ color: var(--dark-gray);
+ content: "\\\A0";
+ padding: 0;
+}
+.phpdocumentor .phpdocumentor-back-to-top {
+ position: fixed;
+ bottom: 2rem;
+ font-size: 2.5rem;
+ opacity: .25;
+ transition: all .3s ease-in-out;
+ right: 2rem;
+}
+
+.phpdocumentor .phpdocumentor-back-to-top:hover {
+ color: var(--link-color-primary);
+ opacity: 1;
+}
+.phpdocumentor-search {
+ position: relative;
+ display: none; /** disable by default for non-js flow */
+ opacity: .3; /** white-out default for loading indication */
+ transition: opacity .3s, background .3s;
+ margin: var(--spacing-sm) 0;
+ flex: 1;
+ min-width: 100%;
+}
+
+.phpdocumentor-search label {
+ display: flex;
+ align-items: center;
+ flex: 1;
+}
+
+.phpdocumentor-search__icon {
+ color: var(--primary-color);
+ margin-right: var(--spacing-sm);
+ width: 1rem;
+ height: 1rem;
+}
+
+.phpdocumentor-search--enabled {
+ display: flex;
+}
+
+.phpdocumentor-search--active {
+ opacity: 1;
+}
+
+.phpdocumentor-search input:disabled {
+ background-color: lightgray;
+}
+
+.phpdocumentor-search__field:focus,
+.phpdocumentor-search__field {
+ margin-bottom: 0;
+ border: 0;
+ border-bottom: 2px solid var(--primary-color);
+ padding: 0;
+ border-radius: 0;
+ flex: 1;
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-search {
+ min-width: auto;
+ max-width: 20rem;
+ margin: 0 0 0 auto;
+ }
+}
+.phpdocumentor-search-results {
+ backdrop-filter: blur(5px);
+ background: var(--popover-background-color);
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 0;
+ opacity: 1;
+ pointer-events: all;
+
+ transition: opacity .3s, background .3s;
+}
+
+.phpdocumentor-search-results--hidden {
+ background: transparent;
+ backdrop-filter: blur(0);
+ opacity: 0;
+ pointer-events: none;
+}
+
+.phpdocumentor-search-results__dialog {
+ width: 100%;
+ background: white;
+ max-height: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.phpdocumentor-search-results__body {
+ overflow: auto;
+}
+
+.phpdocumentor-search-results__header {
+ padding: var(--spacing-lg);
+ display: flex;
+ justify-content: space-between;
+ background: var(--primary-color-darken);
+ color: white;
+ align-items: center;
+}
+
+.phpdocumentor-search-results__close {
+ font-size: var(--text-xl);
+ background: none;
+ border: none;
+ padding: 0;
+ margin: 0;
+}
+
+.phpdocumentor .phpdocumentor-search-results__title {
+ font-size: var(--text-xl);
+ margin-bottom: 0;
+}
+
+.phpdocumentor-search-results__entries {
+ list-style: none;
+ padding: 0 var(--spacing-lg);
+ margin: 0;
+}
+
+.phpdocumentor-search-results__entry {
+ border-bottom: 1px solid var(--table-separator-color);
+ padding: var(--spacing-sm) 0;
+ text-align: left;
+}
+
+.phpdocumentor-search-results__entry a {
+ display: block;
+}
+
+.phpdocumentor-search-results__entry small {
+ margin-top: var(--spacing-xs);
+ margin-bottom: var(--spacing-md);
+ color: var(--primary-color-darker);
+ display: block;
+ word-break: break-word;
+}
+
+.phpdocumentor-search-results__entry h3 {
+ font-size: var(--text-lg);
+ margin: 0;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-search-results {
+ padding: 0 var(--spacing-lg);
+ }
+
+ .phpdocumentor-search-results__entry h3 {
+ font-size: var(--text-xxl);
+ }
+
+ .phpdocumentor-search-results__dialog {
+ margin: var(--spacing-xl) auto;
+ max-width: 40rem;
+ background: white;
+ border: 1px solid silver;
+ box-shadow: 0 2px 5px silver;
+ max-height: 40rem;
+ border-radius: 3px;
+ }
+}
+.phpdocumentor-modal {
+ position: fixed;
+ width: 100vw;
+ height: 100vh;
+ opacity: 0;
+ visibility: hidden;
+ transition: all 0.3s ease;
+ top: 0;
+ left: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 1;
+}
+
+.phpdocumentor-modal__open {
+ visibility: visible;
+ opacity: 1;
+ transition-delay: 0s;
+}
+
+.phpdocumentor-modal-bg {
+ position: absolute;
+ background: gray;
+ opacity: 50%;
+ width: 100%;
+ height: 100%;
+}
+
+.phpdocumentor-modal-container {
+ border-radius: 1em;
+ background: #fff;
+ position: relative;
+ padding: 2em;
+ box-sizing: border-box;
+ max-width:100vw;
+}
+
+.phpdocumentor-modal__close {
+ position: absolute;
+ right: 0.75em;
+ top: 0.75em;
+ outline: none;
+ appearance: none;
+ color: var(--primary-color);
+ background: none;
+ border: 0px;
+ font-weight: bold;
+ cursor: pointer;
+}
+.phpdocumentor-on-this-page__sidebar {
+ display: none;
+}
+
+.phpdocumentor-on-this-page__title {
+ display: block;
+ font-weight: bold;
+ margin-bottom: var(--spacing-sm);
+ color: var(--link-color-primary);
+}
+
+@media (min-width: 1000px) {
+ .phpdocumentor-on-this-page__sidebar {
+ display: block;
+ position: relative;
+ }
+
+ .phpdocumentor-on-this-page__content::-webkit-scrollbar,
+ [scrollbars]::-webkit-scrollbar {
+ height: 8px;
+ width: 8px;
+ }
+
+ .phpdocumentor-on-this-page__content::-webkit-scrollbar-corner,
+ [scrollbars]::-webkit-scrollbar-corner {
+ background: 0;
+ }
+
+ .phpdocumentor-on-this-page__content::-webkit-scrollbar-thumb,
+ [scrollbars]::-webkit-scrollbar-thumb {
+ background: rgba(128,134,139,0.26);
+ border-radius: 8px;
+ }
+
+ .phpdocumentor-on-this-page__content {
+ position: sticky;
+ height: calc(100vh - var(--header-height));
+ overflow-y: auto;
+ border-left: 1px solid var(--sidebar-border-color);
+ padding-left: var(--spacing-lg);
+ font-size: 90%;
+ top: -1px; /* Needed for the javascript to make the .-stuck trick work */
+ flex: 0 1 auto;
+ width: 15vw;
+ }
+
+ .phpdocumentor-on-this-page__content.-stuck {
+ height: 100vh;
+ }
+
+ .phpdocumentor-on-this-page__content li {
+ word-break: break-all;
+ line-height: normal;
+ }
+}
+
+/* Used for screen readers and such */
+.visually-hidden {
+ display: none;
+}
+
+.float-right {
+ float: right;
+}
+
+.float-left {
+ float: left;
+}
diff --git a/phpdoc.nostr-php.dev/css/normalize.css b/phpdoc.nostr-php.dev/css/normalize.css
new file mode 100644
index 0000000..653dc00
--- /dev/null
+++ b/phpdoc.nostr-php.dev/css/normalize.css
@@ -0,0 +1,427 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none !important;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: var(--font-monospace);
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/phpdoc.nostr-php.dev/css/template.css b/phpdoc.nostr-php.dev/css/template.css
new file mode 100644
index 0000000..898b676
--- /dev/null
+++ b/phpdoc.nostr-php.dev/css/template.css
@@ -0,0 +1,271 @@
+
+.phpdocumentor-content {
+ position: relative;
+ display: flex;
+ gap: var(--spacing-md);
+}
+
+.phpdocumentor-content > section:first-of-type {
+ width: 75%;
+ flex: 1 1 auto;
+}
+
+@media (min-width: 1900px) {
+ .phpdocumentor-content > section:first-of-type {
+ width: 100%;
+ flex: 1 1 auto;
+ }
+}
+
+.phpdocumentor .phpdocumentor-content__title {
+ margin-top: 0;
+}
+.phpdocumentor-summary {
+ font-style: italic;
+}
+.phpdocumentor-description {
+ margin-bottom: var(--spacing-md);
+}
+.phpdocumentor-element {
+ position: relative;
+}
+
+.phpdocumentor-element .phpdocumentor-element {
+ border: 1px solid var(--primary-color-lighten);
+ margin-bottom: var(--spacing-md);
+ padding: var(--spacing-xs);
+ border-radius: 5px;
+}
+
+.phpdocumentor-element.-deprecated .phpdocumentor-element__name {
+ text-decoration: line-through;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-element .phpdocumentor-element {
+ margin-bottom: var(--spacing-lg);
+ padding: var(--spacing-md);
+ }
+}
+
+.phpdocumentor-element__modifier {
+ font-size: var(--text-xxs);
+ padding: calc(var(--spacing-base-size) / 4) calc(var(--spacing-base-size) / 2);
+ color: var(--text-color);
+ background-color: var(--light-gray);
+ border-radius: 3px;
+ text-transform: uppercase;
+}
+
+.phpdocumentor .phpdocumentor-elements__header {
+ margin-top: var(--spacing-xxl);
+ margin-bottom: var(--spacing-lg);
+}
+
+.phpdocumentor .phpdocumentor-element__name {
+ line-height: 1;
+ margin-top: 0;
+ font-weight: 300;
+ font-size: var(--text-lg);
+ word-break: break-all;
+ margin-bottom: var(--spacing-sm);
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor .phpdocumentor-element__name {
+ font-size: var(--text-xl);
+ margin-bottom: var(--spacing-xs);
+ }
+}
+
+@media (min-width: 1200px) {
+ .phpdocumentor .phpdocumentor-element__name {
+ margin-bottom: var(--spacing-md);
+ }
+}
+
+.phpdocumentor-element__package,
+.phpdocumentor-element__extends,
+.phpdocumentor-element__implements {
+ display: block;
+ font-size: var(--text-xxs);
+ font-weight: normal;
+ opacity: .7;
+}
+
+.phpdocumentor-element__package .phpdocumentor-breadcrumbs {
+ display: inline;
+}
+.phpdocumentor .phpdocumentor-signature {
+ display: block;
+ font-size: var(--text-sm);
+ border: 1px solid #f0f0f0;
+}
+
+.phpdocumentor .phpdocumentor-signature.-deprecated .phpdocumentor-signature__name {
+ text-decoration: line-through;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor .phpdocumentor-signature {
+ margin-left: calc(var(--spacing-xl) * -1);
+ width: calc(100% + var(--spacing-xl));
+ }
+}
+
+.phpdocumentor-table-of-contents {
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry {
+ margin-bottom: var(--spacing-xxs);
+ margin-left: 2rem;
+ display: flex;
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > a {
+ flex: 0 1 auto;
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > span {
+ flex: 1;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:after {
+ content: '';
+ height: 12px;
+ width: 12px;
+ left: 16px;
+ position: absolute;
+}
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-private:after {
+ background: url('data:image/svg+xml;utf8, ') no-repeat;
+}
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-protected:after {
+ left: 13px;
+ background: url('data:image/svg+xml;utf8, ') no-repeat;
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:before {
+ width: 1.25rem;
+ height: 1.25rem;
+ line-height: 1.25rem;
+ background: transparent url('data:image/svg+xml;utf8, ') no-repeat center center;
+ content: '';
+ position: absolute;
+ left: 0;
+ border-radius: 50%;
+ font-weight: 600;
+ color: white;
+ text-align: center;
+ font-size: .75rem;
+ margin-top: .2rem;
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-method:before {
+ content: 'M';
+ color: '';
+ background-image: url('data:image/svg+xml;utf8, ');
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-function:before {
+ content: 'M';
+ color: ' 96';
+ background-image: url('data:image/svg+xml;utf8, ');
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-property:before {
+ content: 'P'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-constant:before {
+ content: 'C';
+ background-color: transparent;
+ background-image: url('data:image/svg+xml;utf8, ');
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-class:before {
+ content: 'C'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-interface:before {
+ content: 'I'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-trait:before {
+ content: 'T'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-namespace:before {
+ content: 'N'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-package:before {
+ content: 'P'
+}
+
+.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-enum:before {
+ content: 'E'
+}
+
+.phpdocumentor-table-of-contents dd {
+ font-style: italic;
+ margin-left: 2rem;
+}
+.phpdocumentor-element-found-in {
+ display: none;
+}
+
+@media (min-width: 550px) {
+ .phpdocumentor-element-found-in {
+ display: block;
+ font-size: var(--text-sm);
+ color: gray;
+ margin-bottom: 1rem;
+ }
+}
+
+@media (min-width: 1200px) {
+ .phpdocumentor-element-found-in {
+ position: absolute;
+ top: var(--spacing-sm);
+ right: var(--spacing-sm);
+ font-size: var(--text-sm);
+ margin-bottom: 0;
+ }
+}
+
+.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source {
+ flex: 0 1 auto;
+ display: inline-flex;
+}
+
+.phpdocumentor-element-found-in .phpdocumentor-element-found-in__source:after {
+ width: 1.25rem;
+ height: 1.25rem;
+ line-height: 1.25rem;
+ background: transparent url('data:image/svg+xml;utf8, ') no-repeat center center;
+ content: '';
+ left: 0;
+ border-radius: 50%;
+ font-weight: 600;
+ text-align: center;
+ font-size: .75rem;
+ margin-top: .2rem;
+}
+.phpdocumentor-class-graph {
+ width: 100%; height: 600px; border:1px solid black; overflow: hidden
+}
+
+.phpdocumentor-class-graph__graph {
+ width: 100%;
+}
+.phpdocumentor-tag-list__definition {
+ display: flex;
+}
+
+.phpdocumentor-tag-link {
+ margin-right: var(--spacing-sm);
+}
diff --git a/phpdoc.nostr-php.dev/files/src-application-client.html b/phpdoc.nostr-php.dev/files/src-application-client.html
new file mode 100644
index 0000000..bd24e01
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-application-client.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Client.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-commandresultinterface.html b/phpdoc.nostr-php.dev/files/src-commandresultinterface.html
new file mode 100644
index 0000000..dfe90fb
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-commandresultinterface.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommandResultInterface.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ CommandResultInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-event-event.html b/phpdoc.nostr-php.dev/files/src-event-event.html
new file mode 100644
index 0000000..f88d663
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-event-event.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Event.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Event Generic Nostr event class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-eventinterface.html b/phpdoc.nostr-php.dev/files/src-eventinterface.html
new file mode 100644
index 0000000..1efd736
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-eventinterface.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventInterface.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ EventInterface Nostr Event interface.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-examples-verify.html b/phpdoc.nostr-php.dev/files/src-examples-verify.html
new file mode 100644
index 0000000..2cbcc09
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-examples-verify.html
@@ -0,0 +1,290 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ verify.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-key-key.html b/phpdoc.nostr-php.dev/files/src-key-key.html
new file mode 100644
index 0000000..00bd933
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-key-key.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Key.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-message-eventmessage.html b/phpdoc.nostr-php.dev/files/src-message-eventmessage.html
new file mode 100644
index 0000000..81002b0
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-message-eventmessage.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventMessage.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ EventMessage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-messageinterface.html b/phpdoc.nostr-php.dev/files/src-messageinterface.html
new file mode 100644
index 0000000..762f2c3
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-messageinterface.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MessageInterface.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ MessageInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-relay-commandresult.html b/phpdoc.nostr-php.dev/files/src-relay-commandresult.html
new file mode 100644
index 0000000..1448979
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-relay-commandresult.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CommandResult.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ CommandResult
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-relay-relay.html b/phpdoc.nostr-php.dev/files/src-relay-relay.html
new file mode 100644
index 0000000..50919b8
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-relay-relay.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Relay.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Relay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-relayinterface.html b/phpdoc.nostr-php.dev/files/src-relayinterface.html
new file mode 100644
index 0000000..6448127
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-relayinterface.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RelayInterface.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+ Interfaces
+
+
+
+
+ RelayInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/src-sign-sign.html b/phpdoc.nostr-php.dev/files/src-sign-sign.html
new file mode 100644
index 0000000..090e7bc
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/src-sign-sign.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sign.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Sign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/tests-converttest.html b/phpdoc.nostr-php.dev/files/tests-converttest.html
new file mode 100644
index 0000000..efec96b
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/tests-converttest.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ConvertTest.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ ConvertTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/tests-generatetest.html b/phpdoc.nostr-php.dev/files/tests-generatetest.html
new file mode 100644
index 0000000..ee5470b
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/tests-generatetest.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GenerateTest.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ GenerateTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/tests-relaytest.html b/phpdoc.nostr-php.dev/files/tests-relaytest.html
new file mode 100644
index 0000000..f969444
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/tests-relaytest.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RelayTest.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ RelayTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/tests-serializetest.html b/phpdoc.nostr-php.dev/files/tests-serializetest.html
new file mode 100644
index 0000000..19ffeaa
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/tests-serializetest.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SerializeTest.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ SerializeTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/files/tests-verifytest.html b/phpdoc.nostr-php.dev/files/tests-verifytest.html
new file mode 100644
index 0000000..7f1a56e
--- /dev/null
+++ b/phpdoc.nostr-php.dev/files/tests-verifytest.html
@@ -0,0 +1,298 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VerifyTest.php
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ VerifyTest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/graphs/classes.html b/phpdoc.nostr-php.dev/graphs/classes.html
new file mode 100644
index 0000000..9c2d337
--- /dev/null
+++ b/phpdoc.nostr-php.dev/graphs/classes.html
@@ -0,0 +1,143 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/index.html b/phpdoc.nostr-php.dev/index.html
new file mode 100644
index 0000000..c9f7e1e
--- /dev/null
+++ b/phpdoc.nostr-php.dev/index.html
@@ -0,0 +1,193 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/indices/files.html b/phpdoc.nostr-php.dev/indices/files.html
new file mode 100644
index 0000000..e4285fa
--- /dev/null
+++ b/phpdoc.nostr-php.dev/indices/files.html
@@ -0,0 +1,189 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Files
+ C
+
+ E
+
+ G
+
+ K
+
+ M
+
+ R
+
+ S
+
+ V
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/js/search.js b/phpdoc.nostr-php.dev/js/search.js
new file mode 100644
index 0000000..093d6d0
--- /dev/null
+++ b/phpdoc.nostr-php.dev/js/search.js
@@ -0,0 +1,173 @@
+// Search module for phpDocumentor
+//
+// This module is a wrapper around fuse.js that will use a given index and attach itself to a
+// search form and to a search results pane identified by the following data attributes:
+//
+// 1. data-search-form
+// 2. data-search-results
+//
+// The data-search-form is expected to have a single input element of type 'search' that will trigger searching for
+// a series of results, were the data-search-results pane is expected to have a direct UL child that will be populated
+// with rendered results.
+//
+// The search has various stages, upon loading this stage the data-search-form receives the CSS class
+// 'phpdocumentor-search--enabled'; this indicates that JS is allowed and indices are being loaded. It is recommended
+// to hide the form by default and show it when it receives this class to achieve progressive enhancement for this
+// feature.
+//
+// After loading this module, it is expected to load a search index asynchronously, for example:
+//
+//
+//
+// In this script the generated index should attach itself to the search module using the `appendIndex` function. By
+// doing it like this the page will continue loading, unhindered by the loading of the search.
+//
+// After the page has fully loaded, and all these deferred indexes loaded, the initialization of the search module will
+// be called and the form will receive the class 'phpdocumentor-search--active', indicating search is ready. At this
+// point, the input field will also have it's 'disabled' attribute removed.
+var Search = (function () {
+ var fuse;
+ var index = [];
+ var options = {
+ shouldSort: true,
+ threshold: 0.6,
+ location: 0,
+ distance: 100,
+ maxPatternLength: 32,
+ minMatchCharLength: 1,
+ keys: [
+ "fqsen",
+ "name",
+ "summary",
+ "url"
+ ]
+ };
+
+ // Credit David Walsh (https://davidwalsh.name/javascript-debounce-function)
+ // Returns a function, that, as long as it continues to be invoked, will not
+ // be triggered. The function will be called after it stops being called for
+ // N milliseconds. If `immediate` is passed, trigger the function on the
+ // leading edge, instead of the trailing.
+ function debounce(func, wait, immediate) {
+ var timeout;
+
+ return function executedFunction() {
+ var context = this;
+ var args = arguments;
+
+ var later = function () {
+ timeout = null;
+ if (!immediate) func.apply(context, args);
+ };
+
+ var callNow = immediate && !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ if (callNow) func.apply(context, args);
+ };
+ }
+
+ function close() {
+ // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
+ const scrollY = document.body.style.top;
+ document.body.style.position = '';
+ document.body.style.top = '';
+ window.scrollTo(0, parseInt(scrollY || '0') * -1);
+ // End scroll prevention
+
+ var form = document.querySelector('[data-search-form]');
+ var searchResults = document.querySelector('[data-search-results]');
+
+ form.classList.toggle('phpdocumentor-search--has-results', false);
+ searchResults.classList.add('phpdocumentor-search-results--hidden');
+ var searchField = document.querySelector('[data-search-form] input[type="search"]');
+ searchField.blur();
+ }
+
+ function search(event) {
+ // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/
+ document.body.style.position = 'fixed';
+ document.body.style.top = `-${window.scrollY}px`;
+ // End scroll prevention
+
+ // prevent enter's from autosubmitting
+ event.stopPropagation();
+
+ var form = document.querySelector('[data-search-form]');
+ var searchResults = document.querySelector('[data-search-results]');
+ var searchResultEntries = document.querySelector('[data-search-results] .phpdocumentor-search-results__entries');
+
+ searchResultEntries.innerHTML = '';
+
+ if (!event.target.value) {
+ close();
+ return;
+ }
+
+ form.classList.toggle('phpdocumentor-search--has-results', true);
+ searchResults.classList.remove('phpdocumentor-search-results--hidden');
+ var results = fuse.search(event.target.value, {limit: 25});
+
+ results.forEach(function (result) {
+ var entry = document.createElement("li");
+ entry.classList.add("phpdocumentor-search-results__entry");
+ entry.innerHTML += '\n";
+ entry.innerHTML += '' + result.fqsen + " \n";
+ entry.innerHTML += '' + result.summary + '
';
+ searchResultEntries.appendChild(entry)
+ });
+ }
+
+ function appendIndex(added) {
+ index = index.concat(added);
+
+ // re-initialize search engine when appending an index after initialisation
+ if (typeof fuse !== 'undefined') {
+ fuse = new Fuse(index, options);
+ }
+ }
+
+ function init() {
+ fuse = new Fuse(index, options);
+
+ var form = document.querySelector('[data-search-form]');
+ var searchField = document.querySelector('[data-search-form] input[type="search"]');
+
+ var closeButton = document.querySelector('.phpdocumentor-search-results__close');
+ closeButton.addEventListener('click', function() { close() }.bind(this));
+
+ var searchResults = document.querySelector('[data-search-results]');
+ searchResults.addEventListener('click', function() { close() }.bind(this));
+
+ form.classList.add('phpdocumentor-search--active');
+
+ searchField.setAttribute('placeholder', 'Search (Press "/" to focus)');
+ searchField.removeAttribute('disabled');
+ searchField.addEventListener('keyup', debounce(search, 300));
+
+ window.addEventListener('keyup', function (event) {
+ if (event.key === '/') {
+ searchField.focus();
+ }
+ if (event.code === 'Escape') {
+ close();
+ }
+ }.bind(this));
+ }
+
+ return {
+ appendIndex,
+ init
+ }
+})();
+
+window.addEventListener('DOMContentLoaded', function () {
+ var form = document.querySelector('[data-search-form]');
+
+ // When JS is supported; show search box. Must be before including the search for it to take effect immediately
+ form.classList.add('phpdocumentor-search--enabled');
+});
+
+window.addEventListener('load', function () {
+ Search.init();
+});
diff --git a/phpdoc.nostr-php.dev/js/searchIndex.js b/phpdoc.nostr-php.dev/js/searchIndex.js
new file mode 100644
index 0000000..d5792d5
--- /dev/null
+++ b/phpdoc.nostr-php.dev/js/searchIndex.js
@@ -0,0 +1,539 @@
+Search.appendIndex(
+ [
+ {
+ "fqsen": "\\swentel\\nostr\\Application\\Client",
+ "name": "Client",
+ "summary": "",
+ "url": "classes/swentel-nostr-Application-Client.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Application\\Client\u003A\u003Arun\u0028\u0029",
+ "name": "run",
+ "summary": "Run\u0020the\u0020Nostr\u0020Client.",
+ "url": "classes/swentel-nostr-Application-Client.html#method_run"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Application\\Client\u003A\u003AshowHelp\u0028\u0029",
+ "name": "showHelp",
+ "summary": "",
+ "url": "classes/swentel-nostr-Application-Client.html#method_showHelp"
+ }, {
+ "fqsen": "\\swentel\\nostr\\CommandResultInterface",
+ "name": "CommandResultInterface",
+ "summary": "",
+ "url": "classes/swentel-nostr-CommandResultInterface.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\CommandResultInterface\u003A\u003AisSuccess\u0028\u0029",
+ "name": "isSuccess",
+ "summary": "Returns\u0020whether\u0020the\u0020request\u0020was\u0020successful.",
+ "url": "classes/swentel-nostr-CommandResultInterface.html#method_isSuccess"
+ }, {
+ "fqsen": "\\swentel\\nostr\\CommandResultInterface\u003A\u003Amessage\u0028\u0029",
+ "name": "message",
+ "summary": "Returns\u0020the\u0020message,\u0020if\u0020any.",
+ "url": "classes/swentel-nostr-CommandResultInterface.html#method_message"
+ }, {
+ "fqsen": "\\swentel\\nostr\\CommandResultInterface\u003A\u003AgetEventId\u0028\u0029",
+ "name": "getEventId",
+ "summary": "Returns\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-CommandResultInterface.html#method_getEventId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event",
+ "name": "Event",
+ "summary": "Generic\u0020Nostr\u0020event\u0020class.",
+ "url": "classes/swentel-nostr-Event-Event.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A__construct\u0028\u0029",
+ "name": "__construct",
+ "summary": "Base\u0020constructor\u0020for\u0020events.",
+ "url": "classes/swentel-nostr-Event-Event.html#method___construct"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetId\u0028\u0029",
+ "name": "setId",
+ "summary": "Set\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetId\u0028\u0029",
+ "name": "getId",
+ "summary": "Get\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetPublicKey\u0028\u0029",
+ "name": "setPublicKey",
+ "summary": "Set\u0020the\u0020public\u0020key.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setPublicKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetPublicKey\u0028\u0029",
+ "name": "getPublicKey",
+ "summary": "Get\u0020the\u0020public\u0020key.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getPublicKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetSignature\u0028\u0029",
+ "name": "setSignature",
+ "summary": "Set\u0020the\u0020signature.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setSignature"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetSignature\u0028\u0029",
+ "name": "getSignature",
+ "summary": "Get\u0020the\u0020signature.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getSignature"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetKind\u0028\u0029",
+ "name": "setKind",
+ "summary": "Set\u0020the\u0020event\u0020kind.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setKind"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetKind\u0028\u0029",
+ "name": "getKind",
+ "summary": "Returns\u0020the\u0020kind.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getKind"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetContent\u0028\u0029",
+ "name": "setContent",
+ "summary": "Set\u0020the\u0020event\u0020content.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setContent"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetContent\u0028\u0029",
+ "name": "getContent",
+ "summary": "Get\u0020the\u0020event\u0020content.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getContent"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetTags\u0028\u0029",
+ "name": "setTags",
+ "summary": "Set\u0020the\u0020event\u0020tags\u0020with\u0020values.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setTags"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AaddTag\u0028\u0029",
+ "name": "addTag",
+ "summary": "Add\u0020a\u0020single\u0020tag\u0020to\u0020the\u0020event.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_addTag"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetTags\u0028\u0029",
+ "name": "getTags",
+ "summary": "Get\u0020the\u0020event\u0020tags.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getTags"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AsetCreatedAt\u0028\u0029",
+ "name": "setCreatedAt",
+ "summary": "Set\u0020the\u0020event\u0020created\u0020time.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_setCreatedAt"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AgetCreatedAt\u0028\u0029",
+ "name": "getCreatedAt",
+ "summary": "Get\u0020the\u0020event\u0020created\u0020time.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_getCreatedAt"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AtoArray\u0028\u0029",
+ "name": "toArray",
+ "summary": "Convert\u0020the\u0020object\u0020to\u0020an\u0020array.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_toArray"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003AtoJson\u0028\u0029",
+ "name": "toJson",
+ "summary": "Convert\u0020the\u0020event\u0020object\u0020to\u0020a\u0020JSON\u0020string.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_toJson"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003Averify\u0028\u0029",
+ "name": "verify",
+ "summary": "Returns\u0020true\u0020if\u0020event\u0020object\u0020encodes\u0020to\u0020a\u0020valid\u0020Nostr\u0020event\u0020JSON\u0020string.",
+ "url": "classes/swentel-nostr-Event-Event.html#method_verify"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024kind",
+ "name": "kind",
+ "summary": "The\u0020event\u0020kind\u0020which\u0020is\u0020an\u0020integer\u0020between\u00200\u0020and\u002065535.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_kind"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024id",
+ "name": "id",
+ "summary": "The\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_id"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024sig",
+ "name": "sig",
+ "summary": "The\u0020event\u0020signature.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_sig"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024pubkey",
+ "name": "pubkey",
+ "summary": "32\u002Dbytes\u0020lowercase\u0020hex\u002Dencoded\u0020public\u0020key\u0020of\u0020the\u0020event\u0020creator.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_pubkey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024content",
+ "name": "content",
+ "summary": "The\u0020event\u0020content.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_content"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024created_at",
+ "name": "created_at",
+ "summary": "The\u0020created\u0020at\u0020unix\u0020timestamp\u0020in\u0020seconds.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_created_at"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event\\Event\u003A\u003A\u0024tags",
+ "name": "tags",
+ "summary": "Tags\u0020of\u0020the\u0020event.",
+ "url": "classes/swentel-nostr-Event-Event.html#property_tags"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface",
+ "name": "EventInterface",
+ "summary": "Nostr\u0020Event\u0020interface.",
+ "url": "classes/swentel-nostr-EventInterface.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetId\u0028\u0029",
+ "name": "setId",
+ "summary": "Set\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetId\u0028\u0029",
+ "name": "getId",
+ "summary": "Get\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetSignature\u0028\u0029",
+ "name": "setSignature",
+ "summary": "Set\u0020the\u0020signature.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setSignature"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetSignature\u0028\u0029",
+ "name": "getSignature",
+ "summary": "Get\u0020the\u0020signature.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getSignature"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetPublicKey\u0028\u0029",
+ "name": "setPublicKey",
+ "summary": "Set\u0020the\u0020public\u0020key.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setPublicKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetPublicKey\u0028\u0029",
+ "name": "getPublicKey",
+ "summary": "Get\u0020the\u0020public\u0020key.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getPublicKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetKind\u0028\u0029",
+ "name": "setKind",
+ "summary": "Set\u0020the\u0020event\u0020kind.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setKind"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetKind\u0028\u0029",
+ "name": "getKind",
+ "summary": "Returns\u0020the\u0020kind.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getKind"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetContent\u0028\u0029",
+ "name": "setContent",
+ "summary": "Set\u0020the\u0020event\u0020content.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setContent"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetContent\u0028\u0029",
+ "name": "getContent",
+ "summary": "Get\u0020the\u0020event\u0020content.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getContent"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetCreatedAt\u0028\u0029",
+ "name": "setCreatedAt",
+ "summary": "Set\u0020the\u0020event\u0020created\u0020time.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setCreatedAt"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetCreatedAt\u0028\u0029",
+ "name": "getCreatedAt",
+ "summary": "Get\u0020the\u0020event\u0020created\u0020time.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getCreatedAt"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AsetTags\u0028\u0029",
+ "name": "setTags",
+ "summary": "Set\u0020the\u0020event\u0020tags\u0020with\u0020values.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_setTags"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AaddTag\u0028\u0029",
+ "name": "addTag",
+ "summary": "Add\u0020a\u0020single\u0020tag\u0020to\u0020the\u0020event.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_addTag"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AgetTags\u0028\u0029",
+ "name": "getTags",
+ "summary": "Get\u0020the\u0020event\u0020tags.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_getTags"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AtoArray\u0028\u0029",
+ "name": "toArray",
+ "summary": "Convert\u0020the\u0020object\u0020to\u0020an\u0020array.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_toArray"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003AtoJson\u0028\u0029",
+ "name": "toJson",
+ "summary": "Convert\u0020the\u0020event\u0020object\u0020to\u0020a\u0020JSON\u0020string.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_toJson"
+ }, {
+ "fqsen": "\\swentel\\nostr\\EventInterface\u003A\u003Averify\u0028\u0029",
+ "name": "verify",
+ "summary": "Returns\u0020true\u0020if\u0020event\u0020object\u0020encodes\u0020to\u0020a\u0020valid\u0020Nostr\u0020event\u0020JSON\u0020string.",
+ "url": "classes/swentel-nostr-EventInterface.html#method_verify"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key",
+ "name": "Key",
+ "summary": "",
+ "url": "classes/swentel-nostr-Key-Key.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AgeneratePrivateKey\u0028\u0029",
+ "name": "generatePrivateKey",
+ "summary": "Generate\u0020private\u0020key\u0020as\u0020hex.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_generatePrivateKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AgetPublicKey\u0028\u0029",
+ "name": "getPublicKey",
+ "summary": "Generate\u0020public\u0020key\u0020from\u0020private\u0020key\u0020as\u0020hex.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_getPublicKey"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AconvertToHex\u0028\u0029",
+ "name": "convertToHex",
+ "summary": "Convert\u0020a\u0020key\u0020to\u0020hex.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_convertToHex"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AconvertPublicKeyToBech32\u0028\u0029",
+ "name": "convertPublicKeyToBech32",
+ "summary": "Convert\u0020a\u0020public\u0020hex\u0020key\u0020to\u0020bech32.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_convertPublicKeyToBech32"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AconvertPrivateKeyToBech32\u0028\u0029",
+ "name": "convertPrivateKeyToBech32",
+ "summary": "Convert\u0020a\u0020private\u0020hex\u0020key\u0020to\u0020bech32.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_convertPrivateKeyToBech32"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key\\Key\u003A\u003AconvertToBech32\u0028\u0029",
+ "name": "convertToBech32",
+ "summary": "Convert\u0020a\u0020hex\u0020key\u0020to\u0020bech32.",
+ "url": "classes/swentel-nostr-Key-Key.html#method_convertToBech32"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Message\\EventMessage",
+ "name": "EventMessage",
+ "summary": "",
+ "url": "classes/swentel-nostr-Message-EventMessage.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Message\\EventMessage\u003A\u003A__construct\u0028\u0029",
+ "name": "__construct",
+ "summary": "",
+ "url": "classes/swentel-nostr-Message-EventMessage.html#method___construct"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Message\\EventMessage\u003A\u003Agenerate\u0028\u0029",
+ "name": "generate",
+ "summary": "Generate\u0020the\u0020message\u0020ready\u0020to\u0020be\u0020sent\u0020to\u0020a\u0020relay.",
+ "url": "classes/swentel-nostr-Message-EventMessage.html#method_generate"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Message\\EventMessage\u003A\u003A\u0024event",
+ "name": "event",
+ "summary": "The\u0020event.",
+ "url": "classes/swentel-nostr-Message-EventMessage.html#property_event"
+ }, {
+ "fqsen": "\\swentel\\nostr\\MessageInterface",
+ "name": "MessageInterface",
+ "summary": "",
+ "url": "classes/swentel-nostr-MessageInterface.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\MessageInterface\u003A\u003Agenerate\u0028\u0029",
+ "name": "generate",
+ "summary": "Generate\u0020the\u0020message\u0020ready\u0020to\u0020be\u0020sent\u0020to\u0020a\u0020relay.",
+ "url": "classes/swentel-nostr-MessageInterface.html#method_generate"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult",
+ "name": "CommandResult",
+ "summary": "",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003A__construct\u0028\u0029",
+ "name": "__construct",
+ "summary": "Constructs\u0020the\u0020Relay\u0020Response.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#method___construct"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003AisSuccess\u0028\u0029",
+ "name": "isSuccess",
+ "summary": "Returns\u0020whether\u0020the\u0020request\u0020was\u0020successful.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#method_isSuccess"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003A\u0024message",
+ "name": "message",
+ "summary": "The\u0020message.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#property_message"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003AgetEventId\u0028\u0029",
+ "name": "getEventId",
+ "summary": "Returns\u0020the\u0020event\u0020id.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#method_getEventId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003A\u0024success",
+ "name": "success",
+ "summary": "Whether\u0020the\u0020request\u0020was\u0020successful\u0020or\u0020not.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#property_success"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\CommandResult\u003A\u003A\u0024eventId",
+ "name": "eventId",
+ "summary": "The\u0020event\u0020ID.",
+ "url": "classes/swentel-nostr-Relay-CommandResult.html#property_eventId"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay",
+ "name": "Relay",
+ "summary": "",
+ "url": "classes/swentel-nostr-Relay-Relay.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay\u003A\u003A__construct\u0028\u0029",
+ "name": "__construct",
+ "summary": "Constructs\u0020the\u0020Relay.",
+ "url": "classes/swentel-nostr-Relay-Relay.html#method___construct"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay\u003A\u003AgetUrl\u0028\u0029",
+ "name": "getUrl",
+ "summary": "Get\u0020url\u0020of\u0020the\u0020relay.",
+ "url": "classes/swentel-nostr-Relay-Relay.html#method_getUrl"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay\u003A\u003Asend\u0028\u0029",
+ "name": "send",
+ "summary": "Send\u0020the\u0020message\u0020to\u0020the\u0020relay.",
+ "url": "classes/swentel-nostr-Relay-Relay.html#method_send"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay\u003A\u003A\u0024url",
+ "name": "url",
+ "summary": "The\u0020relay\u0020URL.",
+ "url": "classes/swentel-nostr-Relay-Relay.html#property_url"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay\\Relay\u003A\u003A\u0024payload",
+ "name": "payload",
+ "summary": "the\u0020payload\u0020to\u0020send.",
+ "url": "classes/swentel-nostr-Relay-Relay.html#property_payload"
+ }, {
+ "fqsen": "\\swentel\\nostr\\RelayInterface",
+ "name": "RelayInterface",
+ "summary": "",
+ "url": "classes/swentel-nostr-RelayInterface.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\RelayInterface\u003A\u003AgetUrl\u0028\u0029",
+ "name": "getUrl",
+ "summary": "Get\u0020url\u0020of\u0020the\u0020relay.",
+ "url": "classes/swentel-nostr-RelayInterface.html#method_getUrl"
+ }, {
+ "fqsen": "\\swentel\\nostr\\RelayInterface\u003A\u003Asend\u0028\u0029",
+ "name": "send",
+ "summary": "Send\u0020the\u0020message\u0020to\u0020the\u0020relay.",
+ "url": "classes/swentel-nostr-RelayInterface.html#method_send"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Sign\\Sign",
+ "name": "Sign",
+ "summary": "",
+ "url": "classes/swentel-nostr-Sign-Sign.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Sign\\Sign\u003A\u003AsignEvent\u0028\u0029",
+ "name": "signEvent",
+ "summary": "Sign\u0020an\u0020event.",
+ "url": "classes/swentel-nostr-Sign-Sign.html#method_signEvent"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Sign\\Sign\u003A\u003AserializeEvent\u0028\u0029",
+ "name": "serializeEvent",
+ "summary": "Serialize\u0020the\u0020event\u0020so\u0020the\u0020id\u0020can\u0020be\u0020created.",
+ "url": "classes/swentel-nostr-Sign-Sign.html#method_serializeEvent"
+ }, {
+ "fqsen": "\\ConvertTest",
+ "name": "ConvertTest",
+ "summary": "",
+ "url": "classes/ConvertTest.html"
+ }, {
+ "fqsen": "\\ConvertTest\u003A\u003AtestKeyConversion\u0028\u0029",
+ "name": "testKeyConversion",
+ "summary": "Tests\u0020key\u0020conversion.",
+ "url": "classes/ConvertTest.html#method_testKeyConversion"
+ }, {
+ "fqsen": "\\GenerateTest",
+ "name": "GenerateTest",
+ "summary": "",
+ "url": "classes/GenerateTest.html"
+ }, {
+ "fqsen": "\\GenerateTest\u003A\u003AtestGetPublicKey\u0028\u0029",
+ "name": "testGetPublicKey",
+ "summary": "Tests\u0020getting\u0020public\u0020key\u0020from\u0020private\u0020key.",
+ "url": "classes/GenerateTest.html#method_testGetPublicKey"
+ }, {
+ "fqsen": "\\RelayTest",
+ "name": "RelayTest",
+ "summary": "",
+ "url": "classes/RelayTest.html"
+ }, {
+ "fqsen": "\\RelayTest\u003A\u003AtestSendNoteToRelay\u0028\u0029",
+ "name": "testSendNoteToRelay",
+ "summary": "Tests\u0020sending\u0020a\u0020note\u0020to\u0020a\u0020relay.",
+ "url": "classes/RelayTest.html#method_testSendNoteToRelay"
+ }, {
+ "fqsen": "\\SerializeTest",
+ "name": "SerializeTest",
+ "summary": "",
+ "url": "classes/SerializeTest.html"
+ }, {
+ "fqsen": "\\SerializeTest\u003A\u003AtestSerializeEvent\u0028\u0029",
+ "name": "testSerializeEvent",
+ "summary": "Tests\u0020serializing\u0020event.",
+ "url": "classes/SerializeTest.html#method_testSerializeEvent"
+ }, {
+ "fqsen": "\\VerifyTest",
+ "name": "VerifyTest",
+ "summary": "",
+ "url": "classes/VerifyTest.html"
+ }, {
+ "fqsen": "\\VerifyTest\u003A\u003AtestValidEventValidation\u0028\u0029",
+ "name": "testValidEventValidation",
+ "summary": "",
+ "url": "classes/VerifyTest.html#method_testValidEventValidation"
+ }, {
+ "fqsen": "\\VerifyTest\u003A\u003AtestInvalidEventsValidation\u0028\u0029",
+ "name": "testInvalidEventsValidation",
+ "summary": "",
+ "url": "classes/VerifyTest.html#method_testInvalidEventsValidation"
+ }, {
+ "fqsen": "\\VerifyTest\u003A\u003AinvalidEventsProvider\u0028\u0029",
+ "name": "invalidEventsProvider",
+ "summary": "",
+ "url": "classes/VerifyTest.html#method_invalidEventsProvider"
+ }, {
+ "fqsen": "\\",
+ "name": "\\",
+ "summary": "",
+ "url": "namespaces/default.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Application",
+ "name": "Application",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-application.html"
+ }, {
+ "fqsen": "\\swentel\\nostr",
+ "name": "nostr",
+ "summary": "",
+ "url": "namespaces/swentel-nostr.html"
+ }, {
+ "fqsen": "\\swentel",
+ "name": "swentel",
+ "summary": "",
+ "url": "namespaces/swentel.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Event",
+ "name": "Event",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-event.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Examples",
+ "name": "Examples",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-examples.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Key",
+ "name": "Key",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-key.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Message",
+ "name": "Message",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-message.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Relay",
+ "name": "Relay",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-relay.html"
+ }, {
+ "fqsen": "\\swentel\\nostr\\Sign",
+ "name": "Sign",
+ "summary": "",
+ "url": "namespaces/swentel-nostr-sign.html"
+ } ]
+);
diff --git a/phpdoc.nostr-php.dev/js/template.js b/phpdoc.nostr-php.dev/js/template.js
new file mode 100644
index 0000000..4938329
--- /dev/null
+++ b/phpdoc.nostr-php.dev/js/template.js
@@ -0,0 +1,17 @@
+(function(){
+ window.addEventListener('load', () => {
+ const el = document.querySelector('.phpdocumentor-on-this-page__content')
+ if (!el) {
+ return;
+ }
+
+ const observer = new IntersectionObserver(
+ ([e]) => {
+ e.target.classList.toggle("-stuck", e.intersectionRatio < 1);
+ },
+ {threshold: [1]}
+ );
+
+ observer.observe(el);
+ })
+})();
diff --git a/phpdoc.nostr-php.dev/namespaces/default.html b/phpdoc.nostr-php.dev/namespaces/default.html
new file mode 100644
index 0000000..4d0da65
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/default.html
@@ -0,0 +1,299 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-application.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-application.html
new file mode 100644
index 0000000..7c6391d
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-application.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Application
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-event.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-event.html
new file mode 100644
index 0000000..6b1f285
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-event.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Event
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Event Generic Nostr event class.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-examples.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-examples.html
new file mode 100644
index 0000000..863f9e3
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-examples.html
@@ -0,0 +1,285 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Examples
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-key.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-key.html
new file mode 100644
index 0000000..b92ef2b
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-key.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Key
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Key
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-message.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-message.html
new file mode 100644
index 0000000..0c4aa27
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-message.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Message
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ EventMessage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-relay.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-relay.html
new file mode 100644
index 0000000..b7b6536
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-relay.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Relay
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ CommandResult Relay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr-sign.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-sign.html
new file mode 100644
index 0000000..1c48b18
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr-sign.html
@@ -0,0 +1,293 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sign
+
+
+
+ Table of Contents
+
+
+
+
+
+
+
+
+ Classes
+
+
+
+
+ Sign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel-nostr.html b/phpdoc.nostr-php.dev/namespaces/swentel-nostr.html
new file mode 100644
index 0000000..d0c00a2
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel-nostr.html
@@ -0,0 +1,306 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/namespaces/swentel.html b/phpdoc.nostr-php.dev/namespaces/swentel.html
new file mode 100644
index 0000000..de425e7
--- /dev/null
+++ b/phpdoc.nostr-php.dev/namespaces/swentel.html
@@ -0,0 +1,291 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ swentel
+
+
+
+ Table of Contents
+
+
+
+
+
+
+ Namespaces
+
+
+
+
+ nostr
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/packages/Application.html b/phpdoc.nostr-php.dev/packages/Application.html
new file mode 100644
index 0000000..2383b12
--- /dev/null
+++ b/phpdoc.nostr-php.dev/packages/Application.html
@@ -0,0 +1,299 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/packages/default.html b/phpdoc.nostr-php.dev/packages/default.html
new file mode 100644
index 0000000..8864aa1
--- /dev/null
+++ b/phpdoc.nostr-php.dev/packages/default.html
@@ -0,0 +1,291 @@
+
+
+
+
+ nostr-php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ API Documentation
+
+
+
+ Table of Contents
+
+
+
+
+
+ Packages
+
+
+
+
+ Application
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/reports/deprecated.html b/phpdoc.nostr-php.dev/reports/deprecated.html
new file mode 100644
index 0000000..9555079
--- /dev/null
+++ b/phpdoc.nostr-php.dev/reports/deprecated.html
@@ -0,0 +1,159 @@
+
+
+
+
+ nostr-php » Deprecated elements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Deprecated
+
+
+
+ No deprecated elements have been found in this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/reports/errors.html b/phpdoc.nostr-php.dev/reports/errors.html
new file mode 100644
index 0000000..3cbb913
--- /dev/null
+++ b/phpdoc.nostr-php.dev/reports/errors.html
@@ -0,0 +1,158 @@
+
+
+
+
+ nostr-php » Compilation errors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Errors
+
+
+
No errors have been found in this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpdoc.nostr-php.dev/reports/markers.html b/phpdoc.nostr-php.dev/reports/markers.html
new file mode 100644
index 0000000..5803f69
--- /dev/null
+++ b/phpdoc.nostr-php.dev/reports/markers.html
@@ -0,0 +1,181 @@
+
+
+
+
+ nostr-php » Markers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Markers
+
+
Table of Contents
+
+
+
+
Relay.php
+
+
+
+ Type
+ Line
+ Description
+
+
+
+
+ TODO
+ 36
+ validate URL which has to be a websocket URL starting with ws:// or wss://.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 0000000..1359753
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,6 @@
+parameters:
+ level: 4
+ paths:
+ - bin
+ - src
+ - tests
\ No newline at end of file
diff --git a/src/Event/Event.php b/src/Event/Event.php
index 2390111..c7957cd 100644
--- a/src/Event/Event.php
+++ b/src/Event/Event.php
@@ -7,10 +7,13 @@
use Mdanter\Ecc\Crypto\Signature\SchnorrSignature;
use swentel\nostr\EventInterface;
+/**
+ * Generic Nostr event class.
+ */
class Event implements EventInterface
{
/**
- * The event kind.
+ * The event kind which is an integer between 0 and 65535.
*
* Override this property in your custom events to set the value
* immediately.
@@ -21,20 +24,22 @@ class Event implements EventInterface
/**
* The event id.
+ * 32-bytes lowercase hex-encoded sha256 of the serialized event data.
*
- * @var string
+ * @var string $id
*/
protected string $id = '';
/**
* The event signature.
+ * 64-bytes lowercase hex of the signature of the sha256 hash of the serialized event data, which is the same as the "id" field.
*
* @var string
*/
protected string $sig = '';
/**
- * The public key.
+ * 32-bytes lowercase hex-encoded public key of the event creator.
*
* @var string
*/
@@ -48,14 +53,14 @@ class Event implements EventInterface
protected string $content = '';
/**
- * The created at timestamp.
+ * The created at unix timestamp in seconds.
*
* @var int
*/
protected int $created_at = 0;
/**
- * The event tags.
+ * Tags of the event.
*
* @var array
*/
diff --git a/src/EventInterface.php b/src/EventInterface.php
index a078ef1..8b13059 100644
--- a/src/EventInterface.php
+++ b/src/EventInterface.php
@@ -4,10 +4,13 @@
namespace swentel\nostr;
+/**
+ * Nostr Event interface.
+ */
interface EventInterface
{
/**
- * Set the id.
+ * Set the event id.
*
* @param string $id
*
@@ -16,7 +19,7 @@ interface EventInterface
public function setId(string $id): static;
/**
- * Get the Id.
+ * Get the event id.
*
* @return string
*/
@@ -88,6 +91,7 @@ public function getContent(): string;
/**
* Set the event created time.
+ * Format is a unix timestamp in seconds.
*
* @param int $time
*
@@ -116,7 +120,7 @@ public function getCreatedAt(): int;
public function setTags(array $tags): static;
/**
- * Add an event tag.
+ * Add a single tag to the event.
*
* @param array $tag
*
@@ -143,6 +147,8 @@ public function toArray(array $ignore_properties = []): array;
/**
* Convert the event object to a JSON string.
+ *
+ * @return string
*/
public function toJson(): string;
diff --git a/src/Examples/verify.php b/src/Examples/verify.php
new file mode 100644
index 0000000..c946f6c
--- /dev/null
+++ b/src/Examples/verify.php
@@ -0,0 +1,14 @@
+verify($json);
+
+echo $isValid;