docs
authorMichael Wallner <mike@php.net>
Tue, 25 Jan 2022 10:29:37 +0000 (11:29 +0100)
committerMichael Wallner <mike@php.net>
Tue, 25 Jan 2022 10:29:37 +0000 (11:29 +0100)
25 files changed:
SECURITY.md
docs/.router.php [new file with mode: 0644]
docs/Dockerfile [new file with mode: 0644]
docs/Makefile
docs/docker-compose.yml [new file with mode: 0644]
docs/v0.0/index.html
docs/v0.0/ion.html
docs/v0.0/ion.stub.php [new file with mode: 0644]
docs/v0.0/ion/: Contributing.html [new file with mode: 0644]
docs/v0.0/ion/: Security.html [new file with mode: 0644]
docs/v0.0/ion/Catalog.html
docs/v0.0/ion/Catalog/add.html
docs/v0.0/ion/Decimal.html
docs/v0.0/ion/Exception.html
docs/v0.0/ion/LOB.html
docs/v0.0/ion/Reader.html
docs/v0.0/ion/Serializer.html
docs/v0.0/ion/Symbol.html
docs/v0.0/ion/Timestamp.html
docs/v0.0/ion/Type.html
docs/v0.0/ion/Unserializer.html
docs/v0.0/ion/Writer.html
docs/v0.0/ion/serialize.html
docs/v0.0/ion/unserialize.html
package.xml

index 4ceb40d35dc3e056b4756b84e1af8286d31b8262..5f02e54b11985d0329aa10515bbdf08aa9b116a0 100644 (file)
@@ -5,9 +5,9 @@
 This project is still in its early development stages, so please consider 
 any release not explicitly labeled as stable as experimental.
 
 This project is still in its early development stages, so please consider 
 any release not explicitly labeled as stable as experimental.
 
-| Version | Supported          |
-| ------- | ------------------ |
-| 0.x     | :white_check_mark: |
+| Version | Supported |
+| ------- | --------- |
+| 0.x     |        ✓ |
 
 ## Reporting a Vulnerability
 
 
 ## Reporting a Vulnerability
 
diff --git a/docs/.router.php b/docs/.router.php
new file mode 100644 (file)
index 0000000..9287598
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+$file = __DIR__ . urldecode($_SERVER["REQUEST_URI"]);
+error_log("uri:$file\n");
+
+if (is_file($file)) {
+       return false;
+}
+
+if (is_dir($file) && file_exists($file."/index.html")) {
+       readfile($file."/index.html");
+} else {
+       $file = rtrim($file, "/").".html";
+       if (file_exists($file)) {
+               readfile($file);
+       } else {
+               return false;
+       }
+}
diff --git a/docs/Dockerfile b/docs/Dockerfile
new file mode 100644 (file)
index 0000000..689b0e5
--- /dev/null
@@ -0,0 +1,27 @@
+FROM php:8.1-cli
+
+RUN apt-get update -qy \
+    && DEBIAN_FRONTEND=noninteractive \
+    apt-get install -qy \
+       build-essential \
+       git \
+       libcurl4-openssl-dev \
+       libicu-dev \
+       libssl-dev \
+       zlib1g-dev \
+    && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /tmp
+
+RUN \
+       curl -sSLO https://getcomposer.org/download/2.2.5/composer.phar &&\
+       curl -sSLO https://replicator.pharext.org/phars/raphf/raphf-2.0.1.ext.phar &&\
+       curl -sSLO https://replicator.pharext.org/phars/pecl_http/pecl_http-4.2.1.ext.phar
+RUN \
+       touch /usr/local/etc/php/conf.d/pecl.ini &&\
+       php raphf-*.ext.phar -vi /usr/local/etc/php/conf.d/pecl.ini &&\
+       php pecl_http-*.ext.phar -vi /usr/local/etc/php/conf.d/pecl.ini
+
+WORKDIR /app
+ENTRYPOINT ["php", "/tmp/composer.phar"]
+
index ddbea7b658fba48e8ea451cbbe0f3d570817d59c..cbfcb36c1660e4677fe6cb2581ed3ab609185535 100644 (file)
@@ -1,27 +1,44 @@
 PHP ?= php
 COMPOSER ?= composer
 PHP ?= php
 COMPOSER ?= composer
-TAG := $(shell (git describe --tags --exact-match --match=v[1-9]* || echo v0.0) | cut -d. -f-2 2>/dev/null)
+TAG := $(shell (git describe --tags --exact-match --match=v[1-9]*  2>/dev/null || echo v0.0) | cut -d. -f-2)
+
+# ---
+
+SPECIAL_SRC := src/ion/\\\:\\\ Security.md src/ion/\\\:\\\ Contributing.md src/ion.md
 
 .PHONY: all
 all: latest
 
 
 .PHONY: all
 all: latest
 
-.PHONY: clean
-clean:
-       -rm -rf latest src vendor composer.*
+latest: $(TAG)
+       -unlink $@ 2>/dev/null
+       ln -s "$(TAG)/" $@
+       touch $@
+
+$(TAG): markdown | vendor/bin/ref2html
+       mkdir -p $@
+       $(PHP) $| $@ src
+       touch $@
+
+.PHONY: markdown
+markdown: src/ion.stub.php $(SPECIAL_SRC) | vendor/bin/stub2ref
+       $(PHP) $| ion $< src
+
+src src/ion:
+       -mkdir -p $@
+src/ion.stub.php: ../ion.stub.php | src
+       -test -e $@ || ln $^ $@
+src/ion.md: ../README.md | src
+       -test -e $@ || ln $^ $@
+src/ion/\\\:\\\ Security.md: ../SECURITY.md | src/ion
+       -test -e $@ || ln $^ $@
+src/ion/\\\:\\\ Contributing.md: ../CONTRIBUTING.md | src/ion
+       -test -e $@ || ln $^ $@
 
 vendor/%:
        $(COMPOSER) require m6w6/mdref:dev-master
 
 
 vendor/%:
        $(COMPOSER) require m6w6/mdref:dev-master
 
-src: ../ion.stub.php | vendor/bin/stub2ref
-       mkdir -p $@ && cd $@ && $(PHP) ../$| ion ../$^
-       touch $@
+.PHONY: clean
+clean:
+       -rm -rf latest src vendor composer.*
 
 
-$(TAG): src | vendor/bin/ref2html
-       mkdir -p $@
-       $(PHP) $| $@ $^
-       touch $@
 
 
-latest: $(TAG)
-       -unlink latest 2>/dev/null
-       ln -s "$(TAG)/" latest
-       touch $@
diff --git a/docs/docker-compose.yml b/docs/docker-compose.yml
new file mode 100644 (file)
index 0000000..3a481f0
--- /dev/null
@@ -0,0 +1,9 @@
+version: '3'
+services:
+  composer:
+    container_name: m6w6/ext-ion-docs-composer
+    restart: "no"
+    volumes:
+      - ./:/app
+    build: .
+    user: "1000"
index 1895bff7e1f79e4eddd348f1a3becc23169779d8..424b29ecc4db8ff0cd101b2cb75695b957b4499e 100644 (file)
                <div><p>PHP extension wrapping <a href="https://github.com/amzn/ion-c">amzn/ion-c</a>.
 See the <a href="https://amzn.github.io/ion-docs/">Amazon ION specification</a>.</p>
 </div>
                <div><p>PHP extension wrapping <a href="https://github.com/amzn/ion-c">amzn/ion-c</a>.
 See the <a href="https://amzn.github.io/ion-docs/">Amazon ION specification</a>.</p>
 </div>
+                                                                                       <div>
+                                       <p><strong>Download the Stub file:</strong></p>
+                                       <ul style="list-style-type: '&raquo;'">
+                                               <li>
+                                                                                                               <a href="ion.stub.php">ion.stub.php</a><br>
+                                                                                                               <small>
+                                                               Last modified:
+                                                               2022-01-20 17:13:57 UTC                                                 </small>
+                                               </li>
+                                       </ul>
+                               </div>
                                                                
                        <div id="disqus_thread"><button id="disqus_activator">Show <span> </span> Comment(s)</button></div>
                        <script>
                                                                
                        <div id="disqus_thread"><button id="disqus_activator">Show <span> </span> Comment(s)</button></div>
                        <script>
index ab01a31f05c40a03434177ca442f92aa140ceff1..810dedcde4baa32f9a14bc0d3dcc8084626f29be 100644 (file)
                                                        
                                                        <ul>
                                                                
                                                        
                                                        <ul>
                                                                
+                                                               <li>
+                                                                       &rdsh; <a href="./ion/: Contributing">★ Contributing</a>
+                                                                       
+                                                               </li>
+                                                               
+                                                               <li>
+                                                                       &rdsh; <a href="./ion/: Security">★ Security</a>
+                                                                       
+                                                               </li>
+                                                               
                                                                <li>
                                                                        &rdsh; <a href="./ion/Catalog">Catalog</a>
                                                                        
                                                                <li>
                                                                        &rdsh; <a href="./ion/Catalog">Catalog</a>
                                                                        
@@ -296,6 +306,19 @@ instances of the following PHP classes cannot be cloned:</p>
 <li>ion\Unserializer\PHP</li>
 </ul>
 
 <li>ion\Unserializer\PHP</li>
 </ul>
 
+       <h2 id="Editor.Stub:">Editor Stub:</h2>
+       <p>This extension provides a stub file four your editor's auto-completion.</p>
+                                       <div>
+                                       <p><strong>Download the Stub file:</strong></p>
+                                       <ul style="list-style-type: '&raquo;'">
+                                               <li>
+                                                                                                               <a href="ion.stub.php">ion.stub.php</a><br>
+                                                                                                               <small>
+                                                               Last modified:
+                                                               2022-01-20 17:13:57 UTC                                                 </small>
+                                               </li>
+                                       </ul>
+                               </div>
 
 
 <h2 id="Functions:">Functions:</h2>
 
 
 <h2 id="Functions:">Functions:</h2>
diff --git a/docs/v0.0/ion.stub.php b/docs/v0.0/ion.stub.php
new file mode 100644 (file)
index 0000000..15b60d3
--- /dev/null
@@ -0,0 +1,1108 @@
+<?php
+
+/**
+ * Amazon ION serialization format.
+ *
+ * @link https://github.com/awesomized/ext-ion
+ *
+ * @see https://github.com/amzn/ion-c amzn/ion-c
+ * @see https://amzn.github.io/ion-docs/ Amazon ION spec
+ *
+ * @generate-class-entries static
+ * @generate-function-entries static
+ */
+
+namespace ion;
+
+/**
+ * Serialize a PHP value as ION data.
+ *
+ * Serializes supported PHP values with the optionally provided \ion\Serializer:
+ *  * NULL
+ *  * bool
+ *  * int
+ *  * float
+ *  * string
+ *  * references
+ *  * arrays
+ *  * objects (incl. \Serializable, and classes implementing magic and custom __serialize)
+ *
+ * @param mixed $data PHP value(s).
+ * @param Serializer|null $serializer Custom serializer.
+ * @return string serialized ION data
+ * @throws ion\Exception
+ */
+function serialize(mixed $data, ?Serializer $serializer = null) : string {}
+
+/**
+ * Unserialize ION data (stream) as PHP value(s).
+ *
+ * @param string|resource $data Serialized ION data, either as string buffer or stream,.
+ * @return mixed unserialized PHP values
+ * @throws ion\Exception
+ */
+function unserialize($data, ?Unserializer $unserializer = null) : mixed {}
+
+/**
+ * Serializer interface, used to customize ion\serialize()'s behavior.
+ */
+interface Serializer {
+    public function serialize(mixed $data) : string;
+}
+
+/**
+ * Unserializer interface, used to customize ion\unserialize()'s behavior.
+ */
+interface Unserializer {
+    /** @param string|resource $data */
+    public function unserialize($data) : mixed;
+}
+
+/**
+ * Base exception for the ION extension.
+ */
+class Exception extends \Exception {
+}
+
+/**
+ * ION data type.
+ *
+ * The following special PHP classes are provided for some data types:
+ * * ion\Decimal
+ * * ion\Timestamp
+ * * ion\Symbol
+ * * ion\Lob
+ */
+enum Type : int {
+    case Null       = 0x000;
+    case Bool       = 0x100;
+    case Int        = 0x200;
+    case Float      = 0x400;
+    case Decimal    = 0x500;
+    case Timestamp  = 0x600;
+    case Symbol     = 0x700;
+    case String     = 0x800;
+    case CLob       = 0x900;
+    case BLob       = 0xa00;
+    case List       = 0xb00;
+    case SExp       = 0xc00;
+    case Struct     = 0xd00;
+    case Datagram   = 0xf00;
+
+    case EOF        =-0x100;
+    case NONE       =-0x200;
+}
+
+/**
+ * @see https://amzn.github.io/ion-docs/docs/spec.html#symbol ION spec's symbol definition
+ * @see https://amzn.github.io/ion-docs/guides/symbols-guide.html ION spec's symbol guide
+ */
+class Symbol {
+    /**
+     * Create an ION symbol.
+     */
+    public function __construct(
+        /**
+         * The symbol's text representation.
+         */
+        public readonly ?string $value = null,
+        /**
+         * The symbols ID, referencing its location within a shared symbol table.
+         */
+        public readonly int $sid = -1,
+        /**
+         * The import location referencing a shared symbol table.
+         */
+        public readonly ?Symbol\ImportLocation $importLocation = null,
+    ) {}
+
+    /**
+     * Compare two symbols for equality.
+     *
+     * Two symbols are considered equal, if either:
+     * * both are the same object or NULL
+     * * both values are NULL (unknown text), and both $importLocations match
+     * * both values match, regardless of $sid and $importLocation
+     *
+     * @param Symbol $symbol
+     * @return bool whether the two Symbols equal
+     */
+    public function equals(Symbol $symbol): bool {}
+    public function __toString() : string {}
+    /** @alias ion\Symbol::__toString */
+    public function toString() : string {}
+}
+
+/**
+ * The Catalog holds a collection of ion\Symbol\Table instances queried from ion\Reader and ion\Writer instances.
+ *
+ * @see https://amzn.github.io/ion-docs/docs/symbols.html#the-catalog the ION spec's symbol guide chapter on catalog.
+ */
+class Catalog implements \Countable {
+    /** Internal cache. */
+    private array $symbolTables = [];
+
+    /** Create a new Catalog. */
+    public function __construct() {}
+
+    /** Count how many symbol tables the catalog holds. */
+    public function count() : int {}
+
+    /**
+     * Add a shared symbol table to the catalog.
+     *
+     * @param Symbol\Table $table The new table to add.
+     */
+    public function add(Symbol\Table $table) : void {}
+
+    /**
+     * Remove a shared symbol table from the catalog.
+     *
+     * @param Symbol\Table|string $table The symbol table to renmove.
+     * @return bool Success.
+     */
+    public function remove(Symbol\Table|string $table) : bool {}
+
+    /**
+     * Find a shared symbol table within the catalog.
+     *
+     * @param string $name The name of the symbol table.
+     * @param int $version The version the symbol table should match.
+     * @return Symbol\Table|null The symbol table found, if any.
+     */
+    public function find(string $name, int $version = 0) : ?Symbol\Table {}
+
+    /**
+     * Find a "best match" for a shared symbol table within the catalog.
+     *
+     * @param string $name The name of the symbol table,
+     * @param int $version The minimum version of the symbol table.
+     * @return Symbol\Table|null The symbol table found, if any.
+     */
+    public function findBest(string $name, int $version = 0) : ?Symbol\Table {}
+}
+
+/**
+ * A large object.
+ *
+ * @see ion\Type
+ * @see https://amzn.github.io/ion-docs/docs/spec.html#blob the ION spec's BLob definition
+ * @see https://amzn.github.io/ion-docs/docs/spec.html#clob the ION sepc's CLob definition
+ */
+class LOB {
+    /**
+     * Create an ION large object.
+     */
+    public function __construct(
+        /**
+         * The value of the large object.
+         */
+        public readonly string $value,
+        /**
+         * The type (CLob/BLob).
+         */
+        public readonly Type $type = Type::CLob,
+    ) {}
+}
+
+/**
+ * An arbitrary precision fixed point decimal.
+ *
+ * @see ion\Decimal\Context
+ * @see https://amzn.github.io/ion-docs/docs/decimal.html the ION spec's decimal docs
+ */
+class Decimal {
+    /**
+     * Create a new fixed point decimal.
+     */
+    public function __construct(
+        /**
+         * The decimal number.
+         */
+        public readonly string|int $number,
+        /**
+         * The decimal context.
+         */
+        public readonly ?Decimal\Context $context = null,
+    ) {}
+
+    /**
+     * Check two decimals for equality.
+     *
+     * @param Decimal $decimal The decimal to compare to.
+     * @return bool Whether both decimals equal.
+     */
+    public function equals(Decimal $decimal) : bool {}
+
+    /**
+     * Check whether the decimal is actually a big integer.
+     * @return bool Whether the decimal is actually an integer.
+     */
+    public function isInt() : bool {}
+
+    public function __toString() : string {}
+    /**
+     * Get the string representation of the decimal.
+     * @alias ion\Decimal::__toString
+     */
+    public function toString() : string {}
+
+    /**
+     * Get the integer represention of the decimal.
+     * @throws \ion\Exception If the decimal is actually not an integer.
+     */
+    public function toInt() : int {}
+}
+
+/**
+ * An ION Timestamp.
+ * @see https://amzn.github.io/ion-docs/docs/spec.html#timestamp the ION sepc's timestamp definintion
+ * @see https://php.net/date PHP's date documentation
+ */
+class Timestamp extends \DateTime {
+    /**
+     * The timestamp's precision. See ion\Timestamp\Precision.
+     */
+    public readonly int $precision;
+    /**
+     * The timestamp's format. See ion\Timestamp\Format.
+     */
+    public readonly string $format;
+
+    /**
+     * Create a new ION timestamp.
+     *
+     * @param Timestamp\Precision|int $precision The timestamp's precision.
+     * @param Timestamp\Format|string|null $format The timestamp's format.
+     * @param string|null $datetime The timestamp's value.
+     * @param \DateTimeZone|null $timezone The timestamp's timezone.
+     */
+    public function __construct(
+        Timestamp\Precision|int $precision,
+        Timestamp\Format|string|null $format = null,
+        ?string $datetime = null,
+        ?\DateTimeZone $timezone = null,
+    ) {}
+
+    public function __toString() : string {}
+}
+
+/**
+ * ION reader API.
+ */
+interface Reader extends \RecursiveIterator {
+    public function getType() : Type;
+    public function hasAnnotations() : bool;
+    public function hasAnnotation(string $annotation) : bool;
+    public function isNull() : bool;
+    public function isInStruct() : bool;
+    public function getFieldName() : string;
+    public function getFieldNameSymbol() : Symbol;
+    public function getAnnotations() : array;
+    public function getAnnotationSymbols() : array;
+    public function countAnnotations() : int;
+    public function getAnnotation(int $index) : string;
+    public function getAnnotationSymbol(int $index) : Symbol;
+
+    public function readNull() : Type;
+    public function readBool() : bool;
+    public function readInt() : int|string;
+    public function readFloat() : float;
+    public function readDecimal() : Decimal;
+    public function readTimestamp() : Timestamp;
+    public function readSymbol() : Symbol;
+    public function readString() : string;
+    /** @param ref $string */
+    public function readStringPart(&$string, int $length = 0x1000) : bool;
+    public function readLob() : string;
+    /** @param ref $string */
+    public function readLobPart(&$string, int $length = 0x1000) : bool;
+
+    public function getPosition() : int;
+    public function getDepth() : int;
+
+    public function seek(int $offset, int $length = -1) : void;
+    /*
+    public function getSymbolTable() : SymbolTable;
+    public function setSymbolTable(SymbolTable $table) : void;
+    */
+    public function getValueOffset() : int;
+    public function getValueLength() : int;
+}
+
+/**
+ * ION writer API.
+ */
+interface Writer {
+    public function writeNull() : void;
+    public function writeTypedNull(Type $type) : void;
+    public function writeBool(bool $value) : void;
+    public function writeInt(int|string $value) : void;
+    public function writeFloat(float $value) : void;
+    public function writeDecimal(Decimal|string $value) : void;
+    public function writeTimestamp(Timestamp|string $value) : void;
+    public function writeSymbol(Symbol|string $value) : void;
+    public function writeString(string $value) : void;
+    public function writeCLob(string $value) : void;
+    public function writeBLob(string $value) : void;
+
+    public function startLob(Type $type) : void;
+    public function appendLob(string $data) : void;
+    public function finishLob() : void;
+
+    public function startContainer(Type $type) : void;
+    public function finishContainer() : void;
+
+    public function writeFieldName(string $name) : void;
+
+    public function writeAnnotation(Symbol|string ...$annotation) : void;
+
+    public function getDepth() : int;
+    public function flush() : int;
+    public function finish() : int;
+
+    // public function writeOne(Reader $reader) : void;
+    // public function writeAll(Reader $reader) : void;
+
+    // public function getCatalog() : Catalog;
+    // public function setCatalog(Catalog $catalog) : void;
+
+    // public function getSymbolTable() : Symbol\Table;
+    // puvlic function setSymbolTable(Symbol\Table $table) : void;
+}
+
+namespace ion\Symbol;
+
+/**
+ * The import location (referring to a shared table= of a symbol.
+ */
+class ImportLocation {
+    /**
+     * Create a new import location.
+     */
+    public function __construct(
+        /**
+         * The name of the shared symbol table.
+         */
+        public readonly string $name,
+        /**
+         * The location (sid) of the symbol within the table.
+         */
+        public readonly int $location,
+    ) {}
+}
+
+/**
+ * Base interface of built-in shared symbol tables.
+ */
+interface Enum {
+    /**
+     * @return \ion\Symbol Instance of the symbol.
+     */
+    public function toSymbol() : \ion\Symbol;
+
+    /**
+     * @return int The symbol id.
+     */
+    public function toSID() : int;
+
+    /**
+     * @return string The symbol's textual representation.
+     */
+    public function toString() : string;
+}
+
+/**
+ * Base interface of an ION symbol table.
+ */
+interface Table {
+    /**
+     * Get the maximum symbol ID within the symbol table.
+     * @return int The maximum symbol ID.
+     */
+    public function getMaxId() : int;
+
+    /**
+     * Add a symbol to the table.
+     *
+     * @param \ion\Symbol|string $symbol The symbol (value) to add.
+     * @return int The symbol ID.
+     */
+    public function add(\ion\Symbol|string $symbol) : int;
+
+    /**
+     * Find a symbol within the symbol table, including imports.
+     *
+     * @param string|int $id The ID or text of the symbol to find.
+     * @return \ion\Symbol|null The symbol found, if any.
+     */
+    public function find(string|int $id) : ?\ion\Symbol;
+
+    /**
+     * Find a symbol within **only this** symbol table, ignoring imports.
+     *
+     * @param string|int $id The ID or text of the symbol to find.
+     * @return \ion\Symbol|null The symbol found, if any.
+     */
+    public function findLocal(string|int $id) : ?\ion\Symbol;
+}
+
+namespace ion\Symbol\Table;
+
+/**
+ * Get the built-in PHP shared symbol table.
+ *
+ * @see \ion\Symbol\Table\PHP
+ * @return \ion\Symbol\Table The builtin PHP shared symbol table.
+ */
+function PHP() : \ion\Symbol\Table {}
+
+/**
+ * Get the built-in ION system shared symbol table.
+ *
+ * @see \ion\Symbol\Table\System
+ * @return \ion\Symbol\Table The builtin ION system shared symbol table.
+ */
+function System() : \ion\Symbol\Table {}
+
+/**
+ * The built-in ION system symbols.
+ */
+enum System : string implements \ion\Symbol\Enum {
+    case Ion                = '$ion';
+    case Ivm_1_0            = '$ion_1_0';
+    case IonSymbolTable     = '$ion_symbol_table';
+    case Name               = 'name';
+    case Version            = 'version';
+    case Imports            = 'imports';
+    case Symbols            = 'symbols';
+    case MaxId              = 'max_id';
+    case SharedSymbolTable  = '$ion_shared_symbol_table';
+
+    /** @alias ion\Symbol\Enum::toSymbol */
+    public function toSymbol() : \ion\Symbol {}
+    /** @alias ion\Symbol\Enum::toSID */
+    public function toSID() : int {}
+    /** @alias ion\Symbol\Enum::toString */
+    public function toString() : string {}
+}
+
+/**
+ * The built-in PHP symbols.
+ */
+enum PHP : string implements \ion\Symbol\Enum {
+    case PHP            = 'PHP';
+    case Reference      = 'R';
+    case Backref        = 'r';
+    case Property       = 'p';
+    case Object         = 'o';
+    case ClassObject    = 'c';
+    case MagicObject    = 'O';
+    case CustomObject   = 'C';
+    case Enum           = 'E';
+    case Serializable   = 'S';
+
+    /** @alias ion\Symbol\Enum::toSymbol */
+    public function toSymbol() : \ion\Symbol {}
+    /** @alias ion\Symbol\Enum::toSID */
+    public function toSID() : int {}
+    /** @alias ion\Symbol\Enum::toString */
+    public function toString() : string {}
+}
+
+/**
+ * A local symbol table.
+ *
+ * @see https://amzn.github.io/ion-docs/guides/symbols-guide.html the ION spec's symbol guide
+ * @see https://amzn.github.io/ion-docs/guides/cookbook.html#using-a-local-symbol-table the ION doc's cookbook
+ */
+class Local implements \ion\Symbol\Table {
+    /** Internal cache. */
+    private array $imports = [];
+    /** Internal cache. */
+    private array $symbols = [];
+
+    /**
+     * Create a local symbol table.
+     */
+    public function __construct() {}
+
+    /**
+     * Import a symbol table.
+     *
+     * @param \ion\Symbol\Table $table The symbol table to import.
+     * @return void
+     */
+    public function import(\ion\Symbol\Table $table) : void {}
+
+    /** @alias ion\Symbol\Table::getMaxId */
+    public function getMaxId() : int {}
+
+    /** @alias ion\Symbol\Table::add */
+    public function add(\ion\Symbol|string $symbol) : int {}
+    /** @alias ion\Symbol\Table::find */
+    public function find(string|int $id) : ?\ion\Symbol {}
+    /** @alias ion\Symbol\Table::findLocal */
+    public function findLocal(string|int $id) : ?\ion\Symbol {}
+}
+
+/**
+ * A shared symbol table.
+ *
+ * @see https://amzn.github.io/ion-docs/guides/symbols-guide.html the ION spec's symbol guide
+ * @see https://amzn.github.io/ion-docs/guides/cookbook.html#using-a-shared-symbol-table the ION doc's cookbook
+ */
+class Shared implements \ion\Symbol\Table {
+    /**
+     * Create a shared symbol table.
+     */
+    public function __construct(
+        /**
+         * The name of the shared symbol table.
+         */
+        public readonly string $name,
+        /**
+         * The version of the shared symbol table.
+         */
+        public readonly int $version = 1,
+        /**
+         * Predefined list of symbols as array of strings.
+         */
+        ?array $symbols = null,
+    ) {}
+
+    /** Internal cache. */
+    private array $symbols = [];
+
+    /** @alias ion\Symbol\Table::getMaxId */
+    public function getMaxId() : int {}
+
+    /** @alias ion\Symbol\Table::add */
+    public function add(\ion\Symbol|string $symbol) : int {}
+    /** @alias ion\Symbol\Table::find */
+    public function find(string|int $id) : ?\ion\Symbol {}
+    /** @alias ion\Symbol\Table::findLocal */
+    public function findLocal(string|int $id) : ?\ion\Symbol {}
+}
+
+namespace ion\Decimal;
+
+/**
+ * An ion\Decimal's context.
+ */
+class Context {
+    /**
+     * Create a new decimal context.
+     */
+    public function __construct(
+        /**
+         * Maximum digits.
+         */
+        public readonly int $digits,
+        /**
+         * Maximum exponent.
+         */
+        public readonly int $eMax,
+        /**
+         * Minimum exponent.
+         */
+        public readonly int $eMin,
+        /**
+         * Rounding mode.
+         */
+        public readonly Context\Rounding|int $round,
+        /**
+         * Whether to clamp.
+         */
+        public readonly bool $clamp,
+    ) {}
+
+    /**
+     * Create a context suitable for 32bit decimals.
+     */
+    public static function Dec32() : Context {}
+
+    /**
+     * Create a context suitable for 64bit decimals.
+     */
+    public static function Dec64() : Context {}
+
+    /**
+     * Create a context suitable for 128bit decimals.
+     */
+    public static function Dec128() : Context {}
+
+    /**
+     * Create a context with maximum settings.
+     * @param Context\Rounding|int $round Rounding mode.
+     */
+    public static function DecMax(Context\Rounding|int $round = Context\Rounding::HalfEven) : Context {}
+}
+
+namespace ion\Decimal\Context;
+
+/**
+ * Rounding mode.
+ */
+enum Rounding : int {
+    case Ceiling    = 0;
+    case Up         = 1;
+    case HalfUp     = 2;
+    case HalfEven   = 3;
+    case HalfDown   = 4;
+    case Down       = 5;
+    case Floor      = 6;
+    case Down05Up   = 7;
+}
+
+namespace ion\Timestamp;
+
+/**
+ * Timestamp precision.
+ */
+enum Precision : int {
+    case Year           = 0x1;
+    case Month          = 0x1|0x2;
+    case Day            = 0x1|0x2|0x4;
+    case Min            = 0x1|0x2|0x4|0x10;
+    case Sec            = 0x1|0x2|0x4|0x10|0x20;
+    case Frac           = 0x1|0x2|0x4|0x10|0x20|0x40;
+    case MinTZ          = 0x1|0x2|0x4|0x10|0x80;
+    case SecTZ          = 0x1|0x2|0x4|0x10|0x20|0x80;
+    case FracTZ         = 0x1|0x2|0x4|0x10|0x20|0x40|0x80;
+}
+
+/**
+ * Timestamp format.
+ */
+enum Format : string {
+    case Year           = "Y\T";
+    case Month          = "Y-m\T";
+    case Day            = "Y-m-d\T";
+    case Min            = "Y-m-d\TH:i";
+    case Sec            = "Y-m-d\TH:i:s";
+    case Frac           = "Y-m-d\TH:i:s.v";
+    case MinTZ          = "Y-m-d\TH:iP";
+    case SecTZ          = "Y-m-d\TH:i:sP";
+    case FracTZ         = "Y-m-d\TH:i:s.vP";
+}
+
+namespace ion\Reader;
+
+/**
+ * Reader options.
+ */
+class Options {
+    public function __construct(
+        /**
+         * ION catalog to use for symbol lookup.
+         */
+        public readonly ?\ion\Catalog $catalog = null,
+        /**
+         * Decimal context to use.
+         */
+        public readonly ?\ion\Decimal\Context $decimalContext = null,
+        /**
+         * Callback as function(\ion\Reader):void called upon local symbol table context change.
+         */
+        public readonly ?\Closure $onContextChange = null,
+        /**
+         * Whether to return otherwise hidden system values.
+         */
+        public readonly bool $returnSystemValues = false,
+        /**
+         * The maximum depth of nested containers.
+         */
+        public readonly int $maxContainerDepth = 10,
+        /**
+         * The maximum number of annotations allowed on a single value.
+         */
+        public readonly int $maxAnnotations = 10,
+        /**
+         * The maximum number of bytes of all annotations on a single value.
+         */
+        public readonly int $annotationBufferSize = 0x4000,
+        /**
+         * The maximum number of bytes of a symbol/value/chunk.
+         */
+        public readonly int $tempBufferSize = 0x4000,
+        /**
+         * Whether to skip UTF-8 validation.
+         */
+        public readonly bool $skipCharacterValidation = false,
+    ) {}
+}
+
+/**
+ * Base implementation of ION readers.
+ */
+abstract class Reader implements \ion\Reader {
+    /**
+     * Reader options.
+     */
+    public readonly ?Options $options;
+
+    public function hasChildren() : bool {}
+    public function getChildren() : \ion\Reader {}
+
+    public function rewind() : void {}
+    public function next() : void {}
+    public function valid() : bool {}
+    public function key() : mixed {}
+    public function current() : mixed {}
+
+    public function getType() : \ion\Type {}
+    public function hasAnnotations() : bool {}
+    public function hasAnnotation(string $annotation) : bool {}
+    public function isNull() : bool {}
+    public function isInStruct() : bool {}
+    public function getFieldName() : string {}
+    public function getFieldNameSymbol() : \ion\Symbol {}
+    public function getAnnotations() : array {}
+    public function getAnnotationSymbols() : array {}
+    public function countAnnotations() : int {}
+    public function getAnnotation(int $index) : string {}
+    public function getAnnotationSymbol(int $index) : \ion\Symbol {}
+
+    public function readNull() : \ion\Type {}
+    public function readBool() : bool {}
+    public function readInt() : int|string {}
+    public function readFloat() : float {}
+    public function readDecimal() : \ion\Decimal {}
+    public function readTimestamp() : \ion\Timestamp {}
+    public function readSymbol() : \ion\Symbol {}
+    public function readString() : string {}
+    /** @param ref $string */
+    public function readStringPart(&$string, int $length = 0x1000) : bool {}
+    public function readLob() : string {}
+    /** @param ref $string */
+    public function readLobPart(&$string, int $length = 0x1000) : bool {}
+
+    public function getPosition() : int {}
+    public function getDepth() : int{}
+
+    public function seek(int $offset, int $length = -1) : void {}
+    /*
+    public function getSymbolTable() : SymbolTable {}
+    public function setSymbolTable(SymbolTable $table) : void {}
+    */
+    public function getValueOffset() : int {}
+    public function getValueLength() : int {}
+}
+
+/**
+ * ION string buffer reader API.
+ */
+interface Buffer extends \ion\Reader {
+    /**
+     * Get the buffer read from.
+     *
+     * @return string The buffer read from.
+     */
+    public function getBuffer() : string;
+}
+
+/**
+ * ION stream reader API.
+ */
+interface Stream extends \ion\Reader {
+    /**
+     * Get the stream read from.
+     *
+     * @return resource The stream read from.
+     */
+    public function getStream();
+
+    /**
+     * Reset the stream read from.
+     *
+     * @param resource $stream The new stream to from.
+     */
+    public function resetStream($stream) : void;
+
+    /**
+     * Reset the stream read from, limiting length to read.
+     *
+     * @param resource $stream The stream to read from.
+     * @param int $length The maximum length to read from $stream.
+     */
+    public function resetStreamWithLength($stream, int $length) : void;
+}
+
+namespace ion\Reader\Buffer;
+
+/**
+ * ION string buffer reader.
+ */
+class Reader extends \ion\Reader\Reader implements \ion\Reader\Buffer {
+    /**
+     * Create a new string buffer reader.
+     *
+     * @param string $buffer The buffer to read from.
+     * @param \ion\Reader\Options|null $options Reader options.
+     */
+    public function __construct(
+        string $buffer,
+        ?\ion\Reader\Options $options = null,
+    ) {}
+
+    public function getBuffer() : string {}
+}
+
+namespace ion\Reader\Stream;
+
+/**
+ * ION stream reader.
+ */
+class Reader extends \ion\Reader\Reader implements \ion\Reader\Stream {
+    /**
+     * Create a new stream reader.
+     *
+     * @param resource $stream The stream to read from.
+     * @param \ion\Reader\Options|null $options Reader options.
+     */
+    public function __construct(
+        $stream,
+        ?\ion\Reader\Options $options = null,
+    ) {}
+
+    /**
+     * Get the stream read from.
+     *
+     * @return resource The stream read from.
+     */
+    public function getStream() {}
+
+    /** @param resource $stream */
+    public function resetStream($stream) : void {}
+    /** @param resource $stream */
+    public function resetStreamWithLength($stream, int $length) : void {}
+}
+
+namespace ion\Writer;
+
+/**
+ * ION writer options.
+ */
+class Options {
+    /**
+     * Create custom ION writer options.
+     */
+    public function __construct(
+        /**
+         * ION catalog to use for symbol lookup.
+         */
+        public readonly ?\ion\Catalog $catalog = null,
+        /**
+         * Decimal context to use.
+         */
+        public readonly ?\ion\Decimal\Context $decimalContext = null,
+        /**
+         * Whether to output binary ION.
+         */
+        public readonly bool $outputBinary = false,
+        /**
+         * Whether to write doubles which fit in 32 bits as floats.
+         */
+        public readonly bool $compactFloats = false,
+        /**
+         * Whether to slash-escape all non ASCII bytes.
+         */
+        public readonly bool $escapeNonAscii = false,
+        /**
+         * Whether to produce pretty-printed output.
+         */
+        public readonly bool $prettyPrint = false,
+        /**
+         * Whether to indent with tabs, when pretty-printing.
+         */
+        public readonly bool $indentTabs = true,
+        /**
+         * The number of spaces to use for indentation instead of tabs, when pretty-printing.
+         */
+        public readonly int $indentSize = 2,
+        /**
+         * Whether to immediately flush every value written.
+         */
+        public readonly bool $flushEveryValue = false,
+        /**
+         * Maximum depth of nested containers.
+         */
+        public readonly int $maxContainerDepth = 10,
+        /**
+         * The maximum number of annotations allowed on a single value.
+         */
+        public readonly int $maxAnnotations = 10,
+        /**
+         * Temporary buffer size.
+         */
+        public readonly int $tempBufferSize = 0x4000,
+    ) {}
+}
+
+/**
+ * Base implementation of common functionality of ION writers.
+ */
+abstract class Writer implements \ion\Writer {
+    public function writeNull() : void {}
+    public function writeTypedNull(\ion\Type $type) : void {}
+    public function writeBool(bool $value) : void {}
+    public function writeInt(int|string $value) : void {}
+    public function writeFloat(float $value) : void {}
+    public function writeDecimal(\ion\Decimal|string $value) : void {}
+    public function writeTimestamp(\ion\Timestamp|string $value) : void {}
+    public function writeSymbol(\ion\Symbol|string $value) : void {}
+    public function writeString(string $value) : void {}
+    public function writeCLob(string $value) : void {}
+    public function writeBLob(string $value) : void {}
+
+    public function startLob(\ion\Type $type) : void {}
+    public function appendLob(string $data) : void {}
+    public function finishLob() : void {}
+
+    public function startContainer(\ion\Type $type) : void {}
+    public function finishContainer() : void {}
+
+    public function writeFieldName(string $name) : void {}
+
+    public function writeAnnotation(\ion\Symbol|string ...$annotation) : void {}
+
+    public function getDepth() : int {}
+    public function flush() : int {}
+    public function finish() : int {}
+
+    // public function writeOne(\ion\Reader $reader) : void {}
+    // public function writeAll(\ion\Reader $reader) : void {}
+}
+
+/**
+ * ION buffer writer API.
+ */
+interface Buffer extends \ion\Writer {
+    /**
+     * Get the buffer written to.
+     *
+     * @reeturn string The buffer written so far.
+     */
+    public function getBuffer() : string;
+
+    /**
+     * Reset the buffer written to.
+     */
+    public function resetBuffer() : void;
+}
+
+/**
+ * ION stream writer API.
+ */
+interface Stream extends \ion\Writer {
+    /**
+     * Get the stream being written to.
+     * @return resource
+     */
+    public function getStream();
+}
+
+namespace ion\Writer\Buffer;
+
+/**
+ * IO buffer writer.
+ */
+class Writer extends \ion\Writer\Writer implements \ion\Writer\Buffer {
+    /**
+     * Create a new buffer writer.
+     *
+     * @param \ion\Writer\Options|null $options Writer options.
+     */
+    public function __construct(
+        ?\ion\Writer\Options $options = null,
+    ) {}
+
+    public function getBuffer() : string {}
+    public function resetBuffer() : void {}
+}
+
+namespace ion\Writer\Stream;
+
+/**
+ * ION stream writer.
+ */
+class Writer extends \ion\Writer\Writer implements \ion\Writer\Stream {
+    /**
+     * Create a new stream writer.
+     *
+     * @param resource $stream The stream to write to.
+     * @param \ion\Writer\Options|null $options Writer options.
+     */
+    public function __construct(
+        $stream,
+        ?\ion\Writer\Options $options = null,
+    ) {}
+    /**
+     * @return resource
+     */
+    public function getStream() {}
+}
+
+namespace ion\Serializer;
+
+/**
+ * Specialization of the serializer for PHP.
+ */
+class PHP implements \ion\Serializer {
+    /**
+     * Create a new PHP ION serializer.
+     */
+    public function __construct(
+        /**
+         * Writer options.
+         */
+        public readonly ?\ion\Writer\Options $writerOptions = null,
+        /**
+         * Whether to write the top level array as multiple ION sequences.
+         */
+        public readonly bool $multiSequence = false,
+        /**
+         * Whether to call magic __serialize() methods on objects to serialize.
+         */
+        public readonly bool $callMagicSerialize = true,
+        /**
+         * Whether and which custom serialize method to call on objects to serialize.
+         */
+        public readonly ?string $callCustomSerialize = null,
+    ) {}
+
+    public function serialize(mixed $data) : string {}
+}
+
+namespace ion\Unserializer;
+
+/**
+ * Specialization of the unserializer for PHP.
+ */
+class PHP implements \ion\Unserializer {
+    /**
+     * Create a new ION PHP unserializer.
+     */
+    public function __construct(
+        /**
+         * Reader options.
+         */
+        public readonly ?\ion\Reader\Options $readerOptions = null,
+        /**
+         * Whether to continue reading multiple ION sequences after the first one.
+         */
+        public readonly bool $multiSequence = false,
+        /**
+         * Whether to call magic __unserialize() methods on objects to unserialize.
+         */
+        public readonly bool $callMagicUnserialize = true,
+        /**
+         * Whether and which custom unserialize method to call on objects to unserialize.
+         */
+        public readonly ?string $callCustomUnserialize = null,
+    ){}
+
+    /** @param string|resource $data */
+    public function unserialize($data) : mixed {}
+}
diff --git a/docs/v0.0/ion/: Contributing.html b/docs/v0.0/ion/: Contributing.html
new file mode 100644 (file)
index 0000000..8bf285c
--- /dev/null
@@ -0,0 +1,140 @@
+<!doctype html>
+<html>
+       <head>
+               <meta charset="utf-8">
+               <title>
+                                                       ★ Contributing -
+                                               mdref
+               </title>
+               <meta name="viewport" content="width=1200, initial-scale=0.5">
+                                       <base href="/v0.0/">
+                       <meta http-equiv="Content-Location" content="/v0.0/ion/: Contributing">
+                       <link rel="stylesheet" href="index.css">
+               
+               <link href="https://fonts.googleapis.com/css?family=Inconsolata&amp;subset=latin-ext" rel="stylesheet">
+               <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
+               <link rel="shortcut icon" href="/v0.0/favicon.ico">
+       </head>
+       <body>
+               <div class="page">
+               
+<div class="sidebar">
+       
+       <div class="edit">
+               <a href="./ion/: Contributing">Edit</a>
+       </div>
+       
+       
+       <ul>
+               <li>&lsh; <a href="./">Home</a>
+                       
+                       <ul>
+                               <li>
+                                                                                       
+                                       &uarr; <a href="./ion">
+                                                       ion
+                                               </a>
+                                               <ul>
+                                                       <li>
+                                                                                       
+                                                       &circlearrowright; <strong><a href="./ion/: Contributing">★ Contributing</a></strong>
+
+                                                       
+                                                                                                                                                                                                                                                               
+                                               </ul>
+                                                                                                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Exception">Exception</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/LOB">LOB</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Reader">Reader</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Serializer">Serializer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Symbol">Symbol</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Timestamp">Timestamp</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Type">Type</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Unserializer">Unserializer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Writer">Writer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/serialize">serialize</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/unserialize">unserialize</a></li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+                               </li>
+                       </ul>
+                       
+               </li>
+       </ul>
+</div>
+                                       
+<h1>Contributor Code of Conduct</h1>
+<p>As contributors and maintainers of this project, and in the interest of
+fostering an open and welcoming community, we pledge to respect all people who
+contribute through reporting issues, posting feature requests, updating
+documentation, submitting pull requests or patches, and other activities.</p>
+<p>We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, religion, or nationality.</p>
+<p>Examples of unacceptable behavior by participants include:</p>
+<ul>
+<li>The use of sexualized language or imagery</li>
+<li>Personal attacks</li>
+<li>Trolling or insulting/derogatory comments</li>
+<li>Public or private harassment</li>
+<li>Publishing other's private information, such as physical or electronic
+addresses, without explicit permission</li>
+<li>Other unethical or unprofessional conduct.</li>
+</ul>
+<p>Project maintainers have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct. By adopting this Code of Conduct, project
+maintainers commit themselves to fairly and consistently applying these
+principles to every aspect of managing this project. Project maintainers who do
+not follow or enforce the Code of Conduct may be permanently removed from the
+project team.</p>
+<p>This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.</p>
+<p>Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by opening an issue or contacting one or more of the project maintainers.</p>
+<p>This Code of Conduct is adapted from the
+<a href="http://contributor-covenant.org">Contributor Covenant</a>, version 1.2.0,
+available at <a href="http://contributor-covenant.org/version/1/2/0/">http://contributor-covenant.org/version/1/2/0/</a>.</p>
+
+
+
+               
+                       <div id="disqus_thread"><button id="disqus_activator">Show <span> </span> Comment(s)</button></div>
+                       <script>
+                               var disqus_shortname = 'mdref';
+                               var disqus_identifier = 'ion/: Contributing';
+                       </script>
+
+                       <footer>
+                               
+<ul>
+       <li><a href="https://github.com/m6w6/mdref">mdref-v2.0
+</a></li>
+       <li><a href="LICENSE">&copy; 2013-2022          All rights reserved.</a></li>
+       <li>
+</li>
+</ul>
+
+                       </footer>
+               
+                       <script src="index.js"></script>
+               
+               </div>
+       </body>
+</html>
diff --git a/docs/v0.0/ion/: Security.html b/docs/v0.0/ion/: Security.html
new file mode 100644 (file)
index 0000000..d34ab95
--- /dev/null
@@ -0,0 +1,135 @@
+<!doctype html>
+<html>
+       <head>
+               <meta charset="utf-8">
+               <title>
+                                                       ★ Security -
+                                               mdref
+               </title>
+               <meta name="viewport" content="width=1200, initial-scale=0.5">
+                                       <base href="/v0.0/">
+                       <meta http-equiv="Content-Location" content="/v0.0/ion/: Security">
+                       <link rel="stylesheet" href="index.css">
+               
+               <link href="https://fonts.googleapis.com/css?family=Inconsolata&amp;subset=latin-ext" rel="stylesheet">
+               <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
+               <link rel="shortcut icon" href="/v0.0/favicon.ico">
+       </head>
+       <body>
+               <div class="page">
+               
+<div class="sidebar">
+       
+       <div class="edit">
+               <a href="./ion/: Security">Edit</a>
+       </div>
+       
+       
+       <ul>
+               <li>&lsh; <a href="./">Home</a>
+                       
+                       <ul>
+                               <li>
+                                                                                       
+                                       &uarr; <a href="./ion">
+                                                       ion
+                                               </a>
+                                               <ul>
+                                                       <li>
+                                                                                       
+                                                       &circlearrowright; <strong><a href="./ion/: Security">★ Security</a></strong>
+
+                                                       
+                                                                                                                                                                                                                                                               
+                                               </ul>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Exception">Exception</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/LOB">LOB</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Reader">Reader</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Serializer">Serializer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Symbol">Symbol</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Timestamp">Timestamp</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Type">Type</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Unserializer">Unserializer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/Writer">Writer</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/serialize">serialize</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/unserialize">unserialize</a></li>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
+                               </li>
+                       </ul>
+                       
+               </li>
+       </ul>
+</div>
+                                       
+<h1>Security Policy</h1>
+<h2>Supported Versions<a id="Supported.Versions" href="#Supported.Versions" class="permalink" aria-hidden="true" title="">#</a></h2>
+<p>This project is still in its early development stages, so please consider
+any release not explicitly labeled as stable as experimental.</p>
+<table>
+<thead>
+<tr>
+<th>Version</th>
+<th>Supported</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>0.x</td>
+<td>✓</td>
+</tr>
+</tbody>
+</table>
+<h2>Reporting a Vulnerability<a id="Reporting.a.Vulnerability" href="#Reporting.a.Vulnerability" class="permalink" aria-hidden="true" title="">#</a></h2>
+<p>If you find a security vulnerability, please refrain from creating a
+public issue on Github, but rather contact me directly at <a href="mailto:mike@php.net">mike@php.net</a>
+or <a href="https://m6w6.name/#contact">another suitable private contact method</a>.</p>
+<p>Any past vulnerabilities should be found in release changelogs after they
+have been fixed.</p>
+<p>This is free and open source software provided under the the terms of
+the 2-Clause-BSD-License, see the <a href="./LICENSE">LICENSE</a> file.
+Thus, honor and goodwill is all being offered for reporting
+-- or even fixing -- any vulnerability.</p>
+
+
+
+               
+                       <div id="disqus_thread"><button id="disqus_activator">Show <span> </span> Comment(s)</button></div>
+                       <script>
+                               var disqus_shortname = 'mdref';
+                               var disqus_identifier = 'ion/: Security';
+                       </script>
+
+                       <footer>
+                               
+<ul>
+       <li><a href="https://github.com/m6w6/mdref">mdref-v2.0
+</a></li>
+       <li><a href="LICENSE">&copy; 2013-2022          All rights reserved.</a></li>
+       <li>
+</li>
+</ul>
+
+                       </footer>
+               
+                       <script src="index.js"></script>
+               
+               </div>
+       </body>
+</html>
index 5135e9b8c9faf6487b5618bd756efc59691bebdf..0514467a4d727721e1914944c63d115959517be2 100644 (file)
                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
                                                                                                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                                                                                                                        
                                                                                                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                                                                                                                        
index 71434afaa79e2cf54719f6008542ab800a96b44b..c521e50add077fe209322082bf2e184ce549be35 100644 (file)
 <li>ion\Symbol\Table $table<br />
 The new table to add.</li>
 </ul>
 <li>ion\Symbol\Table $table<br />
 The new table to add.</li>
 </ul>
-<h2>Returns:<a id="Returns:" href="#Returns:" class="permalink" aria-hidden="true" title="">#</a></h2>
-<ul>
-<li>void,</li>
-</ul>
 
 
 
 
 
 
index 98b80fcdd0dfa3db473d3e7519ce976217ba7e29..ff4534373c80db79990e34139b82568aa1e1e822 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Exception">Exception</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Exception">Exception</a></li>
index bf97b1a615d7986e0421830e991301f44df2d538..c7a36850f0eff0f75a8a2edc329aec4848d952da 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index bc07f4bc8e849206bdb5c2c1b9ca61618f55a3ee..cf489a29e6389089a0c69f88650ab94cb6c93b38 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 8dbe242ba3624cf8a461c12038f5c2b14125f756..f7d037cd9bf9d59707c8f0782b97b80a2178654c 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index e22108c716a8d17be74743ad53b178e5965ff82c..7d0aa5d89a2ce0dcd43955d2136317f79753e763 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 23dc76190622eca9e43b15509ac28f7665512f2a..18bfc3c9ff94ba6bea135f0cc2c62692c7d04cb4 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index c8b42792bce6c90eec1fe661df8ba96cbeca2a2a..821eb02c9ec614e3bb0f6e88758fb18d552e455a 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 9351ae368f51044fa8b6915d12ce2917c0edfeed..5867acf9a10d7228e353d65498187fb7d8621524 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 21542350666e8222dd9e291b84cb122c210e38aa..4e62282e2ac0c0b10e81f79e0df4262861ad8ff7 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 148914a82cc7feda9a7ed97d0f7cecce10d83d63..20d882eb2e7cd0e325dbd049b294b1efc4a265a5 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 265ce7d13f08140ba146c4bf8043ca5121d4acdf..3f272eb96c8943f5326d2756e838c599b995b620 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index 83d3856ebf5f28c619a34cc994ce0ab4445f2911..746ef29d15af910d41ea3b6e7fb451ff3276346e 100644 (file)
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
                                                                                                                                                                                                                                                                
                                                </ul>
                                                                                                                                                        
+                                               <li>&ldsh; <a href="./ion/: Contributing">★ Contributing</a></li>
+                                                                                                                                                       
+                                               <li>&ldsh; <a href="./ion/: Security">★ Security</a></li>
+                                                                                                                                                       
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
                                                <li>&ldsh; <a href="./ion/Catalog">Catalog</a></li>
                                                                                                                                                        
                                                <li>&ldsh; <a href="./ion/Decimal">Decimal</a></li>
index ce04908350f466d6a9d5c64d1703a0ff9967f9e5..cdae013e27711c0e2797255e98cd7350f5e2bd64 100644 (file)
@@ -40,6 +40,7 @@ https://awesomized.github.io/ext-ion/
    <file role="doc" name="CREDITS"/>
    <file role="doc" name="LICENSE"/>
    <file role="doc" name="README.md"/>
    <file role="doc" name="CREDITS"/>
    <file role="doc" name="LICENSE"/>
    <file role="doc" name="README.md"/>
+   <file role="doc" name="SECURITY.md"/>
    <dir name="docs">
     <file role="doc" name=".nojekyll"/>
     <file role="doc" name="index.html"/>
    <dir name="docs">
     <file role="doc" name=".nojekyll"/>
     <file role="doc" name="index.html"/>