diff --git a/404.html b/404.html new file mode 100644 index 00000000..c9f22d0b --- /dev/null +++ b/404.html @@ -0,0 +1,34 @@ + + + + + + + + + Ion + + + + + +

404

How did we get here?
Take me home
+ + + diff --git a/archive/current/code-of-conduct.html b/archive/current/code-of-conduct.html new file mode 100644 index 00000000..9b2ac6b4 --- /dev/null +++ b/archive/current/code-of-conduct.html @@ -0,0 +1,34 @@ + + + + + + + + + Code of Conduct | Ion + + + + + +

Code of Conduct

Be nice... be fair! Writing free Open Source software often means spending time developing after-hours, and in weekends. Chances are pretty good that you yourself are involved in one or many Open Source projects and already know how time-consuming it can be. In any case, the following constitutes the code of conduct used by Ion:

  • Be patient, nice and fair.
  • Be helpful and constructive.
  • Your words and actions must be free of harassment, harmful deeds or remarks, and malicious intent.
  • Respect the opinions of others, even if they contradict yours.

Consequences

Participants can be subject to consequences, if the code of conduct is not upheld. Such consequences include, but not limited to, warnings, and banning from further participation.

+ + + diff --git a/archive/current/contribution-guide.html b/archive/current/contribution-guide.html new file mode 100644 index 00000000..40cec333 --- /dev/null +++ b/archive/current/contribution-guide.html @@ -0,0 +1,34 @@ + + + + + + + + + Contribution Guide | Ion + + + + + +

Contribution Guide

Have you found a defect ( bug or design flawopen in new window ), or do you wish improvements? In the following sections, you might find some useful information on how you can help this project. In any case, I thank you for taking the time to help me improve this project's deliverables and overall quality.

Bug Report

If you have found a bug, please report it on GitHubopen in new window. When reporting the bug, do consider the following:

  • Where is the defect located
  • A good, short and precise description of the defect (Why is it a defect)
  • How to replicate the defect
  • (A possible solution for how to resolve the defect)

When time permits it, I will review your issue and take action upon it.

Security Vulnerability

Please read the Security Policy.

Feature Request

If you have an idea for a new feature or perhaps changing an existing, feel free to create a feature requestopen in new window. Should you feel unsure whether your idea is good or not, then perhaps you could start a discussionopen in new window.

Fork, code and send pull-request

If you wish to fix a bug, add new feature, or perhaps change an existing, then please follow this guideline

  • Fork this project
  • Create a new local development branch for the given fix, addition or change
  • Write your code / changes
  • Create executable test-cases (prove that your changes are solid!)
  • Commit and push your changes to your fork-repository
  • Send a pull-request with your changes (please check "Allow edits from maintainers")
  • Drink a Beeropen in new window - you earned it 😃

As soon as I receive the pull-request (and have time for it), I will review your changes and merge them into this project. If not, I will inform you why I choose not to.

+ + + diff --git a/archive/current/index.html b/archive/current/index.html new file mode 100644 index 00000000..b1125b9e --- /dev/null +++ b/archive/current/index.html @@ -0,0 +1,77 @@ + + + + + + + + + Release Notes | Ion + + + + + +

Release Notes

DANGER

Ion is still in development. You SHOULD NOT use any of the packages in production. Breaking changes MUST be expected for all v0.x releases!

Please review the CHANGELOG.mdopen in new window for additional details.

Support Policy

VersionTypeScriptECMA ScriptReleaseSecurity Fixes Until
1.x5.0 - ?TBDTBDTBD
0.x*5.0ES2022ongoing releasesuntil v1.x release

*: current supported version.

TBD: "To be decided".

v0.x Highlights

Mixins Available since v0.8

Adaptation of Justin Fagnani's mixwith.jsopen in new window.

import { mix, Mixin } from "@aedart/support/mixins";
+
+const NameMixin = Mixin((superclass) => class extends superclass {
+    #name;
+    
+    set name(value) {
+        this.#name = value;
+    }
+    
+    get name() {
+        return this.#name;
+    }
+});
+
+class Item extends mix().with(
+    NameMixin
+) {}
+
+// ...Later in your application
+const item = new Item();
+item.name = 'My Item';
+
+console.log(item.name); // My Item
+

See details and more examples in the @aedart/support/mixins documentation.

"Target" Meta Decorator Available since v0.7

Associate arbitrary metadata directly with the target element that is being decorated. See target meta decorator fro additional details.

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+class Service {
+
+    @targetMeta('desc', 'Seaches for cities')
+    search() {
+        // ...not shown...
+    }
+}
+
+const instance = new Service();
+
+// ...later in your application...
+getTargetMeta(instance.search, 'desc'); // Seaches for cities
+

Meta Decorator Available since v0.6

The meta decorator is able to associate arbitrary metadata with a class and its elements.

import {meta, getMeta} from '@aedart/support/meta';
+
+@meta('description', 'Able to search for locations')
+class Service {}
+
+getMeta(Service, 'description'); // Able to search for locations
+

Support Available since v0.3

A package intended to contain various helpers and utilities. At the moment, the package comes with a few object utilities. See package documentation for more details.

Vuepress Utils Available since v0.1

Utilities for vuepress sites, which includes an Archive component for structuring documentation into an archive. See package documentation for details.

+ + + diff --git a/archive/current/origin.html b/archive/current/origin.html new file mode 100644 index 00000000..15ae517a --- /dev/null +++ b/archive/current/origin.html @@ -0,0 +1,34 @@ + + + + + + + + + Origin | Ion + + + + + +

Origin

For many years, I was too discouraged and overburden to publish my JavaScript as packages. Having a full-time job and maintaining Athenaeumopen in new window took most of my time. Like so many other developers, I was copying JavaScript from one project into another. I always knew that was very bad practice. But, it was too cumbersome trying to maintain so much code, spread throughout various repositories.

Nevertheless, in recent years, Lernaopen in new window, TypeScriptopen in new window, and many other tools & frameworks made it somewhat easier to manage mono-reposopen in new window. I cannot claim to have gained more time, but decided to give JavaScript packages another shoot.

Meaning of "Ion"

"[...] An atom or a group of atoms that has an electric charge [...] - positive or negative" ("Scientific definition" from dictionary.comopen in new window)

+ + + diff --git a/archive/current/packages/contracts/index.html b/archive/current/packages/contracts/index.html new file mode 100644 index 00000000..40935501 --- /dev/null +++ b/archive/current/packages/contracts/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Introduction | Ion + + + + + +

Introduction Available since v0.3Browser

The contracts package contains types, interfaces and unique identifiers.

More information available at a later point...

+ + + diff --git a/archive/current/packages/contracts/install.html b/archive/current/packages/contracts/install.html new file mode 100644 index 00000000..345467fb --- /dev/null +++ b/archive/current/packages/contracts/install.html @@ -0,0 +1,37 @@ + + + + + + + + + How to install | Ion + + + + + +

How to install

npm

npm install --save-peer @aedart/contracts
+

yarn

yarn add --peer @aedart/contracts
+

pnpm

pnpm add --save-peer @aedart/contracts
+
+ + + diff --git a/archive/current/packages/index.html b/archive/current/packages/index.html new file mode 100644 index 00000000..8d1999ea --- /dev/null +++ b/archive/current/packages/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Introduction | Ion + + + + + +

Packages

In here, you will find documentation for the available packages. A few things that might be good to know:

Environment

Badges are used to indicate the environment that a package is intended for, e.g. NodeBrowser.

You are of course welcome to use a package in a different environment than its original intent, if it is possible.

Available Since

The "available since x.y.z" badge might also be displayed, if a package or feature was released during a minor version. E.g. Available since v1.5.

Not Released

Sometimes, documentation might be available for a package that has not yet been released. Usually it is tagged with a Not Released badge, unless the package documentation is located in "next" release".

Not Published

In rare situations, a package might only exist in the mono-repository and not published to npm's registry. Such a package is either experimental or internal, which means that it might not ever be published. Usually, it will be tagged with Internal (not published)Experimental, or similar badges, if documentation is made available about the package!

+ + + diff --git a/archive/current/packages/support/index.html b/archive/current/packages/support/index.html new file mode 100644 index 00000000..ebdd50c0 --- /dev/null +++ b/archive/current/packages/support/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Introduction | Ion + + + + + +

Introduction Available since v0.3Browser

The support package offers various utilities.

+ + + diff --git a/archive/current/packages/support/install.html b/archive/current/packages/support/install.html new file mode 100644 index 00000000..0bbf7326 --- /dev/null +++ b/archive/current/packages/support/install.html @@ -0,0 +1,37 @@ + + + + + + + + + How to install | Ion + + + + + +

How to install

npm

npm install --save-peer @aedart/support
+

yarn

yarn add --peer @aedart/support
+

pnpm

pnpm add --save-peer @aedart/support
+
+ + + diff --git a/archive/current/packages/support/meta.html b/archive/current/packages/support/meta.html new file mode 100644 index 00000000..8c4c4af9 --- /dev/null +++ b/archive/current/packages/support/meta.html @@ -0,0 +1,265 @@ + + + + + + + + + Meta | Ion + + + + + +

Meta Available since v0.6

Provides a decorator that is able to associate metadata with a class, its methods and properties.

import {meta, getMeta} from '@aedart/support/meta';
+
+@meta('service_alias', 'locationSearcher')
+class Service {}
+
+getMeta(Service, 'service_alias'); // locationSearcher
+

Prerequisites

At the time of this writing, decoratorsopen in new window are still in a proposal phase. To use the meta decorator, you must either use @babel/plugin-proposal-decoratorsopen in new window, or use TypeScript 5 decoratorsopen in new window.

Supported Elements

The meta decorator supports the following elements¹:

  • class
  • method
  • getter
  • setter
  • field
  • accessor

¹: An element is determined by the decorator's context.kindopen in new window property.

Defining and Retrieving Metadata

To define metadata on a class or its elements, use meta(). It accepts the following arguments:

To obtain metadata, use the getMeta() method. You can also use getAllMeta(), if you wish to obtain all available metadata for a target class.

import {meta, getMeta, getAllMeta} from '@aedart/support/meta';
+
+@meta('service_alias', 'locationSearcher')
+class Service
+{
+    @meta('name', 'Name of service') name;
+    
+    @meta('fetch.desc', 'Fetches resource via a gateway')
+    @meta('fetch.dependencies', [ 'my-gateway' ])
+    async fetch(gateway)
+    {
+        // ...implementation not shown...
+    }
+}
+
+// Later in your application...
+const service = new Service();
+
+const desc = getMeta(Service, 'fetch.desc');
+const dependencies = getMeta(Service, 'fetch.dependencies');
+
+// Or, obtain all metadata
+const allMeta = getAllMeta(Service);
+

Metadata Availability

Depending on the kind of element that is decorated, metadata might only become available for reading, after a new class instance has been instantiated. This is true for the following elements:

  • method
  • getter
  • setter
  • field
  • accessor

Static Elements

If an element is declared as staticopen in new window, then it's metadata becomes available as soon as the class has been defined.

Default Value

The getMeta() method also offers a defaultValue argument, which is returned, in case that a metadata value does not exist for a given identifier.

const description = getMeta(Service, 'fetch.desc', 'N/A - method has no description');
+

Callback

If you need to create more advanced metadata, you can specify a callback as the first argument for the meta() decorator method. When using a callback you gain access to the target that is being decorated, as well as the decorator context. The callback MUST return an object that contains a key and a value property.

import {meta} from '@aedart/support/meta';
+
+class Service {
+
+    @meta((target, context) => {
+        return {
+            key: context.name,
+            value: '...'
+        }
+    })
+    delegateTo(gateway) {
+        // ...not shown...
+    }
+}
+

Although the above example is a bit cumbersome to read, it shows a simple way to defined metadata for a method, which utilises the decorator context. If you wish, you can use this approach to create your own specialised meta decorators. Doing so can also improve the readability of your class. Consider the following example:

import {meta} from '@aedart/support/meta';
+
+function delegateMeta() {
+    return meta((target, context) => {
+        return {
+            key: context.name,
+            value: '...'
+        }
+    });
+}
+
+class Service {
+
+    @delegateMeta()
+    delegateTo(gateway) {
+        // ...not shown...
+    }
+}
+

Inheritance

Metadata is automatically inherited by subclasses.

import {meta, getMeta} from '@aedart/support/meta';
+
+@meta('service_alias', 'locationSearcher')
+class Service {}
+
+class CitySearcher extends Service {}
+
+getMeta(CitySearcher, 'service_alias'); // locationSearcher
+

Overwrites

You can also overwrite the inherited metadata. The subclass that defines the metadata creates its own copy of the inherited metadata. The parent class' metadata remains untouched.

import {meta, getMeta} from '@aedart/support/meta';
+
+class Service {
+    
+    @meta('search.desc', 'Searches for countries')
+    search() {
+        // ...not shown...
+    }
+}
+
+class CitySearcher extends Service {
+
+    @meta('search.desc', 'Searches for cities')
+    search() {
+        // ...not shown...
+    }
+}
+
+const service = new CitySearcher();
+
+getMeta(CitySearcher, 'search.desc'); // Searches for cities
+getMeta(Service, 'search.desc'); // Searches for countries
+

Changes outside the decorator

Whenever you read metadata, a copy is returned by the getMeta() method. This means that you can change the data, in your given context, but the original metadata remains the same.

import {meta, getMeta} from '@aedart/support/meta';
+
+@meta('description', { name: 'Search Service', alias: 'Location Sercher' })
+class Service {}
+
+// Obtain "copy" and change it...
+let desc = getMeta(Service, 'description');
+desc.name = 'Country Searcher';
+
+// Original remains unchanged
+getMeta(Service, 'description').name; // Search Service
+

Caution

Only the meta decorator is intended to alter existing metadata - even if the value is an object. Please be mindful of this behaviour, whenever you change retrieved metadata using the getMeta() and getAllMeta() methods.

TC39 Decorator Metadata

In relation to the Decorator Metadata proposalopen in new window, this decorator "mimics" a similar behaviour as the one defined by the proposal. Defining and retrieving metadata relies on a decorator's context.metadata object, and the Symbol.metadata property of a class.

Example:

import {meta, getMeta} from '@aedart/support/meta';
+
+@meta('service_alias', 'locationSearcher')
+class Service {}
+
+getMeta(Service, 'service_alias'); // locationSearcher
+

Roughly "desugars" to the following:

function meta(key, value) {
+    return (target, context) => {
+        context.metadata[key] = value;
+    }
+}
+
+@meta('service_alias', 'locationSearcher')
+class Service {}
+
+Service[Symbol.metadata].service_alias; // locationSearcher
+

(Above shown example is very simplified. Actual implementation is a bit more complex...)

At present, the internal mechanisms of the meta decorator must rely on a WeakMapopen in new window to associate metadata with the intended class. When the Decorator Metadata proposalopen in new window becomes more mature and transpilers offer the context.metadata object (or when browsers support it), then this decorator will be updated respectfully to use the available metadata object.

Target Meta Available since v0.7

The targetMeta() decorator offers the ability to associate metadata directly with a class instance or class method reference. This can be useful in situations when you do not know the class that owns the metadata.

Behind the scene, targetMeta() uses the meta() decorator and stores a reference to the target that is decorated inside a WeakMapopen in new window.

Supported Elements

Unlike the meta() decorator, targetMeta() only supports the following elements:

  • class
  • method

Example: class instance

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+@targetMeta('description', { type: 'Search Service', alias: 'Location Sercher' })
+class LocationSearcherService {}
+
+const instance = new LocationSearcherService();
+
+// ...later in your application...
+getTargetMeta(instance, 'description')?.type; // Search Service
+

Example: method reference

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+class LocationSearcherService {
+
+    @targetMeta('dependencies', [ 'httpClient' ])    
+    search(apiClient) {}
+}
+
+const instance = new LocationSearcherService();
+
+// ...later in your application...
+getTargetMeta(instance.search, 'dependencies'); // [ 'httpClient' ]
+

Inheritance

Target meta is automatically inherited by subclasses and can also be overwritten, similar to that of the meta() decorator.

Example: classes

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+@meta('service_alias', 'locationSearcher')
+class Service {}
+
+class CitySearcher extends Service {}
+
+const instance = new CitySearcher();
+
+// ...later in your application...
+getTargetMeta(instance, 'service_alias'); // locationSearcher
+

Example: methods

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+class Service {
+
+    @targetMeta('dependencies', [ 'countrySearchApiClient' ])
+    search(apiClient) {
+        // ...not shown...
+    }
+}
+
+class CountrySearcher extends Service {
+    // ... not method overwrite here...
+}
+
+class CitySearcher extends Service {
+
+    @targetMeta('dependencies', [ 'citySearchApiClient' ])
+    search(apiClient) {
+        // ...not shown...
+    }
+}
+
+const instanceA = new Service();
+const instanceB = new CountrySearcher();
+const instanceC = new CitySearcher();
+
+// ...later in your application...
+getTargetMeta(instanceA.search, 'dependencies'); // [ 'countrySearchApiClient' ]
+getTargetMeta(instanceB.search, 'dependencies'); // [ 'countrySearchApiClient' ]
+getTargetMeta(instanceC.search, 'dependencies'); // [ 'citySearchApiClient' ]
+

Static Methods

Inheritance for static methods works a bit differently. By default, any subclass will automatically inherit target metadata, even for static methods. However, if you overwrite the given static method, the metadata is lost.

Limitation

When a static method is overwritten, the parent's "target" metadata cannot be obtained due to a general limitation of the meta() decorator. The decorator has no late this binding available to the overwritten static method. This makes it impossible to associate the overwritten static method with metadata from the parent.

Example: inheritance for static methods

import {targetMeta, getTargetMeta} from '@aedart/support/meta';
+
+class Service {
+
+    @targetMeta('dependencies', [ 'xmlClient' ])
+    static search(client) {
+        // ...not shown...
+    }
+}
+
+class CountrySearcher extends Service {
+    // ... not method overwrite here...
+}
+
+class CitySearcher extends Service {
+    
+    // Overwite of static method - target meta is lost
+    static search(client) {}
+}
+
+// ...later in your application...
+getTargetMeta(CountrySearcher.search, 'dependencies'); // [ 'xmlClient' ]
+getTargetMeta(CitySearcher.search, 'dependencies'); // undefined
+

To overcome the above shown issue, you can use the inheritTargetMeta() decorator. It forces the static method to "copy" metadata from its parent, if available.

Example: force inheritance for static methods

import {
+    targetMeta,
+    getTargetMeta,
+    inheritTargetMeta
+} from '@aedart/support/meta';
+
+class Service {
+
+    @targetMeta('dependencies', [ 'xmlClient' ])
+    static search(client) {
+        // ...not shown...
+    }
+}
+
+class CountrySearcher extends Service {
+    // ... not method overwrite here...
+}
+
+class CitySearcher extends Service {
+    
+    @inheritTargetMeta()
+    static search(client) {}
+}
+
+// ...later in your application...
+getTargetMeta(CountrySearcher.search, 'dependencies'); // [ 'xmlClient' ]
+getTargetMeta(CitySearcher.search, 'dependencies'); // [ 'xmlClient' ]
+
+ + + diff --git a/archive/current/packages/support/misc.html b/archive/current/packages/support/misc.html new file mode 100644 index 00000000..4fe1a19e --- /dev/null +++ b/archive/current/packages/support/misc.html @@ -0,0 +1,143 @@ + + + + + + + + + Misc. | Ion + + + + + +

Misc. Available since v0.4

@aedart/support/misc offers miscellaneous utility methods.

descTag

Return the default string description of an object.

import {descTag} from '@aedart/support/misc';
+
+descTag('foo'); // [object String]
+descTag(3); // [object Number]
+descTag([1, 2, 3]); // [object Array]
+descTag(true); // [object Boolean]
+// ... etc
+

The method is a shorthand for the following:

Object.prototype.toString.call(/* your value */);
+

See Mozilla's documentationopen in new window for additional information.

empty

Determine if value is empty.

See also isset().

import {empty} from '@aedart/support/misc';
+
+empty(''); // true
+empty(false); // true
+empty(0); // true
+empty(0n); // true
+empty(NaN); // true
+empty(null); // true
+empty(undefined); // true
+empty([]); // true
+empty({}); // true
+empty(new Set()); // true
+empty(new Map()); // true
+empty(new Int8Array()); // true
+
+empty(' '); // false
+empty('a'); // false
+empty(true); // false
+empty(1); // false
+empty(1n); // false
+empty(-1); // false
+empty(Infinity); // false
+empty([ 1 ]); // false
+empty({ name: 'Jimmy' }); // false
+empty((new Set()).add('a')); // false
+empty((new Map).set('foo', 'bar')); // false
+empty(new Date()); // false
+empty(function() {}); // false
+empty(Symbol('my-symbol')); // false
+
+let typedArr = new Int8Array(1);
+typedArr[0] = 1;
+empty(typedArr); // false
+

WeakMap and WeakSet

empty() is not able to determine if a WeakMapopen in new window or WeakSetopen in new window is empty.

isKey Available since v0.7

Determine if given is a valid key or property path identifier.

import {isKey} from '@aedart/support/misc';
+
+isKey('foo'); // true
+isKey(12); // true
+isKey(Symbol('my-symbol')); // true
+isKey([ 'a', 'b.c', Symbol('my-other-symbol')]); // true
+
+isKey(true); // false
+isKey([]); // false
+isKey(null); // false
+isKey(undefined); // false
+isKey(() => true); // false
+

isPrimitive

Determine if a value is a primitive valueopen in new window.

import {isPrimitive} from '@aedart/support/misc';
+
+isPrimitive(null); // true
+isPrimitive(undefined); // true
+isPrimitive(true); // true
+isPrimitive(1); // true
+isPrimitive(1n); // true
+isPrimitive('foo'); // true
+isPrimitive(Symbol('my-symbol')); // true
+
+isPrimitive([1, 2, 3]); // false
+isPrimitive({ name: 'Rian' }); // false
+isPrimitive(function() {}); // false
+

isPropertyKey Available since v0.7

Determine if a key a valid property key name.

import {isPropertyKey} from '@aedart/support/misc';
+
+isPropertyKey('foo'); // true
+isPropertyKey(12); // true
+isPropertyKey(Symbol('my-symbol')); // true
+
+isPropertyKey(true); // false
+isPropertyKey(['a', 'b', 'c']); // false
+isPropertyKey(null); // false
+isPropertyKey(undefined); // false
+isPropertyKey(() => true); // false
+

isset

Determine if value is different from undefined and null.

See also empty().

import {isset} from '@aedart/support/misc';
+
+isset('foo'); // true
+isset(''); // true
+isset(true); // true
+isset(false); // true
+isset(1234); // true
+isset(1.234); // true
+isset([]); // true
+isset({}); // true
+isset(() => true); // true
+
+isset(undefined); // false
+isset(null); // false
+

You can also determine if multiple values differ from undefined and null.

Note: All given values must differ from undefined and null, before method returns true.

isset('foo', { name: 'Jane' }, [ 1, 2, 3 ]); // true
+
+isset('foo', null, [ 1, 2, 3 ]); // false
+isset('foo', { name: 'Jane' }, undefined); // false
+

mergeKeys Available since v0.7

The mergeKeys() method is able to merge two or more keys into a single key (see isKey()).

import { mergeKeys } from "@aedart/support/misc";
+
+const key = mergeKeys(Symbol('my-symbol'), [ 'b', 'c.d' ], 23);
+
+console.log(key); // [ Symbol('my-symbol'), 'b', 'c.d', 23 ];
+

toWeakRef Available since v0.7

Wraps a target object into a WeakRefopen in new window, if not already instance of a weak reference.

import { toWeakRef } from "@aedart/support/misc";
+
+const person = { name: 'Sine' };
+
+const a = toWeakRef(person); // new WeakRef of "person"
+const b = toWeakRef(a); // same WeakRef instance as "a"
+
+toWeakRef(null); // undefined
+toWeakRef(undefined); // undefined
+
+ + + diff --git a/archive/current/packages/support/mixins.html b/archive/current/packages/support/mixins.html new file mode 100644 index 00000000..4ca17b4f --- /dev/null +++ b/archive/current/packages/support/mixins.html @@ -0,0 +1,191 @@ + + + + + + + + + Mixins | Ion + + + + + +

Mixins Available since v0.8

@aedart/support/mixins offers an adaptation of Justin Fagnani'sopen in new windowmixwith.jsopen in new window package (originally licensed under Apache License 2.0open in new window).

import { mix, Mixin } from "@aedart/support/mixins";
+
+// Define mixin
+const NameMixin = Mixin((superclass) => class extends superclass {
+
+    #name;
+    
+    set name(value) {
+        this.#name = value;
+    }
+    
+    get name() {
+        return this.#name;
+    }
+});
+
+// Apply mixin...
+class Item extends mix().with(
+    NameMixin
+) {
+    // ...not shown...    
+}
+
+// ...Later in your application
+const item = new Item();
+item.name = 'My Item';
+
+console.log(item.name); // My Item
+

Define Mixin

You can use the Mixin decorator to define a new mixin. Amongst other things, the decorator will enable support for instanceofopen in new window checks. See instanceof Operator for additional information.

import { Mixin } from "@aedart/support/mixins";
+
+export const RectangleMixin = Mixin((superclass) => class extends superclass {
+    length = 0
+    width = 0;
+    
+    area() {
+        return this.length * this.width;
+    }
+});
+

Constructor

If you need to perform initialisation logic in your mixins, then you can do so by implementing a class constructoropen in new window. When doing so, it is important to invoke the parent constructor via super()open in new window and pass on eventual arguments.

import { Mixin } from "@aedart/support/mixins";
+
+export const RectangleMixin = Mixin((superclass) => class extends superclass {
+    
+    constructor(...args) {
+        super(...args); // Invoke parent constructor and pass on arugments!
+        
+        // Perform your initialisaiton logic...
+    }
+    
+    // ...remaining not shown...
+});
+

Applying Mixins

To apply one or more mixins, use the mix() function and call width() with the mixins you wish to apply to a superclass.

import { mix } from "@aedart/support/mixins";
+import {
+    RectangleMixin,
+    DescMixin
+} from "@acme/mixins";
+
+class Box extends mix().with(
+    RectangleMixin,
+    DescMixin
+) {
+    // ...remaining not shown...
+}
+

Extending Other Classes

To extend a superclass and apply mixins onto it, pass the superclass as argument for the mix() function.

class Shape {
+    // ...not shown...
+}
+
+class Box extends mix(Shape).with(
+    RectangleMixin,
+    DescMixin
+) {
+    // ...remaining not shown...
+}
+

Note

By default, if you do not provide mix() with a superclass, an empty class is automatically created. It is the equivalent of the following:

class Box extends mix(class {}).with(
+    MyMixinA,
+    MyMixinB,
+    MyMixinC,
+) {
+    // ...
+}
+

instanceof Operator

When you defined your mixins using the Mixin() decorator function, then it will support instanceof checks. Consider the following example:

// A regular mixin without "Mixin" decorator 
+const MixinA = (superclass) => class extends superclas {
+    // ...not shown...
+};
+
+// Mixin with "Mixin" decorator
+const MixinB = Mixin((superclass) => class extends superclass {
+    // ...not shown...
+});
+
+// -------------------------------------------------------------------- //
+
+class A {}
+
+class B extends mix(A).with(
+    MixinA,
+    MixinB
+) {}
+
+// -------------------------------------------------------------------- //
+
+const instance = new B();
+
+console.log(instance instanceof A); // true
+console.log(instance instanceof B); // true
+console.log(instance instanceof MixinA); // false
+console.log(instance instanceof MixinB); // true
+

How inheritance works

To gain an overview of how inheritance works when applying mixins onto a superclass, consider the following example:

const MyMixin = Mixin((superclass) => class extends superclass {
+    constructor(...args) {
+        super(...args); // Invokes A's constructor
+    }
+    
+    // Overwrites A's foo() method
+    foo() {
+        return 'zam';
+    }
+
+    // Overwrites A's bar() method
+    bar() {
+        return super.bar(); // Invoke A's bar() method
+    }
+});
+
+// -------------------------------------------------------------------- //
+
+class A {
+    foo() {
+        return 'foo';
+    }
+    
+    bar() {
+        return 'bar';
+    }
+}
+
+// -------------------------------------------------------------------- //
+
+class B extends mix(A).with(
+    MyMixin
+) {
+    constructor(...args) {
+        super(...args); // Invokes MyMixin's constructor
+    }
+
+    // Overwrite MyMixin's foo()
+    foo() {
+        const msg = super.foo(); // Invoke MyMixin's bar() method
+
+        return `<${msg}>`;
+    }
+}
+
+// -------------------------------------------------------------------- //
+
+const instance = new B();
+
+console.log(instance.foo()); // <zam>
+console.log(instance.bar()); // bar
+

Onward

For more information and examples, please read Mozilla's documentation about "Mix-ins"open in new window, and Justin Fagnani's blog posts:

+ + + diff --git a/archive/current/packages/support/objects.html b/archive/current/packages/support/objects.html new file mode 100644 index 00000000..e62d9f63 --- /dev/null +++ b/archive/current/packages/support/objects.html @@ -0,0 +1,194 @@ + + + + + + + + + Objects | Ion + + + + + +

Object Utility Methods

The @aedart/support/objects submodule offers object related utilities.

forget

Remove (delete) a value in object at given path. Method is an alias for Lodash unsetopen in new window.

import {forget} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        c: {
+            age: 24
+        }
+    },
+};
+
+forget(target, 'b.c');
+
+console.log(target); // { a: 1234, b: {} }
+

forgetAll

Remove (deletes) all values in object, at given paths.

import {forgetAll} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        c: {
+            age: 24
+        }
+    },
+};
+
+forgetAll(target, [ 'a', 'b.c.age' ]);
+
+console.log(target); // { b: { c: {} } }
+

get

Get value in object at given path. Method is an alias for Lodash getopen in new window.

See also set().

import {get} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        c: {
+            age: 24
+        }
+    },
+};
+
+let age = get(target, 'b.c.age');
+console.log(age); // 24
+

You can also specify a default value to be returned, if the resolved value is undefined.

const target = {
+    a: 1234,
+    b: {
+        c: {
+            age: undefined
+        }
+    },
+};
+
+// Returns default value...
+let age = get(target, 'b.c.age', 20);
+console.log(age); // 20
+

has

Determine if path is a property of given object. Method is an alias for Lodash hasInopen in new window.

See also isset().

import {has} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        c: {
+            age: 24
+        }
+    },
+};
+
+let result = has(target, 'b.c.age');
+console.log(result); // true
+

hasAll

Determine if all paths are properties of given object.

See also isset().

import {hasAll} from "@aedart/support/objects";
+
+const mySymbol = Symbol('my-symbol');
+const target = {
+    a: 1234,
+    b: {
+        name: 'Sven',
+        c: {
+            age: 24,
+            [mySymbol]: true
+        }
+    },
+    d: [
+        { name: 'Jane'},
+        { name: 'Ashley'},
+    ],
+};
+
+const paths = [
+    'a',
+    'b.name',
+    'b.c.age',
+    ['b', 'c', mySymbol],
+    'd[0]',
+    'd[1].name',
+];
+
+let result = hasAll(target, paths);
+console.log(result); // true
+

hasAny

Determine if any paths are properties of given object.

import {hasAny} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        name: 'Sven',
+        c: {
+            age: 24
+        }
+    }
+};
+
+const paths = [
+    'z', // does not exist
+    'b.c.name', // does not exist
+    'b.c.age', // exist
+];
+
+let result = hasAny(target, paths);
+console.log(result); // true
+

hasUniqueId Available since v0.6

Determine if an object has a unique id.

See uniqueId for additional details.

import {hasUniqueId} from "@aedart/support/objects";
+
+const target = {
+    name: 'Ursula'
+};
+
+console.log(hasUniqueId(target)); // false
+

isset

Determine if paths are properties of given object and have values. This method differs from has(), in that it only returns true if properties' values are not undefined and not null.

See also misc. isset().

import {isset} from "@aedart/support/objects";
+
+const target = {
+    a: 1234,
+    b: {
+        name: undefined,
+        c: {
+            age: null
+        }
+    },
+};
+
+console.log(isset(target, 'a')); // true
+console.log(isset(target, 'b')); // true
+console.log(isset(target, 'b.name')); // false
+console.log(isset(target, 'b.c')); // true
+console.log(isset(target, 'b.c.age')); // false
+

You can also check if multiple paths are set.

console.log(isset(target, 'a', 'b')); // true
+console.log(isset(target, 'b.c', 'b.name')); // false
+console.log(isset(target, 'a', 'b.name', 'b.c.age')); // false
+

set

Set a value in object at given path. Method is an alias for Lodash setopen in new window.

import {set} from "@aedart/support/objects";
+
+const target = {};
+
+set(target, 'a.foo', 'bar');
+
+console.log(target); // { a: { foo: 'bar } }
+

uniqueId Available since v0.6

The uniqueId() is able to return a "unique¹" reference identifier for any given object.

import {uniqueId, hasUniqueId} from "@aedart/support/objects";
+
+const target = {
+    name: 'Ursula'
+};
+
+console.log(uniqueId(target)); // 27
+
+// ...later in your application
+console.log(hasUniqueId(target)); // true
+console.log(uniqueId(target)); // 27
+

The source code is heavily inspired by Nicolas Gehlert'sopen in new window blog post: "Get object reference IDs in JavaScript/TypeScript" (September 28, 2022)open in new window

¹: In this context, the returned number is unique in the current session. The number will NOT be unique across multiple sessions, nor guarantee that an object will receive the exact same identifier as in a previous session!

+ + + diff --git a/archive/current/packages/support/reflections.html b/archive/current/packages/support/reflections.html new file mode 100644 index 00000000..cb53239e --- /dev/null +++ b/archive/current/packages/support/reflections.html @@ -0,0 +1,43 @@ + + + + + + + + + Reflections | Ion + + + + + +

Reflections Available since v0.7

The @aedart/support/reflections submodule offers a few reflection related utilities.

isConstructor

Based on the TC39 Function.isCallable() / Function.isConstructor()open in new window proposal, the isConstructor() can determine if given argument is a constructor.

import { isConstructor } from "@aedart/support/reflections";
+
+isConstructor(null); // false
+isConstructor({}); // false
+isConstructor([]); // false
+isConstructor(function() {}); // true
+isConstructor(() => {}); // false
+isConstructor(Array); // true
+isConstructor(class {}); // true
+





 

 
 

Acknowledgement

The source code of the above shown methods is heavily inspired by Denis Pushkarev's Core-js implementation of the Function.isCallable / Function.isConstructoropen in new window proposal (License MIT).

+ + + diff --git a/archive/current/packages/vuepress-utils/components/version-disclaimer.html b/archive/current/packages/vuepress-utils/components/version-disclaimer.html new file mode 100644 index 00000000..8f8d51f8 --- /dev/null +++ b/archive/current/packages/vuepress-utils/components/version-disclaimer.html @@ -0,0 +1,72 @@ + + + + + + + + + Version Disclaimer | Ion + + + + + +

Version Disclaimer

The <VersionDisclaimer /> component is a simply "notice" container, which can be used in your layout. Most often, you would use this to display a custom message when outdated / unsupported documentation is being viewed.

<VersionDisclaimer type="warning" label="Note">
+    You are viewing documentation for an unsupported version...
+</VersionDisclaimer>
+

Properties

type (optional)

The type property accepts the following values:

  • info (default)
  • warning
  • danger

label (optional)

An optional label that is used as a prefix for the custom disclaim message.

Extend Default Layout

The following example assumes that you are using an Archive component to structure documentation. When doing so, you can display a custom message whenever "outdated" or "upcoming" documentation is being viewed.

To achieve this, you will need to create a custom layoutopen in new window (e.g. extend the default theme). Create a new layout, e.g. in .vuepress/layouts/Layout.vue.

<script setup lang="ts">
+import ParentLayout from '@vuepress/theme-default/layouts/Layout.vue';
+import VersionDisclaimer from "@aedart/vuepress-utils/components/VersionDisclaimer.vue";
+import {usePageData} from "@vuepress/client";
+import {isViewingNextRef, isViewingOtherRef} from "@aedart/vuepress-utils";
+import archive from "../my_archive";
+
+const page = usePageData();
+const showForNext = isViewingNextRef(page, archive);
+const showForOther = isViewingOtherRef(page, archive);
+</script>
+
+<template>
+  <ParentLayout>
+    <template #page-top>
+        
+      <VersionDisclaimer v-if="showForNext">
+        You are viewing documentation for next version...
+      </VersionDisclaimer>
+        
+      <VersionDisclaimer v-if="showForOther" type="danger" label="Oh oh">
+        You are viewing old stuff...
+      </VersionDisclaimer>
+
+    </template>
+  </ParentLayout>
+</template>
+

The isViewingNextRef() method returns a computed property that indicates if visitor is viewing the "next" collection of pages. The isViewingOtherRef() methods returns a computed property that determines if pages are viewed that do not belong to "next" nor "current" collections.

Client Config

In your Client Config Fileopen in new window, use the custom Layout.

import { defineClientConfig } from '@vuepress/client';
+import Layout from "./layouts/Layout.vue";
+
+export default defineClientConfig({
+    layouts: {
+        Layout
+    }
+});
+
+ + + diff --git a/archive/current/packages/vuepress-utils/index.html b/archive/current/packages/vuepress-utils/index.html new file mode 100644 index 00000000..87a31db8 --- /dev/null +++ b/archive/current/packages/vuepress-utils/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Introduction | Ion + + + + + +

Introduction Available since v0.1NodeBrowser

Contains a few utilities for Vuepress v2open in new window, which are also used for building this documentation site. Amongst them are:

Plugins

Components

+ + + diff --git a/archive/current/packages/vuepress-utils/install.html b/archive/current/packages/vuepress-utils/install.html new file mode 100644 index 00000000..796345c9 --- /dev/null +++ b/archive/current/packages/vuepress-utils/install.html @@ -0,0 +1,37 @@ + + + + + + + + + How to install | Ion + + + + + +

How to install

npm

npm install --save-dev @aedart/vuepress-utils
+

yarn

yarn add --dev @aedart/vuepress-utils
+

pnpm

pnpm add --save-dev @aedart/vuepress-utils
+
+ + + diff --git a/archive/current/packages/vuepress-utils/navigation/archive.html b/archive/current/packages/vuepress-utils/navigation/archive.html new file mode 100644 index 00000000..e7df4499 --- /dev/null +++ b/archive/current/packages/vuepress-utils/navigation/archive.html @@ -0,0 +1,155 @@ + + + + + + + + + Archive | Ion + + + + + +

Archive

The Archive component is a helper that keeps track of collections of pages in an "archive" (exactly like this site). It operates on the notion that there is always a "current" and "next" collection of pages. It can be used to structure documentation for various versions of your application, components, packages...etc.

Directory Structure

The following illustrates a possible archive structure of your documentation. Notice the "current" and "next" directories. These two directories are essential for the Archive component. Their names can be configured (shown later). Each of the directories contains a collection of pages.

/.vuepress
+    /my_archive
+        index.ts
+        v3x.ts
+        v4x.ts
+        v5x.ts
+        ...
+    client.ts
+    config.ts
+
+/my_archive
+    /current
+        README.md
+        ...
+    /next
+        README.md
+        ...
+    /v4x
+        README.md
+        ...
+    /v3x
+        README.md
+        ...
+    README.md
+

 









 


 









Collections

Each Archive component is dependent on having its structure defined by means of PagesCollection components. As such, to represent the "current" collection, you must create a new PagesCollection instance. Use the static make() method to create a new instance. It accepts 3 arguments:

  • name: string Name or title of the collection.
  • path: string The relative path in the archive to the collection.
  • pages: SidebarConfigArray = [] An array of pages or group of pages. Each page's path is relative to the collection's path.
// E.g. inside /.vuepress/my_archive/v5x.ts
+import {PagesCollection} from "@aedart/vuepress-utils/navigation";
+
+export default PagesCollection.make('v5.x', '/v5x', [
+    {
+        text: 'Version 5.x',
+        collapsible: true,
+        children: [
+            '',
+            'contribution-guide',
+            'security',
+            'code-of-conduct',
+        ]
+    },
+    {
+        text: 'Packages',
+        collapsible: true,
+        children: [
+            'packages/',
+
+            // ...remaining not shown here...
+        ]
+    },
+
+    // ...etc
+]);
+

PagesCollection `path`

The path argument of a pages collection will automatically be changed, by the Archive component, if the collection is marked as the "current" or "next" collection (covered in next section).

Archive Instance

Once you have your "current" and "next" collections defined, you can create a new Archive instance. Use the static make() method to create a new instance. It accepts 3 arguments:

  • current: PagesCollection The collection to be marked as the "current".
  • next: PagesCollection The collection to be marked as the "next".
  • collections: PagesCollection[] = [] Array of all available collections, including "next" and "current".
// E.g. inside /.vuepress/my_archive/index.ts
+import {PagesCollection} from "@aedart/vuepress-utils/contracts";
+import {Archive} from "@aedart/vuepress-utils/navigation";
+import v3x from "./v3x.ts";
+import v4x from "./v4x.ts";
+import v5x from "./v5x.ts";
+import v6x from "./v6x.ts";
+
+// Defined the "current" colelction 
+const CURRENT: PagesCollection = v5x;
+
+// Defined the "next" colelction
+const NEXT: PagesCollection = v6x;
+
+// Define all collections... next and current should also be part of this...
+const ALL: PagesCollection[] = [
+    NEXT,
+    CURRENT,
+    v4x,
+    v3x,
+    // ... etc
+];
+
+// Finally, create and export your archive with "current" and "next" 
+const archive = Archive.make(CURRENT, NEXT, ALL);
+archive.path = '/my_archive';
+
+export default archive;
+

Name & Path

As shown in the previous example, the archive's path was set to /my_archive by explicitly setting the path property. You can do the same for its name:

// ...previous not shown ... 
+const archive = Archive.make(CURRENT, NEXT, ALL);
+archive.name = 'Good old stuff';
+archive.path = '/old_stuff';
+

WARNING

Your archive's directory structure must match the specified path or vuepress will not be able to find it and display a "404 Not Found".

/old_stuff
+    /current
+        README.md
+        ...
+    /next
+        README.md
+        ...
+    ...
+
 







Current & Next

Whenever a collection is marked as "current" or "next", its path is automatically changed to /current or /next. This means that the full path of those collections will be the archive's path + current or next, e.g.

  • /archive/current
  • /archive/next

To change these paths, specify the currentPath and nextPath properties in your Archive instance.

archive.currentPath = '/live'
+archive.nextPath = '/upcoming'
+

WARNING

When you change the "current" and "next" paths in your archive, then the directory structure MUST reflect these names. From the above example, the archive's directory structure should now be the following:

/my_archive
+    /live
+        README.md
+        ...
+    /upcoming
+        README.md
+        ...
+    ...
+

 


 



Labels

You may also change the labels for "current" and "next", in a similar way as for changing their paths.

archive.currentLabel = 'Live'
+archive.nextLabel = 'What\'s Next?'
+

Vuepress Config File

To put it all together, in your Config Fileopen in new window, import your archive instance. Inside your theme settings, you can create a dropdown representation of your archive, by invoking the asNavigationItem() method. A sidebar configuration can be created via the sidebarConfiguration() method.

import {defineUserConfig} from 'vuepress';
+import defaultTheme from "@vuepress/theme-default"
+import archive from './my_archive'
+
+export default defineUserConfig({
+    
+    // ...other settings not shown...
+
+    theme: defaultTheme({
+        
+        // ... other theme settings not shown ...
+        
+        navbar: [
+            archive.asNavigationItem(),
+        ],
+
+        sidebar: archive.sidebarConfiguration()
+    }),
+});
+

Onward

Use can review the source code and configuration of this site, as a complete example of how the Archive component can be used.

+ + + diff --git a/archive/current/packages/vuepress-utils/plugins/last-updated.html b/archive/current/packages/vuepress-utils/plugins/last-updated.html new file mode 100644 index 00000000..52b69327 --- /dev/null +++ b/archive/current/packages/vuepress-utils/plugins/last-updated.html @@ -0,0 +1,47 @@ + + + + + + + + + Last Updated | Ion + + + + + +

Last Updated

lastUpdatedPlugin() allows you to specify a custom datetime format for the "last updated" dateopen in new window, for the default theme. It uses Luxonopen in new window to perform the formatting.

How to use

In your Config Fileopen in new window, add the lastUpdatedPlugin():

import {defineUserConfig} from 'vuepress';
+import {lastUpdatedPlugin} from "@aedart/vuepress-utils/plugins";
+
+export default defineUserConfig({
+    
+    // ...other settings not shown...
+    
+    plugins: [
+        
+        lastUpdatedPlugin()
+    ]
+});
+

Format

Use the format argument to specify your desired datetime format. See Luxon documentationopen in new window for available format tokens.

lastUpdatedPlugin({ format: 'dd-MM-yyyy HH:mm:ss' })
+

Note

The plugin uses yyyy-MM-dd HH:mm:ss ZZZZ as default format, when none is given.

Example output: 2023-03-19 16:09:20 GMT+1

+ + + diff --git a/archive/current/packages/xyz/index.html b/archive/current/packages/xyz/index.html new file mode 100644 index 00000000..a113e101 --- /dev/null +++ b/archive/current/packages/xyz/index.html @@ -0,0 +1,34 @@ + + + + + + + + + XYZ (test package) | Ion + + + + + +

Introduction Internal (not published)

@aedart/xyz is an internal package that is used for experiments, e.g. tinkering with decorators, proxies, or whatever might be "fun" to try out. The package is NOT published, nor is it intended to ever be published.

+ + + diff --git a/archive/current/security.html b/archive/current/security.html new file mode 100644 index 00000000..e69422a7 --- /dev/null +++ b/archive/current/security.html @@ -0,0 +1,90 @@ + + + + + + + + + Security Policy | Ion + + + + + +

Security Policy

WARNING

DO NOT DISCLOSE SECURITY RELATED ISSUES PUBLICLY!PLEASE SEND AN ENCRYPTED EMAIL TO ME INSTEAD!

See "How to report a vulnerability" for instructions.

How to report a vulnerability

If you have discovered a vulnerability, please send an encrypted email to Alin Eugen Deac (aedart@gmail.com). Use the public PGP key listed below for encryption. Your email will be prioritised and addressed as quickly as possible.

In addition, please make sure that the contents of your email contains appropriate information about the vulnerability. E.g.:

  • Where the vulnerability is located
  • Why it is a vulnerability
  • Affected version(s)
  • (How it can be resolved, if you have a possible solution)

Public PGP Key

-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: Mailvelope v4.4.1
+Comment: https://www.mailvelope.com
+
+xsFNBGISJyIBEAC6JEo+xr48WA6fDTVjJKuF3MaT91VBrjynKNxcCBHINLw8
+qIiJYfRFvny0Ffx8xuKlK1rVJ4BpsX4fURb5mFiQtFe6paSBVLUOCDyjlhdz
+srKwhtz4tDpzc94dCUWkNJgWNa4ah5TuEJZLdXGptYeUtj3/UNqmAxsx6NEj
+/xXLX3eZ+rwn88UVxKoTFge1AwCLmRk0N55s6g1tQJ8MrGZvjjJ0OGCnDKhy
+h3CZI2SqlovL4/MXq0cYexqyUDLcZzEgbAKvNA/vnxc9oIBEIZoRZ1QxqXO6
+Z/Da8ItUJ8Eg8MmWIFmnqs+YfeOcHqxflm288c44BRPN3e3bM9tb8qhi+Xd8
+SE3D0Az1QVq3aoKzvF35bnV0KwB86so8ud4/fVtfBq6kklS6ZSS3wNhCRG3f
+imenk2DvOni9MqriXPOKxVBqa9yC0otua7/IoZGksNOwzjdUwpfY3guTv4iu
+nUcieHBmXtX57N4PHx1DZAWi0Zyh0dop3cnV8my3ZdQ0fR+GSI49z+1gcpSE
+OgANIDb5Ejk3EalmYxv4OKWl9M3sztaP5q7dOAo5vYoTwFv9cnjXaj7+8F7b
+fH0rQi/xJWeHd7BKHzgwz3zP/Wz57wFNvW9Yg0HVjjkBB/fwmqIGtImkVICV
+JfhnWBApezI+m8W4GI777GtG+DhR3nsTJQ43DQARAQABzSJBbGluIEV1Z2Vu
+IERlYWMgPGFlZGFydEBnbWFpbC5jb20+wsF1BBABCAAfBQJiEiciBgsJBwgD
+AgQVCAoCAxYCAQIZAQIbAwIeAQAKCRBcsQfpwXzHeO1kEACHLk3KrWzJ3qqP
+RP4RERnaD3wXy7j2my4zuAEDPq4miEekSfSSgna0yca5L22scDcJYk18wOlX
+f3TprZVkQ0xKKukHMgaJY3ydpug1dEM1Ve9TxzDVUEqiOAxg55P0s5rA8Uec
+exW8lzQcfCnR4ascuPCKoxo/zbvVoIZr3tnKaQirE+DJFcbsJlqNROG/XV+f
+mwjpI2/LIi+qJ/qxmL8iqE4KqUI147Usk1wztQGc6aY0OfK7uxZ+s0YvkbFQ
+lBJoJLG0MVodq9fpiakEzWN0q1OoQEJALrm1OvZD4JtxGSeSVw973y33nBdg
+NDbbwXmeh4mu6ObZgmNImxt/nTLBWsqYTS/3mzyUC/3eimuYWIsSi7A8JJ/s
+AmcG+Wp7yM9rRbiuZG/m0C+HneAICBcJ4QDV84XY4bMgu2zMgyWM5dbd65cR
+7ug+p8z7g7CieH+H1OYXNApn8+7HZjw7CbMsUaAGk4IgndCb1kxxI8+q1Et4
+waR0mMJ6uOslbP+24uEwrIe2boW4mcssqlNBSfBR3OCWs0VWNvB1tq1NBUZK
+rMuqdPzL/eNtObuNcEndXz18VWWmJBJaGCC7r5ARXB+MzO07B5UTHCu1mXCR
+6t9gqLuSEOwpbK8BJHSuyxYAPPlc7X7BUSlyZVmEqiVgmtHM0F6E4pydR7e4
+uSiBOG7d0c7BTQRiEiciARAAzR2TnBvCNI3/3bl6ZOPtru0Yr++gjIsNYsNc
+61wHDy9mhRENi1AjYngJK4UEmDrm/3rxlIrZrVm2OOXTLFxveGWJozeR1ovk
+og3zojZyYOgr8AabEtRAbsEHwIfjCSXV/z0c4mp05Jtcztll0OM+NE962gRI
+gt7tDzJweWKdsHOF4agQ3+L4g+nD76ZFLnpjoZsfSekdJLtCfl4bYVQgi4/I
+FFpJM3o7CiHeEjm26eaIu5SQ/U2Ciwnepgp7WDq+J9pbQS/5pq8wjSqUO0wW
+zyrD4fEjx2TnBTzV7aea4OumKZB6X+lJwTTpvN7BVF2ODfL2IEohzk14p3kM
+RMSpNgGtFeg7lfFDW9j0zK6vHOkFSDUZ0VbWpj6K6FtsimKx92bSS046Bdu4
+7l8Vx33vGk/QL09YiEJkeqE39DJ28TShyw1mtfUQXAJykaPIO9bpImTgYjwu
+umD9y7v3Ubr+9g0Bvsy7byEsppDtcFCuYK1wtd6kvdFZSCEAJIc23JGPwVLJ
+Mo7gDgR8W30TBuvhi2hEuwQq1kgE2XgrYMb4BbIo5OTplRqKePvEyq+Xgn1K
+Kak4HErs0X6uFcCXynAGINIV2H7pVCtCYC0XtaoG6WvtC6NR1TWGpmhVchY0
+3jCQdBpwvQyuTw4DcSJcbhFmJzo9PdzRN8fu8M4Kh9LapvUAEQEAAcLBXwQY
+AQgACQUCYhInIgIbDAAKCRBcsQfpwXzHeEmKD/4mysrPW/t9BfDE4kWYBCHO
+l54lXV9FfC6xHAR0v9qJTurv87svOZBwWeL8lnyFELB9DCLjgOtNT9ZbUcdm
+HuesBTm9jV83K3uvMBqzPKvxX1IZnxhVsg+KSRocY3PMa2QPCyriKDZ7tsFe
+5yMeXqHOtHuDsVzYJhmCK9oz85tl5xozFVJgmapn007ozAoK6XsQQmjY8U+C
+jiL/WHdN9yuFxYnxwCdtJ7Nh72uixs2nRZKjcCzWAFYHo6iJuWbxWG2l4LIq
+Rh9x3pLDSCth4xigObAaGiIj4nMWtrX9Re8/lze3BFKfB0IDp0+KUl63afeI
+/xcOoJ5JkhFqe/AJVX203Gr6niqn3ckD08zeB3ZgMgTVTo2uwX03wM9AHz43
+0Sp5n1c321E6mWtrBPTDL8xdBccLETYcmpDKA6jHUepwQTxst3ytbv/G1nZ5
+Dj6ADe/CSC95O6CO5BeXkM3gZeMmkuHtxjue1MLLhnGgrp1HMjxp5L92tUMU
+6chem/yKqEE5Ac0TCNMDAs+soQ/ISN++NQtk1f5QEDE2F7Ji8eLAFSclnXbh
+lf1Hu4IaSrvr8q+ctAGIgrh/N4oWDm/jYPT+QPCQEaYKUuGBNHIWWU5Pb+9S
+1IIhuIP3hQAzawPbIeoEgt2lCIii3BjLcZAZ2cVv9KuCG09D7F86j5Dz/R7V
+gA==
+=E13G
+-----END PGP PUBLIC KEY BLOCK-----
+

Supported Versions

Please read the Support Policy for additional information about what versions are supported.

+ + + diff --git a/archive/current/upgrade-guide.html b/archive/current/upgrade-guide.html new file mode 100644 index 00000000..2013c8d7 --- /dev/null +++ b/archive/current/upgrade-guide.html @@ -0,0 +1,65 @@ + + + + + + + + + Upgrade Guide | Ion + + + + + +

Upgrade Guide

From v0.6.x to v0.7.x

Node.js 20.11.0 Required

Ion now requires Node.jsopen in new window v20.11.0 or greater.

Meta

Various metadata related type definitions have now been deprecated in favour of TypeScript's own definitions. Mostly, this should not affect the implementation. However, if your decorator(s) depend on the following types (see below), then you are strongly encouraged to use corresponding TypeScript defined types instead.

Deprecated types and interfaces are defined in @aedart/contracts/support/meta:

  • ClassContext
  • MethodContext
  • GetterContext
  • SetterContext
  • FieldContext
  • AccessorContext
  • MetadataContext
  • MemberContext

More information available in the source code and CHANGELOG.md

Vuepress Utils

The @aedart/vuepress-utils has been upgraded to use vuepress v2.0.0-rc.2, meaning that you no longer should require to manually define your vuepress dependency, in your application's packages.json file.

❌ Previously

{
+    "devDependencies": {
+        "@aedart/vuepress-utils": "^0.6.1",
+        "vuepress": "2.0.0-beta.61",
+        "@vuepress/core": "2.0.0-beta.61",
+        "@vuepress/utils": "2.0.0-beta.61",
+        "@vuepress/client": "2.0.0-beta.61"
+    }   
+}
+

✔️ Now

{
+    "devDependencies": {
+        "@aedart/vuepress-utils": "^0.7.0"
+    }   
+}
+

Please read vuepress' changelogopen in new window for additional details.

Webpack Bundle

In addition to the above, the @aedart/vuepress-utils automatically comes with @vuepress/bundler-webpack as its peed dependency.

From v0.3.x to v0.4.x

Rest Parameters for forgetAll(), hasAll() and hasAny()

forgetAll(), hasAll() and hasAny() (in @aedart/support/object submodule) now accept rest parameters instead of an array of paths. If you are using these methods, then you need to upgrade or risk unexpected results.

❌ Previously

import {
+    forgetAll,
+    hasAll,
+    hasAny
+} from "@aedart/support/objects";
+
+hasAny(target, [ 'a', 'b.c.age' ]);
+hasAll(target, [ 'a', 'b.c.age' ]);
+forgetAll(target, [ 'a', 'b.c.age' ]);
+

✔️ Now

hasAny(target, ...[ 'a', 'b.c.age' ]);
+hasAll(target, ...[ 'a', 'b.c.age' ]);
+forgetAll(target, ...[ 'a', 'b.c.age' ]);
+
+// ...Or
+hasAny(target, 'a', 'b.c.age');
+hasAll(target, 'a', 'b.c.age');
+forgetAll(target, 'a', 'b.c.age');
+

Onward

More details can be found in the changelogopen in new window.

+ + + diff --git a/archive/index.html b/archive/index.html new file mode 100644 index 00000000..901a9c5a --- /dev/null +++ b/archive/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Archive | Ion + + + + + +

Archive

Here you can find documentation for previous versions of Ion. Please select the desired version via the "Archive" menu item located in the top-menu.

+ + + diff --git a/archive/next/index.html b/archive/next/index.html new file mode 100644 index 00000000..56c4c1d8 --- /dev/null +++ b/archive/next/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Not Available | Ion + + + + + +
You are viewing documentation for an upcoming version. It has not yet been released!!

Not Available

The next version of Ion has yet to be designed and implemented. Come back at a later time to review the documentation...

+ + + diff --git a/archive/not_available.html b/archive/not_available.html new file mode 100644 index 00000000..538cb61c --- /dev/null +++ b/archive/not_available.html @@ -0,0 +1,34 @@ + + + + + + + + + Not Available | Ion + + + + + +
You are viewing documentation for an outdated version. It is no longer supported!

Not Available

The next version of Ion has yet to be designed and implemented. Come back at a later time to review the documentation...

+ + + diff --git a/assets/css/styles.b6b379df.css b/assets/css/styles.b6b379df.css new file mode 100644 index 00000000..9c92beeb --- /dev/null +++ b/assets/css/styles.b6b379df.css @@ -0,0 +1,13 @@ +:root{--external-link-icon-color:#aaa} +.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;user-select:none} +:root{--medium-zoom-z-index:100;--medium-zoom-bg-color:#ffffff;--medium-zoom-opacity:1} +.medium-zoom-overlay{background-color:var(--medium-zoom-bg-color)!important;z-index:var(--medium-zoom-z-index)}.medium-zoom-overlay~img{z-index:calc(var(--medium-zoom-z-index) + 1)}.medium-zoom--opened .medium-zoom-overlay{opacity:var(--medium-zoom-opacity)} +:root{--nprogress-color:#29d;--nprogress-z-index:1031} +#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px} + +:root{--c-brand:#3eaf7c;--c-brand-light:#4abf8a;--c-tip:#42b983;--c-code-group-tab-title:rgba(255, 255, 255, 0.9);--c-code-group-tab-bg:var(--code-bg-color);--c-code-group-tab-outline:var(var(--c-code-group-tab-title));--c-code-group-tab-active-border:var(--c-brand)}#nprogress{--nprogress-color:var(--c-brand)}html.dark{--c-brand:#3aa675;--c-brand-light:#349469;--c-tip:#318a62;color-scheme:dark;--c-brand:#F09838;--c-brand-light:#F0C738;--c-bg:#22272e;--c-bg-light:#2b313a;--c-bg-lighter:#262c34;--c-bg-dark:#343b44;--c-bg-darker:#37404c;--c-text:#adbac7;--c-text-light:#96a7b7;--c-text-lighter:#8b9eb0;--c-text-lightest:#8094a8;--c-border:#3e4c5a;--c-border-dark:#34404c;--c-tip:#4F81D6;--c-warning:#e0ad15;--c-warning-bg:#2d2f2d;--c-warning-bg-light:#423e2a;--c-warning-bg-lighter:#44442f;--c-warning-border-dark:#957c35;--c-warning-details-bg:#39392d;--c-warning-title:#fdca31;--c-warning-text:#d8d96d;--c-warning-text-accent:#ffbf00;--c-warning-text-light:#ddb84b;--c-warning-text-quote:#ccab49;--c-danger:#fc1e38;--c-danger-bg:#39232c;--c-danger-bg-light:#4b2b35;--c-danger-bg-lighter:#553040;--c-danger-border-dark:#a25151;--c-danger-details-bg:#482936;--c-danger-title:#fc2d3b;--c-danger-text:#ea9ca0;--c-danger-text-accent:#fd3636;--c-danger-text-light:#d9777c;--c-danger-text-quote:#d56b6b;--c-details-bg:#323843;--c-badge-warning:var(--c-warning);--c-badge-warning-text:#3c2e05;--c-badge-danger:var(--c-danger);--c-badge-danger-text:#401416;--code-hl-bg-color:#363b46}body,html{padding:0;margin:0;background-color:var(--c-bg);transition:background-color var(--t-color)}html{font-size:16px}body,kbd{color:var(--c-text)}body{font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1rem}a,p a code{color:var(--c-text-accent)}a{font-weight:500;text-decoration:none}p a code{font-weight:400}kbd{background:var(--c-bg-lighter);border:solid .15rem var(--c-border-dark);border-bottom:solid .25rem var(--c-border-dark);border-radius:.15rem;padding:0 .15em}a,blockquote,code,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}code,kbd{font-family:var(--font-family-code)}code{color:var(--c-text-lighter);padding:.25rem .5rem;font-size:.85em;background-color:var(--c-bg-light);border-radius:3px;transition:background-color var(--t-color)}blockquote{font-size:1rem;color:var(--c-text-quote);border-left:.2rem solid var(--c-border-dark);margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p,code{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}h1 .header-anchor:focus-visible,h1:focus-visible,h2 .header-anchor:focus-visible,h2:focus-visible,h3 .header-anchor:focus-visible,h3:focus-visible,h4 .header-anchor:focus-visible,h4:focus-visible,h5 .header-anchor:focus-visible,h5:focus-visible,h6 .header-anchor:focus-visible,h6:focus-visible{outline:0}h1 .header-anchor,h2 .header-anchor,h3 .header-anchor,h4 .header-anchor,h5 .header-anchor,h6 .header-anchor{color:inherit;text-decoration:none;position:relative}h1 .header-anchor:hover ::before,h2 .header-anchor:hover ::before,h3 .header-anchor:hover ::before,h4 .header-anchor:hover ::before,h5 .header-anchor:hover ::before,h6 .header-anchor:hover ::before{content:"¶";position:absolute;left:-.75em;color:var(--c-brand)}h1 .header-anchor:focus-visible::before,h2 .header-anchor:focus-visible::before,h3 .header-anchor:focus-visible::before,h4 .header-anchor:focus-visible::before,h5 .header-anchor:focus-visible::before,h6 .header-anchor:focus-visible::before{content:"¶";position:absolute;left:-.75em;color:var(--c-brand);outline:auto}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid var(--c-border)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}@media print{a[href^="http://"]::after,a[href^="https://"]::after{content:" ("attr(href)") "}}ol,p,ul{line-height:1.7;overflow-wrap:break-word}hr{border:0;border-top:1px solid var(--c-border)}h2,table,tr{transition:border-color var(--t-color)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid var(--c-border-dark)}tr:nth-child(2n){background-color:var(--c-bg-light);transition:background-color var(--t-color)}tr:nth-child(2n) code{background-color:var(--c-bg-dark)}td,th{padding:.6em 1em;border:1px solid var(--c-border-dark);transition:border-color var(--t-color)}.arrow,.badge{display:inline-block}.arrow{width:0;height:0}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.up{border-bottom:6px solid var(--c-bg-arrow)}.arrow.down{border-top:6px solid var(--c-bg-arrow)}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.right{border-left:6px solid var(--c-bg-arrow)}.arrow.left{border-right:6px solid var(--c-bg-arrow)}.badge{font-size:14px;font-weight:600;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:var(--c-bg);vertical-align:top;transition:color var(--t-color),background-color var(--t-color)}.badge.tip{background-color:var(--c-badge-tip)}.badge.warning{background-color:var(--c-badge-warning);color:var(--c-badge-warning-text)}.badge.danger{background-color:var(--c-badge-danger);color:var(--c-badge-danger-text)}.badge+.badge{margin-left:5px}code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:var(--font-family-code);font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#ec5975}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.375;padding:1.3rem 1.5rem;margin:.85rem 0;border-radius:6px;overflow:auto}.theme-default-content pre code,.theme-default-content pre[class*=language-] code{color:#fff;padding:0;background-color:transparent!important;border-radius:0;overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.theme-default-content .line-number{font-family:var(--font-family-code)}div[class*=language-]{position:relative;background-color:var(--code-bg-color);border-radius:6px}div[class*=language-]::before{content:attr(data-title);position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:var(--code-ln-color)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:0 0!important;position:relative;z-index:1}div[class*=language-] .highlight-lines{-webkit-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.375}div[class*=language-] .highlight-lines .highlight-line{background-color:var(--code-hl-bg-color)}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line::before{content:" ";position:absolute;z-index:2;left:0;top:0;display:block;width:var(--code-ln-wrapper-width);height:100%}div[class*=language-].line-numbers-mode pre{margin-left:var(--code-ln-wrapper-width);padding-left:1rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;width:var(--code-ln-wrapper-width);text-align:center;color:var(--code-ln-color);padding-top:1.25rem;line-height:1.375;counter-reset:line-number}div[class*=language-].line-numbers-mode .line-numbers .line-number{position:relative;z-index:3;-webkit-user-select:none;user-select:none;height:1.375em}div[class*=language-].line-numbers-mode .line-numbers .line-number::before{counter-increment:line-number;content:counter(line-number);font-size:.85em}div[class*=language-].line-numbers-mode::after{content:"";position:absolute;top:0;left:0;width:var(--code-ln-wrapper-width);height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--code-hl-bg-color)}@media (max-width:419px){.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.code-group__nav{margin-top:.85rem;margin-bottom:calc(-1.7rem - 6px);padding-bottom:calc(1.7rem - 6px);padding-left:10px;padding-top:10px;border-top-left-radius:6px;border-top-right-radius:6px;background-color:var(--c-code-group-tab-bg)}.code-group__nav-tab{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:var(--c-code-group-tab-title);font-weight:600}.code-group__nav-tab:focus{outline:0}.code-group__nav-tab:focus-visible{outline:1px solid var(--c-code-group-tab-outline)}.code-group__nav-tab-active{border-bottom:var(--c-code-group-tab-active-border) 1px solid}@media (max-width:419px){.code-group__nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-group-item{display:none}.code-group-item__active{display:block}.code-group-item>pre{background-color:orange}.custom-container{transition:color var(--t-color),border-color var(--t-color),background-color var(--t-color)}.custom-container .custom-container-title{font-weight:600}.custom-container .custom-container-title:not(:only-child){margin-bottom:-.4rem}.custom-container.danger,.custom-container.tip,.custom-container.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-container.tip{border-color:var(--c-tip);background-color:var(--c-tip-bg);color:var(--c-tip-text)}.custom-container.tip .custom-container-title{color:var(--c-tip-title)}.custom-container.tip a{color:var(--c-tip-text-accent)}.custom-container.tip code{background-color:var(--c-bg-dark)}.custom-container.warning{border-color:var(--c-warning);background-color:var(--c-warning-bg);color:var(--c-warning-text)}.custom-container.warning .custom-container-title{color:var(--c-warning-title)}.custom-container.warning a{color:var(--c-warning-text-accent)}.custom-container.warning blockquote{border-left-color:var(--c-warning-border-dark);color:var(--c-warning-text-quote)}.custom-container.warning code{color:var(--c-warning-text-light);background-color:var(--c-warning-bg-light)}.custom-container.warning details{background-color:var(--c-warning-details-bg)}.custom-container.warning details code{background-color:var(--c-warning-bg-lighter)}.custom-container.warning .external-link-icon{--external-link-icon-color:var(--c-warning-text-quote)}.custom-container.danger{border-color:var(--c-danger);background-color:var(--c-danger-bg);color:var(--c-danger-text)}.custom-container.danger .custom-container-title{color:var(--c-danger-title)}.custom-container.danger a{color:var(--c-danger-text-accent)}.custom-container.danger blockquote{border-left-color:var(--c-danger-border-dark);color:var(--c-danger-text-quote)}.custom-container.danger code{color:var(--c-danger-text-light);background-color:var(--c-danger-bg-light)}.custom-container.danger details{background-color:var(--c-danger-details-bg)}.custom-container.danger details code{background-color:var(--c-danger-bg-lighter)}.custom-container.danger .external-link-icon{--external-link-icon-color:var(--c-danger-text-quote)}.custom-container.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:var(--c-details-bg)}.custom-container.details code{background-color:var(--c-bg-darker)}.custom-container.details h4{margin-top:0}.custom-container.details figure:last-child,.custom-container.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-container.details summary{outline:0;cursor:pointer}.home{padding:var(--navbar-height) 2rem 0;max-width:var(--homepage-width);margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .actions,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:var(--c-text-lightest)}.home .hero .action-button{display:inline-block;font-size:1.2rem;padding:.8rem 1.6rem;border-width:2px;border-style:solid;border-radius:4px;transition:background-color var(--t-color);box-sizing:border-box}.home .hero .action-button.primary{color:var(--c-bg);background-color:var(--c-brand);border-color:var(--c-brand)}.home .hero .action-button.primary:hover{background-color:var(--c-brand-light)}.home .hero .action-button.secondary{color:var(--c-brand);background-color:var(--c-bg);border-color:var(--c-brand)}.home .hero .action-button.secondary:hover{color:var(--c-bg);background-color:var(--c-brand-light)}.home .features{border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:var(--c-text-light)}.home .feature p{color:var(--c-text-lighter)}.home .theme-default-content{padding:0;margin:0}.home .footer{padding:2.5rem;border-top:1px solid var(--c-border);text-align:center;color:var(--c-text-lighter);transition:border-color var(--t-color)}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .actions,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.page{padding-top:var(--navbar-height);padding-left:var(--sidebar-width)}.navbar,.sidebar{position:fixed;left:0;box-sizing:border-box}.navbar{z-index:20;top:0;right:0;height:var(--navbar-height);border-bottom:1px solid var(--c-border);background-color:var(--c-bg-navbar);transition:background-color var(--t-color),border-color var(--t-color)}.sidebar{font-size:16px;width:var(--sidebar-width);z-index:10;margin:0;top:var(--navbar-height);bottom:0;border-right:1px solid var(--c-border);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-brand) var(--c-border);background-color:var(--c-bg-sidebar);transition:transform var(--t-transform),background-color var(--t-color),border-color var(--t-color)}.sidebar::-webkit-scrollbar{width:7px}.sidebar::-webkit-scrollbar-track{background-color:var(--c-border)}.sidebar::-webkit-scrollbar-thumb{background-color:var(--c-brand)}.sidebar-mask{position:fixed;z-index:9;top:0;left:0;width:100vw;height:100vh;display:none}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1),.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.theme-container.no-navbar .theme-default-content h1,.theme-container.no-navbar .theme-default-content h2,.theme-container.no-navbar .theme-default-content h3,.theme-container.no-navbar .theme-default-content h4,.theme-container.no-navbar .theme-default-content h5,.theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .page{padding-top:0}.theme-container.no-navbar .sidebar{top:0}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a.router-link-active::after,.theme-container.no-sidebar .sidebar{display:none}@media (max-width:719px){.theme-container.no-sidebar .sidebar{display:block}}.theme-container.no-sidebar .page{padding-left:0}.theme-default-content a:not(.header-anchor):hover{text-decoration:underline}.theme-default-content img{max-width:100%}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--navbar-height));padding-top:calc(1rem + var(--navbar-height));margin-bottom:0}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+.custom-container,.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h6:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre{margin-top:2rem}@media (max-width:959px){.sidebar{font-size:15px;width:var(--sidebar-width-mobile)}.page{padding-left:var(--sidebar-width-mobile)}}@media (max-width:719px){.sidebar{top:0;padding-top:var(--navbar-height);transform:translateX(-100%)}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}}.navbar{--navbar-line-height:calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );padding:var(--navbar-padding-v) var(--navbar-padding-h);line-height:var(--navbar-line-height)}.navbar .logo{height:var(--navbar-line-height);margin-right:var(--navbar-padding-v);vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--c-text);position:relative}.navbar .navbar-items-wrapper{display:flex;position:absolute;box-sizing:border-box;top:var(--navbar-padding-v);right:var(--navbar-padding-h);height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);white-space:nowrap;font-size:.9rem}.navbar .navbar-items-wrapper .search-box{flex:0 0 auto;vertical-align:top}@media screen and (max-width:719px){.navbar{padding-left:4rem}.navbar .site-name{display:block;width:calc(100vw - 11rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.navbar .can-hide{display:none}}.navbar-items,.navbar-items a{display:inline-block}@media print{.navbar-items{display:none}}.navbar-items a{line-height:1.4rem;color:inherit}.navbar-items a.router-link-active,.navbar-items a:hover{color:var(--c-text)}.navbar-items .navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}.navbar-items .navbar-item:first-child{margin-left:0}.navbar-items .navbar-item>a.router-link-active,.navbar-items .navbar-item>a:hover{margin-bottom:-2px;border-bottom:2px solid var(--c-text-accent)}@media (max-width:719px){.navbar-items .navbar-item{margin-left:0}.navbar-items .navbar-item>a.router-link-active,.navbar-items .navbar-item>a:hover{margin-bottom:0;border-bottom:none}.navbar-items a.router-link-active,.navbar-items a:hover{color:var(--c-text-accent)}}.toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.toggle-sidebar-button .icon{display:flex;flex-direction:column;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;cursor:inherit}.toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--c-text);transition:transform var(--t-transform)}.toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}@media screen and (max-width:719px){.toggle-sidebar-button{display:block}}.toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:0 0;color:var(--c-text);opacity:.8;cursor:pointer}@media print{.toggle-color-mode-button{display:none}}.toggle-color-mode-button:hover{opacity:1}.toggle-color-mode-button .icon{width:1.25rem;height:1.25rem}.DocSearch{transition:background-color var(--t-color)}.navbar-dropdown-wrapper{cursor:pointer}.navbar-dropdown-wrapper .navbar-dropdown-title,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:0 0;border:0;font-weight:500;color:var(--c-text)}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:none;font-weight:600;font-size:inherit}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover,.navbar-dropdown-wrapper .navbar-dropdown-title:hover{border-color:transparent}.navbar-dropdown-wrapper .navbar-dropdown-title .arrow,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item{color:inherit;line-height:1.7rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{margin:.45rem 0 0;border-top:1px solid var(--c-border);padding:1rem 0 .45rem;font-size:.9rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a{font-weight:inherit}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper .navbar-dropdown-subitem{font-size:.9em}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active,.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a:hover{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active::after{content:"";width:0;height:0;border-left:5px solid var(--c-text-accent);border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item:first-child .navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title,.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title-mobile{margin-bottom:.5rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title{display:none}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title-mobile{display:block}.navbar-dropdown-wrapper.mobile .navbar-dropdown{transition:height .1s ease-out;overflow:hidden}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{border-top:0;margin-top:0;padding-top:0;padding-bottom:0;font-size:15px;line-height:2rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item>a{font-size:15px;line-height:2rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem{font-size:14px;padding-left:1rem}.navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.navbar-dropdown-wrapper:not(.mobile).open .navbar-dropdown,.navbar-dropdown-wrapper:not(.mobile):hover .navbar-dropdown{display:block!important}.navbar-dropdown-wrapper:not(.mobile).open:blur{display:none}.navbar-dropdown-wrapper:not(.mobile) .navbar-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--c-bg-navbar);padding:.6rem 0;border:1px solid var(--c-border);border-bottom-color:var(--c-border-dark);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}.page{padding-bottom:2rem;display:block}.page .theme-default-content,.page-meta{max-width:var(--content-width);margin:0 auto}.page .theme-default-content{padding:2rem 2.5rem;padding-top:0}@media (max-width:959px){.page .theme-default-content{padding:2rem}}@media (max-width:419px){.page .theme-default-content{padding:1.5rem}}.page-meta{padding:1rem 2.5rem;overflow:auto}@media (max-width:959px){.page-meta{padding:2rem}}@media (max-width:419px){.page-meta{padding:1.5rem}}.page-meta .meta-item{cursor:default;margin-top:.8rem}.page-meta .meta-item .meta-item-label{font-weight:500;color:var(--c-text-lighter)}.page-meta .meta-item .meta-item-info{font-weight:400;color:var(--c-text-quote)}.page-meta .edit-link{display:inline-block;margin-right:.25rem}@media print{.page-meta .edit-link{display:none}}.page-meta .last-updated{float:right}@media (max-width:719px){.page-meta .last-updated{font-size:.8em;float:none}.page-meta .contributors{font-size:.8em}}.page-nav{max-width:var(--content-width);margin:0 auto;padding:1rem 2.5rem 2rem;padding-bottom:0}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding-top:1rem;overflow:auto}.page-nav .prev a:before{content:"←"}.page-nav .next{float:right}.page-nav .next a:after{content:"→"}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .navbar-items{display:none;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color);padding:.5rem 0 .75rem}.sidebar .navbar-items a{font-weight:600}.sidebar .navbar-items .navbar-item{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-items{padding:1.5rem 0}@media (max-width:719px){.sidebar .navbar-items{display:block}.sidebar .navbar-items .navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active::after{top:calc(1rem - 2px)}.sidebar .sidebar-items{padding:1rem 0}}.sidebar-item{cursor:default;border-left:.25rem solid transparent;color:var(--c-text)}.sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.sidebar-item.active:not(p.sidebar-heading){font-weight:600;color:var(--c-text-accent);border-left-color:var(--c-text-accent)}.sidebar-item.sidebar-heading{transition:color .15s ease;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0}.sidebar-item.sidebar-heading+.sidebar-item-children{transition:height .1s ease-out;overflow:hidden;margin-bottom:.75rem}.sidebar-item.collapsible,a.sidebar-item{cursor:pointer}.sidebar-item.collapsible .arrow{position:relative;top:-.12em;left:.5em}.sidebar-item:not(.sidebar-heading){font-size:1em;font-weight:400;display:inline-block;margin:0;padding:.35rem 1rem .35rem 2rem;line-height:1.4;width:100%;box-sizing:border-box}.sidebar-item:not(.sidebar-heading)+.sidebar-item-children{padding-left:1rem;font-size:.95em}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading).active{font-weight:500;border-left-color:transparent}a.sidebar-heading+.sidebar-item-children .sidebar-item:not(.sidebar-heading).active{border-left-color:transparent}a.sidebar-item:hover{color:var(--c-text-accent)}.table-of-contents .badge{vertical-align:middle}.dropdown-enter-from,.dropdown-leave-to{height:0!important}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{transform:translateY(10px);opacity:0}:root{--c-brand:#F09838;--c-brand-light:#F0C738;--success:#157938;--c-bg:#ffffff;--c-bg-light:#f3f4f5;--c-bg-lighter:#eeeeee;--c-bg-dark:#ebebec;--c-bg-darker:#e6e6e6;--c-bg-navbar:var(--c-bg);--c-bg-sidebar:var(--c-bg);--c-bg-arrow:#cccccc;--c-text:#2c3e50;--c-text-accent:var(--c-brand);--c-text-light:#3a5169;--c-text-lighter:#4e6e8e;--c-text-lightest:#6a8bad;--c-text-quote:#999999;--c-border:#eaecef;--c-border-dark:#dfe2e5;--c-tip:#4F81D6;--c-tip-bg:var(--c-bg-light);--c-tip-title:var(--c-text);--c-tip-text:var(--c-text);--c-tip-text-accent:var(--c-text-accent);--c-warning:#ffc310;--c-warning-bg:#fffae3;--c-warning-bg-light:#fff3ba;--c-warning-bg-lighter:#fff0b0;--c-warning-border-dark:#f7dc91;--c-warning-details-bg:#fff5ca;--c-warning-title:#f1b300;--c-warning-text:#746000;--c-warning-text-accent:#edb100;--c-warning-text-light:#c1971c;--c-warning-text-quote:#ccab49;--c-danger:#f11e37;--c-danger-bg:#ffe0e0;--c-danger-bg-light:#ffcfde;--c-danger-bg-lighter:#ffc9c9;--c-danger-border-dark:#f1abab;--c-danger-details-bg:#ffd4d4;--c-danger-title:#ed1e2c;--c-danger-text:#660000;--c-danger-text-accent:#bd1a1a;--c-danger-text-light:#b5474d;--c-danger-text-quote:#c15b5b;--c-details-bg:#eeeeee;--c-badge-tip:var(--c-tip);--c-badge-warning:#ecc808;--c-badge-warning-text:var(--c-bg);--c-badge-danger:#dc2626;--c-badge-danger-text:var(--c-bg);--t-color:0.3s ease;--t-transform:0.3s ease;--code-bg-color:#282c34;--code-hl-bg-color:rgba(0, 0, 0, 0.66);--code-ln-color:#9e9e9e;--code-ln-wrapper-width:3.5rem;--font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code:Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--navbar-height:3.6rem;--navbar-padding-v:0.7rem;--navbar-padding-h:1.5rem;--sidebar-width:20rem;--sidebar-width-mobile:calc(var(--sidebar-width) * 0.82);--content-width:740px;--homepage-width:960px}.back-to-top{--back-to-top-color:var(--c-brand);--back-to-top-color-hover:var(--c-brand-light)}.DocSearch{--docsearch-primary-color:var(--c-brand);--docsearch-text-color:var(--c-text);--docsearch-highlight-color:var(--c-brand);--docsearch-muted-color:var(--c-text-quote);--docsearch-container-background:rgba(9, 10, 17, 0.8);--docsearch-modal-background:var(--c-bg-light);--docsearch-searchbox-background:var(--c-bg-lighter);--docsearch-searchbox-focus-background:var(--c-bg);--docsearch-searchbox-shadow:inset 0 0 0 2px var(--c-brand);--docsearch-hit-color:var(--c-text-light);--docsearch-hit-active-color:var(--c-bg);--docsearch-hit-background:var(--c-bg);--docsearch-hit-shadow:0 1px 3px 0 var(--c-border-dark);--docsearch-footer-background:var(--c-bg)}.external-link-icon{--external-link-icon-color:var(--c-text-quote)}.medium-zoom-overlay{--medium-zoom-bg-color:var(--c-bg)}.pwa-popup{--pwa-popup-text-color:var(--c-text);--pwa-popup-bg-color:var(--c-bg);--pwa-popup-border-color:var(--c-brand);--pwa-popup-shadow:0 4px 16px var(--c-brand);--pwa-popup-btn-text-color:var(--c-bg);--pwa-popup-btn-bg-color:var(--c-brand);--pwa-popup-btn-hover-bg-color:var(--c-brand-light)}.search-box{--search-bg-color:var(--c-bg);--search-accent-color:var(--c-brand);--search-text-color:var(--c-text);--search-border-color:var(--c-border);--search-item-text-color:var(--c-text-lighter);--search-item-focus-bg-color:var(--c-bg-light);--search-input-width:25rem;--search-result-width:45rem}.search-box .suggestions .suggestion a::after{content:""attr(href)"";display:block;color:var(--c-text-lightest);font-style:italic;width:100%;padding:2px}html.dark .DocSearch{--docsearch-logo-color:var(--c-text);--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow:inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, 0.3);--docsearch-key-gradient:linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73, 76, 106, 0.5), 0 -4px 8px 0 rgba(0, 0, 0, 0.2)}.badge.success{background-color:var(--success)} +:root{--back-to-top-z-index:5;--back-to-top-color:#3eaf7c;--back-to-top-color-hover:#71cda3} +.back-to-top{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;height:1.2rem;background-color:var(--back-to-top-color);-webkit-mask:url(/ion/assets/img/back-to-top.8b37f773.svg)no-repeat;mask:url(/ion/assets/img/back-to-top.8b37f773.svg)no-repeat;z-index:var(--back-to-top-z-index)}.back-to-top:hover{background-color:var(--back-to-top-color-hover)}@media (max-width:959px){.back-to-top{display:none}}@media print{.back-to-top{display:none}}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0} +:root{--search-bg-color:#ffffff;--search-accent-color:#3eaf7c;--search-text-color:#2c3e50;--search-border-color:#eaecef;--search-item-text-color:#5d81a5;--search-item-focus-bg-color:#f3f4f5;--search-input-width:8rem;--search-result-width:20rem} +.search-box{display:inline-block;position:relative;margin-left:1rem}@media print{.search-box{display:none}}.search-box input{-webkit-appearance:none;appearance:none;cursor:text;width:var(--search-input-width);height:2rem;color:var(--search-text-color);display:inline-block;border:1px solid var(--search-border-color);border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:0;transition:all ease .3s;background:var(--search-bg-color)url(/ion/assets/img/search.b017a09f.svg).6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:var(--search-accent-color)}.search-box .suggestions{background:var(--search-bg-color);width:var(--search-result-width);position:absolute;top:2rem;right:0;border:1px solid var(--search-border-color);border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion.focus{background-color:var(--search-item-focus-bg-color)}.search-box .suggestion.focus a{color:var(--search-accent-color)}.search-box .suggestion a{white-space:normal;color:var(--search-item-text-color)}.search-box .suggestion .page-title{font-weight:600}.search-box .suggestion .page-header{font-size:.9em;margin-left:.25em}@media (max-width:719px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (max-width:419px){.search-box input:focus{width:8rem}.search-box .suggestions{width:calc(100vw - 4rem);right:-.5rem}} +.version-disclaimer{max-width:var(--content-width);margin:0 auto;padding:1.2em;border-bottom:1px solid var(--c-border)}.version-disclaimer label{font-weight:700;margin-right:.2em}.version-disclaimer label:after{content:":"}.version-disclaimer.info label{color:var(--c-tip)}.version-disclaimer.warning label{color:var(--c-warning)}.version-disclaimer.danger label{color:var(--c-danger)} diff --git a/assets/img/back-to-top.8b37f773.svg b/assets/img/back-to-top.8b37f773.svg new file mode 100644 index 00000000..83236781 --- /dev/null +++ b/assets/img/back-to-top.8b37f773.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/img/search.b017a09f.svg b/assets/img/search.b017a09f.svg new file mode 100644 index 00000000..03d83913 --- /dev/null +++ b/assets/img/search.b017a09f.svg @@ -0,0 +1 @@ + diff --git a/assets/js/989.281c0d35.js b/assets/js/989.281c0d35.js new file mode 100644 index 00000000..e9071912 --- /dev/null +++ b/assets/js/989.281c0d35.js @@ -0,0 +1,2 @@ +/*! For license information please see 989.281c0d35.js.LICENSE.txt */ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[989],{2262:function(e,t,n){n.d(t,{BK:function(){return je},Bj:function(){return i},EB:function(){return l},Fl:function(){return Ce},IU:function(){return ke},Jd:function(){return g},OT:function(){return pe},PG:function(){return ge},SU:function(){return Le},Um:function(){return me},WL:function(){return Ae},X$:function(){return D},X3:function(){return be},XI:function(){return Ne},Xl:function(){return _e},ZM:function(){return Ve},dq:function(){return Ie},iH:function(){return De},j:function(){return I},lk:function(){return y},nZ:function(){return a},qj:function(){return he},qq:function(){return u},yT:function(){return we}});var r=n(3577);let o,s;class i{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=o,!e&&o&&(this.index=(o.scopes||(o.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=o;try{return o=this,e()}finally{o=t}}}on(){o=this}off(){o=this.parent}stop(e){if(this._active){let t,n;for(t=0,n=this.effects.length;t=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),y()}return this._dirtyLevel>=2}set dirty(e){this._dirtyLevel=e?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let e=m,t=s;try{return m=!0,s=this,this._runnings++,d(this),this.fn()}finally{f(this),this._runnings--,s=t,m=e}}stop(){var e;this.active&&(d(this),f(this),null==(e=this.onStop)||e.call(this),this.active=!1)}}function c(e){return e.value}function d(e){e._trackId++,e._depsLength=0}function f(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},C=new WeakMap,E=Symbol(""),O=Symbol("");function I(e,t,n){if(m&&s){let t=C.get(e);t||C.set(e,t=new Map);let r=t.get(n);r||t.set(n,r=x((()=>t.delete(n)))),k(s,r)}}function D(e,t,n,o,s,i){const a=C.get(e);if(!a)return;let l=[];if("clear"===t)l=[...a.values()];else if("length"===n&&(0,r.kJ)(e)){const e=Number(o);a.forEach(((t,n)=>{("length"===n||!(0,r.yk)(n)&&n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(a.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&l.push(a.get("length")):(l.push(a.get(E)),(0,r._N)(e)&&l.push(a.get(O)));break;case"delete":(0,r.kJ)(e)||(l.push(a.get(E)),(0,r._N)(e)&&l.push(a.get(O)));break;case"set":(0,r._N)(e)&&l.push(a.get(E))}w();for(const e of l)e&&S(e,2);b()}const N=(0,r.fY)("__proto__,__v_isRef,__isVue"),M=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(r.yk)),F=L();function L(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=ke(this);for(let e=0,t=this.length;e{e[t]=function(...e){g(),w();const n=ke(this)[t].apply(this,e);return b(),y(),n}})),e}function $(e){const t=ke(this);return I(t,0,e),t.hasOwnProperty(e)}class A{constructor(e=!1,t=!1){this._isReadonly=e,this._shallow=t}get(e,t,n){const o=this._isReadonly,s=this._shallow;if("__v_isReactive"===t)return!o;if("__v_isReadonly"===t)return o;if("__v_isShallow"===t)return s;if("__v_raw"===t)return n===(o?s?fe:de:s?ce:ue).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const i=(0,r.kJ)(e);if(!o){if(i&&(0,r.RI)(F,t))return Reflect.get(F,t,n);if("hasOwnProperty"===t)return $}const a=Reflect.get(e,t,n);return((0,r.yk)(t)?M.has(t):N(t))?a:(o||I(e,0,t),s?a:Ie(a)?i&&(0,r.S0)(t)?a:a.value:(0,r.Kn)(a)?o?pe(a):he(a):a)}}class R extends A{constructor(e=!1){super(!1,e)}set(e,t,n,o){let s=e[t];if(!this._shallow){const t=ye(s);if(we(n)||ye(n)||(s=ke(s),n=ke(n)),!(0,r.kJ)(e)&&Ie(s)&&!Ie(n))return!t&&(s.value=n,!0)}const i=(0,r.kJ)(e)&&(0,r.S0)(t)?Number(t)e,U=e=>Reflect.getPrototypeOf(e);function P(e,t,n=!1,o=!1){const s=ke(e=e.__v_raw),i=ke(t);n||((0,r.aU)(t,i)&&I(s,0,t),I(s,0,i));const{has:a}=U(s),l=o?H:n?Te:Se;return a.call(s,t)?l(e.get(t)):a.call(s,i)?l(e.get(i)):void(e!==s&&e.get(t))}function Z(e,t=!1){const n=this.__v_raw,o=ke(n),s=ke(e);return t||((0,r.aU)(e,s)&&I(o,0,e),I(o,0,s)),e===s?n.has(e):n.has(e)||n.has(s)}function q(e,t=!1){return e=e.__v_raw,!t&&I(ke(e),0,E),Reflect.get(e,"size",e)}function J(e){e=ke(e);const t=ke(this);return U(t).has.call(t,e)||(t.add(e),D(t,"add",e,e)),this}function B(e,t){t=ke(t);const n=ke(this),{has:o,get:s}=U(n);let i=o.call(n,e);i||(e=ke(e),i=o.call(n,e));const a=s.call(n,e);return n.set(e,t),i?(0,r.aU)(t,a)&&D(n,"set",e,t):D(n,"add",e,t),this}function Y(e){const t=ke(this),{has:n,get:r}=U(t);let o=n.call(t,e);o||(e=ke(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&D(t,"delete",e,void 0),s}function G(){const e=ke(this),t=0!==e.size,n=e.clear();return t&&D(e,"clear",void 0,void 0),n}function K(e,t){return function(n,r){const o=this,s=o.__v_raw,i=ke(s),a=t?H:e?Te:Se;return!e&&I(i,0,E),s.forEach(((e,t)=>n.call(r,a(e),a(t),o)))}}function X(e,t,n){return function(...o){const s=this.__v_raw,i=ke(s),a=(0,r._N)(i),l="entries"===e||e===Symbol.iterator&&a,u="keys"===e&&a,c=s[e](...o),d=n?H:t?Te:Se;return!t&&I(i,0,u?O:E),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:l?[d(e[0]),d(e[1])]:d(e),done:t}},[Symbol.iterator](){return this}}}}function Q(e){return function(...t){return"delete"!==e&&("clear"===e?void 0:this)}}function ee(){const e={get(e){return P(this,e)},get size(){return q(this)},has:Z,add:J,set:B,delete:Y,clear:G,forEach:K(!1,!1)},t={get(e){return P(this,e,!1,!0)},get size(){return q(this)},has:Z,add:J,set:B,delete:Y,clear:G,forEach:K(!1,!0)},n={get(e){return P(this,e,!0)},get size(){return q(this,!0)},has(e){return Z.call(this,e,!0)},add:Q("add"),set:Q("set"),delete:Q("delete"),clear:Q("clear"),forEach:K(!0,!1)},r={get(e){return P(this,e,!0,!0)},get size(){return q(this,!0)},has(e){return Z.call(this,e,!0)},add:Q("add"),set:Q("set"),delete:Q("delete"),clear:Q("clear"),forEach:K(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=X(o,!1,!1),n[o]=X(o,!0,!1),t[o]=X(o,!1,!0),r[o]=X(o,!0,!0)})),[e,n,t,r]}const[te,ne,re,oe]=ee();function se(e,t){const n=t?e?oe:re:e?ne:te;return(t,o,s)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,s)}const ie={get:se(!1,!1)},ae={get:se(!1,!0)},le={get:se(!0,!1)},ue=new WeakMap,ce=new WeakMap,de=new WeakMap,fe=new WeakMap;function he(e){return ye(e)?e:ve(e,!1,j,ie,ue)}function me(e){return ve(e,!1,W,ae,ce)}function pe(e){return ve(e,!0,z,le,de)}function ve(e,t,n,o,s){if(!(0,r.Kn)(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=s.get(e);if(i)return i;const a=(l=e).__v_skip||!Object.isExtensible(l)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((0,r.W7)(l));var l;if(0===a)return e;const u=new Proxy(e,2===a?o:n);return s.set(e,u),u}function ge(e){return ye(e)?ge(e.__v_raw):!(!e||!e.__v_isReactive)}function ye(e){return!(!e||!e.__v_isReadonly)}function we(e){return!(!e||!e.__v_isShallow)}function be(e){return ge(e)||ye(e)}function ke(e){const t=e&&e.__v_raw;return t?ke(t):e}function _e(e){return(0,r.Nj)(e,"__v_skip",!0),e}const Se=e=>(0,r.Kn)(e)?he(e):e,Te=e=>(0,r.Kn)(e)?pe(e):e;class xe{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new u((()=>e(this._value)),(()=>Oe(this,1)),(()=>this.dep&&T(this.dep))),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=ke(this);return e._cacheable&&!e.effect.dirty||(0,r.aU)(e._value,e._value=e.effect.run())&&Oe(e,2),Ee(e),e.effect._dirtyLevel>=1&&Oe(e,1),e._value}set value(e){this._setter(e)}get _dirty(){return this.effect.dirty}set _dirty(e){this.effect.dirty=e}}function Ce(e,t,n=!1){let o,s;const i=(0,r.mf)(e);return i?(o=e,s=r.dG):(o=e.get,s=e.set),new xe(o,s,i||!s,n)}function Ee(e){m&&s&&(e=ke(e),k(s,e.dep||(e.dep=x((()=>e.dep=void 0),e instanceof xe?e:void 0))))}function Oe(e,t=2,n){const r=(e=ke(e)).dep;r&&S(r,t)}function Ie(e){return!(!e||!0!==e.__v_isRef)}function De(e){return Me(e,!1)}function Ne(e){return Me(e,!0)}function Me(e,t){return Ie(e)?e:new Fe(e,t)}class Fe{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:ke(e),this._value=t?e:Se(e)}get value(){return Ee(this),this._value}set value(e){const t=this.__v_isShallow||we(e)||ye(e);e=t?e:ke(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Se(e),Oe(this,2))}}function Le(e){return Ie(e)?e.value:e}const $e={get:(e,t,n)=>Le(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Ae(e){return ge(e)?e:new Proxy(e,$e)}class Re{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:n}=e((()=>Ee(this)),(()=>Oe(this)));this._get=t,this._set=n}get value(){return this._get()}set value(e){this._set(e)}}function Ve(e){return new Re(e)}function je(e){const t=(0,r.kJ)(e)?new Array(e.length):{};for(const n in e)t[n]=We(e,n);return t}class ze{constructor(e,t,n){this._object=e,this._key=t,this._defaultValue=n,this.__v_isRef=!0}get value(){const e=this._object[this._key];return void 0===e?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return e=ke(this._object),t=this._key,null==(n=C.get(e))?void 0:n.get(t);var e,t,n}}function We(e,t,n){const r=e[t];return Ie(r)?r:new ze(e,t,n)}},6252:function(e,t,n){n.d(t,{$d:function(){return c},Ah:function(){return De},Eo:function(){return Et},FN:function(){return fn},Fl:function(){return On},HY:function(){return Lt},JJ:function(){return ot},Jd:function(){return Ie},Ko:function(){return $e},P$:function(){return ae},Q6:function(){return he},RC:function(){return ve},U2:function(){return ue},Uk:function(){return en},Us:function(){return Ct},WI:function(){return Ae},Wm:function(){return Xt},Y3:function(){return k},Y8:function(){return oe},YP:function(){return Y},_:function(){return Kt},aZ:function(){return me},bv:function(){return Ce},dG:function(){return an},f3:function(){return st},h:function(){return In},iD:function(){return Pt},ic:function(){return Oe},j4:function(){return Zt},kq:function(){return nn},m0:function(){return J},nJ:function(){return ie},nK:function(){return fe},uE:function(){return tn},up:function(){return W},w5:function(){return $},wg:function(){return zt},wy:function(){return ee}});var r=n(2262),o=n(3577);const s=[];function i(e,...t){(0,r.Jd)();const n=s.length?s[s.length-1].component:null,o=n&&n.appContext.config.warnHandler,i=function(){let e=s[s.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}();if(o)u(o,n,11,[e+t.join(""),n&&n.proxy,i.map((({vnode:e})=>`at <${En(n,e.type)}>`)).join("\n"),i]);else{const n=[`[Vue warn]: ${e}`,...t];i.length&&n.push("\n",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:["\n"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=!!e.component&&null==e.component.parent,o=` at <${En(e.component,e.type,r)}`,s=">"+n;return e.props?[o,...a(e.props),s]:[o+s]}(e))})),t}(i)),console.warn(...n)}(0,r.lk)()}function a(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...l(n,e[n]))})),n.length>3&&t.push(" ..."),t}function l(e,t,n){return(0,o.HD)(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):"number"==typeof t||"boolean"==typeof t||null==t?n?t:[`${e}=${t}`]:(0,r.dq)(t)?(t=l(e,(0,r.IU)(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):(0,o.mf)(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=(0,r.IU)(t),n?t:[`${e}=`,t])}function u(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){d(e,t,n)}return o}function c(e,t,n,r){if((0,o.mf)(e)){const s=u(e,t,n,r);return s&&(0,o.tI)(s)&&s.catch((e=>{d(e,t,n)})),s}const s=[];for(let o=0;o>>1,o=m[r],s=C(o);sC(e)-C(t)));if(v.length=0,g)return void g.push(...e);for(g=e,y=0;ynull==e.id?1/0:e.id,E=(e,t)=>{const n=C(e)-C(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function O(e){h=!1,f=!0,m.sort(E),o.dG;try{for(p=0;p(0,o.HD)(e)?e.trim():e))),t&&(s=n.map(o.h5))}let l,u=r[l=(0,o.hR)(t)]||r[l=(0,o.hR)((0,o._A)(t))];!u&&i&&(u=r[l=(0,o.hR)((0,o.rs)(t))]),u&&c(u,e,6,s);const d=r[l+"Once"];if(d){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,c(d,e,6,s)}}function D(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(void 0!==s)return s;const i=e.emits;let a={},l=!1;if(!(0,o.mf)(e)){const r=e=>{const n=D(e,t,!0);n&&(l=!0,(0,o.l7)(a,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||l?((0,o.kJ)(i)?i.forEach((e=>a[e]=null)):(0,o.l7)(a,i),(0,o.Kn)(e)&&r.set(e,a),a):((0,o.Kn)(e)&&r.set(e,null),null)}function N(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}let M=null,F=null;function L(e){const t=M;return M=e,F=e&&e.type.__scopeId||null,t}function $(e,t=M,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&Ht(-1);const o=L(t);let s;try{s=e(...n)}finally{L(o),r._d&&Ht(1)}return s};return r._n=!0,r._c=!0,r._d=!0,r}function A(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:i,propsOptions:[a],slots:l,attrs:u,emit:c,render:f,renderCache:h,data:m,setupState:p,ctx:v,inheritAttrs:g}=e;let y,w;const b=L(e);try{if(4&n.shapeFlag){const e=s||r,t=e;y=rn(f.call(t,e,h,i,p,m,v)),w=u}else{const e=t;y=rn(e.length>1?e(i,{attrs:u,slots:l,emit:c}):e(i,null)),w=t.props?u:R(u)}}catch(t){Vt.length=0,d(t,e,1),y=Xt(At)}let k=y;if(w&&!1!==g){const e=Object.keys(w),{shapeFlag:t}=k;e.length&&7&t&&(a&&e.some(o.tR)&&(w=V(w,a)),k=Qt(k,w))}return n.dirs&&(k=Qt(k),k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&(k.transition=n.transition),y=k,L(b),y}const R=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},V=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function j(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;ost(Z);function J(e,t){return G(e,null,t)}const B={};function Y(e,t,n){return G(e,t,n)}function G(e,t,{immediate:n,deep:s,flush:i,once:a,onTrack:l,onTrigger:d}=o.kT){if(t&&a){const e=t;t=(...t)=>{e(...t),C()}}const f=dn,h=e=>!0===s?e:Q(e,!1===s?1:void 0);let m,p,v=!1,g=!1;if((0,r.dq)(e)?(m=()=>e.value,v=(0,r.yT)(e)):(0,r.PG)(e)?(m=()=>h(e),v=!0):(0,o.kJ)(e)?(g=!0,v=e.some((e=>(0,r.PG)(e)||(0,r.yT)(e))),m=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?h(e):(0,o.mf)(e)?u(e,f,2):void 0))):m=(0,o.mf)(e)?t?()=>u(e,f,2):()=>(p&&p(),c(e,f,3,[w])):o.dG,t&&s){const e=m;m=()=>Q(e())}let y,w=e=>{p=T.onStop=()=>{u(e,f,4),p=T.onStop=void 0}};if(bn){if(w=o.dG,t?n&&c(t,f,3,[m(),g?[]:void 0,w]):m(),"sync"!==i)return o.dG;{const e=q();y=e.__watcherHandles||(e.__watcherHandles=[])}}let b=g?new Array(e.length).fill(B):B;const k=()=>{if(T.active&&T.dirty)if(t){const e=T.run();(s||v||(g?e.some(((e,t)=>(0,o.aU)(e,b[t]))):(0,o.aU)(e,b)))&&(p&&p(),c(t,f,3,[e,b===B?void 0:g&&b[0]===B?[]:b,w]),b=e)}else T.run()};let S;k.allowRecurse=!!t,"sync"===i?S=k:"post"===i?S=()=>xt(k,f&&f.suspense):(k.pre=!0,f&&(k.id=f.uid),S=()=>_(k));const T=new r.qq(m,o.dG,S),x=(0,r.nZ)(),C=()=>{T.stop(),x&&(0,o.Od)(x.effects,T)};return t?n?k():b=T.run():"post"===i?xt(T.run.bind(T),f&&f.suspense):T.run(),y&&y.push(C),C}function K(e,t,n){const r=this.proxy,s=(0,o.HD)(e)?e.includes(".")?X(r,e):()=>r[e]:e.bind(r,r);let i;(0,o.mf)(t)?i=t:(i=t.handler,n=t);const a=pn(this),l=G(s,i.bind(r),n);return a(),l}function X(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e0){if(n>=t)return e;n++}if((s=s||new Set).has(e))return e;if(s.add(e),(0,r.dq)(e))Q(e.value,t,n,s);else if((0,o.kJ)(e))for(let r=0;r{Q(e,t,n,s)}));else if((0,o.PO)(e))for(const r in e)Q(e[r],t,n,s);return e}function ee(e,t){if(null===M)return e;const n=Sn(M)||M.proxy,r=e.dirs||(e.dirs=[]);for(let e=0;e{e.isMounted=!0})),Ie((()=>{e.isUnmounting=!0})),e}const se=[Function,Array],ie={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:se,onEnter:se,onAfterEnter:se,onEnterCancelled:se,onBeforeLeave:se,onLeave:se,onAfterLeave:se,onLeaveCancelled:se,onBeforeAppear:se,onAppear:se,onAfterAppear:se,onAppearCancelled:se},ae={name:"BaseTransition",props:ie,setup(e,{slots:t}){const n=fn(),o=oe();let s;return()=>{const i=t.default&&he(t.default(),!0);if(!i||!i.length)return;let a=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==At){a=t,e=!0;break}}const l=(0,r.IU)(e),{mode:u}=l;if(o.isLeaving)return ce(a);const c=de(a);if(!c)return ce(a);const d=ue(c,l,o,n);fe(c,d);const f=n.subTree,h=f&&de(f);let m=!1;const{getTransitionKey:p}=c.type;if(p){const e=p();void 0===s?s=e:e!==s&&(s=e,m=!0)}if(h&&h.type!==At&&(!Jt(c,h)||m)){const e=ue(h,l,o,n);if(fe(h,e),"out-in"===u)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&(n.effect.dirty=!0,n.update())},ce(a);"in-out"===u&&c.type!==At&&(e.delayLeave=(e,t,n)=>{le(o,h)[String(h.key)]=h,e[ne]=()=>{t(),e[ne]=void 0,delete d.delayedLeave},d.delayedLeave=n})}return a}}};function le(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ue(e,t,n,r){const{appear:s,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:d,onEnterCancelled:f,onBeforeLeave:h,onLeave:m,onAfterLeave:p,onLeaveCancelled:v,onBeforeAppear:g,onAppear:y,onAfterAppear:w,onAppearCancelled:b}=t,k=String(e.key),_=le(n,e),S=(e,t)=>{e&&c(e,r,9,t)},T=(e,t)=>{const n=t[1];S(e,t),(0,o.kJ)(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},x={mode:i,persisted:a,beforeEnter(t){let r=l;if(!n.isMounted){if(!s)return;r=g||l}t[ne]&&t[ne](!0);const o=_[k];o&&Jt(e,o)&&o.el[ne]&&o.el[ne](),S(r,[t])},enter(e){let t=u,r=d,o=f;if(!n.isMounted){if(!s)return;t=y||u,r=w||d,o=b||f}let i=!1;const a=e[re]=t=>{i||(i=!0,S(t?o:r,[e]),x.delayedLeave&&x.delayedLeave(),e[re]=void 0)};t?T(t,[e,a]):a()},leave(t,r){const o=String(e.key);if(t[re]&&t[re](!0),n.isUnmounting)return r();S(h,[t]);let s=!1;const i=t[ne]=n=>{s||(s=!0,r(),S(n?v:p,[t]),t[ne]=void 0,_[o]===e&&delete _[o])};_[o]=e,m?T(m,[t,i]):i()},clone(e){return ue(e,t,n,r)}};return x}function ce(e){if(ye(e))return(e=Qt(e)).children=null,e}function de(e){return ye(e)?e.children?e.children[0]:void 0:e}function fe(e,t){6&e.shapeFlag&&e.component?fe(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function he(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let e=0;e(0,o.l7)({name:e.name},t,{setup:e}))():e}const pe=e=>!!e.type.__asyncLoader;function ve(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:i=200,timeout:a,suspensible:l=!0,onError:u}=e;let c,f=null,h=0;const m=()=>{let e;return f||(e=f=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),u)return new Promise(((t,n)=>{u(e,(()=>t((h++,f=null,m()))),(()=>n(e)),h+1)}));throw e})).then((t=>e!==f&&f?f:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),c=t,t))))};return me({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return c},setup(){const e=dn;if(c)return()=>ge(c,e);const t=t=>{f=null,d(t,e,13,!s)};if(l&&e.suspense||bn)return m().then((t=>()=>ge(t,e))).catch((e=>(t(e),()=>s?Xt(s,{error:e}):null)));const o=(0,r.iH)(!1),u=(0,r.iH)(),h=(0,r.iH)(!!i);return i&&setTimeout((()=>{h.value=!1}),i),null!=a&&setTimeout((()=>{if(!o.value&&!u.value){const e=new Error(`Async component timed out after ${a}ms.`);t(e),u.value=e}}),a),m().then((()=>{o.value=!0,e.parent&&ye(e.parent.vnode)&&(e.parent.effect.dirty=!0,_(e.parent.update))})).catch((e=>{t(e),u.value=e})),()=>o.value&&c?ge(c,e):u.value&&s?Xt(s,{error:u.value}):n&&!h.value?Xt(n):void 0}})}function ge(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=Xt(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const ye=e=>e.type.__isKeepAlive;function we(e,t){ke(e,"a",t)}function be(e,t){ke(e,"da",t)}function ke(e,t,n=dn){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(Se(t,r,n),n){let e=n.parent;for(;e&&e.parent;)ye(e.parent.vnode)&&_e(r,t,n,e),e=e.parent}}function _e(e,t,n,r){const s=Se(t,e,r,!0);De((()=>{(0,o.Od)(r[t],s)}),n)}function Se(e,t,n=dn,o=!1){if(n){const s=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)();const s=pn(n),i=c(t,n,e,o);return s(),(0,r.lk)(),i});return o?s.unshift(i):s.push(i),i}}RegExp,RegExp;const Te=e=>(t,n=dn)=>(!bn||"sp"===e)&&Se(e,((...e)=>t(...e)),n),xe=Te("bm"),Ce=Te("m"),Ee=Te("bu"),Oe=Te("u"),Ie=Te("bum"),De=Te("um"),Ne=Te("sp"),Me=Te("rtg"),Fe=Te("rtc");function Le(e,t=dn){Se("ec",e,t)}function $e(e,t,n,r){let s;const i=n&&n[r];if((0,o.kJ)(e)||(0,o.HD)(e)){s=new Array(e.length);for(let n=0,r=e.length;nt(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);s=new Array(n.length);for(let r=0,o=n.length;r!qt(e)||e.type!==At&&!(e.type===Lt&&!Re(e.children))))?e:null}const Ve=e=>e?gn(e)?Sn(e)||e.proxy:Ve(e.parent):null,je=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ve(e.parent),$root:e=>Ve(e.root),$emit:e=>e.emit,$options:e=>qe(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,_(e.update)}),$nextTick:e=>e.n||(e.n=k.bind(e.proxy)),$watch:e=>K.bind(e)}),ze=(e,t)=>e!==o.kT&&!e.__isScriptSetup&&(0,o.RI)(e,t),We={get({_:e},t){const{ctx:n,setupState:s,data:i,props:a,accessCache:l,type:u,appContext:c}=e;let d;if("$"!==t[0]){const r=l[t];if(void 0!==r)switch(r){case 1:return s[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else{if(ze(s,t))return l[t]=1,s[t];if(i!==o.kT&&(0,o.RI)(i,t))return l[t]=2,i[t];if((d=e.propsOptions[0])&&(0,o.RI)(d,t))return l[t]=3,a[t];if(n!==o.kT&&(0,o.RI)(n,t))return l[t]=4,n[t];Ue&&(l[t]=0)}}const f=je[t];let h,m;return f?("$attrs"===t&&(0,r.j)(e,"get",t),f(e)):(h=u.__cssModules)&&(h=h[t])?h:n!==o.kT&&(0,o.RI)(n,t)?(l[t]=4,n[t]):(m=c.config.globalProperties,(0,o.RI)(m,t)?m[t]:void 0)},set({_:e},t,n){const{data:r,setupState:s,ctx:i}=e;return ze(s,t)?(s[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!((0,o.RI)(e.props,t)||"$"===t[0]&&t.slice(1)in e||(i[t]=n,0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:i}},a){let l;return!!n[a]||e!==o.kT&&(0,o.RI)(e,a)||ze(t,a)||(l=i[0])&&(0,o.RI)(l,a)||(0,o.RI)(r,a)||(0,o.RI)(je,a)||(0,o.RI)(s.config.globalProperties,a)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:(0,o.RI)(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function He(e){return(0,o.kJ)(e)?e.reduce(((e,t)=>(e[t]=null,e)),{}):e}let Ue=!0;function Pe(e,t,n){c((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function Ze(e,t,n,r){const s=r.includes(".")?X(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&Y(s,n)}else if((0,o.mf)(e))Y(s,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>Ze(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&Y(s,r,e)}}function qe(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:i,config:{optionMergeStrategies:a}}=e.appContext,l=i.get(t);let u;return l?u=l:s.length||n||r?(u={},s.length&&s.forEach((e=>Je(u,e,a,!0))),Je(u,t,a)):u=t,(0,o.Kn)(t)&&i.set(t,u),u}function Je(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&Je(e,s,n,!0),o&&o.forEach((t=>Je(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=Be[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const Be={data:Ye,props:Qe,emits:Qe,methods:Xe,computed:Xe,beforeCreate:Ke,created:Ke,beforeMount:Ke,mounted:Ke,beforeUpdate:Ke,updated:Ke,beforeDestroy:Ke,beforeUnmount:Ke,destroyed:Ke,unmounted:Ke,activated:Ke,deactivated:Ke,errorCaptured:Ke,serverPrefetch:Ke,components:Xe,directives:Xe,watch:function(e,t){if(!e)return t;if(!t)return e;const n=(0,o.l7)(Object.create(null),e);for(const r in t)n[r]=Ke(e[r],t[r]);return n},provide:Ye,inject:function(e,t){return Xe(Ge(e),Ge(t))}};function Ye(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function Ge(e){if((0,o.kJ)(e)){const t={};for(let n=0;n1)return n&&(0,o.mf)(t)?t.call(r&&r.proxy):t}}function it(e,t,n,s){const[i,a]=e.propsOptions;let l,u=!1;if(t)for(let r in t){if((0,o.Gg)(r))continue;const c=t[r];let d;i&&(0,o.RI)(i,d=(0,o._A)(r))?a&&a.includes(d)?(l||(l={}))[d]=c:n[d]=c:N(e.emitsOptions,r)||r in s&&c===s[r]||(s[r]=c,u=!0)}if(a){const t=(0,r.IU)(n),s=l||o.kT;for(let r=0;r{u=!0;const[n,r]=lt(e,t,!0);(0,o.l7)(a,n),r&&l.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!u)return(0,o.Kn)(e)&&r.set(e,o.Z6),o.Z6;if((0,o.kJ)(i))for(let e=0;e-1,r[1]=n<0||e-1||(0,o.RI)(r,"default"))&&l.push(t)}}}const c=[a,l];return(0,o.Kn)(e)&&r.set(e,c),c}function ut(e){return"$"!==e[0]}function ct(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:null===e?"null":""}function dt(e,t){return ct(e)===ct(t)}function ft(e,t){return(0,o.kJ)(t)?t.findIndex((t=>dt(t,e))):(0,o.mf)(t)&&dt(t,e)?0:-1}const ht=e=>"_"===e[0]||"$stable"===e,mt=e=>(0,o.kJ)(e)?e.map(rn):[rn(e)],pt=(e,t,n)=>{if(t._n)return t;const r=$(((...e)=>mt(t(...e))),n);return r._c=!1,r},vt=(e,t,n)=>{const r=e._ctx;for(const n in e){if(ht(n))continue;const s=e[n];if((0,o.mf)(s))t[n]=pt(0,s,r);else if(null!=s){const e=mt(s);t[n]=()=>e}}},gt=(e,t)=>{const n=mt(t);e.slots.default=()=>n},yt=(e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):vt(t,e.slots={})}else e.slots={},t&>(e,t);(0,o.Nj)(e.slots,Bt,1)},wt=(e,t,n)=>{const{vnode:r,slots:s}=e;let i=!0,a=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:((0,o.l7)(s,t),n||1!==e||delete s._):(i=!t.$stable,vt(t,s)),a=t}else t&&(gt(e,t),a={default:1});if(i)for(const e in s)ht(e)||null!=a[e]||delete s[e]};function bt(e,t,n,s,i=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>bt(e,t&&((0,o.kJ)(t)?t[r]:t),n,s,i)));if(pe(s)&&!i)return;const a=4&s.shapeFlag?Sn(s.component)||s.component.proxy:s.el,l=i?null:a,{i:c,r:d}=e,f=t&&t.r,h=c.refs===o.kT?c.refs={}:c.refs,m=c.setupState;if(null!=f&&f!==d&&((0,o.HD)(f)?(h[f]=null,(0,o.RI)(m,f)&&(m[f]=null)):(0,r.dq)(f)&&(f.value=null)),(0,o.mf)(d))u(d,c,12,[l,h]);else{const t=(0,o.HD)(d),s=(0,r.dq)(d),u=e.f;if(t||s){const r=()=>{if(u){const n=t?(0,o.RI)(m,d)?m[d]:h[d]:d.value;i?(0,o.kJ)(n)&&(0,o.Od)(n,a):(0,o.kJ)(n)?n.includes(a)||n.push(a):t?(h[d]=[a],(0,o.RI)(m,d)&&(m[d]=h[d])):(d.value=[a],e.k&&(h[e.k]=d.value))}else t?(h[d]=l,(0,o.RI)(m,d)&&(m[d]=l)):s&&(d.value=l,e.k&&(h[e.k]=l))};i||u?r():(r.id=-1,xt(r,n))}}}let kt=!1;const _t=e=>(e=>e.namespaceURI.includes("svg")&&"foreignObject"!==e.tagName)(e)?"svg":(e=>e.namespaceURI.includes("MathML"))(e)?"mathml":void 0,St=e=>8===e.nodeType;function Tt(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:a,parentNode:l,remove:u,insert:c,createComment:d}}=e,f=(n,r,o,u,d,b=!1)=>{const k=St(n)&&"["===n.data,_=()=>v(n,r,o,u,d,k),{type:S,ref:T,shapeFlag:x,patchFlag:C}=r;let E=n.nodeType;r.el=n,-2===C&&(b=!1,r.dynamicChildren=null);let O=null;switch(S){case $t:3!==E?""===r.children?(c(r.el=s(""),l(n),n),O=n):O=_():(n.data!==r.children&&(kt=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&i("Hydration text mismatch in",n.parentNode,`\n - rendered on server: ${JSON.stringify(n.data)}\n - expected on client: ${JSON.stringify(r.children)}`),n.data=r.children),O=a(n));break;case At:w(n)?(O=a(n),y(r.el=n.content.firstChild,n,o)):O=8!==E||k?_():a(n);break;case Rt:if(k&&(E=(n=a(n)).nodeType),1===E||3===E){O=n;const e=!r.children.length;for(let t=0;t{l=l||!!t.dynamicChildren;const{type:c,props:d,patchFlag:f,shapeFlag:h,dirs:p,transition:v}=t,g="input"===c||"option"===c;if(g||-1!==f){p&&te(t,null,n,"created");let c,b=!1;if(w(e)){b=Nt(s,v)&&n&&n.vnode.props&&n.vnode.props.appear;const r=e.content.firstChild;b&&v.beforeEnter(r),y(r,e,n),t.el=e=r}if(16&h&&(!d||!d.innerHTML&&!d.textContent)){let r=m(e.firstChild,t,e,n,s,a,l),o=!1;for(;r;){kt=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&!o&&(i("Hydration children mismatch on",e,"\nServer rendered element contains more child nodes than client vdom."),o=!0);const t=r;r=r.nextSibling,u(t)}}else 8&h&&e.textContent!==t.children&&(kt=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&i("Hydration text content mismatch on",e,`\n - rendered on server: ${e.textContent}\n - expected on client: ${t.children}`),e.textContent=t.children);if(d)if(g||!l||48&f)for(const t in d)(g&&(t.endsWith("value")||"indeterminate"===t)||(0,o.F7)(t)&&!(0,o.Gg)(t)||"."===t[0])&&r(e,t,null,d[t],void 0,void 0,n);else d.onClick&&r(e,"onClick",null,d.onClick,void 0,void 0,n);(c=d&&d.onVnodeBeforeMount)&&ln(c,n,t),p&&te(t,null,n,"beforeMount"),((c=d&&d.onVnodeMounted)||p||b)&&P((()=>{c&&ln(c,n,t),b&&v.enter(e),p&&te(t,null,n,"mounted")}),s)}return e.nextSibling},m=(e,t,r,o,s,a,l)=>{l=l||!!t.dynamicChildren;const u=t.children,c=u.length;let d=!1;for(let t=0;t{const{slotScopeIds:i}=t;i&&(o=o?o.concat(i):i);const u=l(e),f=m(a(e),t,u,n,r,o,s);return f&&St(f)&&"]"===f.data?a(t.anchor=f):(kt=!0,c(t.anchor=d("]"),u,f),f)},v=(e,t,r,o,s,c)=>{if(kt=!0,__VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&i("Hydration node mismatch:\n- rendered on server:",e,3===e.nodeType?"(text)":St(e)&&"["===e.data?"(start of fragment)":"","\n- expected on client:",t.type),t.el=null,c){const t=g(e);for(;;){const n=a(e);if(!n||n===t)break;u(n)}}const d=a(e),f=l(e);return u(e),n(null,t,f,d,r,o,_t(f),s),d},g=(e,t="[",n="]")=>{let r=0;for(;e;)if((e=a(e))&&St(e)&&(e.data===t&&r++,e.data===n)){if(0===r)return a(e);r--}return e},y=(e,t,n)=>{const r=t.parentNode;r&&r.replaceChild(e,t);let o=n;for(;o;)o.vnode.el===t&&(o.vnode.el=o.subTree.el=e),o=o.parent},w=e=>1===e.nodeType&&"template"===e.tagName.toLowerCase();return[(e,t)=>{if(!t.hasChildNodes())return __VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&i("Attempting to hydrate existing markup but container is empty. Performing full mount instead."),n(null,e,t),x(),void(t._vnode=e);kt=!1,f(t.firstChild,e,null,null,null),x(),t._vnode=e,kt&&console.error("Hydration completed but contains mismatches.")},f]}const xt=P;function Ct(e){return Ot(e)}function Et(e){return Ot(e,Tt)}function Ot(e,t){"boolean"!=typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__&&((0,o.E9)().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1),(0,o.E9)().__VUE__=!0;const{insert:n,remove:s,patchProp:i,createElement:a,createText:l,createComment:c,setText:f,setElementText:h,parentNode:v,nextSibling:g,setScopeId:y=o.dG,insertStaticContent:w}=e,b=(e,t,n,r=null,o=null,s=null,i=void 0,a=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!Jt(e,t)&&(r=ee(e),Y(e,o,s,!0),e=null),-2===t.patchFlag&&(l=!1,t.dynamicChildren=null);const{type:u,ref:c,shapeFlag:d}=t;switch(u){case $t:k(e,t,n,r);break;case At:S(e,t,n,r);break;case Rt:null==e&&C(t,n,r,i);break;case Lt:V(e,t,n,r,o,s,i,a,l);break;default:1&d?E(e,t,n,r,o,s,i,a,l):6&d?z(e,t,n,r,o,s,i,a,l):(64&d||128&d)&&u.process(e,t,n,r,o,s,i,a,l,oe)}null!=c&&o&&bt(c,e&&e.ref,s,t||e,!t)},k=(e,t,r,o)=>{if(null==e)n(t.el=l(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},S=(e,t,r,o)=>{null==e?n(t.el=c(t.children||""),r,o):t.el=e.el},C=(e,t,n,r)=>{[e.el,e.anchor]=w(e.children,t,n,r,e.el,e.anchor)},E=(e,t,n,r,o,s,i,a,l)=>{"svg"===t.type?i="svg":"math"===t.type&&(i="mathml"),null==e?O(t,n,r,o,s,i,a,l):L(e,t,o,s,i,a,l)},O=(e,t,r,s,l,u,c,d)=>{let f,m;const{props:p,shapeFlag:v,transition:g,dirs:y}=e;if(f=e.el=a(e.type,u,p&&p.is,p),8&v?h(f,e.children):16&v&&F(e.children,f,null,s,l,It(e,u),c,d),y&&te(e,null,s,"created"),M(f,e,e.scopeId,c,s),p){for(const t in p)"value"===t||(0,o.Gg)(t)||i(f,t,null,p[t],u,e.children,s,l,Q);"value"in p&&i(f,"value",null,p.value,u),(m=p.onVnodeBeforeMount)&&ln(m,s,e)}y&&te(e,null,s,"beforeMount");const w=Nt(l,g);w&&g.beforeEnter(f),n(f,t,r),((m=p&&p.onVnodeMounted)||w||y)&&xt((()=>{m&&ln(m,s,e),w&&g.enter(f),y&&te(e,null,s,"mounted")}),l)},M=(e,t,n,r,o)=>{if(n&&y(e,n),r)for(let t=0;t{for(let u=l;u{const u=t.el=e.el;let{patchFlag:c,dynamicChildren:d,dirs:f}=t;c|=16&e.patchFlag;const m=e.props||o.kT,p=t.props||o.kT;let v;if(n&&Dt(n,!1),(v=p.onVnodeBeforeUpdate)&&ln(v,n,t,e),f&&te(t,e,n,"beforeUpdate"),n&&Dt(n,!0),d?$(e.dynamicChildren,d,u,n,r,It(t,s),a):l||Z(e,t,u,null,n,r,It(t,s),a,!1),c>0){if(16&c)R(u,t,m,p,n,r,s);else if(2&c&&m.class!==p.class&&i(u,"class",null,p.class,s),4&c&&i(u,"style",m.style,p.style,s),8&c){const o=t.dynamicProps;for(let t=0;t{v&&ln(v,n,t,e),f&&te(t,e,n,"updated")}),r)},$=(e,t,n,r,o,s,i)=>{for(let a=0;a{if(n!==r){if(n!==o.kT)for(const u in n)(0,o.Gg)(u)||u in r||i(e,u,n[u],null,l,t.children,s,a,Q);for(const u in r){if((0,o.Gg)(u))continue;const c=r[u],d=n[u];c!==d&&"value"!==u&&i(e,u,d,c,l,t.children,s,a,Q)}"value"in r&&i(e,"value",n.value,r.value,l)}},V=(e,t,r,o,s,i,a,u,c)=>{const d=t.el=e?e.el:l(""),f=t.anchor=e?e.anchor:l("");let{patchFlag:h,dynamicChildren:m,slotScopeIds:p}=t;p&&(u=u?u.concat(p):p),null==e?(n(d,r,o),n(f,r,o),F(t.children||[],r,f,s,i,a,u,c)):h>0&&64&h&&m&&e.dynamicChildren?($(e.dynamicChildren,m,r,s,i,a,u),(null!=t.key||s&&t===s.subTree)&&Mt(e,t,!0)):Z(e,t,r,f,s,i,a,u,c)},z=(e,t,n,r,o,s,i,a,l)=>{t.slotScopeIds=a,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,i,l):W(t,n,r,o,s,i,l):H(e,t,l)},W=(e,t,n,s,i,a,l)=>{const c=e.component=function(e,t,n){const s=e.type,i=(t?t.appContext:e.appContext)||un,a={uid:cn++,vnode:e,type:s,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new r.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:lt(s,i),emitsOptions:D(s,i),emit:null,emitted:null,propsDefaults:o.kT,inheritAttrs:s.inheritAttrs,ctx:o.kT,data:o.kT,props:o.kT,attrs:o.kT,slots:o.kT,refs:o.kT,setupState:o.kT,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return a.ctx={_:a},a.root=t?t.root:a,a.emit=I.bind(null,a),e.ce&&e.ce(a),a}(e,s,i);if(ye(e)&&(c.ctx.renderer=oe),function(e,t=!1){t&&mn(t);const{props:n,children:s}=e.vnode,i=gn(e);!function(e,t,n,s=!1){const i={},a={};(0,o.Nj)(a,Bt,1),e.propsDefaults=Object.create(null),it(e,t,i,a);for(const t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=s?i:(0,r.Um)(i):e.type.props?e.props=i:e.props=a,e.attrs=a}(e,n,i,t),yt(e,s);const a=i?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,We));const{setup:s}=n;if(s){const n=e.setupContext=s.length>1?function(e){const t=t=>{e.exposed=t||{}};return{get attrs(){return function(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return(0,r.j)(e,"get","$attrs"),t[n]}}))}(e)},slots:e.slots,emit:e.emit,expose:t}}(e):null,i=pn(e);(0,r.Jd)();const a=u(s,e,0,[e.props,n]);if((0,r.lk)(),i(),(0,o.tI)(a)){if(a.then(vn,vn),t)return a.then((n=>{kn(e,n,t)})).catch((t=>{d(t,e,0)}));e.asyncDep=a}else kn(e,a,t)}else _n(e,t)}(e,t):void 0;t&&mn(!1)}(c),c.asyncDep){if(i&&i.registerDep(c,U),!e.el){const e=c.subTree=Xt(At);S(null,e,t,n)}}else U(c,e,t,n,i,a,l)},H=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:a,patchFlag:l}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&l>=0))return!(!o&&!a||a&&a.$stable)||r!==i&&(r?!i||j(r,i,u):!!i);if(1024&l)return!0;if(16&l)return r?j(r,i,u):!!i;if(8&l){const e=t.dynamicProps;for(let t=0;tp&&m.splice(t,1)}(r.update),r.effect.dirty=!0,r.update()}else t.el=e.el,r.vnode=t},U=(e,t,n,s,i,a,l)=>{const u=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{const n=Ft(e);if(n)return t&&(t.el=c.el,P(e,t,l)),void n.asyncDep.then((()=>{e.isUnmounted||u()}))}let d,f=t;Dt(e,!1),t?(t.el=c.el,P(e,t,l)):t=c,n&&(0,o.ir)(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&ln(d,s,t,c),Dt(e,!0);const h=A(e),m=e.subTree;e.subTree=h,b(m,h,v(m.el),ee(m),e,i,a),t.el=h.el,null===f&&function({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r!==e)break;(e=t.vnode).el=n,t=t.parent}}(e,h.el),r&&xt(r,i),(d=t.props&&t.props.onVnodeUpdated)&&xt((()=>ln(d,s,t,c)),i)}else{let r;const{el:l,props:u}=t,{bm:c,m:d,parent:f}=e,h=pe(t);if(Dt(e,!1),c&&(0,o.ir)(c),!h&&(r=u&&u.onVnodeBeforeMount)&&ln(r,f,t),Dt(e,!0),l&&ie){const n=()=>{e.subTree=A(e),ie(l,e.subTree,e,i,null)};h?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const r=e.subTree=A(e);b(null,r,n,s,e,i,a),t.el=r.el}if(d&&xt(d,i),!h&&(r=u&&u.onVnodeMounted)){const e=t;xt((()=>ln(r,f,e)),i)}(256&t.shapeFlag||f&&pe(f.vnode)&&256&f.vnode.shapeFlag)&&e.a&&xt(e.a,i),e.isMounted=!0,t=n=s=null}},c=e.effect=new r.qq(u,o.dG,(()=>_(d)),e.scope),d=e.update=()=>{c.dirty&&c.run()};d.id=e.uid,Dt(e,!0),d()},P=(e,t,n)=>{t.component=e;const s=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,s){const{props:i,attrs:a,vnode:{patchFlag:l}}=e,u=(0,r.IU)(i),[c]=e.propsOptions;let d=!1;if(!(s||l>0)||16&l){let r;it(e,t,i,a)&&(d=!0);for(const s in u)t&&((0,o.RI)(t,s)||(r=(0,o.rs)(s))!==s&&(0,o.RI)(t,r))||(c?!n||void 0===n[s]&&void 0===n[r]||(i[s]=at(c,u,s,void 0,e,!0)):delete i[s]);if(a!==u)for(const e in a)t&&(0,o.RI)(t,e)||(delete a[e],d=!0)}else if(8&l){const n=e.vnode.dynamicProps;for(let r=0;r{const u=e&&e.children,c=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(128&f)return void J(u,d,n,r,o,s,i,a,l);if(256&f)return void q(u,d,n,r,o,s,i,a,l)}8&m?(16&c&&Q(u,o,s),d!==u&&h(n,d)):16&c?16&m?J(u,d,n,r,o,s,i,a,l):Q(u,o,s,!0):(8&c&&h(n,""),16&m&&F(d,n,r,o,s,i,a,l))},q=(e,t,n,r,s,i,a,l,u)=>{e=e||o.Z6,t=t||o.Z6;const c=e.length,d=t.length,f=Math.min(c,d);let h;for(h=0;hd?Q(e,s,i,!0,!1,f):F(t,n,r,s,i,a,l,u,f)},J=(e,t,n,r,s,i,a,l,u)=>{let c=0;const d=t.length;let f=e.length-1,h=d-1;for(;c<=f&&c<=h;){const r=e[c],o=t[c]=u?on(t[c]):rn(t[c]);if(!Jt(r,o))break;b(r,o,n,null,s,i,a,l,u),c++}for(;c<=f&&c<=h;){const r=e[f],o=t[h]=u?on(t[h]):rn(t[h]);if(!Jt(r,o))break;b(r,o,n,null,s,i,a,l,u),f--,h--}if(c>f){if(c<=h){const e=h+1,o=eh)for(;c<=f;)Y(e[c],s,i,!0),c++;else{const m=c,p=c,v=new Map;for(c=p;c<=h;c++){const e=t[c]=u?on(t[c]):rn(t[c]);null!=e.key&&v.set(e.key,c)}let g,y=0;const w=h-p+1;let k=!1,_=0;const S=new Array(w);for(c=0;c=w){Y(r,s,i,!0);continue}let o;if(null!=r.key)o=v.get(r.key);else for(g=p;g<=h;g++)if(0===S[g-p]&&Jt(r,t[g])){o=g;break}void 0===o?Y(r,s,i,!0):(S[o-p]=c+1,o>=_?_=o:k=!0,b(r,t[o],n,null,s,i,a,l,u),y++)}const T=k?function(e){const t=e.slice(),n=[0];let r,o,s,i,a;const l=e.length;for(r=0;r>1,e[n[a]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}(S):o.Z6;for(g=T.length-1,c=w-1;c>=0;c--){const e=p+c,o=t[e],f=e+1{const{el:i,type:a,transition:l,children:u,shapeFlag:c}=e;if(6&c)B(e.component.subTree,t,r,o);else if(128&c)e.suspense.move(t,r,o);else if(64&c)a.move(e,t,r,oe);else if(a!==Lt)if(a!==Rt)if(2!==o&&1&c&&l)if(0===o)l.beforeEnter(i),n(i,t,r),xt((()=>l.enter(i)),s);else{const{leave:e,delayLeave:o,afterLeave:s}=l,a=()=>n(i,t,r),u=()=>{e(i,(()=>{a(),s&&s()}))};o?o(i,a,u):u()}else n(i,t,r);else(({el:e,anchor:t},r,o)=>{let s;for(;e&&e!==t;)s=g(e),n(e,r,o),e=s;n(t,r,o)})(e,t,r);else{n(i,t,r);for(let e=0;e{const{type:s,props:i,ref:a,children:l,dynamicChildren:u,shapeFlag:c,patchFlag:d,dirs:f}=e;if(null!=a&&bt(a,null,n,e,!0),256&c)return void t.ctx.deactivate(e);const h=1&c&&f,m=!pe(e);let p;if(m&&(p=i&&i.onVnodeBeforeUnmount)&&ln(p,t,e),6&c)X(e.component,n,r);else{if(128&c)return void e.suspense.unmount(n,r);h&&te(e,null,t,"beforeUnmount"),64&c?e.type.remove(e,t,n,o,oe,r):u&&(s!==Lt||d>0&&64&d)?Q(u,t,n,!1,!0):(s===Lt&&384&d||!o&&16&c)&&Q(l,t,n),r&&G(e)}(m&&(p=i&&i.onVnodeUnmounted)||h)&&xt((()=>{p&&ln(p,t,e),h&&te(e,null,t,"unmounted")}),n)},G=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Lt)return void K(n,r);if(t===Rt)return void(({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),s(e),e=n;s(t)})(e);const i=()=>{s(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,s=()=>t(n,i);r?r(e.el,i,s):s()}else i()},K=(e,t)=>{let n;for(;e!==t;)n=g(e),s(e),e=n;s(t)},X=(e,t,n)=>{const{bum:r,scope:s,update:i,subTree:a,um:l}=e;r&&(0,o.ir)(r),s.stop(),i&&(i.active=!1,Y(a,e,t,n)),l&&xt(l,t),xt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},Q=(e,t,n,r=!1,o=!1,s=0)=>{for(let i=s;i6&e.shapeFlag?ee(e.component.subTree):128&e.shapeFlag?e.suspense.next():g(e.anchor||e.el);let ne=!1;const re=(e,t,n)=>{null==e?t._vnode&&Y(t._vnode,null,null,!0):b(t._vnode||null,e,t,null,null,null,n),ne||(ne=!0,T(),x(),ne=!1),t._vnode=e},oe={p:b,um:Y,m:B,r:G,mt:W,mc:F,pc:Z,pbc:$,n:ee,o:e};let se,ie;return t&&([se,ie]=t(oe)),{render:re,hydrate:se,createApp:nt(re,se)}}function It({type:e,props:t},n){return"svg"===n&&"foreignObject"===e||"mathml"===n&&"annotation-xml"===e&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Dt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Nt(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Mt(e,t,n=!1){const r=e.children,s=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(s))for(let e=0;e0?jt||o.Z6:null,Vt.pop(),jt=Vt[Vt.length-1]||null,Wt>0&&jt&&jt.push(e),e}function Pt(e,t,n,r,o,s){return Ut(Kt(e,t,n,r,o,s,!0))}function Zt(e,t,n,r,o){return Ut(Xt(e,t,n,r,o,!0))}function qt(e){return!!e&&!0===e.__v_isVNode}function Jt(e,t){return e.type===t.type&&e.key===t.key}const Bt="__vInternal",Yt=({key:e})=>null!=e?e:null,Gt=({ref:e,ref_key:t,ref_for:n})=>("number"==typeof e&&(e=""+e),null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:M,r:e,k:t,f:!!n}:e:null);function Kt(e,t=null,n=null,r=0,s=null,i=(e===Lt?0:1),a=!1,l=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Yt(t),ref:t&&Gt(t),scopeId:F,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:M};return l?(sn(u,n),128&i&&e.normalize(u)):n&&(u.shapeFlag|=(0,o.HD)(n)?8:16),Wt>0&&!a&&jt&&(u.patchFlag>0||6&i)&&32!==u.patchFlag&&jt.push(u),u}const Xt=function(e,t=null,n=null,s=0,i=null,a=!1){if(e&&e!==H||(e=At),qt(e)){const r=Qt(e,t,!0);return n&&sn(r,n),Wt>0&&!a&&jt&&(6&r.shapeFlag?jt[jt.indexOf(e)]=r:jt.push(r)),r.patchFlag|=-2,r}if(l=e,(0,o.mf)(l)&&"__vccOpts"in l&&(e=e.__vccOpts),t){t=function(e){return e?(0,r.X3)(e)||Bt in e?(0,o.l7)({},e):e:null}(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}var l;return Kt(e,t,n,s,i,(0,o.HD)(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0,a,!0)};function Qt(e,t,n=!1){const{props:r,ref:s,patchFlag:i,children:a}=e,l=t?an(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Yt(l),ref:t&&t.ref?n&&s?(0,o.kJ)(s)?s.concat(Gt(t)):[s,Gt(t)]:Gt(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Lt?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qt(e.ssContent),ssFallback:e.ssFallback&&Qt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function en(e=" ",t=0){return Xt($t,null,e,t)}function tn(e,t){const n=Xt(Rt,null,e);return n.staticCount=t,n}function nn(e="",t=!1){return t?(zt(),Zt(At,null,e)):Xt(At,null,e)}function rn(e){return null==e||"boolean"==typeof e?Xt(At):(0,o.kJ)(e)?Xt(Lt,null,e.slice()):"object"==typeof e?on(e):Xt($t,null,String(e))}function on(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:Qt(e)}function sn(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),sn(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Bt in t?3===r&&M&&(1===M.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=M}}else(0,o.mf)(t)?(t={default:t,_ctx:M},n=32):(t=String(t),64&r?(n=16,t=[en(t)]):n=8);e.children=t,e.shapeFlag|=n}function an(...e){const t={};for(let n=0;ndn||M;let hn,mn;{const e=(0,o.E9)(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach((t=>t(e))):r[0](e)}};hn=t("__VUE_INSTANCE_SETTERS__",(e=>dn=e)),mn=t("__VUE_SSR_SETTERS__",(e=>bn=e))}const pn=e=>{const t=dn;return hn(e),e.scope.on(),()=>{e.scope.off(),hn(t)}},vn=()=>{dn&&dn.scope.off(),hn(null)};function gn(e){return 4&e.vnode.shapeFlag}let yn,wn,bn=!1;function kn(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(e.setupState=(0,r.WL)(t)),_n(e,n)}function _n(e,t,n){const s=e.type;if(!e.render){if(!t&&yn&&!s.render){const t=s.template||qe(e).template;if(t){const{isCustomElement:n,compilerOptions:r}=e.appContext.config,{delimiters:i,compilerOptions:a}=s,l=(0,o.l7)((0,o.l7)({isCustomElement:n,delimiters:i},r),a);s.render=yn(t,l)}}e.render=s.render||o.dG,wn&&wn(e)}{const t=pn(e);(0,r.Jd)();try{!function(e){const t=qe(e),n=e.proxy,s=e.ctx;Ue=!1,t.beforeCreate&&Pe(t.beforeCreate,e,"bc");const{data:i,computed:a,methods:l,watch:u,provide:c,inject:d,created:f,beforeMount:h,mounted:m,beforeUpdate:p,updated:v,activated:g,deactivated:y,beforeDestroy:w,beforeUnmount:b,destroyed:k,unmounted:_,render:S,renderTracked:T,renderTriggered:x,errorCaptured:C,serverPrefetch:E,expose:O,inheritAttrs:I,components:D,directives:N,filters:M}=t;if(d&&function(e,t,n=o.dG){(0,o.kJ)(e)&&(e=Ge(e));for(const n in e){const s=e[n];let i;i=(0,o.Kn)(s)?"default"in s?st(s.from||n,s.default,!0):st(s.from||n):st(s),(0,r.dq)(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}(d,s,null),l)for(const e in l){const t=l[e];(0,o.mf)(t)&&(s[e]=t.bind(n))}if(i){const t=i.call(n,n);(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(Ue=!0,a)for(const e in a){const t=a[e],r=(0,o.mf)(t)?t.bind(n,n):(0,o.mf)(t.get)?t.get.bind(n,n):o.dG,i=!(0,o.mf)(t)&&(0,o.mf)(t.set)?t.set.bind(n):o.dG,l=On({get:r,set:i});Object.defineProperty(s,e,{enumerable:!0,configurable:!0,get:()=>l.value,set:e=>l.value=e})}if(u)for(const e in u)Ze(u[e],s,n,e);if(c){const e=(0,o.mf)(c)?c.call(n):c;Reflect.ownKeys(e).forEach((t=>{ot(t,e[t])}))}function F(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(f&&Pe(f,e,"c"),F(xe,h),F(Ce,m),F(Ee,p),F(Oe,v),F(we,g),F(be,y),F(Le,C),F(Fe,T),F(Me,x),F(Ie,b),F(De,_),F(Ne,E),(0,o.kJ)(O))if(O.length){const t=e.exposed||(e.exposed={});O.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});S&&e.render===o.dG&&(e.render=S),null!=I&&(e.inheritAttrs=I),D&&(e.components=D),N&&(e.directives=N)}(e)}finally{(0,r.lk)(),t()}}}function Sn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get(t,n){return n in t?t[n]:n in je?je[n](e):void 0},has(e,t){return t in e||t in je}}))}const Tn=/(?:^|[-_])(\w)/g,xn=e=>e.replace(Tn,(e=>e.toUpperCase())).replace(/[-_]/g,"");function Cn(e,t=!0){return(0,o.mf)(e)?e.displayName||e.name:e.name||t&&e.__name}function En(e,t,n=!1){let r=Cn(t);if(!r&&t.__file){const e=t.__file.match(/([^/\\]+)\.\w+$/);e&&(r=e[1])}if(!r&&e&&e.parent){const n=e=>{for(const n in e)if(e[n]===t)return n};r=n(e.components||e.parent.type.components)||n(e.appContext.components)}return r?xn(r):n?"App":"Anonymous"}const On=(e,t)=>(0,r.Fl)(e,t,bn);function In(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?qt(t)?Xt(e,null,[t]):Xt(e,t):Xt(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&qt(n)&&(n=[n]),Xt(e,t,n))}const Dn="3.4.15"},9963:function(e,t,n){n.d(t,{D2:function(){return j},F8:function(){return T},uT:function(){return d},vr:function(){return U}});var r=n(6252),o=n(3577);n(2262);const s="undefined"!=typeof document?document:null,i=s&&s.createElement("template"),a={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o="svg"===t?s.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?s.createElementNS("http://www.w3.org/1998/Math/MathML",e):s.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>s.createTextNode(e),createComment:e=>s.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>s.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const a=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==s&&(o=o.nextSibling););else{i.innerHTML="svg"===r?`${e}`:"mathml"===r?`${e}`:e;const o=i.content;if("svg"===r||"mathml"===r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},l="transition",u="animation",c=Symbol("_vtc"),d=(e,{slots:t})=>(0,r.h)(r.P$,function(e){const t={};for(const n in e)n in f||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:r,duration:s,enterFromClass:i=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:u=i,appearActiveClass:c=a,appearToClass:d=l,leaveFromClass:w=`${n}-leave-from`,leaveActiveClass:k=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,S=function(e){if(null==e)return null;if((0,o.Kn)(e))return[p(e.enter),p(e.leave)];{const t=p(e);return[t,t]}}(s),T=S&&S[0],x=S&&S[1],{onBeforeEnter:C,onEnter:E,onEnterCancelled:O,onLeave:I,onLeaveCancelled:D,onBeforeAppear:N=C,onAppear:M=E,onAppearCancelled:F=O}=t,L=(e,t,n)=>{g(e,t?d:l),g(e,t?c:a),n&&n()},$=(e,t)=>{e._isLeaving=!1,g(e,w),g(e,_),g(e,k),t&&t()},A=e=>(t,n)=>{const o=e?M:E,s=()=>L(t,e,n);h(o,[t,s]),y((()=>{g(t,e?u:i),v(t,e?d:l),m(o)||b(t,r,T,s)}))};return(0,o.l7)(t,{onBeforeEnter(e){h(C,[e]),v(e,i),v(e,a)},onBeforeAppear(e){h(N,[e]),v(e,u),v(e,c)},onEnter:A(!1),onAppear:A(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>$(e,t);v(e,w),document.body.offsetHeight,v(e,k),y((()=>{e._isLeaving&&(g(e,w),v(e,_),m(I)||b(e,r,x,n))})),h(I,[e,n])},onEnterCancelled(e){L(e,!1),h(O,[e])},onAppearCancelled(e){L(e,!0),h(F,[e])},onLeaveCancelled(e){$(e),h(D,[e])}})}(e),t);d.displayName="Transition";const f={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},h=(d.props=(0,o.l7)({},r.nJ,f),(e,t=[])=>{(0,o.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)}),m=e=>!!e&&((0,o.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function p(e){return(0,o.He)(e)}function v(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[c]||(e[c]=new Set)).add(t)}function g(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[c];n&&(n.delete(t),n.size||(e[c]=void 0))}function y(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let w=0;function b(e,t,n,r){const o=e._endId=++w,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:a,propCount:c}=function(e,t){const n=window.getComputedStyle(e),r=e=>(n[e]||"").split(", "),o=r(`${l}Delay`),s=r(`${l}Duration`),i=k(o,s),a=r(`${u}Delay`),c=r(`${u}Duration`),d=k(a,c);let f=null,h=0,m=0;return t===l?i>0&&(f=l,h=i,m=s.length):t===u?d>0&&(f=u,h=d,m=c.length):(h=Math.max(i,d),f=h>0?i>d?l:u:null,m=f?f===l?s.length:c.length:0),{type:f,timeout:h,propCount:m,hasTransform:f===l&&/\b(transform|all)(,|$)/.test(r(`${l}Property`).toString())}}(e,t);if(!i)return r();const d=i+"end";let f=0;const h=()=>{e.removeEventListener(d,m),s()},m=t=>{t.target===e&&++f>=c&&h()};setTimeout((()=>{f_(t)+_(e[n]))))}function _(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}const S=Symbol("_vod"),T={beforeMount(e,{value:t},{transition:n}){e[S]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):x(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),x(e,!0),r.enter(e)):r.leave(e,(()=>{x(e,!1)})):x(e,t))},beforeUnmount(e,{value:t}){x(e,t)}};function x(e,t){e.style.display=t?e[S]:"none"}const C=Symbol(""),E=/\s*!important$/;function O(e,t,n){if((0,o.kJ)(n))n.forEach((n=>O(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=function(e,t){const n=D[t];if(n)return n;let r=(0,o._A)(t);if("filter"!==r&&r in e)return D[t]=r;r=(0,o.kC)(r);for(let n=0;nL||($.then((()=>L=0)),L=Date.now()),R=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123;"undefined"!=typeof HTMLElement&&HTMLElement,Symbol("_moveCb"),Symbol("_enterCb"),Symbol("_assign");const V={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},j=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=n=>{if(!("key"in n))return;const r=(0,o.rs)(n.key);return t.some((e=>e===r||V[e]===r))?e(n):void 0})},z=(0,o.l7)({patchProp:(e,t,n,s,i,a,l,u,d)=>{const f="svg"===i;"class"===t?function(e,t,n){const r=e[c];r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,s,f):"style"===t?function(e,t,n){const r=e.style,s=r.display,i=(0,o.HD)(n);if(n&&!i){if(t&&!(0,o.HD)(t))for(const e in t)null==n[e]&&O(r,e,"");for(const e in n)O(r,e,n[e])}else if(i){if(t!==n){const e=r[C];e&&(n+=";"+e),r.cssText=n}}else t&&e.removeAttribute("style");S in e&&(r.display=s)}(e,n,s):(0,o.F7)(t)?(0,o.tR)(t)||function(e,t,n,s,i=null){const a=e[M]||(e[M]={}),l=a[t];if(s&&l)l.value=s;else{const[n,u]=function(e){let t;if(F.test(e)){let n;for(t={};n=e.match(F);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):(0,o.rs)(e.slice(2)),t]}(t);if(s){const l=a[t]=function(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();(0,r.$d)(function(e,t){if((0,o.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=A(),n}(s,i);!function(e,t,n,r){e.addEventListener(t,n,r)}(e,n,l,u)}else l&&(function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,l,u),a[t]=void 0)}}(e,t,0,s,l):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,r){if(r)return"innerHTML"===t||"textContent"===t||!!(t in e&&R(t)&&(0,o.mf)(n));if("spellcheck"===t||"draggable"===t||"translate"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}return(!R(t)||!(0,o.HD)(n))&&t in e}(e,t,s,f))?function(e,t,n,r,s,i,a){if("innerHTML"===t||"textContent"===t)return r&&a(r,s,i),void(e[t]=null==n?"":n);const l=e.tagName;if("value"===t&&"PROGRESS"!==l&&!l.includes("-")){e._value=n;const r=null==n?"":n;return("OPTION"===l?e.getAttribute("value"):e.value)!==r&&(e.value=r),void(null==n&&e.removeAttribute(t))}let u=!1;if(""===n||null==n){const r=typeof e[t];"boolean"===r?n=(0,o.yA)(n):null==n&&"string"===r?(n="",u=!0):"number"===r&&(n=0,u=!0)}try{e[t]=n}catch(e){}u&&e.removeAttribute(t)}(e,t,s,a,l,u,d):("true-value"===t?e._trueValue=s:"false-value"===t&&(e._falseValue=s),function(e,t,n,r,s){if(r&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(N,t.slice(6,t.length)):e.setAttributeNS(N,t,n);else{const r=(0,o.Pq)(t);null==n||r&&!(0,o.yA)(n)?e.removeAttribute(t):e.setAttribute(t,r?"":n)}}(e,t,s,f))}},a);let W,H=!1;const U=(...e)=>{const t=(W=H?W:(0,r.Eo)(z),H=!0,W).createApp(...e),{mount:n}=t;return t.mount=e=>{const t=function(e){if((0,o.HD)(e))return document.querySelector(e);return e}(e);if(t)return n(t,!0,function(e){return e instanceof SVGElement?"svg":"function"==typeof MathMLElement&&e instanceof MathMLElement?"mathml":void 0}(t))},t}},3577:function(e,t,n){function r(e,t){const n=new Set(e.split(","));return t?e=>n.has(e.toLowerCase()):e=>n.has(e)}n.d(t,{C_:function(){return G},DM:function(){return v},E9:function(){return U},F7:function(){return l},Gg:function(){return I},HD:function(){return b},He:function(){return W},Kj:function(){return y},Kn:function(){return _},NO:function(){return a},Nj:function(){return j},Od:function(){return d},PO:function(){return E},Pq:function(){return K},RI:function(){return h},S0:function(){return O},W7:function(){return C},WV:function(){return Q},Z6:function(){return s},_A:function(){return M},_N:function(){return p},aU:function(){return R},dG:function(){return i},fY:function(){return r},h5:function(){return z},hR:function(){return A},hq:function(){return ee},ir:function(){return V},j5:function(){return Z},kC:function(){return $},kJ:function(){return m},kT:function(){return o},l7:function(){return c},mf:function(){return w},rs:function(){return L},tI:function(){return S},tR:function(){return u},yA:function(){return X},yk:function(){return k},yl:function(){return P},zw:function(){return te}});const o={},s=[],i=()=>{},a=()=>!1,l=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),u=e=>e.startsWith("onUpdate:"),c=Object.assign,d=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},f=Object.prototype.hasOwnProperty,h=(e,t)=>f.call(e,t),m=Array.isArray,p=e=>"[object Map]"===x(e),v=e=>"[object Set]"===x(e),g=e=>"[object Date]"===x(e),y=e=>"[object RegExp]"===x(e),w=e=>"function"==typeof e,b=e=>"string"==typeof e,k=e=>"symbol"==typeof e,_=e=>null!==e&&"object"==typeof e,S=e=>(_(e)||w(e))&&w(e.then)&&w(e.catch),T=Object.prototype.toString,x=e=>T.call(e),C=e=>x(e).slice(8,-1),E=e=>"[object Object]"===x(e),O=e=>b(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,I=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),D=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},N=/-(\w)/g,M=D((e=>e.replace(N,((e,t)=>t?t.toUpperCase():"")))),F=/\B([A-Z])/g,L=D((e=>e.replace(F,"-$1").toLowerCase())),$=D((e=>e.charAt(0).toUpperCase()+e.slice(1))),A=D((e=>e?`on${$(e)}`:"")),R=(e,t)=>!Object.is(e,t),V=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},z=e=>{const t=parseFloat(e);return isNaN(t)?e:t},W=e=>{const t=b(e)?Number(e):NaN;return isNaN(t)?e:t};let H;const U=()=>H||(H="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{}),P=r("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error");function Z(e){if(m(e)){const t={};for(let n=0;n{if(e){const n=e.split(J);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function G(e){let t="";if(b(e))t=e;else if(m(e))for(let n=0;nQ(e,t)))}const te=e=>b(e)?e:null==e?"":m(e)||_(e)&&(e.toString===T||!w(e.toString))?JSON.stringify(e,ne,2):String(e),ne=(e,t)=>t&&t.__v_isRef?ne(e,t.value):p(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n],r)=>(e[re(t,r)+" =>"]=n,e)),{})}:v(t)?{[`Set(${t.size})`]:[...t.values()].map((e=>re(e)))}:k(t)?re(t):!_(t)||m(t)||E(t)?t:String(t),re=(e,t="")=>{var n;return k(e)?`Symbol(${null!=(n=e.description)?n:t})`:e}},2479:function(e,t,n){n.d(t,{Z:function(){return c}});var r=n(6252),o=n(2262),s=n(3577),i=n(2201),a=n(4273),l=n(7171);const u=["href","rel","target","aria-label"];var c=(0,r.aZ)({inheritAttrs:!1,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,n=(0,i.yj)(),c=(0,a.WF)(),{item:d}=(0,o.BK)(t),f=(0,r.Fl)((()=>(0,l.ak)(d.value.link))),h=(0,r.Fl)((()=>!f.value&&(0,l.PF)(d.value.link))),m=(0,r.Fl)((()=>{if(!h.value)return d.value.target?d.value.target:f.value?"_blank":void 0})),p=(0,r.Fl)((()=>"_blank"===m.value)),v=(0,r.Fl)((()=>!f.value&&!h.value&&!p.value)),g=(0,r.Fl)((()=>{if(!h.value)return d.value.rel?d.value.rel:p.value?"noopener noreferrer":void 0})),y=(0,r.Fl)((()=>d.value.ariaLabel||d.value.text)),w=(0,r.Fl)((()=>{const e=Object.keys(c.value.locales);return e.length?!e.some((e=>e===d.value.link)):"/"!==d.value.link})),b=(0,r.Fl)((()=>!!w.value&&n.path.startsWith(d.value.link))),k=(0,r.Fl)((()=>!!v.value&&(d.value.activeMatch?new RegExp(d.value.activeMatch).test(n.path):b.value)));return(e,t)=>{const n=(0,r.up)("RouterLink"),i=(0,r.up)("AutoLinkExternalIcon");return v.value?((0,r.wg)(),(0,r.j4)(n,(0,r.dG)({key:0,class:{"router-link-active":k.value},to:(0,o.SU)(d).link,"aria-label":y.value},e.$attrs),{default:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"before"),(0,r.Uk)(" "+(0,s.zw)((0,o.SU)(d).text)+" ",1),(0,r.WI)(e.$slots,"after")])),_:3},16,["class","to","aria-label"])):((0,r.wg)(),(0,r.iD)("a",(0,r.dG)({key:1,class:"external-link",href:(0,o.SU)(d).link,rel:g.value,target:m.value,"aria-label":y.value},e.$attrs),[(0,r.WI)(e.$slots,"before"),(0,r.Uk)(" "+(0,s.zw)((0,o.SU)(d).text)+" ",1),p.value?((0,r.wg)(),(0,r.j4)(i,{key:0})):(0,r.kq)("",!0),(0,r.WI)(e.$slots,"after")],16,u))}}})},9945:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(6252),o=n(2262),s=n(3577),i=n(2479),a=n(4273),l=n(7676),u=n(851);const c={class:"page-meta"},d={key:0,class:"meta-item edit-link"},f={key:1,class:"meta-item last-updated"},h={class:"meta-item-label"},m={class:"meta-item-info"},p={key:2,class:"meta-item contributors"},v={class:"meta-item-label"},g={class:"meta-item-info"},y=["title"];var w=(0,r.aZ)({__name:"PageMeta",setup(e){const t=(0,l.X6)(),n=(()=>{const e=(0,l.X6)(),t=(0,a.Vi)(),n=(0,a.I2)();return(0,r.Fl)((()=>{var r,o,s;if(null!=(o=null!=(r=n.value.editLink)?r:e.value.editLink)&&!o)return null;const{repo:i,docsRepo:a=i,docsBranch:l="main",docsDir:c="",editLinkText:d}=e.value;if(!a)return null;const f=(0,u.Fg)({docsRepo:a,docsBranch:l,docsDir:c,filePathRelative:t.value.filePathRelative,editLinkPattern:null!=(s=n.value.editLinkPattern)?s:e.value.editLinkPattern});return f?{text:null!=d?d:"Edit this page",link:f}:null}))})(),w=(()=>{const e=(0,l.X6)(),t=(0,a.Vi)(),n=(0,a.I2)();return(0,r.Fl)((()=>{var r,o,s,i;return(null==(o=null!=(r=n.value.lastUpdated)?r:e.value.lastUpdated)||o)&&(null==(s=t.value.git)?void 0:s.updatedTime)?new Date(null==(i=t.value.git)?void 0:i.updatedTime).toLocaleString():null}))})(),b=(()=>{const e=(0,l.X6)(),t=(0,a.Vi)(),n=(0,a.I2)();return(0,r.Fl)((()=>{var r,o,s,i;return null!=(o=null!=(r=n.value.contributors)?r:e.value.contributors)&&!o||null==(i=null==(s=t.value.git)?void 0:s.contributors)?null:i}))})();return(e,a)=>{const l=(0,r.up)("ClientOnly");return(0,r.wg)(),(0,r.iD)("footer",c,[(0,o.SU)(n)?((0,r.wg)(),(0,r.iD)("div",d,[(0,r.Wm)(i.Z,{class:"meta-item-label",item:(0,o.SU)(n)},null,8,["item"])])):(0,r.kq)("",!0),(0,o.SU)(w)?((0,r.wg)(),(0,r.iD)("div",f,[(0,r._)("span",h,(0,s.zw)((0,o.SU)(t).lastUpdatedText)+": ",1),(0,r.Wm)(l,null,{default:(0,r.w5)((()=>[(0,r._)("span",m,(0,s.zw)((0,o.SU)(w)),1)])),_:1})])):(0,r.kq)("",!0),(0,o.SU)(b)&&(0,o.SU)(b).length?((0,r.wg)(),(0,r.iD)("div",p,[(0,r._)("span",v,(0,s.zw)((0,o.SU)(t).contributorsText)+": ",1),(0,r._)("span",g,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,o.SU)(b),((e,t)=>((0,r.wg)(),(0,r.iD)(r.HY,{key:t},[(0,r._)("span",{class:"contributor",title:`email: ${e.email}`},(0,s.zw)(e.name),9,y),t!==(0,o.SU)(b).length-1?((0,r.wg)(),(0,r.iD)(r.HY,{key:0},[(0,r.Uk)(", ")],64)):(0,r.kq)("",!0)],64)))),128))])])):(0,r.kq)("",!0)])}}})},6942:function(e,t,n){n.d(t,{Z:function(){return me}});var r=n(6252),o=n(3577),s=n(2262),i=n(9963);const a={class:"theme-default-content"},l={};var u=(0,n(3744).Z)(l,[["render",function(e,t){const n=(0,r.up)("Content");return(0,r.wg)(),(0,r.iD)("div",a,[(0,r.Wm)(n)])}]]),c=n(4273);const d={key:0,class:"features"};var f=(0,r.aZ)({__name:"HomeFeatures",setup(e){const t=(0,c.I2)(),n=(0,r.Fl)((()=>Array.isArray(t.value.features)?t.value.features:[]));return(e,t)=>n.value.length?((0,r.wg)(),(0,r.iD)("div",d,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(n.value,(e=>((0,r.wg)(),(0,r.iD)("div",{key:e.title,class:"feature"},[(0,r._)("h2",null,(0,o.zw)(e.title),1),(0,r._)("p",null,(0,o.zw)(e.details),1)])))),128))])):(0,r.kq)("",!0)}});const h=["innerHTML"],m=["textContent"];var p=(0,r.aZ)({__name:"HomeFooter",setup(e){const t=(0,c.I2)(),n=(0,r.Fl)((()=>t.value.footer)),s=(0,r.Fl)((()=>t.value.footerHtml));return(e,t)=>n.value?((0,r.wg)(),(0,r.iD)(r.HY,{key:0},[s.value?((0,r.wg)(),(0,r.iD)("div",{key:0,class:"footer",innerHTML:n.value},null,8,h)):((0,r.wg)(),(0,r.iD)("div",{key:1,class:"footer",textContent:(0,o.zw)(n.value)},null,8,m))],64)):(0,r.kq)("",!0)}}),v=n(2479),g=n(7676);const y={class:"hero"},w={key:0,id:"main-title"},b={key:1,class:"description"},k={key:2,class:"actions"};var _=(0,r.aZ)({__name:"HomeHero",setup(e){const t=(0,c.I2)(),n=(0,c.I5)(),s=(0,g.vs)(),i=(0,r.Fl)((()=>s.value&&void 0!==t.value.heroImageDark?t.value.heroImageDark:t.value.heroImage)),a=(0,r.Fl)((()=>t.value.heroAlt||u.value||"hero")),l=(0,r.Fl)((()=>t.value.heroHeight||280)),u=(0,r.Fl)((()=>null===t.value.heroText?null:t.value.heroText||n.value.title||"Hello")),d=(0,r.Fl)((()=>null===t.value.tagline?null:t.value.tagline||n.value.description||"Welcome to your VuePress site")),f=(0,r.Fl)((()=>Array.isArray(t.value.actions)?t.value.actions.map((({text:e,link:t,type:n="primary"})=>({text:e,link:t,type:n}))):[])),h=()=>{if(!i.value)return null;const e=(0,r.h)("img",{src:(0,c.pJ)(i.value),alt:a.value,height:l.value});return void 0===t.value.heroImageDark?e:(0,r.h)(c.qx,(()=>e))};return(e,t)=>((0,r.wg)(),(0,r.iD)("header",y,[(0,r.Wm)(h),u.value?((0,r.wg)(),(0,r.iD)("h1",w,(0,o.zw)(u.value),1)):(0,r.kq)("",!0),d.value?((0,r.wg)(),(0,r.iD)("p",b,(0,o.zw)(d.value),1)):(0,r.kq)("",!0),f.value.length?((0,r.wg)(),(0,r.iD)("p",k,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(f.value,(e=>((0,r.wg)(),(0,r.j4)(v.Z,{key:e.text,class:(0,o.C_)(["action-button",[e.type]]),item:e},null,8,["class","item"])))),128))])):(0,r.kq)("",!0)]))}});const S={class:"home"};var T=(0,r.aZ)({__name:"Home",setup(e){return(e,t)=>((0,r.wg)(),(0,r.iD)("main",S,[(0,r.Wm)(_),(0,r.Wm)(f),(0,r.Wm)(u),(0,r.Wm)(p)]))}}),x=(0,r.aZ)({__name:"NavbarBrand",setup(e){const t=(0,c.I)(),n=(0,c.I5)(),s=(0,g.X6)(),i=(0,g.vs)(),a=(0,r.Fl)((()=>s.value.home||t.value)),l=(0,r.Fl)((()=>n.value.title)),u=(0,r.Fl)((()=>i.value&&void 0!==s.value.logoDark?s.value.logoDark:s.value.logo)),d=()=>{if(!u.value)return null;const e=(0,r.h)("img",{class:"logo",src:(0,c.pJ)(u.value),alt:""});return void 0===s.value.logoDark?e:(0,r.h)(c.qx,(()=>e))};return(e,t)=>{const n=(0,r.up)("RouterLink");return(0,r.wg)(),(0,r.j4)(n,{to:a.value},{default:(0,r.w5)((()=>[(0,r.Wm)(d),l.value?((0,r.wg)(),(0,r.iD)("span",{key:0,class:(0,o.C_)(["site-name",{"can-hide":u.value}])},(0,o.zw)(l.value),3)):(0,r.kq)("",!0)])),_:1},8,["to"])}}}),C=(0,r.aZ)({__name:"DropdownTransition",setup(e){const t=e=>{e.style.height=e.scrollHeight+"px"},n=e=>{e.style.height=""};return(e,o)=>((0,r.wg)(),(0,r.j4)(i.uT,{name:"dropdown",onEnter:t,onAfterEnter:n,onBeforeLeave:t},{default:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"default")])),_:3}))}}),E=n(2201);const O=["aria-label"],I={class:"title"},D=(0,r._)("span",{class:"arrow down"},null,-1),N=["aria-label"],M={class:"title"},F={class:"navbar-dropdown"},L={class:"navbar-dropdown-subtitle"},$={key:1},A={class:"navbar-dropdown-subitem-wrapper"};var R=(0,r.aZ)({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:n}=(0,s.BK)(t),a=(0,r.Fl)((()=>n.value.ariaLabel||n.value.text)),l=(0,s.iH)(!1),u=(0,E.yj)();(0,r.YP)((()=>u.path),(()=>{l.value=!1}));const c=e=>{const t=0===e.detail;l.value=!!t&&!l.value},d=(e,t)=>t[t.length-1]===e;return(e,t)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,o.C_)(["navbar-dropdown-wrapper",{open:l.value}])},[(0,r._)("button",{class:"navbar-dropdown-title",type:"button","aria-label":a.value,onClick:c},[(0,r._)("span",I,(0,o.zw)((0,s.SU)(n).text),1),D],8,O),(0,r._)("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":a.value,onClick:t[0]||(t[0]=e=>l.value=!l.value)},[(0,r._)("span",M,(0,o.zw)((0,s.SU)(n).text),1),(0,r._)("span",{class:(0,o.C_)(["arrow",l.value?"down":"right"])},null,2)],8,N),(0,r.Wm)(C,null,{default:(0,r.w5)((()=>[(0,r.wy)((0,r._)("ul",F,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,s.SU)(n).children,(e=>((0,r.wg)(),(0,r.iD)("li",{key:e.text,class:"navbar-dropdown-item"},[e.children?((0,r.wg)(),(0,r.iD)(r.HY,{key:0},[(0,r._)("h4",L,[e.link?((0,r.wg)(),(0,r.j4)(v.Z,{key:0,item:e,onFocusout:t=>d(e,(0,s.SU)(n).children)&&0===e.children.length&&(l.value=!1)},null,8,["item","onFocusout"])):((0,r.wg)(),(0,r.iD)("span",$,(0,o.zw)(e.text),1))]),(0,r._)("ul",A,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(e.children,(t=>((0,r.wg)(),(0,r.iD)("li",{key:t.link,class:"navbar-dropdown-subitem"},[(0,r.Wm)(v.Z,{item:t,onFocusout:r=>d(t,e.children)&&d(e,(0,s.SU)(n).children)&&(l.value=!1)},null,8,["item","onFocusout"])])))),128))])],64)):((0,r.wg)(),(0,r.j4)(v.Z,{key:1,item:e,onFocusout:t=>d(e,(0,s.SU)(n).children)&&(l.value=!1)},null,8,["item","onFocusout"]))])))),128))],512),[[i.F8,l.value]])])),_:1})],2))}}),V=n(7171),j=n(851);const z={key:0,class:"navbar-items"};var W=(0,r.aZ)({__name:"NavbarItems",setup(e){const t=(e,n)=>(0,V.HD)(n)?(0,j.id)(e,n):n.children?{...n,children:n.children.map((n=>t(e,n)))}:n,n=(0,s.iH)(!1),i=(()=>{const e=(0,E.tv)(),n=(0,g.X6)();return(0,r.Fl)((()=>(n.value.navbar||[]).map((n=>t(e,n)))))})(),a=(()=>{const e=(0,E.tv)(),t=(0,c.I)(),n=(0,c.WF)(),o=(0,c.I5)(),s=(0,g.BV)(),i=(0,g.X6)();return(0,r.Fl)((()=>{var r;const a=Object.keys(n.value.locales);if(a.length<2)return[];const l=e.currentRoute.value.path,u=e.currentRoute.value.fullPath;return[{text:`${i.value.selectLanguageText}`,ariaLabel:`${null!=(r=i.value.selectLanguageAriaLabel)?r:i.value.selectLanguageText}`,children:a.map((r=>{var i,a,c,d,f,h;const m=null!=(a=null==(i=n.value.locales)?void 0:i[r])?a:{},p=null!=(d=null==(c=s.value.locales)?void 0:c[r])?d:{},v=`${m.lang}`,g=null!=(f=p.selectLanguageName)?f:v;let y;if(v===o.value.lang)y=u;else{const n=l.replace(t.value,r);y=e.getRoutes().some((e=>e.path===n))?u.replace(l,n):null!=(h=p.home)?h:r}return{text:g,link:y}}))}]}))})(),l=(()=>{const e=(0,g.X6)(),t=(0,r.Fl)((()=>e.value.repo)),n=(0,r.Fl)((()=>t.value?(0,j.c9)(t.value):null)),o=(0,r.Fl)((()=>t.value&&!(0,V.ak)(t.value)?`https://github.com/${t.value}`:t.value)),s=(0,r.Fl)((()=>o.value?e.value.repoLabel?e.value.repoLabel:null===n.value?"Source":n.value:null));return(0,r.Fl)((()=>o.value&&s.value?[{text:s.value,link:o.value}]:[]))})(),u=(0,r.Fl)((()=>[...i.value,...a.value,...l.value]));return(0,g.sk)(g.Yi.MOBILE,(e=>{window.innerWidthu.value.length?((0,r.wg)(),(0,r.iD)("nav",z,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)(u.value,(e=>((0,r.wg)(),(0,r.iD)("div",{key:e.text,class:"navbar-item"},[e.children?((0,r.wg)(),(0,r.j4)(R,{key:0,item:e,class:(0,o.C_)(n.value?"mobile":"")},null,8,["item","class"])):((0,r.wg)(),(0,r.j4)(v.Z,{key:1,item:e},null,8,["item"]))])))),128))])):(0,r.kq)("",!0)}});const H=["title"],U={class:"icon",focusable:"false",viewBox:"0 0 32 32"},P=[(0,r.uE)('',9)],Z={class:"icon",focusable:"false",viewBox:"0 0 32 32"},q=[(0,r._)("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1)];var J=(0,r.aZ)({__name:"ToggleColorModeButton",setup(e){const t=(0,g.X6)(),n=(0,g.vs)(),o=()=>{n.value=!n.value};return(e,a)=>((0,r.wg)(),(0,r.iD)("button",{class:"toggle-color-mode-button",title:(0,s.SU)(t).toggleColorMode,onClick:o},[(0,r.wy)(((0,r.wg)(),(0,r.iD)("svg",U,P,512)),[[i.F8,!(0,s.SU)(n)]]),(0,r.wy)(((0,r.wg)(),(0,r.iD)("svg",Z,q,512)),[[i.F8,(0,s.SU)(n)]])],8,H))}});const B=["title"],Y=[(0,r._)("div",{class:"icon","aria-hidden":"true"},[(0,r._)("span"),(0,r._)("span"),(0,r._)("span")],-1)];var G=(0,r.aZ)({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=(0,g.X6)();return(e,n)=>((0,r.wg)(),(0,r.iD)("div",{class:"toggle-sidebar-button",title:(0,s.SU)(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:n[0]||(n[0]=t=>e.$emit("toggle"))},Y,8,B))}}),K=(0,r.aZ)({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=(0,g.X6)(),n=(0,s.iH)(null),i=(0,s.iH)(null),a=(0,s.iH)(0),l=(0,r.Fl)((()=>a.value?{maxWidth:a.value+"px"}:{}));function u(e,t){var n,r,o;const s=null==(o=null==(r=null==(n=null==e?void 0:e.ownerDocument)?void 0:n.defaultView)?void 0:r.getComputedStyle(e,null))?void 0:o[t],i=Number.parseInt(s,10);return Number.isNaN(i)?0:i}return(0,g.sk)(g.Yi.MOBILE,(e=>{var t;const r=u(n.value,"paddingLeft")+u(n.value,"paddingRight");window.innerWidth{const u=(0,r.up)("NavbarSearch");return(0,r.wg)(),(0,r.iD)("header",{ref_key:"navbar",ref:n,class:"navbar"},[(0,r.Wm)(G,{onToggle:a[0]||(a[0]=t=>e.$emit("toggle-sidebar"))}),(0,r._)("span",{ref_key:"navbarBrand",ref:i},[(0,r.Wm)(x)],512),(0,r._)("div",{class:"navbar-items-wrapper",style:(0,o.j5)(l.value)},[(0,r.WI)(e.$slots,"before"),(0,r.Wm)(W,{class:"can-hide"}),(0,r.WI)(e.$slots,"after"),(0,s.SU)(t).colorModeSwitch?((0,r.wg)(),(0,r.j4)(J,{key:0})):(0,r.kq)("",!0),(0,r.Wm)(u)],4)],512)}}}),X=n(69);const Q={key:0,class:"page-nav"},ee={class:"inner"},te={key:0,class:"prev"},ne={key:1,class:"next"};var re=(0,r.aZ)({__name:"PageNav",setup(e){const t=(e,t)=>!1===t?null:(0,V.HD)(t)?(0,j.id)(e,t):!!(0,V.PO)(t)&&t,n=(e,t,r)=>{const o=e.findIndex((e=>e.link===t));if(-1!==o){const t=e[o+r];return(null==t?void 0:t.link)?t:null}for(const o of e)if(o.children){const e=n(o.children,t,r);if(e)return e}return null},o=(0,c.I2)(),s=(0,g.VU)(),i=(0,E.yj)(),a=(0,E.tv)(),l=(0,r.Fl)((()=>{const e=t(a,o.value.prev);return!1!==e?e:n(s.value,i.path,-1)})),u=(0,r.Fl)((()=>{const e=t(a,o.value.next);return!1!==e?e:n(s.value,i.path,1)}));return(e,t)=>l.value||u.value?((0,r.wg)(),(0,r.iD)("nav",Q,[(0,r._)("p",ee,[l.value?((0,r.wg)(),(0,r.iD)("span",te,[(0,r.Wm)(v.Z,{item:l.value},null,8,["item"])])):(0,r.kq)("",!0),u.value?((0,r.wg)(),(0,r.iD)("span",ne,[(0,r.Wm)(v.Z,{item:u.value},null,8,["item"])])):(0,r.kq)("",!0)])])):(0,r.kq)("",!0)}});const oe={class:"page"},se={class:"theme-default-content"};var ie=(0,r.aZ)({__name:"Page",setup(e){return(e,t)=>{const n=(0,r.up)("Content");return(0,r.wg)(),(0,r.iD)("main",oe,[(0,r.WI)(e.$slots,"top"),(0,r._)("div",se,[(0,r.WI)(e.$slots,"content-top"),(0,r.Wm)(n),(0,r.WI)(e.$slots,"content-bottom")]),(0,r.Wm)(X.Z),(0,r.Wm)(re),(0,r.WI)(e.$slots,"bottom")])}}}),ae=n(4886);const le={class:"sidebar-item-children"};var ue=(0,r.aZ)({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:n,depth:a}=(0,s.BK)(t),l=(0,E.yj)(),u=(0,E.tv)(),c=(0,r.Fl)((()=>(0,j._F)(n.value,l))),d=(0,r.Fl)((()=>({"sidebar-item":!0,"sidebar-heading":0===a.value,active:c.value,collapsible:n.value.collapsible}))),f=(0,r.Fl)((()=>!n.value.collapsible||c.value)),[h,m]=(0,ae.OT)(f.value),p=e=>{n.value.collapsible&&(e.preventDefault(),m())},g=u.afterEach((e=>{(0,r.Y3)((()=>{h.value=f.value}))}));return(0,r.Jd)((()=>{g()})),(e,t)=>{var l;const u=(0,r.up)("SidebarItem",!0);return(0,r.wg)(),(0,r.iD)("li",null,[(0,s.SU)(n).link?((0,r.wg)(),(0,r.j4)(v.Z,{key:0,class:(0,o.C_)(d.value),item:(0,s.SU)(n)},null,8,["class","item"])):((0,r.wg)(),(0,r.iD)("p",{key:1,tabindex:"0",class:(0,o.C_)(d.value),onClick:p,onKeydown:(0,i.D2)(p,["enter"])},[(0,r.Uk)((0,o.zw)((0,s.SU)(n).text)+" ",1),(0,s.SU)(n).collapsible?((0,r.wg)(),(0,r.iD)("span",{key:0,class:(0,o.C_)(["arrow",(0,s.SU)(h)?"down":"right"])},null,2)):(0,r.kq)("",!0)],34)),(null==(l=(0,s.SU)(n).children)?void 0:l.length)?((0,r.wg)(),(0,r.j4)(C,{key:2},{default:(0,r.w5)((()=>[(0,r.wy)((0,r._)("ul",le,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,s.SU)(n).children,(e=>((0,r.wg)(),(0,r.j4)(u,{key:`${(0,s.SU)(a)}${e.text}${e.link}`,item:e,depth:(0,s.SU)(a)+1},null,8,["item","depth"])))),128))],512),[[i.F8,(0,s.SU)(h)]])])),_:1})):(0,r.kq)("",!0)])}}});const ce={key:0,class:"sidebar-items"};var de=(0,r.aZ)({__name:"SidebarItems",setup(e){const t=(0,E.yj)(),n=(0,g.VU)();return(0,r.bv)((()=>{(0,r.YP)((()=>t.hash),(e=>{const n=document.querySelector(".sidebar");if(!n)return;const r=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${e}"]`);if(!r)return;const{top:o,height:s}=n.getBoundingClientRect(),{top:i,height:a}=r.getBoundingClientRect();io+s&&r.scrollIntoView(!1)}))})),(e,t)=>(0,s.SU)(n).length?((0,r.wg)(),(0,r.iD)("ul",ce,[((0,r.wg)(!0),(0,r.iD)(r.HY,null,(0,r.Ko)((0,s.SU)(n),(e=>((0,r.wg)(),(0,r.j4)(ue,{key:`${e.text}${e.link}`,item:e},null,8,["item"])))),128))])):(0,r.kq)("",!0)}});const fe={class:"sidebar"};var he=(0,r.aZ)({__name:"Sidebar",setup(e){return(e,t)=>((0,r.wg)(),(0,r.iD)("aside",fe,[(0,r.Wm)(W),(0,r.WI)(e.$slots,"top"),(0,r.Wm)(de),(0,r.WI)(e.$slots,"bottom")]))}}),me=(0,r.aZ)({__name:"Layout",setup(e){const t=(0,c.Vi)(),n=(0,c.I2)(),a=(0,g.X6)(),l=(0,r.Fl)((()=>!1!==n.value.navbar&&!1!==a.value.navbar)),u=(0,g.VU)(),d=(0,s.iH)(!1),f=e=>{d.value="boolean"==typeof e?e:!d.value},h={x:0,y:0},m=e=>{h.x=e.changedTouches[0].clientX,h.y=e.changedTouches[0].clientY},p=e=>{const t=e.changedTouches[0].clientX-h.x,n=e.changedTouches[0].clientY-h.y;Math.abs(t)>Math.abs(n)&&Math.abs(t)>40&&(t>0&&h.x<=80?f(!0):f(!1))},v=(0,r.Fl)((()=>[{"no-navbar":!l.value,"no-sidebar":!u.value.length,"sidebar-open":d.value},n.value.pageClass]));let y;(0,r.bv)((()=>{const e=(0,E.tv)();y=e.afterEach((()=>{f(!1)}))})),(0,r.Ah)((()=>{y()}));const w=(0,g.P$)(),b=w.resolve,k=w.pending;return(e,a)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,o.C_)(["theme-container",v.value]),onTouchstart:m,onTouchend:p},[(0,r.WI)(e.$slots,"navbar",{},(()=>[l.value?((0,r.wg)(),(0,r.j4)(K,{key:0,onToggleSidebar:f},{before:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"navbar-before")])),after:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"navbar-after")])),_:3})):(0,r.kq)("",!0)])),(0,r._)("div",{class:"sidebar-mask",onClick:a[0]||(a[0]=e=>f(!1))}),(0,r.WI)(e.$slots,"sidebar",{},(()=>[(0,r.Wm)(he,null,{top:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"sidebar-top")])),bottom:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"sidebar-bottom")])),_:3})])),(0,r.WI)(e.$slots,"page",{},(()=>[(0,s.SU)(n).home?((0,r.wg)(),(0,r.j4)(T,{key:0})):((0,r.wg)(),(0,r.j4)(i.uT,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:(0,s.SU)(b),onBeforeLeave:(0,s.SU)(k)},{default:(0,r.w5)((()=>[((0,r.wg)(),(0,r.j4)(ie,{key:(0,s.SU)(t).path},{top:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"page-top")])),"content-top":(0,r.w5)((()=>[(0,r.WI)(e.$slots,"page-content-top")])),"content-bottom":(0,r.w5)((()=>[(0,r.WI)(e.$slots,"page-content-bottom")])),bottom:(0,r.w5)((()=>[(0,r.WI)(e.$slots,"page-bottom")])),_:3}))])),_:3},8,["onBeforeEnter","onBeforeLeave"]))]))],34))}})},2938:function(e,t,n){function r(e,t,n){var r,o,s;void 0===t&&(t=50),void 0===n&&(n={});var i=null!=(r=n.isImmediate)&&r,a=null!=(o=n.callback)&&o,l=n.maxWait,u=Date.now(),c=[];function d(){if(void 0!==l){var e=Date.now()-u;if(e+t>=l)return l-e}return t}var f=function(){var t=[].slice.call(arguments),n=this;return new Promise((function(r,o){var l=i&&void 0===s;if(void 0!==s&&clearTimeout(s),s=setTimeout((function(){if(s=void 0,u=Date.now(),!i){var r=e.apply(n,t);a&&a(r),c.forEach((function(e){return(0,e.resolve)(r)})),c=[]}}),d()),l){var f=e.apply(n,t);return a&&a(f),r(f)}c.push({resolve:r,reject:o})}))};return f.cancel=function(e){void 0!==s&&clearTimeout(s),c.forEach((function(t){return(0,t.reject)(e)})),c=[]},f}n.d(t,{D:function(){return r}})},3744:function(e,t){t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},6669:function(e,t,n){var r=n(9e3),o=n(1477),s=n(9963),i=n(6252),a=n(2201),l=n(6056),u=n(7171),c=n(4634),d=n(4886),f=(0,i.aZ)({name:"Vuepress",setup(){const e=(0,r.xV)();return()=>(0,i.h)(e.value)}}),h=a.PO,m=([e,t,n=""])=>{const r=`head > ${e}${Object.entries(t).map((([e,t])=>(0,u.HD)(t)?`[${e}=${JSON.stringify(t)}]`:!0===t?`[${e}]`:"")).join("")}`;return Array.from(document.querySelectorAll(r)).find((e=>e.innerText===n))||null},p=([e,t,n])=>{if(!(0,u.HD)(e))return null;const r=document.createElement(e);return(0,u.PO)(t)&&Object.entries(t).forEach((([e,t])=>{(0,u.HD)(t)?r.setAttribute(e,t):!0===t&&r.setAttribute(e,"")})),(0,u.HD)(n)&&r.appendChild(document.createTextNode(n)),r},v=s.vr;(async()=>{const e=v({name:"VuepressApp",setup(){(()=>{const e=(0,r.mU)(),t=(0,r.Ym)();let n=[];const o=()=>{document.documentElement.lang=t.value;const r=(()=>{const t=[];return e.value.forEach((e=>{const n=p(e);n&&t.push(n)})),t})();n.forEach(((e,t)=>{const o=r.findIndex((t=>e.isEqualNode(t)));-1===o?(e.remove(),delete n[t]):r.splice(o,1)})),r.forEach((e=>document.head.appendChild(e))),n=[...n.filter((e=>!!e)),...r]};(0,i.JJ)(r.Vt,o),(0,i.bv)((()=>{e.value.forEach((e=>{const t=m(e);t&&n.push(t)})),(0,i.YP)(e,o,{immediate:!1})}))})();for(const e of o.W)e.setup?.();return()=>[(0,i.h)(a.MA),...o.W.flatMap((({rootComponents:e=[]})=>e.map((e=>(0,i.h)(e)))))]}}),t=(()=>{const e=(0,a.p7)({history:h((0,u.U1)("/ion/")),routes:c.g.reduce(((e,[t,n,r,o])=>(e.push({name:t,path:n,component:f,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...o.map((e=>({path:":md"===e?n.substring(0,n.length-5)+".md":e,redirect:n})))),e)),[{name:"404",path:"/:catchAll(.*)",component:f}]),scrollBehavior:(e,t,n)=>n||(e.hash?{el:e.hash}:{top:0})});return e.beforeResolve((async(e,t)=>{e.path===t.path&&t!==a.AJ||([e.meta._data]=await Promise.all([r.s_.resolvePageData(e.name),l.b[e.name]?.__asyncLoader()]))})),e})();(e=>{e.component("ClientOnly",r.qx),e.component("Content",r.VY)})(e),((e,t,n)=>{const o=(0,i.Fl)((()=>t.currentRoute.value.path)),s=(0,d.fA)(o,(()=>t.currentRoute.value.meta._data)),a=(0,i.Fl)((()=>r.s_.resolveLayouts(n))),l=(0,i.Fl)((()=>r.s_.resolveRouteLocale(r.HM.value.locales,o.value))),u=(0,i.Fl)((()=>r.s_.resolveSiteLocaleData(r.HM.value,l.value))),c=(0,i.Fl)((()=>r.s_.resolvePageFrontmatter(s.value))),f=(0,i.Fl)((()=>r.s_.resolvePageHeadTitle(s.value,u.value))),h=(0,i.Fl)((()=>r.s_.resolvePageHead(f.value,c.value,u.value))),m=(0,i.Fl)((()=>r.s_.resolvePageLang(s.value,u.value))),p=(0,i.Fl)((()=>r.s_.resolvePageLayout(s.value,a.value)));e.provide(r.hU,a),e.provide(r.Cv,s),e.provide(r.PY,c),e.provide(r.et,f),e.provide(r.VV,h),e.provide(r.b5,m),e.provide(r.hx,p),e.provide(r.C3,l),e.provide(r.AE,u),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>c.value},$head:{get:()=>h.value},$headTitle:{get:()=>f.value},$lang:{get:()=>m.value},$page:{get:()=>s.value},$routeLocale:{get:()=>l.value},$site:{get:()=>r.HM.value},$siteLocale:{get:()=>u.value},$withBase:{get:()=>r.pJ}}),r.HM})(e,t,o.W);for(const n of o.W)await(n.enhance?.({app:e,router:t,siteData:r.HM}));return e.use(t),{app:e,router:t}})().then((({app:e,router:t})=>{t.isReady().then((()=>{e.mount("#app")}))}))},9e3:function(e,t,n){n.d(t,{AE:function(){return E},C3:function(){return S},Cv:function(){return c},HM:function(){return x},I:function(){return T},I2:function(){return m},I5:function(){return O},PY:function(){return h},VV:function(){return p},VY:function(){return M},Vi:function(){return f},Vt:function(){return I},WF:function(){return C},Ym:function(){return w},b5:function(){return y},et:function(){return g},hU:function(){return u},hx:function(){return b},mU:function(){return v},pJ:function(){return L},qx:function(){return N},r$:function(){return F},s_:function(){return D},xV:function(){return k}});var r=n(2262),o=n(6252),s=n(9706),i=n(5220),a=n(7171),l=n(6056),u=Symbol(""),c=Symbol(""),d=(0,r.OT)({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),f=()=>{const e=(0,o.f3)(c);if(!e)throw new Error("pageData() is called without provider.");return e},h=Symbol(""),m=()=>{const e=(0,o.f3)(h);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},p=Symbol(""),v=()=>{const e=(0,o.f3)(p);if(!e)throw new Error("usePageHead() is called without provider.");return e},g=Symbol(""),y=Symbol(""),w=()=>{const e=(0,o.f3)(y);if(!e)throw new Error("usePageLang() is called without provider.");return e},b=Symbol(""),k=()=>{const e=(0,o.f3)(b);if(!e)throw new Error("usePageLayout() is called without provider.");return e},_=(0,r.iH)(s.T),S=Symbol(""),T=()=>{const e=(0,o.f3)(S);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},x=(0,r.iH)(i.H),C=()=>x,E=Symbol(""),O=()=>{const e=(0,o.f3)(E);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},I=Symbol(""),D=(0,r.qj)({resolveLayouts:e=>e.reduce(((e,t)=>({...e,...t.layouts})),{}),resolvePageData:async e=>{const t=_.value[e];return await(t?.())??d},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=(0,a.HD)(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return(0,a.H7)(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter((e=>!!e)).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const t=e.frontmatter.layout;n=(0,a.HD)(t)?t:"Layout"}else n="NotFound";return t[n]},resolveRouteLocale:(e,t)=>(0,a.gb)(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t],head:[...e.locales[t]?.head??[],...e.head??[]]})}),N=(0,o.aZ)({name:"ClientOnly",setup(e,t){const n=(0,r.iH)(!1);return(0,o.bv)((()=>{n.value=!0})),()=>n.value?t.slots.default?.():null}}),M=(0,o.aZ)({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=f(),n=(0,o.Fl)((()=>l.b[e.pageKey||t.value.key]));return()=>n.value?(0,o.h)(n.value):(0,o.h)("div","404 Not Found")}}),F=(e={})=>e,L=e=>(0,a.ak)(e)?e:`/ion/${(0,a.FY)(e)}`},4393:function(e,t,n){n.d(t,{C3:function(){return r.C3},I:function(){return r.I},I2:function(){return r.I2},I5:function(){return r.I5},Vi:function(){return r.Vi},WF:function(){return r.WF},pJ:function(){return r.pJ},qx:function(){return r.qx},r$:function(){return r.r$}});var r=n(9e3)},4889:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(4273),o=n(2938),s=n(6252),i=n(2201);const a=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally((()=>e.options.scrollBehavior=n))};var l=(0,r.r$)({setup(){(({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const l=(0,i.tv)(),u=(0,o.D)((()=>{const n=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(n-0)u.some((t=>t.hash===e.hash))));for(let e=0;e=(t.parentElement?.offsetTop??0)-r,u=!o||n<(o.parentElement?.offsetTop??0)-r;if(!s||!u)continue;const d=decodeURIComponent(l.currentRoute.value.hash),f=decodeURIComponent(t.hash);if(d===f)return;if(i)for(let t=e+1;t{window.addEventListener("scroll",u)})),(0,s.Jd)((()=>{window.removeEventListener("scroll",u)}))})({headerLinkSelector:"a.sidebar-item",headerAnchorSelector:".header-anchor",delay:300,offset:5})}})},6139:function(e,t,n){n.d(t,{Z:function(){return d}});var r=n(4273),o=n(2938),s=n(6252),i=n(2262),a=n(9963);const l=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,u=()=>window.scrollTo({top:0,behavior:"smooth"}),c=(0,s.aZ)({name:"BackToTop",setup(){const e=(0,i.iH)(0),t=(0,s.Fl)((()=>e.value>300)),n=(0,o.D)((()=>{e.value=l()}),100);(0,s.bv)((()=>{e.value=l(),window.addEventListener("scroll",(()=>n()))}));const r=(0,s.h)("div",{class:"back-to-top",onClick:u});return()=>(0,s.h)(a.uT,{name:"back-to-top"},(()=>t.value?r:null))}});var d=(0,r.r$)({rootComponents:[c]})},4407:function(e,t,n){n.d(t,{Z:function(){return l}});var r=n(6252),o=n(4273);const s=(0,r.h)("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[(0,r.h)("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),(0,r.h)("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),i=(0,r.aZ)({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=(0,o.I)(),n=(0,r.Fl)((()=>e.locales[t.value]??{openInNewWindow:"open in new window"}));return()=>(0,r.h)("span",[s,(0,r.h)("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),a={"/":{openInNewWindow:"open in new window"}};var l=(0,o.r$)({enhance({app:e}){e.component("ExternalLinkIcon",(0,r.h)(i,{locales:a}))}})},3487:function(e,t,n){n.d(t,{Z:function(){return h}});var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},o=window.Promise||function(e){function t(){}e(t,t)},u=function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{}).target,t=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(g.container)if(g.container instanceof Object)t=(e=r({},e,g.container)).width-e.left-e.right-2*g.margin,n=e.height-e.top-e.bottom-2*g.margin;else{var o=(s(g.container)?g.container:document.querySelector(g.container)).getBoundingClientRect(),a=o.width,l=o.height,u=o.left,c=o.top;e=r({},e,{width:a,height:l,left:u,top:c})}t=t||e.width-2*g.margin,n=n||e.height-2*g.margin;var d=y.zoomedHd||y.original,f=i(d)?t:d.naturalWidth||t,h=i(d)?n:d.naturalHeight||n,m=d.getBoundingClientRect(),p=m.top,v=m.left,w=m.width,b=m.height,k=Math.min(Math.max(w,f),t)/w,_=Math.min(Math.max(b,h),n)/b,S=Math.min(k,_),T="scale("+S+") translate3d("+((t-w)/2-v+g.margin+e.left)/S+"px, "+((n-b)/2-p+g.margin+e.top)/S+"px, 0)";y.zoomed.style.transform=T,y.zoomedHd&&(y.zoomedHd.style.transform=T)};return new o((function(n){if(e&&-1===h.indexOf(e))n(b);else if(y.zoomed)n(b);else{if(e)y.original=e;else{if(!(h.length>0))return void n(b);var r=h;y.original=r[0]}if(y.original.dispatchEvent(l("medium-zoom:open",{detail:{zoom:b}})),v=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,p=!0,y.zoomed=function(e){var t=e.getBoundingClientRect(),n=t.top,r=t.left,o=t.width,s=t.height,i=e.cloneNode(),a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,l=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return i.removeAttribute("id"),i.style.position="absolute",i.style.top=n+a+"px",i.style.left=r+l+"px",i.style.width=o+"px",i.style.height=s+"px",i.style.transform="",i}(y.original),document.body.appendChild(w),g.template){var o=s(g.template)?g.template:document.querySelector(g.template);y.template=document.createElement("div"),y.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(y.template)}if(y.original.parentElement&&"PICTURE"===y.original.parentElement.tagName&&y.original.currentSrc&&(y.zoomed.src=y.original.currentSrc),document.body.appendChild(y.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),y.original.classList.add("medium-zoom-image--hidden"),y.zoomed.classList.add("medium-zoom-image--opened"),y.zoomed.addEventListener("click",d),y.zoomed.addEventListener("transitionend",(function e(){p=!1,y.zoomed.removeEventListener("transitionend",e),y.original.dispatchEvent(l("medium-zoom:opened",{detail:{zoom:b}})),n(b)})),y.original.getAttribute("data-zoom-src")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("srcset"),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading"),y.zoomedHd.src=y.zoomed.getAttribute("data-zoom-src"),y.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+y.zoomedHd.src),y.zoomedHd=null,t()};var i=setInterval((function(){y.zoomedHd.complete&&(clearInterval(i),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",d),document.body.appendChild(y.zoomedHd),t())}),10)}else if(y.original.hasAttribute("srcset")){y.zoomedHd=y.zoomed.cloneNode(),y.zoomedHd.removeAttribute("sizes"),y.zoomedHd.removeAttribute("loading");var a=y.zoomedHd.addEventListener("load",(function(){y.zoomedHd.removeEventListener("load",a),y.zoomedHd.classList.add("medium-zoom-image--opened"),y.zoomedHd.addEventListener("click",d),document.body.appendChild(y.zoomedHd),t()}))}else t()}}))},d=function(){return new o((function(e){!p&&y.original?(p=!0,document.body.classList.remove("medium-zoom--opened"),y.zoomed.style.transform="",y.zoomedHd&&(y.zoomedHd.style.transform=""),y.template&&(y.template.style.transition="opacity 150ms",y.template.style.opacity=0),y.original.dispatchEvent(l("medium-zoom:close",{detail:{zoom:b}})),y.zoomed.addEventListener("transitionend",(function t(){y.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(y.zoomed),y.zoomedHd&&document.body.removeChild(y.zoomedHd),document.body.removeChild(w),y.zoomed.classList.remove("medium-zoom-image--opened"),y.template&&document.body.removeChild(y.template),p=!1,y.zoomed.removeEventListener("transitionend",t),y.original.dispatchEvent(l("medium-zoom:closed",{detail:{zoom:b}})),y.original=null,y.zoomed=null,y.zoomedHd=null,y.template=null,e(b)}))):e(b)}))},f=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).target;return y.original?d():c({target:e})},h=[],m=[],p=!1,v=0,g=n,y={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?g=t:(t||"string"==typeof t)&&u(t);var w=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((g=r({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},g)).background);document.addEventListener("click",(function(e){var t=e.target;t!==w?-1!==h.indexOf(t)&&f({target:t}):d()})),document.addEventListener("keyup",(function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||d()})),document.addEventListener("scroll",(function(){if(!p&&y.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(v-e)>g.scrollOffset&&setTimeout(d,150)}})),window.addEventListener("resize",d);var b={open:c,close:d,toggle:f,update:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(w.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=r({},g.container,e.container)),e.template){var n=s(e.template)?e.template:document.querySelector(e.template);t.template=n}return g=r({},g,t),h.forEach((function(e){e.dispatchEvent(l("medium-zoom:update",{detail:{zoom:b}}))})),b},clone:function(){return e(r({},g,arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}))},attach:u,detach:function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,a(t))}),[]):h;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(l("medium-zoom:detach",{detail:{zoom:b}}))})),h=h.filter((function(e){return-1===r.indexOf(e)})),b},on:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return h.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),m.push({type:"medium-zoom:"+e,listener:t,options:n}),b},off:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return h.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),m=m.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),b},getOptions:function(){return g},getImages:function(){return h},getZoomedImage:function(){return y.original}};return b},c=n(4273);const d=Symbol("mediumZoom"),f={};var h=(0,c.r$)({enhance({app:e,router:t}){const n=u(f);n.refresh=(e=".theme-default-content > img, .theme-default-content :not(a) > img")=>{n.detach(),n.attach(e)},e.provide(d,n),t.afterEach((()=>{setTimeout((()=>n.refresh()),300)}))}})},5281:function(e,t,n){n.d(t,{Z:function(){return v}});var r=n(4273),o=n(6252),s=n(2201);const i={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const t=i.isStarted();e=a(e,i.settings.minimum,1),i.status=1===e?null:e;const n=i.render(!t),r=n.querySelector(i.settings.barSelector),o=i.settings.speed,s=i.settings.easing;return n.offsetWidth,u((t=>{c(r,{transform:"translate3d("+l(e)+"%,0,0)",transition:"all "+o+"ms "+s}),1===e?(c(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout((function(){c(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout((function(){i.remove(),t()}),o)}),o)):setTimeout((()=>t()),o)})),i},isStarted:()=>"number"==typeof i.status,start:()=>{i.status||i.set(0);const e=()=>{setTimeout((()=>{i.status&&(i.trickle(),e())}),i.settings.trickleSpeed)};return i.settings.trickle&&e(),i},done:e=>e||i.status?i.inc(.3+.5*Math.random()).set(1):i,inc:e=>{let t=i.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),i.set(t)):i.start()},trickle:()=>i.inc(Math.random()*i.settings.trickleRate),render:e=>{if(i.isRendered())return document.getElementById("nprogress");f(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=i.settings.template;const n=t.querySelector(i.settings.barSelector),r=e?"-100":l(i.status||0),o=document.querySelector(i.settings.parent);return c(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&f(o,"nprogress-custom-parent"),o?.appendChild(t),t},remove:()=>{h(document.documentElement,"nprogress-busy"),h(document.querySelector(i.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&p(e)},isRendered:()=>!!document.getElementById("nprogress")},a=(e,t,n)=>en?n:e,l=e=>100*(-1+e),u=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),1===e.length&&t()}}(),c=function(){const e=["Webkit","O","Moz","ms"],t={};function n(n,r,o){var s;s=(s=r).replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),r=t[s]??=function(t){const n=document.body.style;if(t in n)return t;let r=e.length;const o=t.charAt(0).toUpperCase()+t.slice(1);let s;for(;r--;)if(s=e[r]+o,s in n)return s;return t}(s),n.style[r]=o}return function(e,t){for(const r in t){const o=t[r];void 0!==o&&Object.prototype.hasOwnProperty.call(t,r)&&n(e,r,o)}}}(),d=(e,t)=>("string"==typeof e?e:m(e)).indexOf(" "+t+" ")>=0,f=(e,t)=>{const n=m(e),r=n+t;d(n,t)||(e.className=r.substring(1))},h=(e,t)=>{const n=m(e);if(!d(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},m=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),p=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};var v=(0,r.r$)({setup(){(0,o.bv)((()=>{const e=(0,s.tv)(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach((e=>{t.has(e.path)||i.start()})),e.afterEach((e=>{t.add(e.path),i.done()}))}))}})},5285:function(e,t,n){n.d(t,{Z:function(){return v}});var r=n(6252),o=n(4273),s=n(2262),i=n(2201),a=n(7171);var l=n(5472);const u=(0,s.iH)(l.D),c=/[^\x00-\x7F]/,d=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),f=(e,t)=>{const n=t.join(" "),r=e.split(/\s+/g).map((e=>e.trim())).filter((e=>!!e));if(c.test(e))return r.some((e=>n.toLowerCase().indexOf(e)>-1));const o=e.endsWith(" ");return new RegExp(r.map(((e,t)=>r.length!==t+1||o?`(?=.*\\b${d(e)}\\b)`:`(?=.*\\b${d(e)})`)).join("")+".+","gi").test(n)},h=(0,r.aZ)({name:"SearchBox",props:{locales:{type:Object,required:!1,default:()=>({})},hotKeys:{type:Array,required:!1,default:()=>[]},maxSuggestions:{type:Number,required:!1,default:5}},setup(e){const{locales:t,hotKeys:n,maxSuggestions:l}=(0,s.BK)(e),c=(0,i.tv)(),d=(0,o.I)(),h=u,m=(0,s.iH)(null),p=(0,s.iH)(!1),v=(0,s.iH)(""),g=(0,r.Fl)((()=>t.value[d.value]??{})),y=(({searchIndex:e,routeLocale:t,query:n,maxSuggestions:o})=>{const s=(0,r.Fl)((()=>e.value.filter((e=>e.pathLocale===t.value))));return(0,r.Fl)((()=>{const e=n.value.trim().toLowerCase();if(!e)return[];const t=[],r=(n,s)=>{f(e,[s.title])&&t.push({link:`${n.path}#${s.slug}`,title:n.title,header:s.title});for(const e of s.children){if(t.length>=o.value)return;r(n,e)}};for(const n of s.value){if(t.length>=o.value)break;if(f(e,[n.title,...n.extraFields]))t.push({link:n.path,title:n.title});else for(const e of n.headers){if(t.length>=o.value)break;r(n,e)}}return t}))})({searchIndex:h,routeLocale:d,query:v,maxSuggestions:l}),{focusIndex:w,focusNext:b,focusPrev:k}=(e=>{const t=(0,s.iH)(0);return{focusIndex:t,focusNext:()=>{t.value{t.value>0?t.value-=1:t.value=e.value.length-1}}})(y);(({input:e,hotKeys:t})=>{if(0===t.value.length)return;const n=n=>{var r;e.value&&(!((e,t)=>t.some((t=>{if((0,a.HD)(t))return t===e.key;const{key:n,ctrl:r=!1,shift:o=!1,alt:s=!1}=t;return n===e.key&&r===e.ctrlKey&&o===e.shiftKey&&s===e.altKey})))(n,t.value)||(r=n.target)instanceof Element&&document.activeElement===r&&(["TEXTAREA","SELECT","INPUT"].includes(r.tagName)||r.hasAttribute("contenteditable"))||(n.preventDefault(),e.value.focus()))};(0,r.bv)((()=>{document.addEventListener("keydown",n)})),(0,r.Jd)((()=>{document.removeEventListener("keydown",n)}))})({input:m,hotKeys:n});const _=(0,r.Fl)((()=>p.value&&!!y.value.length)),S=e=>{if(!_.value)return;const t=y.value[e];t&&c.push(t.link).then((()=>{v.value="",w.value=0}))};return()=>(0,r.h)("form",{class:"search-box",role:"search"},[(0,r.h)("input",{ref:m,type:"search",placeholder:g.value.placeholder,autocomplete:"off",spellcheck:!1,value:v.value,onFocus:()=>p.value=!0,onBlur:()=>p.value=!1,onInput:e=>v.value=e.target.value,onKeydown:e=>{switch(e.key){case"ArrowUp":_.value&&k();break;case"ArrowDown":_.value&&b();break;case"Enter":e.preventDefault(),S(w.value)}}}),_.value&&(0,r.h)("ul",{class:"suggestions",onMouseleave:()=>w.value=-1},y.value.map((({link:e,title:t,header:n},o)=>(0,r.h)("li",{class:["suggestion",{focus:w.value===o}],onMouseenter:()=>w.value=o,onMousedown:()=>S(o)},(0,r.h)("a",{href:e,onClick:e=>e.preventDefault()},[(0,r.h)("span",{class:"page-title"},t),n&&(0,r.h)("span",{class:"page-header"},`> ${n}`)])))))])}}),m={},p=["s","/"];var v=(0,o.r$)({enhance({app:e}){e.component("SearchBox",(e=>(0,r.h)(h,{locales:m,hotKeys:p,maxSuggestions:10,...e})))}})},395:function(e,t,n){n.d(t,{g$:function(){return u},ZS:function(){return a},BV:function(){return s},X6:function(){return l}});var r=n(2232);const o=(0,n(2262).iH)(r.f),s=()=>o;var i=n(6252);const a=Symbol(""),l=()=>{const e=(0,i.f3)(a);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},u=(e,t)=>{const{locales:n,...r}=e;return{...r,...n?.[t]}}},7699:function(e,t,n){var r=n(6252),o=n(4273),s=n(395);t.Z=(0,o.r$)({enhance({app:e}){const t=(0,s.BV)(),n=e._context.provides[o.C3],i=(0,r.Fl)((()=>(0,s.g$)(t.value,n.value)));e.provide(s.ZS,i),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return i.value}}})}})},7171:function(e,t,n){n.d(t,{FY:function(){return c},H7:function(){return s},HD:function(){return h},PF:function(){return a},PO:function(){return l},U1:function(){return u},ak:function(){return i},gb:function(){return d},mf:function(){return f}});var r=["link","meta","script","style","noscript","template"],o=["title","base"],s=e=>{const t=new Set,n=[];return e.forEach((e=>{const s=(([e,t,n])=>o.includes(e)?e:r.includes(e)?"meta"===e&&t.name?`${e}.${t.name}`:"template"===e&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map((([e,t])=>"boolean"==typeof t?t?[e,""]:null:[e,t])).filter((e=>null!=e)).sort((([e],[t])=>e.localeCompare(t))),n]):null)(e);s&&!t.has(s)&&(t.add(s),n.push(e))})),n},i=e=>/^(https?:)?\/\//.test(e),a=e=>/^[a-z][a-z0-9+.-]*:/.test(e),l=e=>"[object Object]"===Object.prototype.toString.call(e),u=e=>"/"===e[e.length-1]?e.slice(0,-1):e,c=e=>"/"===e[0]?e.slice(1):e,d=(e,t)=>{const n=Object.keys(e).sort(((e,t)=>{const n=t.split("/").length-e.split("/").length;return 0!==n?n:t.length-e.length}));for(const e of n)if(t.startsWith(e))return e;return"/"},f=e=>"function"==typeof e,h=e=>"string"==typeof e},7676:function(e,t,n){n.d(t,{Yi:function(){return O},OX:function(){return c},fR:function(){return _},vs:function(){return u},P$:function(){return p},VU:function(){return k},BV:function(){return i},X6:function(){return a},sk:function(){return D}});var r=n(6309),o=n(6252),s=n(395);const i=()=>(0,s.BV)(),a=()=>(0,s.X6)(),l=Symbol(""),u=()=>{const e=(0,o.f3)(l);if(!e)throw new Error("useDarkMode() is called without provider.");return e},c=()=>{const e=a(),t=(0,r.QA3)(),n=(0,r.y$C)("vuepress-color-scheme",e.value.colorMode),s=(0,o.Fl)({get(){return e.value.colorModeSwitch?"auto"===n.value?t.value:"dark"===n.value:"dark"===e.value.colorMode},set(e){e===t.value?n.value="auto":n.value=e?"dark":"light"}});(0,o.JJ)(l,s),d(s)},d=e=>{const t=(t=e.value)=>{const n=window?.document.querySelector("html");n?.classList.toggle("dark",t)};(0,o.bv)((()=>{(0,o.YP)(e,t,{immediate:!0})})),(0,o.Ah)((()=>t()))};let f=null,h=null;const m={wait:()=>f,pending:()=>{f=new Promise((e=>h=e))},resolve:()=>{h?.(),f=null,h=null}},p=()=>m;var v=n(2201),g=n(4273),y=n(7171),w=n(851);const b=Symbol("sidebarItems"),k=()=>{const e=(0,o.f3)(b);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},_=()=>{const e=a(),t=(0,g.I2)(),n=(0,g.Vi)(),r=(0,v.yj)(),s=(0,v.tv)(),i=(0,o.Fl)((()=>S(t.value,e.value,n.value,s,r.path)));(0,o.JJ)(b,i)},S=(e,t,n,r,o)=>{const s=e.sidebar??t.sidebar??"auto",i=e.sidebarDepth??t.sidebarDepth??2;return e.home||!1===s?[]:"auto"===s?x(n,i):Array.isArray(s)?C(n,r,o,s,i):(0,y.PO)(s)?E(n,r,o,s,i):[]},T=(e,t)=>t>0?e.map((e=>((e,t)=>({text:e.title,link:e.link,children:T(e.children,t)}))(e,t-1))):[],x=(e,t)=>[{text:e.title,children:T(e.headers,t)}],C=(e,t,n,r,o)=>{const s=r=>{let i;if(i=(0,y.HD)(r)?(0,w.id)(t,r):r,i.children)return{...i,children:i.children.map((e=>s(e)))};if(i.link===n){const t=1===e.headers[0]?.level?e.headers[0].children:e.headers;return{...i,children:T(t,o)}}return i};return r.map((e=>s(e)))},E=(e,t,n,r,o)=>{const s=r[(0,y.gb)(r,n)]??[];return C(e,t,n,s,o)};var O;!function(e){e.MOBILE="mobile"}(O||(O={}));const I={[O.MOBILE]:Number.parseInt("719px"?.replace("px",""),10)},D=(e,t)=>{const n=I[e];Number.isInteger(n)&&(0,o.bv)((()=>{t(n),window.addEventListener("resize",(()=>t(n)),!1),window.addEventListener("orientationchange",(()=>t(n)),!1)}))}},3921:function(e,t,n){n.d(t,{Z:function(){return y}});var r=n(6252),o=n(4273),s=n(3577),i=(0,r.aZ)({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>((0,r.wg)(),(0,r.iD)("span",{class:(0,s.C_)(["badge",e.type]),style:(0,s.j5)({verticalAlign:e.vertical})},[(0,r.WI)(t.$slots,"default",{},(()=>[(0,r.Uk)((0,s.zw)(e.text),1)]))],6))}}),a=n(6309),l=n(2262);const u=(0,r.aZ)({name:"CodeGroup",slots:Object,setup(e,{slots:t}){const n=(0,l.iH)([]),o=(0,l.iH)(-1),s=(0,a.y$C)("vuepress-code-group",{}),i=(0,r.Fl)((()=>n.value.map((e=>e.innerText)).join(",")));(0,r.bv)((()=>{(0,r.YP)((()=>s.value[i.value]),((e=-1)=>{o.value!==e&&(o.value=e)}),{immediate:!0}),(0,r.YP)(o,(e=>{s.value[i.value]!==e&&(s.value[i.value]=e)}))}));return()=>{const e=(t.default?.()||[]).filter((e=>"CodeGroupItem"===e.type.name)).map((e=>(null===e.props&&(e.props={}),e)));return 0===e.length?null:(o.value<0||o.value>e.length-1?(o.value=e.findIndex((e=>""===e.props.active||!0===e.props.active)),-1===o.value&&(o.value=0)):e.forEach(((e,t)=>{e.props.active=t===o.value})),(0,r.h)("div",{class:"code-group"},[(0,r.h)("div",{class:"code-group__nav",role:"tablist"},e.map(((e,t)=>{const s=t===o.value;return(0,r.h)("button",{ref:e=>{e&&(n.value[t]=e)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":s},role:"tab",ariaSelected:s,onClick:()=>o.value=t,onKeydown:e=>((e,t)=>{" "===e.key||"Enter"===e.key?(e.preventDefault(),o.value=t):"ArrowRight"===e.key?(e.preventDefault(),((e=o.value)=>{e{o.value=e>0?e-1:n.value.length-1,n.value[o.value].focus()})(t))})(e,t)},e.props.title)}))),e]))}}});var c=(0,r.aZ)({name:"CodeGroupItem",__name:"CodeGroupItem",props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>((0,r.wg)(),(0,r.iD)("div",{class:(0,s.C_)(["code-group-item",{"code-group-item__active":e.active}]),role:"tabpanel"},[(0,r.WI)(t.$slots,"default")],2))}}),d=n(7676),f=n(6942);const h={class:"theme-container"},m={class:"page"},p={class:"theme-default-content"},v=(0,r._)("h1",null,"404",-1);var g=(0,r.aZ)({__name:"NotFound",setup(e){var t,n,i;const a=(0,o.I)(),u=(0,d.X6)(),c=null!=(t=u.value.notFound)?t:["Not Found"],f=null!=(n=u.value.home)?n:a.value,g=null!=(i=u.value.backToHome)?i:"Back to home";return(e,t)=>{const n=(0,r.up)("RouterLink");return(0,r.wg)(),(0,r.iD)("div",h,[(0,r._)("main",m,[(0,r._)("div",p,[v,(0,r._)("blockquote",null,(0,s.zw)(c[Math.floor(Math.random()*c.length)]),1),(0,r.Wm)(n,{to:(0,l.SU)(f)},{default:(0,r.w5)((()=>[(0,r.Uk)((0,s.zw)((0,l.SU)(g)),1)])),_:1},8,["to"])])])])}}}),y=(0,o.r$)({enhance({app:e,router:t}){e.component("Badge",i),e.component("CodeGroup",u),e.component("CodeGroupItem",c),e.component("AutoLinkExternalIcon",(()=>{const t=e.component("ExternalLinkIcon");return t?(0,r.h)(t):null})),e.component("NavbarSearch",(()=>{const t=e.component("Docsearch")||e.component("SearchBox");return t?(0,r.h)(t):null}));const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...e)=>(await(0,d.P$)().wait(),n(...e))},setup(){(0,d.OX)(),(0,d.fR)()},layouts:{Layout:f.Z,NotFound:g}})},851:function(e,t,n){n.d(t,{id:function(){return s},_F:function(){return a},Fg:function(){return c},c9:function(){return l}});var r=n(7171);const o=(e,...t)=>{const n=e.resolve(...t),s=n.matched[n.matched.length-1];if(!s?.redirect)return n;const{redirect:i}=s,a=(0,r.mf)(i)?i(n):i,l=(0,r.HD)(a)?{path:a}:a;return o(e,{hash:n.hash,query:n.query,params:n.params,...l})},s=(e,t)=>{const n=o(e,encodeURI(t));return{text:n.meta.title||t,link:"404"===n.name?t:n.fullPath}},i=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),a=(e,t)=>!(!e.link||!((e,t)=>t.hash===e||i(t.path)===i(e))(e.link,t))||!!e.children&&e.children.some((e=>a(e,t))),l=e=>!(0,r.ak)(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,u={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},c=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:o,editLinkPattern:s})=>{if(!o)return null;const i=(({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=l(e);return null!==n?u[n]:null})({docsRepo:e,editLinkPattern:s});return i?i.replace(/:repo/,(0,r.ak)(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,(0,r.FY)(`${(0,r.U1)(n)}/${o}`)):null}},6309:function(e,t,n){n.d(t,{QA3:function(){return g},y$C:function(){return v}});var r=n(4886),o=n(6252),s=n(2262);function i(e){var t;const n=(0,r.Tn)(e);return null!=(t=null==n?void 0:n.$el)?t:n}const a=r.C5?window:void 0;function l(...e){let t,n,s,l;if("string"==typeof e[0]||Array.isArray(e[0])?([n,s,l]=e,t=a):[t,n,s,l]=e,!t)return r.ZT;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const u=[],c=()=>{u.forEach((e=>e())),u.length=0},d=(0,o.YP)((()=>[i(t),(0,r.Tn)(l)]),(([e,t])=>{if(c(),!e)return;const o=(0,r.Kn)(t)?{...t}:t;u.push(...n.flatMap((t=>s.map((n=>((e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)))(e,t,n,o))))))}),{immediate:!0,flush:"post"}),f=()=>{d(),c()};return(0,r.IY)(f),f}function u(e,t={}){const{window:n=a}=t,i=function(e){const t=function(){const e=(0,s.iH)(!1);return(0,o.FN)()&&(0,o.bv)((()=>{e.value=!0})),e}();return(0,o.Fl)((()=>(t.value,Boolean(e()))))}((()=>n&&"matchMedia"in n&&"function"==typeof n.matchMedia));let l;const u=(0,s.iH)(!1),c=e=>{u.value=e.matches},d=()=>{l&&("removeEventListener"in l?l.removeEventListener("change",c):l.removeListener(c))},f=(0,o.m0)((()=>{i.value&&(d(),l=n.matchMedia((0,r.Tn)(e)),"addEventListener"in l?l.addEventListener("change",c):l.addListener(c),u.value=l.matches)}));return(0,r.IY)((()=>{f(),d(),l=void 0})),u}r.C5&&window.document,r.C5&&window.navigator,r.C5&&window.location;const c="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},d="__vueuse_ssr_handlers__",f=h();function h(){return d in c||(c[d]=c[d]||{}),c[d]}const m={boolean:{read:e=>"true"===e,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},p="vueuse-storage";function v(e,t,n,i={}){var u;const{flush:c="pre",deep:d=!0,listenToStorageChanges:h=!0,writeDefaults:v=!0,mergeDefaults:g=!1,shallow:y,window:w=a,eventFilter:b,onError:k=(e=>{console.error(e)}),initOnMounted:_}=i,S=(y?s.XI:s.iH)("function"==typeof t?t():t);if(!n)try{n=function(e,t){return f[e]||t}("getDefaultStorage",(()=>{var e;return null==(e=a)?void 0:e.localStorage}))()}catch(e){k(e)}if(!n)return S;const T=(0,r.Tn)(t),x=function(e){return null==e?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":"boolean"==typeof e?"boolean":"string"==typeof e?"string":"object"==typeof e?"object":Number.isNaN(e)?"any":"number"}(T),C=null!=(u=i.serializer)?u:m[x],{pause:E,resume:O}=(0,r._I)(S,(()=>function(t){try{if(null==t)n.removeItem(e);else{const r=C.write(t),o=n.getItem(e);o!==r&&(n.setItem(e,r),w&&w.dispatchEvent(new CustomEvent(p,{detail:{key:e,oldValue:o,newValue:r,storageArea:n}})))}}catch(e){k(e)}}(S.value)),{flush:c,deep:d,eventFilter:b});return w&&h&&(0,r.u7)((()=>{l(w,"storage",D),l(w,p,I),_&&D()})),_||D(),S;function I(e){D(e.detail)}function D(t){if(!t||t.storageArea===n)if(t&&null==t.key)S.value=T;else if(!t||t.key===e){E();try{(null==t?void 0:t.newValue)!==C.write(S.value)&&(S.value=function(t){const r=t?t.newValue:n.getItem(e);if(null==r)return v&&null!=T&&n.setItem(e,C.write(T)),T;if(!t&&g){const e=C.read(r);return"function"==typeof g?g(e,T):"object"!==x||Array.isArray(e)?e:{...T,...e}}return"string"!=typeof r?r:C.read(r)}(t))}catch(e){k(e)}finally{t?(0,o.Y3)(O):O()}}}}function g(e){return u("(prefers-color-scheme: dark)",e)}Number.POSITIVE_INFINITY;r.yR},4886:function(e,t,n){n.d(t,{fA:function(){return s},yR:function(){return v},C5:function(){return l},Kn:function(){return c},ZT:function(){return d},_I:function(){return y},Tn:function(){return a},u7:function(){return w},IY:function(){return i},OT:function(){return b}});var r=n(2262),o=n(6252);function s(e,t){let n,s,i;const a=(0,r.iH)(!0),l=()=>{a.value=!0,i()};(0,o.YP)(e,l,{flush:"sync"});const u="function"==typeof t?t:t.get,c="function"==typeof t?void 0:t.set,d=(0,r.ZM)(((e,t)=>(s=e,i=t,{get(){return a.value&&(n=u(),a.value=!1),s(),n},set(e){null==c||c(e)}})));return Object.isExtensible(d)&&(d.trigger=l),d}function i(e){return!!(0,r.nZ)()&&((0,r.EB)(e),!0)}function a(e){return"function"==typeof e?e():(0,r.SU)(e)}const l="undefined"!=typeof window&&"undefined"!=typeof document,u=("undefined"!=typeof WorkerGlobalScope&&(globalThis,WorkerGlobalScope),Object.prototype.toString),c=e=>"[object Object]"===u.call(e),d=()=>{};const f=e=>e();function h(e){const t=Object.create(null);return n=>t[n]||(t[n]=e(n))}const m=/\B([A-Z])/g,p=(h((e=>e.replace(m,"-$1").toLowerCase())),/-(\w)/g);function v(e){return e}function g(e,t,n={}){const{eventFilter:r=f,...s}=n;return(0,o.YP)(e,(i=r,a=t,function(...e){return new Promise(((t,n)=>{Promise.resolve(i((()=>a.apply(this,e)),{fn:a,thisArg:this,args:e})).then(t).catch(n)}))}),s);var i,a}function y(e,t,n={}){const{eventFilter:o,...s}=n,{eventFilter:i,pause:a,resume:l,isActive:u}=function(e=f){const t=(0,r.iH)(!0);return{isActive:(0,r.OT)(t),pause:function(){t.value=!1},resume:function(){t.value=!0},eventFilter:(...n)=>{t.value&&e(...n)}}}(o);return{stop:g(e,t,{...s,eventFilter:i}),pause:a,resume:l,isActive:u}}function w(e,t=!0,n){!function(e){return e||(0,o.FN)()}()?t?e():(0,o.Y3)(e):(0,o.bv)(e,n)}function b(e=!1,t={}){const{truthyValue:n=!0,falsyValue:o=!1}=t,s=(0,r.dq)(e),i=(0,r.iH)(e);function l(e){if(arguments.length)return i.value=e,i.value;{const e=a(n);return i.value=i.value===e?a(o):e,i.value}}return s?l:[i,l]}h((e=>e.replace(p,((e,t)=>t?t.toUpperCase():""))))},7126:function(e,t,n){n.d(t,{ou:function(){return lr}});class r extends Error{}class o extends r{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class s extends r{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends r{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class a extends r{}class l extends r{constructor(e){super(`Invalid unit ${e}`)}}class u extends r{}class c extends r{constructor(){super("Zone is an abstract class")}}const d="numeric",f="short",h="long",m={year:d,month:d,day:d},p={year:d,month:f,day:d},v={year:d,month:f,day:d,weekday:f},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},w={hour:d,minute:d},b={hour:d,minute:d,second:d},k={hour:d,minute:d,second:d,timeZoneName:f},_={hour:d,minute:d,second:d,timeZoneName:h},S={hour:d,minute:d,hourCycle:"h23"},T={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:f},C={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},E={year:d,month:d,day:d,hour:d,minute:d},O={year:d,month:d,day:d,hour:d,minute:d,second:d},I={year:d,month:f,day:d,hour:d,minute:d},D={year:d,month:f,day:d,hour:d,minute:d,second:d},N={year:d,month:f,day:d,weekday:f,hour:d,minute:d},M={year:d,month:h,day:d,hour:d,minute:d,timeZoneName:f},F={year:d,month:h,day:d,hour:d,minute:d,second:d,timeZoneName:f},L={year:d,month:h,day:d,weekday:h,hour:d,minute:d,timeZoneName:h},$={year:d,month:h,day:d,weekday:h,hour:d,minute:d,second:d,timeZoneName:h};class A{get type(){throw new c}get name(){throw new c}get ianaName(){return this.name}get isUniversal(){throw new c}offsetName(e,t){throw new c}formatOffset(e,t){throw new c}offset(e){throw new c}equals(e){throw new c}get isValid(){throw new c}}let R=null;class V extends A{static get instance(){return null===R&&(R=new V),R}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Ke(e,t,n)}formatOffset(e,t){return tt(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let j={};const z={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let W={};class H extends A{static create(e){return W[e]||(W[e]=new H(e)),W[e]}static resetCache(){W={},j={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=H.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Ke(e,t,n,this.name)}formatOffset(e,t){return tt(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(r=this.name,j[r]||(j[r]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:r,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),j[r]);var r;let[o,s,i,a,l,u,c]=n.formatToParts?function(e,t){const n=e.formatToParts(t),r=[];for(let e=0;e=0?f:1e3+f,(Je({year:o,month:s,day:i,hour:24===l?0:l,minute:u,second:c,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let U={},P={};function Z(e,t={}){const n=JSON.stringify([e,t]);let r=P[n];return r||(r=new Intl.DateTimeFormat(e,t),P[n]=r),r}let q={},J={},B=null,Y={};function G(e,t,n,r){const o=e.listingMode();return"error"===o?null:"en"===o?n(t):r(t)}class K{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:r,floor:o,...s}=n;if(!t||Object.keys(s).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let r=q[n];return r||(r=new Intl.NumberFormat(e,t),q[n]=r),r}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return je(this.floor?Math.floor(e):Ue(e,3),this.padTo)}}class X{constructor(e,t,n){let r;if(this.opts=n,this.originalZone=void 0,this.opts.timeZone)this.dt=e;else if("fixed"===e.zone.type){const t=e.offset/60*-1,n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&H.create(n).valid?(r=n,this.dt=e):(r="UTC",this.dt=0===e.offset?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else"system"===e.zone.type?this.dt=e:"iana"===e.zone.type?(this.dt=e,r=e.zone.name):(r="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);const o={...this.opts};o.timeZone=o.timeZone||r,this.dtf=Z(t,o)}format(){return this.originalZone?this.formatToParts().map((({value:e})=>e)).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map((e=>{if("timeZoneName"===e.type){const t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}return e})):e}resolvedOptions(){return this.dtf.resolvedOptions()}}class Q{constructor(e,t,n){this.opts={style:"long",...n},!t&&Fe()&&(this.rtf=function(e,t={}){const{base:n,...r}=t,o=JSON.stringify([e,r]);let s=J[o];return s||(s=new Intl.RelativeTimeFormat(e,t),J[o]=s),s}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",r=!1){const o={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&s){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${o[e][0]}`;case-1:return n?"yesterday":`last ${o[e][0]}`;case 0:return n?"today":`this ${o[e][0]}`}}const i=Object.is(t,-0)||t<0,a=Math.abs(t),l=1===a,u=o[e],c=r?l?u[1]:u[2]||u[1]:l?o[e][0]:e;return i?`${a} ${c} ago`:`in ${a} ${c}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}const ee={firstDay:1,minimalDays:4,weekend:[6,7]};class te{static fromOpts(e){return te.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,t,n,r,o=!1){const s=e||me.defaultLocale,i=s||(o?"en-US":B||(B=(new Intl.DateTimeFormat).resolvedOptions().locale,B)),a=t||me.defaultNumberingSystem,l=n||me.defaultOutputCalendar,u=Re(r)||me.defaultWeekSettings;return new te(i,a,l,u,s)}static resetCache(){B=null,P={},q={},J={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n,weekSettings:r}={}){return te.create(e,t,n,r)}constructor(e,t,n,r,o){const[s,i,a]=function(e){const t=e.indexOf("-x-");-1!==t&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(-1===n)return[e];{let t,r;try{t=Z(e).resolvedOptions(),r=e}catch(o){const s=e.substring(0,n);t=Z(s).resolvedOptions(),r=s}const{numberingSystem:o,calendar:s}=t;return[r,o,s]}}(e);this.locale=s,this.numberingSystem=t||i||null,this.outputCalendar=n||a||null,this.weekSettings=r,this.intl=function(e,t,n){return n||t?(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?te.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,Re(e.weekSettings)||this.weekSettings,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return G(this,e,it,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},r=t?"format":"standalone";return this.monthsCache[r][e]||(this.monthsCache[r][e]=function(e){const t=[];for(let n=1;n<=12;n++){const r=lr.utc(2009,n,1);t.push(e(r))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[r][e]}))}weekdays(e,t=!1){return G(this,e,ct,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},r=t?"format":"standalone";return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=function(e){const t=[];for(let n=1;n<=7;n++){const r=lr.utc(2016,11,13+n);t.push(e(r))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[r][e]}))}meridiems(){return G(this,void 0,(()=>dt),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[lr.utc(2016,11,13,9),lr.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e){return G(this,e,pt,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[lr.utc(-40,1,1),lr.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const r=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return r?r.value:null}numberFormatter(e={}){return new K(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new X(e,this.intl,t)}relFormatter(e={}){return new Q(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let r=U[n];return r||(r=new Intl.ListFormat(e,t),U[n]=r),r}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Le()?function(e){let t=Y[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,Y[e]=t}return t}(this.locale):ee}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}let ne=null;class re extends A{static get utcInstance(){return null===ne&&(ne=new re(0)),ne}static instance(e){return 0===e?re.utcInstance:new re(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new re(Xe(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${tt(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${tt(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return tt(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class oe extends A{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function se(e,t){if(De(e)||null===e)return t;if(e instanceof A)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?V.instance:"utc"===n||"gmt"===n?re.utcInstance:re.parseSpecifier(n)||H.create(e)}return Ne(e)?re.instance(e):"object"==typeof e&&"offset"in e&&"function"==typeof e.offset?e:new oe(e)}let ie,ae=()=>Date.now(),le="system",ue=null,ce=null,de=null,fe=60,he=null;class me{static get now(){return ae}static set now(e){ae=e}static set defaultZone(e){le=e}static get defaultZone(){return se(le,V.instance)}static get defaultLocale(){return ue}static set defaultLocale(e){ue=e}static get defaultNumberingSystem(){return ce}static set defaultNumberingSystem(e){ce=e}static get defaultOutputCalendar(){return de}static set defaultOutputCalendar(e){de=e}static get defaultWeekSettings(){return he}static set defaultWeekSettings(e){he=Re(e)}static get twoDigitCutoffYear(){return fe}static set twoDigitCutoffYear(e){fe=e%100}static get throwOnInvalid(){return ie}static set throwOnInvalid(e){ie=e}static resetCaches(){te.resetCache(),H.resetCache()}}class pe{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const ve=[0,31,59,90,120,151,181,212,243,273,304,334],ge=[0,31,60,91,121,152,182,213,244,274,305,335];function ye(e,t){return new pe("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function we(e,t,n){const r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const o=r.getUTCDay();return 0===o?7:o}function be(e,t,n){return n+(Pe(e)?ge:ve)[t-1]}function ke(e,t){const n=Pe(e)?ge:ve,r=n.findIndex((e=>eYe(r,t,n)?(l=r+1,u=1):l=r,{weekYear:l,weekNumber:u,weekday:a,...nt(e)}}function Te(e,t=4,n=1){const{weekYear:r,weekNumber:o,weekday:s}=e,i=_e(we(r,1,t),n),a=Ze(r);let l,u=7*o+s-i-7+t;u<1?(l=r-1,u+=Ze(l)):u>a?(l=r+1,u-=Ze(r)):l=r;const{month:c,day:d}=ke(l,u);return{year:l,month:c,day:d,...nt(e)}}function xe(e){const{year:t,month:n,day:r}=e;return{year:t,ordinal:be(t,n,r),...nt(e)}}function Ce(e){const{year:t,ordinal:n}=e,{month:r,day:o}=ke(t,n);return{year:t,month:r,day:o,...nt(e)}}function Ee(e,t){if(!De(e.localWeekday)||!De(e.localWeekNumber)||!De(e.localWeekYear)){if(!De(e.weekday)||!De(e.weekNumber)||!De(e.weekYear))throw new a("Cannot mix locale-based week fields with ISO-based week fields");return De(e.localWeekday)||(e.weekday=e.localWeekday),De(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),De(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}return{minDaysInFirstWeek:4,startOfWeek:1}}function Oe(e){const t=Me(e.year),n=Ve(e.month,1,12),r=Ve(e.day,1,qe(e.year,e.month));return t?n?!r&&ye("day",e.day):ye("month",e.month):ye("year",e.year)}function Ie(e){const{hour:t,minute:n,second:r,millisecond:o}=e,s=Ve(t,0,23)||24===t&&0===n&&0===r&&0===o,i=Ve(n,0,59),a=Ve(r,0,59),l=Ve(o,0,999);return s?i?a?!l&&ye("millisecond",o):ye("second",r):ye("minute",n):ye("hour",t)}function De(e){return void 0===e}function Ne(e){return"number"==typeof e}function Me(e){return"number"==typeof e&&e%1==0}function Fe(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function Le(){try{return"undefined"!=typeof Intl&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch(e){return!1}}function $e(e,t,n){if(0!==e.length)return e.reduce(((e,r)=>{const o=[t(r),r];return e&&n(e[0],o[0])===e[0]?e:o}),null)[1]}function Ae(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Re(e){if(null==e)return null;if("object"!=typeof e)throw new u("Week settings must be an object");if(!Ve(e.firstDay,1,7)||!Ve(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some((e=>!Ve(e,1,7))))throw new u("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Ve(e,t,n){return Me(e)&&e>=t&&e<=n}function je(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function ze(e){return De(e)||null===e||""===e?void 0:parseInt(e,10)}function We(e){return De(e)||null===e||""===e?void 0:parseFloat(e)}function He(e){if(!De(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function Ue(e,t,n=!1){const r=10**t;return(n?Math.trunc:Math.round)(e*r)/r}function Pe(e){return e%4==0&&(e%100!=0||e%400==0)}function Ze(e){return Pe(e)?366:365}function qe(e,t){const n=(r=t-1)-12*Math.floor(r/12)+1;var r;return 2===n?Pe(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Je(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Be(e,t,n){return-_e(we(e,1,t),n)+t-1}function Ye(e,t=4,n=1){const r=Be(e,t,n),o=Be(e+1,t,n);return(Ze(e)-r+o)/7}function Ge(e){return e>99?e:e>me.twoDigitCutoffYear?1900+e:2e3+e}function Ke(e,t,n,r=null){const o=new Date(e),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const i={timeZoneName:t,...s},a=new Intl.DateTimeFormat(n,i).formatToParts(o).find((e=>"timezonename"===e.type.toLowerCase()));return a?a.value:null}function Xe(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const r=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-r:r)}function Qe(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new u(`Invalid unit value ${e}`);return t}function et(e,t){const n={};for(const r in e)if(Ae(e,r)){const o=e[r];if(null==o)continue;n[t(r)]=Qe(o)}return n}function tt(e,t){const n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),o=e>=0?"+":"-";switch(t){case"short":return`${o}${je(n,2)}:${je(r,2)}`;case"narrow":return`${o}${n}${r>0?`:${r}`:""}`;case"techie":return`${o}${je(n,2)}${je(r,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function nt(e){return function(e,t){return["hour","minute","second","millisecond"].reduce(((t,n)=>(t[n]=e[n],t)),{})}(e)}const rt=["January","February","March","April","May","June","July","August","September","October","November","December"],ot=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],st=["J","F","M","A","M","J","J","A","S","O","N","D"];function it(e){switch(e){case"narrow":return[...st];case"short":return[...ot];case"long":return[...rt];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const at=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],lt=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],ut=["M","T","W","T","F","S","S"];function ct(e){switch(e){case"narrow":return[...ut];case"short":return[...lt];case"long":return[...at];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const dt=["AM","PM"],ft=["Before Christ","Anno Domini"],ht=["BC","AD"],mt=["B","A"];function pt(e){switch(e){case"narrow":return[...mt];case"short":return[...ht];case"long":return[...ft];default:return null}}function vt(e,t){let n="";for(const r of e)r.literal?n+=r.val:n+=t(r.val);return n}const gt={D:m,DD:p,DDD:g,DDDD:y,t:w,tt:b,ttt:k,tttt:_,T:S,TT:T,TTT:x,TTTT:C,f:E,ff:I,fff:M,ffff:L,F:O,FF:D,FFF:F,FFFF:$};class yt{static create(e,t={}){return new yt(e,t)}static parseFormat(e){let t=null,n="",r=!1;const o=[];for(let s=0;s0&&o.push({literal:r||/^\s+$/.test(n),val:n}),t=null,n="",r=!r):r||i===t?n+=i:(n.length>0&&o.push({literal:/^\s+$/.test(n),val:n}),n=i,t=i)}return n.length>0&&o.push({literal:r||/^\s+$/.test(n),val:n}),o}static macroTokenToFormatOpts(e){return gt[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return je(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),r=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,o=(t,n)=>this.loc.extract(e,t,n),s=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=(t,r)=>n?function(e,t){return it(t)[e.month-1]}(e,t):o(r?{month:t}:{month:t,day:"numeric"},"month"),a=(t,r)=>n?function(e,t){return ct(t)[e.weekday-1]}(e,t):o(r?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),l=t=>{const n=yt.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return pt(t)[e.year<0?0:1]}(e,t):o({era:t},"era");return vt(yt.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return s({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return s({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return s({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return n?function(e){return dt[e.hour<12?0:1]}(e):o({hour:"numeric",hourCycle:"h12"},"dayperiod");case"d":return r?o({day:"numeric"},"day"):this.num(e.day);case"dd":return r?o({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return a("short",!0);case"cccc":return a("long",!0);case"ccccc":return a("narrow",!0);case"EEE":return a("short",!1);case"EEEE":return a("long",!1);case"EEEEE":return a("narrow",!1);case"L":return r?o({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return r?o({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return i("short",!0);case"LLLL":return i("long",!0);case"LLLLL":return i("narrow",!0);case"M":return r?o({month:"numeric"},"month"):this.num(e.month);case"MM":return r?o({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return i("short",!1);case"MMMM":return i("long",!1);case"MMMMM":return i("narrow",!1);case"y":return r?o({year:"numeric"},"year"):this.num(e.year);case"yy":return r?o({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return r?o({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return r?o({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return l(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},r=yt.parseFormat(t),o=r.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return vt(r,(e=>t=>{const r=n(t);return r?this.num(e.get(r),t.length):t})(e.shiftTo(...o.map(n).filter((e=>e)))))}}const wt=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function bt(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function kt(...e){return t=>e.reduce((([e,n,r],o)=>{const[s,i,a]=o(t,r);return[{...e,...s},i||n,a]}),[{},null,1]).slice(0,2)}function _t(e,...t){if(null==e)return[null,null];for(const[n,r]of t){const t=n.exec(e);if(t)return r(t)}return[null,null]}function St(...e){return(t,n)=>{const r={};let o;for(o=0;ovoid 0!==e&&(t||e&&c)?-e:e;return[{years:f(We(n)),months:f(We(r)),weeks:f(We(o)),days:f(We(s)),hours:f(We(i)),minutes:f(We(a)),seconds:f(We(l),"-0"===l),milliseconds:f(He(u),d)}]}const jt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function zt(e,t,n,r,o,s,i){const a={year:2===t.length?Ge(ze(t)):ze(t),month:ot.indexOf(n)+1,day:ze(r),hour:ze(o),minute:ze(s)};return i&&(a.second=ze(i)),e&&(a.weekday=e.length>3?at.indexOf(e)+1:lt.indexOf(e)+1),a}const Wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Ht(e){const[,t,n,r,o,s,i,a,l,u,c,d]=e,f=zt(t,o,r,n,s,i,a);let h;return h=l?jt[l]:u?0:Xe(c,d),[f,new re(h)]}const Ut=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Pt=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Zt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function qt(e){const[,t,n,r,o,s,i,a]=e;return[zt(t,o,r,n,s,i,a),re.utcInstance]}function Jt(e){const[,t,n,r,o,s,i,a]=e;return[zt(t,a,n,r,o,s,i),re.utcInstance]}const Bt=bt(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Et),Yt=bt(/(\d{4})-?W(\d\d)(?:-?(\d))?/,Et),Gt=bt(/(\d{4})-?(\d{3})/,Et),Kt=bt(Ct),Xt=kt((function(e,t){return[{year:Mt(e,t),month:Mt(e,t+1,1),day:Mt(e,t+2,1)},null,t+3]}),Ft,Lt,$t),Qt=kt(Ot,Ft,Lt,$t),en=kt(It,Ft,Lt,$t),tn=kt(Ft,Lt,$t),nn=kt(Ft),rn=bt(/(\d{4})-(\d\d)-(\d\d)/,Nt),on=bt(Dt),sn=kt(Ft,Lt,$t),an="Invalid Duration",ln={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},un={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...ln},cn={years:{quarters:4,months:12,weeks:52.1775,days:365.2425,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:30.436875,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...ln},dn=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],fn=dn.slice(0).reverse();function hn(e,t,n=!1){const r={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new vn(r)}function mn(e,t){let n=t.milliseconds??0;for(const r of fn.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function pn(e,t){const n=mn(e,t)<0?-1:1;dn.reduceRight(((r,o)=>{if(De(t[o]))return r;if(r){const s=t[r]*n,i=e[o][r],a=Math.floor(s/i);t[o]+=a*n,t[r]-=a*i*n}return o}),null),dn.reduce(((n,r)=>{if(De(t[r]))return n;if(n){const o=t[n]%1;t[n]-=o,t[r]+=o*e[n][r]}return r}),null)}class vn{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?cn:un;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||te.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return vn.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new u("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new vn({values:et(e,vn.normalizeUnit),loc:te.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(Ne(e))return vn.fromMillis(e);if(vn.isDuration(e))return e;if("object"==typeof e)return vn.fromObject(e);throw new u(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return _t(e,[Rt,Vt])}(e);return n?vn.fromObject(n,t):vn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return _t(e,[At,nn])}(e);return n?vn.fromObject(n,t):vn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new u("need to specify a reason the Duration is invalid");const n=e instanceof pe?e:new pe(e,t);if(me.throwOnInvalid)throw new i(n);return new vn({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?yt.create(this.loc,n).formatDurationFromString(this,e):an}toHuman(e={}){if(!this.isValid)return an;const t=dn.map((t=>{const n=this.values[t];return De(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=Ue(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},lr.fromMillis(t,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?mn(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=vn.fromDurationLike(e),n={};for(const e of dn)(Ae(t.values,e)||Ae(this.values,e))&&(n[e]=t.get(e)+this.get(e));return hn(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=vn.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=Qe(e(this.values[n],n));return hn(this,{values:t},!0)}get(e){return this[vn.normalizeUnit(e)]}set(e){return this.isValid?hn(this,{values:{...this.values,...et(e,vn.normalizeUnit)}}):this}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){return hn(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return pn(this.matrix,e),hn(this,{values:e},!0)}rescale(){return this.isValid?hn(this,{values:function(e){const t={};for(const[n,r]of Object.entries(e))0!==r&&(t[n]=r);return t}(this.normalize().shiftToAll().toObject())},!0):this}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>vn.normalizeUnit(e)));const t={},n={},r=this.toObject();let o;for(const s of dn)if(e.indexOf(s)>=0){o=s;let e=0;for(const t in n)e+=this.matrix[t][s]*n[t],n[t]=0;Ne(r[s])&&(e+=r[s]);const i=Math.trunc(e);t[s]=i,n[s]=(1e3*e-1e3*i)/1e3}else Ne(r[s])&&(n[s]=r[s]);for(const e in n)0!==n[e]&&(t[o]+=e===o?n[e]:n[e]/this.matrix[o][e]);return pn(this.matrix,t),hn(this,{values:t},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return hn(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const r of dn)if(t=this.values[r],n=e.values[r],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const gn="Invalid Interval";class yn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new u("need to specify a reason the Interval is invalid");const n=e instanceof pe?e:new pe(e,t);if(me.throwOnInvalid)throw new s(n);return new yn({invalid:n})}static fromDateTimes(e,t){const n=ur(e),r=ur(t),o=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&this.s<=e&&this.e>e}set({start:e,end:t}={}){return this.isValid?yn.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(ur).filter((e=>this.contains(e))).sort(((e,t)=>e.toMillis()-t.toMillis())),n=[];let{s:r}=this,o=0;for(;r+this.e?this.e:e;n.push(yn.fromDateTimes(r,s)),r=s,o+=1}return n}splitBy(e){const t=vn.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s:r}=this,o=1;const s=[];for(;re*o)));n=+e>+this.e?this.e:e,s.push(yn.fromDateTimes(r,n)),r=n,o+=1}return s}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e}equals(e){return!(!this.isValid||!e.isValid)&&this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:yn.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return yn.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const r=[],o=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),s=Array.prototype.concat(...o).sort(((e,t)=>e.time-t.time));for(const e of s)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&r.push(yn.fromDateTimes(t,e.time)),t=null);return yn.merge(r)}difference(...e){return yn.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:gn}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=m,t={}){return this.isValid?yt.create(this.s.loc.clone(t),e).formatInterval(this):gn}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:gn}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:gn}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:gn}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:gn}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):vn.invalid(this.invalidReason)}mapEndpoints(e){return yn.fromDateTimes(e(this.s),e(this.e))}}class wn{static hasDST(e=me.defaultZone){const t=lr.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return H.isValidZone(e)}static normalizeZone(e){return se(e,me.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||te.create(e)).getWeekendDays().slice()}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||te.create(t,n,o)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||te.create(t,n,o)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||te.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||te.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return te.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return te.create(t,null,"gregory").eras(e)}static features(){return{relative:Fe(),localeWeek:Le()}}}function bn(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(t)-n(e);return Math.floor(vn.fromMillis(r).as("days"))}const kn={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},_n={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Sn=kn.hanidec.replace(/[\[|\]]/g,"").split("");function Tn({numberingSystem:e},t=""){return new RegExp(`${kn[e||"latn"]}${t}`)}function xn(e,t=(e=>e)){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&r<=o&&(t+=r-n)}}return parseInt(t,10)}return t}(e))}}const Cn=`[ ${String.fromCharCode(160)}]`,En=new RegExp(Cn,"g");function On(e){return e.replace(/\./g,"\\.?").replace(En,Cn)}function In(e){return e.replace(/\./g,"").replace(En," ").toLowerCase()}function Dn(e,t){return null===e?null:{regex:RegExp(e.map(On).join("|")),deser:([n])=>e.findIndex((e=>In(n)===In(e)))+t}}function Nn(e,t){return{regex:e,deser:([,e,t])=>Xe(e,t),groups:t}}function Mn(e){return{regex:e,deser:([e])=>e}}const Fn={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let Ln=null;function $n(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=Rn(yt.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}function An(e,t,n){const r=$n(yt.parseFormat(n),e),o=r.map((t=>function(e,t){const n=Tn(t),r=Tn(t,"{2}"),o=Tn(t,"{3}"),s=Tn(t,"{4}"),i=Tn(t,"{6}"),a=Tn(t,"{1,2}"),l=Tn(t,"{1,3}"),u=Tn(t,"{1,6}"),c=Tn(t,"{1,9}"),d=Tn(t,"{2,4}"),f=Tn(t,"{4,6}"),h=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},m=(m=>{if(e.literal)return h(m);switch(m.val){case"G":return Dn(t.eras("short"),0);case"GG":return Dn(t.eras("long"),0);case"y":return xn(u);case"yy":case"kk":return xn(d,Ge);case"yyyy":case"kkkk":return xn(s);case"yyyyy":return xn(f);case"yyyyyy":return xn(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return xn(a);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return xn(r);case"MMM":return Dn(t.months("short",!0),1);case"MMMM":return Dn(t.months("long",!0),1);case"LLL":return Dn(t.months("short",!1),1);case"LLLL":return Dn(t.months("long",!1),1);case"o":case"S":return xn(l);case"ooo":case"SSS":return xn(o);case"u":return Mn(c);case"uu":return Mn(a);case"uuu":case"E":case"c":return xn(n);case"a":return Dn(t.meridiems(),0);case"EEE":return Dn(t.weekdays("short",!1),1);case"EEEE":return Dn(t.weekdays("long",!1),1);case"ccc":return Dn(t.weekdays("short",!0),1);case"cccc":return Dn(t.weekdays("long",!0),1);case"Z":case"ZZ":return Nn(new RegExp(`([+-]${a.source})(?::(${r.source}))?`),2);case"ZZZ":return Nn(new RegExp(`([+-]${a.source})(${r.source})?`),2);case"z":return Mn(/[a-z_+-/]{1,256}?/i);case" ":return Mn(/[^\S\n\r]/);default:return h(m)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return m.token=e,m}(t,e))),s=o.find((e=>e.invalidReason));if(s)return{input:t,tokens:r,invalidReason:s.invalidReason};{const[e,n]=function(e){return[`^${e.map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,e]}(o),s=RegExp(e,"i"),[i,l]=function(e,t,n){const r=e.match(t);if(r){const e={};let t=1;for(const o in n)if(Ae(n,o)){const s=n[o],i=s.groups?s.groups+1:1;!s.literal&&s.token&&(e[s.token.val[0]]=s.deser(r.slice(t,t+i))),t+=i}return[r,e]}return[r,{}]}(t,s,n),[u,c,d]=l?function(e){let t,n=null;return De(e.z)||(n=H.create(e.z)),De(e.Z)||(n||(n=new re(e.Z)),t=e.Z),De(e.q)||(e.M=3*(e.q-1)+1),De(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),De(e.u)||(e.S=He(e.u)),[Object.keys(e).reduce(((t,n)=>{const r=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return r&&(t[r]=e[n]),t}),{}),n,t]}(l):[null,null,void 0];if(Ae(l,"a")&&Ae(l,"H"))throw new a("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:r,regex:s,rawMatches:i,matches:l,result:u,zone:c,specificOffset:d}}}function Rn(e,t){if(!e)return null;const n=yt.create(t,e).dtFormatter((Ln||(Ln=lr.fromMillis(1555555555555)),Ln)),r=n.formatToParts(),o=n.resolvedOptions();return r.map((t=>function(e,t,n){const{type:r,value:o}=e;if("literal"===r){const e=/^\s+$/.test(o);return{literal:!e,val:e?" ":o}}const s=t[r];let i=r;"hour"===r&&(i=null!=t.hour12?t.hour12?"hour12":"hour24":null!=t.hourCycle?"h11"===t.hourCycle||"h12"===t.hourCycle?"hour12":"hour24":n.hour12?"hour12":"hour24");let a=Fn[i];if("object"==typeof a&&(a=a[s]),a)return{literal:!1,val:a}}(t,e,o)))}const Vn="Invalid DateTime",jn=864e13;function zn(e){return new pe("unsupported zone",`the zone "${e.name}" is not supported`)}function Wn(e){return null===e.weekData&&(e.weekData=Se(e.c)),e.weekData}function Hn(e){return null===e.localWeekData&&(e.localWeekData=Se(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Un(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new lr({...n,...t,old:n})}function Pn(e,t,n){let r=e-60*t*1e3;const o=n.offset(r);if(t===o)return[r,t];r-=60*(o-t)*1e3;const s=n.offset(r);return o===s?[r,o]:[e-60*Math.min(o,s)*1e3,Math.max(o,s)]}function Zn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function qn(e,t,n){return Pn(Je(e),t,n)}function Jn(e,t){const n=e.o,r=e.c.year+Math.trunc(t.years),o=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),s={...e.c,year:r,month:o,day:Math.min(e.c.day,qe(r,o))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=vn.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),a=Je(s);let[l,u]=Pn(a,n,e.zone);return 0!==i&&(l+=i,u=e.zone.offset(l)),{ts:l,o:u}}function Bn(e,t,n,r,o,s){const{setZone:i,zone:a}=n;if(e&&0!==Object.keys(e).length||t){const r=t||a,o=lr.fromObject(e,{...n,zone:r,specificOffset:s});return i?o:o.setZone(a)}return lr.invalid(new pe("unparsable",`the input "${o}" can't be parsed as ${r}`))}function Yn(e,t,n=!0){return e.isValid?yt.create(te.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Gn(e,t){const n=e.c.year>9999||e.c.year<0;let r="";return n&&e.c.year>=0&&(r+="+"),r+=je(e.c.year,n?6:4),t?(r+="-",r+=je(e.c.month),r+="-",r+=je(e.c.day)):(r+=je(e.c.month),r+=je(e.c.day)),r}function Kn(e,t,n,r,o,s){let i=je(e.c.hour);return t?(i+=":",i+=je(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=":")):i+=je(e.c.minute),0===e.c.millisecond&&0===e.c.second&&n||(i+=je(e.c.second),0===e.c.millisecond&&r||(i+=".",i+=je(e.c.millisecond,3))),o&&(e.isOffsetFixed&&0===e.offset&&!s?i+="Z":e.o<0?(i+="-",i+=je(Math.trunc(-e.o/60)),i+=":",i+=je(Math.trunc(-e.o%60))):(i+="+",i+=je(Math.trunc(e.o/60)),i+=":",i+=je(Math.trunc(e.o%60)))),s&&(i+="["+e.zone.ianaName+"]"),i}const Xn={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Qn={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},er={ordinal:1,hour:0,minute:0,second:0,millisecond:0},tr=["year","month","day","hour","minute","second","millisecond"],nr=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],rr=["year","ordinal","hour","minute","second","millisecond"];function or(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return function(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}(e)}}function sr(e,t){const n=se(t.zone,me.defaultZone),r=te.fromObject(t),o=me.now();let s,i;if(De(e.year))s=o;else{for(const t of tr)De(e[t])&&(e[t]=Xn[t]);const t=Oe(e)||Ie(e);if(t)return lr.invalid(t);const r=n.offset(o);[s,i]=qn(e,r,n)}return new lr({ts:s,zone:n,loc:r,o:i})}function ir(e,t,n){const r=!!De(n.round)||n.round,o=(e,o)=>(e=Ue(e,r||n.calendary?0:2,!0),t.loc.clone(n).relFormatter(n).format(e,o)),s=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return o(s(n.unit),n.unit);for(const e of n.units){const t=s(e);if(Math.abs(t)>=1)return o(t,e)}return o(e>t?-0:0,n.units[n.units.length-1])}function ar(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}class lr{constructor(e){const t=e.zone||me.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new pe("invalid input"):null)||(t.isValid?null:zn(t));this.ts=De(e.ts)?me.now():e.ts;let r=null,o=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,o]=[e.old.c,e.old.o];else{const e=t.offset(this.ts);r=Zn(this.ts,e),n=Number.isNaN(r.year)?new pe("invalid input"):null,r=n?null:r,o=n?null:e}this._zone=t,this.loc=e.loc||te.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new lr({})}static local(){const[e,t]=ar(arguments),[n,r,o,s,i,a,l]=t;return sr({year:n,month:r,day:o,hour:s,minute:i,second:a,millisecond:l},e)}static utc(){const[e,t]=ar(arguments),[n,r,o,s,i,a,l]=t;return e.zone=re.utcInstance,sr({year:n,month:r,day:o,hour:s,minute:i,second:a,millisecond:l},e)}static fromJSDate(e,t={}){const n=(r=e,"[object Date]"===Object.prototype.toString.call(r)?e.valueOf():NaN);var r;if(Number.isNaN(n))return lr.invalid("invalid input");const o=se(t.zone,me.defaultZone);return o.isValid?new lr({ts:n,zone:o,loc:te.fromObject(t)}):lr.invalid(zn(o))}static fromMillis(e,t={}){if(Ne(e))return e<-jn||e>jn?lr.invalid("Timestamp out of range"):new lr({ts:e,zone:se(t.zone,me.defaultZone),loc:te.fromObject(t)});throw new u(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(Ne(e))return new lr({ts:1e3*e,zone:se(t.zone,me.defaultZone),loc:te.fromObject(t)});throw new u("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=se(t.zone,me.defaultZone);if(!n.isValid)return lr.invalid(zn(n));const r=te.fromObject(t),o=et(e,or),{minDaysInFirstWeek:s,startOfWeek:i}=Ee(o,r),l=me.now(),u=De(t.specificOffset)?n.offset(l):t.specificOffset,c=!De(o.ordinal),d=!De(o.year),f=!De(o.month)||!De(o.day),h=d||f,m=o.weekYear||o.weekNumber;if((h||c)&&m)throw new a("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(f&&c)throw new a("Can't mix ordinal dates with month/day");const p=m||o.weekday&&!h;let v,g,y=Zn(l,u);p?(v=nr,g=Qn,y=Se(y,s,i)):c?(v=rr,g=er,y=xe(y)):(v=tr,g=Xn);let w=!1;for(const e of v)De(o[e])?o[e]=w?g[e]:y[e]:w=!0;const b=p?function(e,t=4,n=1){const r=Me(e.weekYear),o=Ve(e.weekNumber,1,Ye(e.weekYear,t,n)),s=Ve(e.weekday,1,7);return r?o?!s&&ye("weekday",e.weekday):ye("week",e.weekNumber):ye("weekYear",e.weekYear)}(o,s,i):c?function(e){const t=Me(e.year),n=Ve(e.ordinal,1,Ze(e.year));return t?!n&&ye("ordinal",e.ordinal):ye("year",e.year)}(o):Oe(o),k=b||Ie(o);if(k)return lr.invalid(k);const _=p?Te(o,s,i):c?Ce(o):o,[S,T]=qn(_,u,n),x=new lr({ts:S,zone:n,o:T,loc:r});return o.weekday&&h&&e.weekday!==x.weekday?lr.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${x.toISO()}`):x}static fromISO(e,t={}){const[n,r]=function(e){return _t(e,[Bt,Xt],[Yt,Qt],[Gt,en],[Kt,tn])}(e);return Bn(n,r,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,r]=function(e){return _t(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[Wt,Ht])}(e);return Bn(n,r,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,r]=function(e){return _t(e,[Ut,qt],[Pt,qt],[Zt,Jt])}(e);return Bn(n,r,t,"HTTP",t)}static fromFormat(e,t,n={}){if(De(e)||De(t))throw new u("fromFormat requires an input string and a format");const{locale:r=null,numberingSystem:o=null}=n,s=te.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[i,a,l,c]=function(e,t,n){const{result:r,zone:o,specificOffset:s,invalidReason:i}=An(e,t,n);return[r,o,s,i]}(s,e,t);return c?lr.invalid(c):Bn(i,a,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return lr.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,r]=function(e){return _t(e,[rn,Xt],[on,sn])}(e);return Bn(n,r,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new u("need to specify a reason the DateTime is invalid");const n=e instanceof pe?e:new pe(e,t);if(me.throwOnInvalid)throw new o(n);return new lr({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=Rn(e,te.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return $n(yt.parseFormat(e),te.fromObject(t)).map((e=>e.val)).join("")}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Wn(this).weekYear:NaN}get weekNumber(){return this.isValid?Wn(this).weekNumber:NaN}get weekday(){return this.isValid?Wn(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Hn(this).weekday:NaN}get localWeekNumber(){return this.isValid?Hn(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Hn(this).weekYear:NaN}get ordinal(){return this.isValid?xe(this.c).ordinal:NaN}get monthShort(){return this.isValid?wn.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?wn.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?wn.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?wn.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const e=864e5,t=6e4,n=Je(this.c),r=this.zone.offset(n-e),o=this.zone.offset(n+e),s=this.zone.offset(n-r*t),i=this.zone.offset(n-o*t);if(s===i)return[this];const a=n-s*t,l=n-i*t,u=Zn(a,s),c=Zn(l,i);return u.hour===c.hour&&u.minute===c.minute&&u.second===c.second&&u.millisecond===c.millisecond?[Un(this,{ts:a}),Un(this,{ts:l})]:[this]}get isInLeapYear(){return Pe(this.year)}get daysInMonth(){return qe(this.year,this.month)}get daysInYear(){return this.isValid?Ze(this.year):NaN}get weeksInWeekYear(){return this.isValid?Ye(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Ye(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:r}=yt.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(re.instance(e),t)}toLocal(){return this.setZone(me.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=se(e,me.defaultZone)).equals(this.zone))return this;if(e.isValid){let r=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[r]=qn(n,t,e)}return Un(this,{ts:r,zone:e})}return lr.invalid(zn(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return Un(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=et(e,or),{minDaysInFirstWeek:n,startOfWeek:r}=Ee(t,this.loc),o=!De(t.weekYear)||!De(t.weekNumber)||!De(t.weekday),s=!De(t.ordinal),i=!De(t.year),l=!De(t.month)||!De(t.day),u=i||l,c=t.weekYear||t.weekNumber;if((u||s)&&c)throw new a("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&s)throw new a("Can't mix ordinal dates with month/day");let d;o?d=Te({...Se(this.c,n,r),...t},n,r):De(t.ordinal)?(d={...this.toObject(),...t},De(t.day)&&(d.day=Math.min(qe(d.year,d.month),d.day))):d=Ce({...xe(this.c),...t});const[f,h]=qn(d,this.o,this.zone);return Un(this,{ts:f,o:h})}plus(e){return this.isValid?Un(this,Jn(this,vn.fromDurationLike(e))):this}minus(e){return this.isValid?Un(this,Jn(this,vn.fromDurationLike(e).negate())):this}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;const n={},r=vn.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0}if("weeks"===r)if(t){const e=this.loc.getStartOfWeek(),{weekday:t}=this;tthis.valueOf(),i=function(e,t,n,r){let[o,s,i,a]=function(e,t,n){const r=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=bn(e,t);return(n-n%7)/7}],["days",bn]],o={},s=e;let i,a;for(const[l,u]of r)n.indexOf(l)>=0&&(i=l,o[l]=u(e,t),a=s.plus(o),a>t?(o[l]--,(e=s.plus(o))>t&&(a=e,o[l]--,e=s.plus(o))):e=a);return[e,o,a,i]}(e,t,n);const l=t-o,u=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===u.length&&(i0?vn.fromMillis(l,r).shiftTo(...u).plus(c):c}(s?this:e,s?e:this,o,r);var a;return s?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(lr.now(),e,t)}until(e){return this.isValid?yn.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;const r=e.valueOf(),o=this.setZone(e.zone,{keepLocalTime:!0});return o.startOf(t,n)<=r&&r<=o.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||lr.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(lr.isDateTime))throw new u("max requires all arguments be DateTimes");return $e(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:r=null,numberingSystem:o=null}=n;return An(te.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return lr.fromFormatExplain(e,t,n)}static get DATE_SHORT(){return m}static get DATE_MED(){return p}static get DATE_MED_WITH_WEEKDAY(){return v}static get DATE_FULL(){return g}static get DATE_HUGE(){return y}static get TIME_SIMPLE(){return w}static get TIME_WITH_SECONDS(){return b}static get TIME_WITH_SHORT_OFFSET(){return k}static get TIME_WITH_LONG_OFFSET(){return _}static get TIME_24_SIMPLE(){return S}static get TIME_24_WITH_SECONDS(){return T}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return C}static get DATETIME_SHORT(){return E}static get DATETIME_SHORT_WITH_SECONDS(){return O}static get DATETIME_MED(){return I}static get DATETIME_MED_WITH_SECONDS(){return D}static get DATETIME_MED_WITH_WEEKDAY(){return N}static get DATETIME_FULL(){return M}static get DATETIME_FULL_WITH_SECONDS(){return F}static get DATETIME_HUGE(){return L}static get DATETIME_HUGE_WITH_SECONDS(){return $}}function ur(e){if(lr.isDateTime(e))return e;if(e&&e.valueOf&&Ne(e.valueOf()))return lr.fromJSDate(e);if(e&&"object"==typeof e)return lr.fromObject(e);throw new u(`Unknown datetime argument: ${e}, of type ${typeof e}`)}},2201:function(e,t,n){n.d(t,{AJ:function(){return D},MA:function(){return De},PO:function(){return O},p7:function(){return Ne},tv:function(){return Me},yj:function(){return Fe}});var r=n(6252),o=n(2262);const s="undefined"!=typeof window;const i=Object.assign;function a(e,t){const n={};for(const r in t){const o=t[r];n[r]=u(o)?o.map(e):e(o)}return n}const l=()=>{},u=Array.isArray,c=/\/$/,d=e=>e.replace(c,"");function f(e,t,n="/"){let r,o={},s="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),s=t.slice(l+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=function(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];".."!==o&&"."!==o||r.push("");let s,i,a=n.length-1;for(s=0;s1&&a--}return n.slice(0,a).join("/")+"/"+r.slice(s-(s===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:i}}function h(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function m(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function p(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!v(e[n],t[n]))return!1;return!0}function v(e,t){return u(e)?g(e,t):u(t)?g(t,e):e===t}function g(e,t){return u(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var y,w;!function(e){e.pop="pop",e.push="push"}(y||(y={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(w||(w={}));const b=/^[^#]+#/;function k(e,t){return e.replace(b,"#")+t}const _=()=>({left:window.pageXOffset,top:window.pageYOffset});function S(e,t){return(history.state?history.state.position-t:-1)+e}const T=new Map;let x=()=>location.protocol+"//"+location.host;function C(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let t=o.includes(e.slice(s))?e.slice(s).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),h(n,"")}return h(n,e)+r+o}function E(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?_():null}}function O(e){const t=function(e){const{history:t,location:n}=window,r={value:C(e,n)},o={value:t.state};function s(r,s,i){const a=e.indexOf("#"),l=a>-1?(n.host&&document.querySelector("base")?e:e.slice(a))+r:x()+e+r;try{t[i?"replaceState":"pushState"](s,"",l),o.value=s}catch(e){console.error(e),n[i?"replace":"assign"](l)}}return o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const a=i({},o.value,t.state,{forward:e,scroll:_()});s(a.current,a,!0),s(e,i({},E(r.value,e,null),{position:a.position+1},n),!1),r.value=e},replace:function(e,n){s(e,i({},t.state,E(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=function(e){if(!e)if(s){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),d(e)}(e)),n=function(e,t,n,r){let o=[],s=[],a=null;const l=({state:s})=>{const i=C(e,location),l=n.value,u=t.value;let c=0;if(s){if(n.value=i,t.value=s,a&&a===l)return void(a=null);c=u?s.position-u.position:0}else r(i);o.forEach((e=>{e(n.value,l,{delta:c,type:y.pop,direction:c?c>0?w.forward:w.back:w.unknown})}))};function u(){const{history:e}=window;e.state&&e.replaceState(i({},e.state,{scroll:_()}),"")}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:function(){a=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return s.push(t),t},destroy:function(){for(const e of s)e();s=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}}}(e,t.state,t.location,t.replace),r=i({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:k.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function I(e){return"string"==typeof e||"symbol"==typeof e}const D={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},N=Symbol("");var M;function F(e,t){return i(new Error,{type:e,[N]:!0},t)}function L(e,t){return e instanceof Error&&N in e&&(null==t||!!(e.type&t))}!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(M||(M={}));const $="[^/]+?",A={sensitive:!1,strict:!1,start:!0,end:!0},R=/[.+*?^${}()[\]/\\]/g;function V(e,t){let n=0;for(;nt.length?1===t.length&&80===t[0]?1:-1:0}function j(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const W={type:0,value:""},H=/[a-zA-Z0-9_]/;function U(e,t,n){const r=function(e,t){const n=i({},A,t),r=[];let o=n.start?"^":"";const s=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r1&&("*"===a||"+"===a)&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:c,repeatable:"*"===a||"+"===a,optional:"*"===a||"?"===a})):t("Invalid state to consume buffer"),u="")}function f(){u+=a}for(;li(e,t.meta)),{})}function B(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Y(e,t){return t.children.some((t=>t===e||Y(e,t)))}const G=/#/g,K=/&/g,X=/\//g,Q=/=/g,ee=/\?/g,te=/\+/g,ne=/%5B/g,re=/%5D/g,oe=/%5E/g,se=/%60/g,ie=/%7B/g,ae=/%7C/g,le=/%7D/g,ue=/%20/g;function ce(e){return encodeURI(""+e).replace(ae,"|").replace(ne,"[").replace(re,"]")}function de(e){return ce(e).replace(te,"%2B").replace(ue,"+").replace(G,"%23").replace(K,"%26").replace(se,"`").replace(ie,"{").replace(le,"}").replace(oe,"^")}function fe(e){return null==e?"":function(e){return ce(e).replace(G,"%23").replace(ee,"%3F")}(e).replace(X,"%2F")}function he(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function me(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;ee&&de(e))):[r&&de(r)]).forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))})):void 0!==r&&(t+=(t.length?"&":"")+n)}return t}function ve(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=u(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const ge=Symbol(""),ye=Symbol(""),we=Symbol(""),be=Symbol(""),ke=Symbol("");function _e(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e.slice(),reset:function(){e=[]}}}function Se(e,t,n,r,o){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((i,a)=>{const l=e=>{var l;!1===e?a(F(4,{from:n,to:t})):e instanceof Error?a(e):"string"==typeof(l=e)||l&&"object"==typeof l?a(F(2,{from:t,to:e})):(s&&r.enterCallbacks[o]===s&&"function"==typeof e&&s.push(e),i())},u=e.call(r&&r.instances[o],t,n,l);let c=Promise.resolve(u);e.length<3&&(c=c.then(l)),c.catch((e=>a(e)))}))}function Te(e,t,n,r){const o=[];for(const i of e)for(const e in i.components){let a=i.components[e];if("beforeRouteEnter"===t||i.instances[e])if("object"==typeof(s=a)||"displayName"in s||"props"in s||"__vccOpts"in s){const s=(a.__vccOpts||a)[t];s&&o.push(Se(s,n,r,i,e))}else{let s=a();o.push((()=>s.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${i.path}"`));const s=(a=o).__esModule||"Module"===a[Symbol.toStringTag]?o.default:o;var a;i.components[e]=s;const l=(s.__vccOpts||s)[t];return l&&Se(l,n,r,i,e)()}))))}}var s;return o}function xe(e){const t=(0,r.f3)(we),n=(0,r.f3)(be),s=(0,r.Fl)((()=>t.resolve((0,o.SU)(e.to)))),i=(0,r.Fl)((()=>{const{matched:e}=s.value,{length:t}=e,r=e[t-1],o=n.matched;if(!r||!o.length)return-1;const i=o.findIndex(m.bind(null,r));if(i>-1)return i;const a=Ee(e[t-2]);return t>1&&Ee(r)===a&&o[o.length-1].path!==a?o.findIndex(m.bind(null,e[t-2])):i})),a=(0,r.Fl)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!u(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,s.value.params))),c=(0,r.Fl)((()=>i.value>-1&&i.value===n.matched.length-1&&p(n.params,s.value.params)));return{route:s,href:(0,r.Fl)((()=>s.value.href)),isActive:a,isExactActive:c,navigate:function(n={}){return function(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}(n)?t[(0,o.SU)(e.replace)?"replace":"push"]((0,o.SU)(e.to)).catch(l):Promise.resolve()}}}const Ce=(0,r.aZ)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:xe,setup(e,{slots:t}){const n=(0,o.qj)(xe(e)),{options:s}=(0,r.f3)(we),i=(0,r.Fl)((()=>({[Oe(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Oe(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function Ee(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Oe=(e,t,n)=>null!=e?e:null!=t?t:n;function Ie(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const De=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=(0,r.f3)(ke),a=(0,r.Fl)((()=>e.route||s.value)),l=(0,r.f3)(ye,0),u=(0,r.Fl)((()=>{let e=(0,o.SU)(l);const{matched:t}=a.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),c=(0,r.Fl)((()=>a.value.matched[u.value]));(0,r.JJ)(ye,(0,r.Fl)((()=>u.value+1))),(0,r.JJ)(ge,c),(0,r.JJ)(ke,a);const d=(0,o.iH)();return(0,r.YP)((()=>[d.value,c.value,e.name]),(([e,t,n],[r,o,s])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&m(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=a.value,s=e.name,l=c.value,u=l&&l.components[s];if(!u)return Ie(n.default,{Component:u,route:o});const f=l.props[s],h=f?!0===f?o.params:"function"==typeof f?f(o):f:null,m=(0,r.h)(u,i({},h,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(l.instances[s]=null)},ref:d}));return Ie(n.default,{Component:m,route:o})||m}}});function Ne(e){const t=function(e,t){const n=[],r=new Map;function o(e,n,r){const u=!r,c=function(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:Z(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}(e);c.aliasOf=r&&r.record;const d=B(t,e),f=[c];if("alias"in e){const t="string"==typeof e.alias?[e.alias]:e.alias;for(const e of t)f.push(i({},c,{components:r?r.record.components:c.components,path:e,aliasOf:r?r.record:c}))}let h,m;for(const t of f){const{path:i}=t;if(n&&"/"!==i[0]){const e=n.record.path,r="/"===e[e.length-1]?"":"/";t.path=n.record.path+(i&&r+i)}if(h=U(t,n,d),r?r.alias.push(h):(m=m||h,m!==h&&m.alias.push(h),u&&e.name&&!q(h)&&s(e.name)),c.children){const e=c.children;for(let t=0;t{s(m)}:l}function s(e){if(I(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(s),t.alias.forEach(s))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(s),e.alias.forEach(s))}}function a(e){let t=0;for(;t=0&&(e.record.path!==n[t].record.path||!Y(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!q(e)&&r.set(e.record.name,e)}return t=B({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,s,a,l={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw F(1,{location:e});a=o.record.name,l=i(P(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&P(e.params,o.keys.map((e=>e.name)))),s=o.stringify(l)}else if("path"in e)s=e.path,o=n.find((e=>e.re.test(s))),o&&(l=o.parse(s),a=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw F(1,{location:e,currentLocation:t});a=o.record.name,l=i({},t.params,e.params),s=o.stringify(l)}const u=[];let c=o;for(;c;)u.unshift(c.record),c=c.parent;return{name:a,path:s,params:l,matched:u,meta:J(u)}},removeRoute:s,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}(e.routes,e),n=e.parseQuery||me,c=e.stringifyQuery||pe,d=e.history,h=_e(),v=_e(),g=_e(),w=(0,o.XI)(D);let b=D;s&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const k=a.bind(null,(e=>""+e)),x=a.bind(null,fe),C=a.bind(null,he);function E(e,r){if(r=i({},r||w.value),"string"==typeof e){const o=f(n,e,r.path),s=t.resolve({path:o.path},r),a=d.createHref(o.fullPath);return i(o,s,{params:C(s.params),hash:he(o.hash),redirectedFrom:void 0,href:a})}let o;if("path"in e)o=i({},e,{path:f(n,e.path,r.path).path});else{const t=i({},e.params);for(const e in t)null==t[e]&&delete t[e];o=i({},e,{params:x(t)}),r.params=x(r.params)}const s=t.resolve(o,r),a=e.hash||"";s.params=k(C(s.params));const l=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(c,i({},e,{hash:(u=a,ce(u).replace(ie,"{").replace(le,"}").replace(oe,"^")),path:s.path}));var u;const h=d.createHref(l);return i({fullPath:l,hash:a,query:c===pe?ve(e.query):e.query||{}},s,{redirectedFrom:void 0,href:h})}function O(e){return"string"==typeof e?f(n,e,w.value.path):i({},e)}function N(e,t){if(b!==e)return F(8,{from:t,to:e})}function M(e){return A(e)}function $(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=O(r):{path:r},r.params={}),i({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function A(e,t){const n=b=E(e),r=w.value,o=e.state,s=e.force,a=!0===e.replace,l=$(n);if(l)return A(i(O(l),{state:"object"==typeof l?i({},o,l.state):o,force:s,replace:a}),t||n);const u=n;let d;return u.redirectedFrom=t,!s&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&m(t.matched[r],n.matched[o])&&p(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(c,r,n)&&(d=F(16,{to:u,from:r}),ne(r,r,!0,!1)),(d?Promise.resolve(d):z(u,r)).catch((e=>L(e)?L(e,2)?e:te(e):ee(e,u,r))).then((e=>{if(e){if(L(e,2))return A(i({replace:a},O(e.to),{state:"object"==typeof e.to?i({},o,e.to.state):o,force:s}),t||u)}else e=H(u,r,!0,a,o);return W(u,r,e),e}))}function R(e,t){const n=N(e,t);return n?Promise.reject(n):Promise.resolve()}function V(e){const t=ae.values().next().value;return t&&"function"==typeof t.runWithContext?t.runWithContext(e):e()}function z(e,t){let n;const[r,o,s]=function(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;im(e,s)))?r.push(s):n.push(s));const a=e.matched[i];a&&(t.matched.find((e=>m(e,a)))||o.push(a))}return[n,r,o]}(e,t);n=Te(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(Se(r,e,t))}));const i=R.bind(null,e,t);return n.push(i),de(n).then((()=>{n=[];for(const r of h.list())n.push(Se(r,e,t));return n.push(i),de(n)})).then((()=>{n=Te(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(Se(r,e,t))}));return n.push(i),de(n)})).then((()=>{n=[];for(const r of s)if(r.beforeEnter)if(u(r.beforeEnter))for(const o of r.beforeEnter)n.push(Se(o,e,t));else n.push(Se(r.beforeEnter,e,t));return n.push(i),de(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=Te(s,"beforeRouteEnter",e,t),n.push(i),de(n)))).then((()=>{n=[];for(const r of v.list())n.push(Se(r,e,t));return n.push(i),de(n)})).catch((e=>L(e,8)?e:Promise.reject(e)))}function W(e,t,n){g.list().forEach((r=>V((()=>r(e,t,n)))))}function H(e,t,n,r,o){const a=N(e,t);if(a)return a;const l=t===D,u=s?history.state:{};n&&(r||l?d.replace(e.fullPath,i({scroll:l&&u&&u.scroll},o)):d.push(e.fullPath,o)),w.value=e,ne(e,t,n,l),te()}let G;let K,X=_e(),Q=_e();function ee(e,t,n){te(e);const r=Q.list();return r.length?r.forEach((r=>r(e,t,n))):console.error(e),Promise.reject(e)}function te(e){return K||(K=!e,G||(G=d.listen(((e,t,n)=>{if(!ue.listening)return;const r=E(e),o=$(r);if(o)return void A(i(o,{replace:!0}),r).catch(l);b=r;const a=w.value;var u,c;s&&(u=S(a.fullPath,n.delta),c=_(),T.set(u,c)),z(r,a).catch((e=>L(e,12)?e:L(e,2)?(A(e.to,r).then((e=>{L(e,20)&&!n.delta&&n.type===y.pop&&d.go(-1,!1)})).catch(l),Promise.reject()):(n.delta&&d.go(-n.delta,!1),ee(e,r,a)))).then((e=>{(e=e||H(r,a,!1))&&(n.delta&&!L(e,8)?d.go(-n.delta,!1):n.type===y.pop&&L(e,20)&&d.go(-1,!1)),W(r,a,e)})).catch(l)}))),X.list().forEach((([t,n])=>e?n(e):t())),X.reset()),e}function ne(t,n,o,i){const{scrollBehavior:a}=e;if(!s||!a)return Promise.resolve();const l=!o&&function(e){const t=T.get(e);return T.delete(e),t}(S(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>a(t,n,l))).then((e=>e&&function(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#"),o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}(e))).catch((e=>ee(e,t,n)))}const re=e=>d.go(e);let se;const ae=new Set,ue={currentRoute:w,listening:!0,addRoute:function(e,n){let r,o;return I(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:E,options:e,push:M,replace:function(e){return M(i(O(e),{replace:!0}))},go:re,back:()=>re(-1),forward:()=>re(1),beforeEach:h.add,beforeResolve:v.add,afterEach:g.add,onError:Q.add,isReady:function(){return K&&w.value!==D?Promise.resolve():new Promise(((e,t)=>{X.add([e,t])}))},install(e){e.component("RouterLink",Ce),e.component("RouterView",De),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.SU)(w)}),s&&!se&&w.value===D&&(se=!0,M(d.location).catch((e=>{})));const t={};for(const e in D)Object.defineProperty(t,e,{get:()=>w.value[e],enumerable:!0});e.provide(we,this),e.provide(be,(0,o.Um)(t)),e.provide(ke,w);const n=e.unmount;ae.add(e),e.unmount=function(){ae.delete(e),ae.size<1&&(b=D,G&&G(),G=null,w.value=D,se=!1,K=!1),n()}}};function de(e){return e.reduce(((e,t)=>e.then((()=>V(t)))),Promise.resolve())}return ue}function Me(){return(0,r.f3)(we)}function Fe(){return(0,r.f3)(be)}},4273:function(e,t,n){n.d(t,{C3:function(){return r.C3},I:function(){return r.I},I2:function(){return r.I2},I5:function(){return r.I5},Vi:function(){return r.Vi},WF:function(){return r.WF},pJ:function(){return r.pJ},qx:function(){return r.qx},r$:function(){return r.r$}});var r=n(4393)}}]); \ No newline at end of file diff --git a/assets/js/989.281c0d35.js.LICENSE.txt b/assets/js/989.281c0d35.js.LICENSE.txt new file mode 100644 index 00000000..27597925 --- /dev/null +++ b/assets/js/989.281c0d35.js.LICENSE.txt @@ -0,0 +1,38 @@ +/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */ + +/*! #__NO_SIDE_EFFECTS__ */ + +/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */ + +/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */ + +/** +* @vue/reactivity v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ + +/** +* @vue/runtime-core v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ + +/** +* @vue/runtime-dom v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ + +/** +* @vue/shared v3.4.15 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/ diff --git a/assets/js/app.a1aa489b.js b/assets/js/app.a1aa489b.js new file mode 100644 index 00000000..a1182db0 --- /dev/null +++ b/assets/js/app.a1aa489b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[143],{1477:function(e,t,i){i.d(t,{W:function(){return A}});var l=i(4889),n=i(4407),a=i(3487),r=i(5281),s=i(7699),c=i(3921),o=i(6139),h=i(5285),u=i(4393),d=i(6252),p=i(2262),v=i(6942),g=i(3577),k=(0,d.aZ)({name:"VersionDisclaimer",props:{type:{type:String,default:"info"},label:{type:String}},setup(e){const t=e.type,i=e.label;return{css:(0,d.Fl)((()=>({"version-disclaimer":!0,[t]:!0}))),label:(0,d.Fl)((()=>i||t.charAt(0).toUpperCase()+t.slice(1))),type:t}}}),m=(0,i(3744).Z)(k,[["render",function(e,t,i,l,n,a){return(0,d.wg)(),(0,d.iD)("div",{class:(0,g.C_)(e.css)},[(0,d._)("label",null,(0,g.zw)(e.label),1),(0,d.WI)(e.$slots,"default")],2)}]]);function b(e,t){return t.startsWith("/")||(t="/"+t),(e+t).replaceAll("//","/")}function f(e,t){const i=t.nextFullPath;return e.value.path.startsWith(i)}class x{_name;_path;_archive=null;pages;constructor(e,t,i=[]){this._name=e,this._path=t,this.pages=i}static make(e,t,i=[]){return new this(e,t,i)}set name(e){this._name=e}get name(){return this._name}set path(e){this._path=e}get path(){return this._path}get fullPath(){return this.prefixWithArchivePath(this.path)}set archive(e){this._archive=e}get archive(){return this._archive}asNavigationItem(){return{text:this.name,link:this.fullPath}}asSidebarObject(){return{[this.fullPath]:this.sidebar()}}sidebar(){return this.resolvePages(this.pages)}resolvePages(e){return e.forEach(((e,t,i)=>{i[t]=this.resolvePage(e)})),e}resolvePage(e){return"string"==typeof e?this.prefixWillFullPath(e):Reflect.has(e,"children")&&0!==e.children.length?(e.children.forEach(((e,t,i)=>{i[t]=this.resolvePage(e)})),e):e}prefixWillFullPath(e){return b(this.fullPath,e)}prefixWithArchivePath(e){return b(null!==this.archive?this.archive.path:"",e)}}const y=x.make("v0.x","/v0x",[{text:"Version 0.x",collapsible:!0,children:["","upgrade-guide","contribution-guide","security","code-of-conduct","origin"]},{text:"Packages",collapsible:!0,children:["packages/",{text:"Contracts",collapsible:!0,children:["packages/contracts/","packages/contracts/install"]},{text:"Support",collapsible:!0,children:["packages/support/","packages/support/install","packages/support/mixins","packages/support/meta","packages/support/objects","packages/support/reflections","packages/support/misc"]},{text:"Vuepress Utils",collapsible:!0,children:["packages/vuepress-utils/","packages/vuepress-utils/install",{text:"Navigation",collapsible:!0,children:["packages/vuepress-utils/navigation/archive"]},{text:"Plugins",collapsible:!0,children:["packages/vuepress-utils/plugins/last-updated"]},{text:"Components",collapsible:!0,children:["packages/vuepress-utils/components/version-disclaimer"]}]},"packages/xyz/"]}]),C=x.make("v1.x","/v1x",[{text:"Version 1.x",collapsible:!0,children:[""]}]),w=[C,y];var _=class{_name="Archive";_path="/archive";_current;_next;_collections=[];_currentLabel="current";_nextLabel="next";_currentPath="/current";_nextPath="/next";constructor(e,t,i=[]){this._current=e,this._next=t,this.collections=i}static make(e,t,i=[]){return new this(e,t,i)}set name(e){this._name=e}get name(){return this._name}set path(e){this._path=e}get path(){return this._path}set current(e){this._current=e}get current(){return this._current}set next(e){this._next=e}get next(){return this._next}set collections(e){e.forEach((e=>{e.archive=this})),this._collections=e}get collections(){return this.markCurrentAndNextCollections(this._collections)}set currentLabel(e){this._currentLabel=e}get currentLabel(){return this._currentLabel}set nextLabel(e){this._nextLabel=e}get nextLabel(){return this._nextLabel}set currentPath(e){this._currentPath=e}get currentPath(){return this._currentPath}get currentFullPath(){return b(this.path,this.currentPath)}set nextPath(e){this._nextPath=e}get nextPath(){return this._nextPath}get nextFullPath(){return b(this.path,this.nextPath)}asNavigationItem(){return{text:this.name,link:this.path,children:this.makeNavbarItemChildren()}}sidebarConfiguration(){let e={};return this.collections.forEach((t=>{e=Object.assign(e,t.asSidebarObject())})),e}makeNavbarItemChildren(){const e=[];return this.collections.forEach((t=>{e.push(t.asNavigationItem())})),e}markCurrentAndNextCollections(e){return e.forEach((e=>{e===this.next&&(e.name=this.nextLabel,e.path=this.nextPath),e===this.current&&(e.name=this.currentLabel,e.path=this.currentPath)})),e}}.make(y,C,w);const L=(0,d._)("strong",null,"It has not yet been released!",-1),P=(0,d._)("strong",null,"It is no longer supported!",-1);var R=(0,d.aZ)({__name:"Layout",setup(e){const t=(0,u.Vi)(),i=function(e,t){return(0,d.Fl)((()=>f(e,t)))}(t,_),l=function(e,t,i=["/"]){return(0,d.Fl)((()=>function(e,t,i=["/"]){const l=e.value.path;return!i.includes(l)&&l!==t.path+"/"&&!f(e,t)&&!function(e,t){const i=t.currentFullPath;return e.value.path.startsWith(i)}(e,t)}(e,t,i)))}(t,_);return(e,t)=>((0,d.wg)(),(0,d.j4)(v.Z,null,{"page-top":(0,d.w5)((()=>[(0,p.SU)(i)?((0,d.wg)(),(0,d.j4)(m,{key:0},{default:(0,d.w5)((()=>[(0,d.Uk)(" You are viewing documentation for an upcoming version. "),L,(0,d.Uk)("! ")])),_:1})):(0,d.kq)("",!0),(0,p.SU)(l)?((0,d.wg)(),(0,d.j4)(m,{key:1,type:"danger",label:"Warning"},{default:(0,d.w5)((()=>[(0,d.Uk)(" You are viewing documentation for an outdated version. "),P])),_:1})):(0,d.kq)("",!0)])),_:1}))}}),F=(0,u.r$)({enhance({app:e,router:t,siteData:i}){},setup(){},rootComponents:[],layouts:{Layout:R}});const A=[l.Z,n.Z,a.Z,r.Z,s.Z,c.Z,o.Z,h.Z,F]},6056:function(e,t,i){i.d(t,{b:function(){return n}});var l=i(6252);const n={"v-8daa1a0e":(0,l.RC)((()=>i.e(509).then(i.bind(i,8728)))),"v-705c21a6":(0,l.RC)((()=>i.e(888).then(i.bind(i,9904)))),"v-6628b2c2":(0,l.RC)((()=>i.e(399).then(i.bind(i,2627)))),"v-6d570d7c":(0,l.RC)((()=>i.e(435).then(i.bind(i,3382)))),"v-41ce79e7":(0,l.RC)((()=>i.e(621).then(i.bind(i,6308)))),"v-7a57a83e":(0,l.RC)((()=>i.e(109).then(i.bind(i,5398)))),"v-6bbff312":(0,l.RC)((()=>i.e(242).then(i.bind(i,3352)))),"v-93f9e4c6":(0,l.RC)((()=>i.e(138).then(i.bind(i,6132)))),"v-efab5bac":(0,l.RC)((()=>i.e(378).then(i.bind(i,5963)))),"v-4ada6c94":(0,l.RC)((()=>i.e(425).then(i.bind(i,8181)))),"v-1e43a6e6":(0,l.RC)((()=>i.e(429).then(i.bind(i,6345)))),"v-c5cc3bd8":(0,l.RC)((()=>i.e(945).then(i.bind(i,4703)))),"v-f7a66f9c":(0,l.RC)((()=>i.e(794).then(i.bind(i,9398)))),"v-5d96db26":(0,l.RC)((()=>i.e(863).then(i.bind(i,1568)))),"v-bd9a9378":(0,l.RC)((()=>i.e(600).then(i.bind(i,7057)))),"v-5f62758e":(0,l.RC)((()=>i.e(161).then(i.bind(i,7864)))),"v-652ac1f2":(0,l.RC)((()=>i.e(514).then(i.bind(i,6395)))),"v-8b586dbe":(0,l.RC)((()=>i.e(213).then(i.bind(i,9639)))),"v-10f2da6b":(0,l.RC)((()=>i.e(880).then(i.bind(i,5532)))),"v-296d8152":(0,l.RC)((()=>i.e(910).then(i.bind(i,8780)))),"v-c4c6a970":(0,l.RC)((()=>i.e(639).then(i.bind(i,889)))),"v-24676366":(0,l.RC)((()=>i.e(81).then(i.bind(i,9318)))),"v-74e2259c":(0,l.RC)((()=>i.e(830).then(i.bind(i,2190)))),"v-2d9bb678":(0,l.RC)((()=>i.e(755).then(i.bind(i,8498)))),"v-1aa7d52a":(0,l.RC)((()=>i.e(447).then(i.bind(i,6667)))),"v-8ef60844":(0,l.RC)((()=>i.e(171).then(i.bind(i,5247)))),"v-3706649a":(0,l.RC)((()=>i.e(88).then(i.bind(i,6172))))}},9706:function(e,t,i){i.d(t,{T:function(){return l}});const l={"v-8daa1a0e":()=>i.e(509).then(i.bind(i,6464)).then((({data:e})=>e)),"v-705c21a6":()=>i.e(888).then(i.bind(i,6762)).then((({data:e})=>e)),"v-6628b2c2":()=>i.e(399).then(i.bind(i,691)).then((({data:e})=>e)),"v-6d570d7c":()=>i.e(435).then(i.bind(i,1857)).then((({data:e})=>e)),"v-41ce79e7":()=>i.e(621).then(i.bind(i,6314)).then((({data:e})=>e)),"v-7a57a83e":()=>i.e(109).then(i.bind(i,661)).then((({data:e})=>e)),"v-6bbff312":()=>i.e(242).then(i.bind(i,757)).then((({data:e})=>e)),"v-93f9e4c6":()=>i.e(138).then(i.bind(i,8017)).then((({data:e})=>e)),"v-efab5bac":()=>i.e(378).then(i.bind(i,7369)).then((({data:e})=>e)),"v-4ada6c94":()=>i.e(425).then(i.bind(i,4464)).then((({data:e})=>e)),"v-1e43a6e6":()=>i.e(429).then(i.bind(i,327)).then((({data:e})=>e)),"v-c5cc3bd8":()=>i.e(945).then(i.bind(i,6102)).then((({data:e})=>e)),"v-f7a66f9c":()=>i.e(794).then(i.bind(i,4808)).then((({data:e})=>e)),"v-5d96db26":()=>i.e(863).then(i.bind(i,6432)).then((({data:e})=>e)),"v-bd9a9378":()=>i.e(600).then(i.bind(i,6993)).then((({data:e})=>e)),"v-5f62758e":()=>i.e(161).then(i.bind(i,8047)).then((({data:e})=>e)),"v-652ac1f2":()=>i.e(514).then(i.bind(i,8759)).then((({data:e})=>e)),"v-8b586dbe":()=>i.e(213).then(i.bind(i,4762)).then((({data:e})=>e)),"v-10f2da6b":()=>i.e(880).then(i.bind(i,173)).then((({data:e})=>e)),"v-296d8152":()=>i.e(910).then(i.bind(i,7733)).then((({data:e})=>e)),"v-c4c6a970":()=>i.e(639).then(i.bind(i,4661)).then((({data:e})=>e)),"v-24676366":()=>i.e(81).then(i.bind(i,2642)).then((({data:e})=>e)),"v-74e2259c":()=>i.e(830).then(i.bind(i,7620)).then((({data:e})=>e)),"v-2d9bb678":()=>i.e(755).then(i.bind(i,9553)).then((({data:e})=>e)),"v-1aa7d52a":()=>i.e(447).then(i.bind(i,6726)).then((({data:e})=>e)),"v-8ef60844":()=>i.e(171).then(i.bind(i,8032)).then((({data:e})=>e)),"v-3706649a":()=>i.e(88).then(i.bind(i,1801)).then((({data:e})=>e))}},4634:function(e,t,i){i.d(t,{g:function(){return l}});const l=[["v-8daa1a0e","/",{title:""},["/README.md"]],["v-705c21a6","/archive/",{title:"Archive"},["/archive/README.md"]],["v-6628b2c2","/archive/not_available.html",{title:"Not Available"},[":md"]],["v-6d570d7c","/archive/current/",{title:"Release Notes"},["/archive/current/README.md"]],["v-41ce79e7","/archive/current/code-of-conduct.html",{title:"Code of Conduct"},[":md"]],["v-7a57a83e","/archive/current/contribution-guide.html",{title:"Contribution Guide"},[":md"]],["v-6bbff312","/archive/current/origin.html",{title:"Origin"},[":md"]],["v-93f9e4c6","/archive/current/security.html",{title:"Security Policy"},[":md"]],["v-efab5bac","/archive/current/upgrade-guide.html",{title:"Upgrade Guide"},[":md"]],["v-4ada6c94","/archive/next/",{title:"Not Available"},["/archive/next/README.md"]],["v-1e43a6e6","/archive/current/packages/",{title:"Introduction"},["/archive/current/packages/README.md"]],["v-c5cc3bd8","/archive/current/packages/contracts/",{title:"Introduction"},["/archive/current/packages/contracts/README.md"]],["v-f7a66f9c","/archive/current/packages/contracts/install.html",{title:"How to install"},[":md"]],["v-5d96db26","/archive/current/packages/support/",{title:"Introduction"},["/archive/current/packages/support/README.md"]],["v-bd9a9378","/archive/current/packages/support/install.html",{title:"How to install"},[":md"]],["v-5f62758e","/archive/current/packages/support/meta.html",{title:"Meta"},[":md"]],["v-652ac1f2","/archive/current/packages/support/misc.html",{title:"Misc."},[":md"]],["v-8b586dbe","/archive/current/packages/support/mixins.html",{title:"Mixins"},[":md"]],["v-10f2da6b","/archive/current/packages/support/objects.html",{title:"Objects"},[":md"]],["v-296d8152","/archive/current/packages/support/reflections.html",{title:"Reflections"},[":md"]],["v-c4c6a970","/archive/current/packages/vuepress-utils/",{title:"Introduction"},["/archive/current/packages/vuepress-utils/README.md"]],["v-24676366","/archive/current/packages/vuepress-utils/install.html",{title:"How to install"},[":md"]],["v-74e2259c","/archive/current/packages/xyz/",{title:"XYZ (test package)"},["/archive/current/packages/xyz/README.md"]],["v-2d9bb678","/archive/current/packages/vuepress-utils/components/version-disclaimer.html",{title:"Version Disclaimer"},[":md"]],["v-1aa7d52a","/archive/current/packages/vuepress-utils/navigation/archive.html",{title:"Archive"},[":md"]],["v-8ef60844","/archive/current/packages/vuepress-utils/plugins/last-updated.html",{title:"Last Updated"},[":md"]],["v-3706649a","/404.html",{title:""},[]]]},5472:function(e,t,i){i.d(t,{D:function(){return l}});const l=[{title:"Release Notes",headers:[{level:2,title:"Support Policy",slug:"support-policy",link:"#support-policy",children:[]},{level:2,title:"v0.x Highlights",slug:"v0-x-highlights",link:"#v0-x-highlights",children:[{level:3,title:"Mixins",slug:"mixins",link:"#mixins",children:[]},{level:3,title:'"Target" Meta Decorator',slug:"target-meta-decorator",link:"#target-meta-decorator",children:[]},{level:3,title:"Meta Decorator",slug:"meta-decorator",link:"#meta-decorator",children:[]},{level:3,title:"Support",slug:"support",link:"#support",children:[]},{level:3,title:"Vuepress Utils",slug:"vuepress-utils",link:"#vuepress-utils",children:[]}]}],path:"/archive/current/",pathLocale:"/",extraFields:["Ion Release Notes"]},{title:"Code of Conduct",headers:[{level:2,title:"Consequences",slug:"consequences",link:"#consequences",children:[]}],path:"/archive/current/code-of-conduct.html",pathLocale:"/",extraFields:["Code of Conduct - Ion"]},{title:"Contribution Guide",headers:[{level:2,title:"Bug Report",slug:"bug-report",link:"#bug-report",children:[]},{level:2,title:"Security Vulnerability",slug:"security-vulnerability",link:"#security-vulnerability",children:[]},{level:2,title:"Feature Request",slug:"feature-request",link:"#feature-request",children:[]},{level:2,title:"Fork, code and send pull-request",slug:"fork-code-and-send-pull-request",link:"#fork-code-and-send-pull-request",children:[]}],path:"/archive/current/contribution-guide.html",pathLocale:"/",extraFields:["How to contribute to Ion"]},{title:"Origin",headers:[{level:2,title:'Meaning of "Ion"',slug:"meaning-of-ion",link:"#meaning-of-ion",children:[]}],path:"/archive/current/origin.html",pathLocale:"/",extraFields:["The origin of Ion"]},{title:"Security Policy",headers:[{level:2,title:"How to report a vulnerability",slug:"how-to-report-a-vulnerability",link:"#how-to-report-a-vulnerability",children:[{level:3,title:"Public PGP Key",slug:"public-pgp-key",link:"#public-pgp-key",children:[]}]},{level:2,title:"Supported Versions",slug:"supported-versions",link:"#supported-versions",children:[]}],path:"/archive/current/security.html",pathLocale:"/",extraFields:["Security Policy of Athenaeum"]},{title:"Upgrade Guide",headers:[{level:2,title:"From v0.6.x to v0.7.x",slug:"from-v0-6-x-to-v0-7-x",link:"#from-v0-6-x-to-v0-7-x",children:[{level:3,title:"Node.js 20.11.0 Required",slug:"node-js-20-11-0-required",link:"#node-js-20-11-0-required",children:[]},{level:3,title:"Meta",slug:"meta",link:"#meta",children:[]},{level:3,title:"Vuepress Utils",slug:"vuepress-utils",link:"#vuepress-utils",children:[]}]},{level:2,title:"From v0.3.x to v0.4.x",slug:"from-v0-3-x-to-v0-4-x",link:"#from-v0-3-x-to-v0-4-x",children:[{level:3,title:"Rest Parameters for forgetAll(), hasAll() and hasAny()",slug:"rest-parameters-for-forgetall-hasall-and-hasany",link:"#rest-parameters-for-forgetall-hasall-and-hasany",children:[]}]},{level:2,title:"Onward",slug:"onward",link:"#onward",children:[]}],path:"/archive/current/upgrade-guide.html",pathLocale:"/",extraFields:["Ion Upgrade Guide"]},{title:"Introduction",headers:[{level:2,title:"Environment",slug:"environment",link:"#environment",children:[]},{level:2,title:"Available Since",slug:"available-since",link:"#available-since",children:[]},{level:2,title:"Not Released",slug:"not-released",link:"#not-released",children:[]},{level:2,title:"Not Published",slug:"not-published",link:"#not-published",children:[]}],path:"/archive/current/packages/",pathLocale:"/",extraFields:["Ion Packages"]},{title:"Introduction",headers:[],path:"/archive/current/packages/contracts/",pathLocale:"/",extraFields:["Ion Support package"]},{title:"How to install",headers:[{level:2,title:"npm",slug:"npm",link:"#npm",children:[]},{level:2,title:"yarn",slug:"yarn",link:"#yarn",children:[]},{level:2,title:"pnpm",slug:"pnpm",link:"#pnpm",children:[]}],path:"/archive/current/packages/contracts/install.html",pathLocale:"/",extraFields:["How to install Ion Contracts package"]},{title:"Introduction",headers:[],path:"/archive/current/packages/support/",pathLocale:"/",extraFields:["Ion Support package"]},{title:"How to install",headers:[{level:2,title:"npm",slug:"npm",link:"#npm",children:[]},{level:2,title:"yarn",slug:"yarn",link:"#yarn",children:[]},{level:2,title:"pnpm",slug:"pnpm",link:"#pnpm",children:[]}],path:"/archive/current/packages/support/install.html",pathLocale:"/",extraFields:["How to install Ion Support package"]},{title:"Meta",headers:[{level:2,title:"Prerequisites",slug:"prerequisites",link:"#prerequisites",children:[]},{level:2,title:"Supported Elements",slug:"supported-elements",link:"#supported-elements",children:[]},{level:2,title:"Defining and Retrieving Metadata",slug:"defining-and-retrieving-metadata",link:"#defining-and-retrieving-metadata",children:[{level:3,title:"Default Value",slug:"default-value",link:"#default-value",children:[]},{level:3,title:"Callback",slug:"callback",link:"#callback",children:[]}]},{level:2,title:"Inheritance",slug:"inheritance",link:"#inheritance",children:[{level:3,title:"Overwrites",slug:"overwrites",link:"#overwrites",children:[]}]},{level:2,title:"Changes outside the decorator",slug:"changes-outside-the-decorator",link:"#changes-outside-the-decorator",children:[]},{level:2,title:"TC39 Decorator Metadata",slug:"tc39-decorator-metadata",link:"#tc39-decorator-metadata",children:[]},{level:2,title:"Target Meta",slug:"target-meta",link:"#target-meta",children:[{level:3,title:"Inheritance",slug:"inheritance-1",link:"#inheritance-1",children:[]}]}],path:"/archive/current/packages/support/meta.html",pathLocale:"/",extraFields:["Add arbitrary metadata on classes, methods and properties."]},{title:"Misc.",headers:[{level:2,title:"descTag",slug:"desctag",link:"#desctag",children:[]},{level:2,title:"empty",slug:"empty",link:"#empty",children:[]},{level:2,title:"isKey",slug:"iskey",link:"#iskey",children:[]},{level:2,title:"isPrimitive",slug:"isprimitive",link:"#isprimitive",children:[]},{level:2,title:"isPropertyKey",slug:"ispropertykey",link:"#ispropertykey",children:[]},{level:2,title:"isset",slug:"isset",link:"#isset",children:[]},{level:2,title:"mergeKeys",slug:"mergekeys",link:"#mergekeys",children:[]},{level:2,title:"toWeakRef",slug:"toweakref",link:"#toweakref",children:[]}],path:"/archive/current/packages/support/misc.html",pathLocale:"/",extraFields:["Misc. utilities"]},{title:"Mixins",headers:[{level:2,title:"Define Mixin",slug:"define-mixin",link:"#define-mixin",children:[{level:3,title:"Constructor",slug:"constructor",link:"#constructor",children:[]}]},{level:2,title:"Applying Mixins",slug:"applying-mixins",link:"#applying-mixins",children:[{level:3,title:"Extending Other Classes",slug:"extending-other-classes",link:"#extending-other-classes",children:[]}]},{level:2,title:"instanceof Operator",slug:"instanceof-operator",link:"#instanceof-operator",children:[]},{level:2,title:"How inheritance works",slug:"how-inheritance-works",link:"#how-inheritance-works",children:[]},{level:2,title:"Onward",slug:"onward",link:"#onward",children:[]}],path:"/archive/current/packages/support/mixins.html",pathLocale:"/",extraFields:['Abstract subclasses ("Mixins") utilities']},{title:"Objects",headers:[{level:2,title:"forget",slug:"forget",link:"#forget",children:[]},{level:2,title:"forgetAll",slug:"forgetall",link:"#forgetall",children:[]},{level:2,title:"get",slug:"get",link:"#get",children:[]},{level:2,title:"has",slug:"has",link:"#has",children:[]},{level:2,title:"hasAll",slug:"hasall",link:"#hasall",children:[]},{level:2,title:"hasAny",slug:"hasany",link:"#hasany",children:[]},{level:2,title:"hasUniqueId",slug:"hasuniqueid",link:"#hasuniqueid",children:[]},{level:2,title:"isset",slug:"isset",link:"#isset",children:[]},{level:2,title:"set",slug:"set",link:"#set",children:[]},{level:2,title:"uniqueId",slug:"uniqueid",link:"#uniqueid",children:[]}],path:"/archive/current/packages/support/objects.html",pathLocale:"/",extraFields:["Objects related utilities"]},{title:"Reflections",headers:[{level:2,title:"isConstructor",slug:"isconstructor",link:"#isconstructor",children:[]}],path:"/archive/current/packages/support/reflections.html",pathLocale:"/",extraFields:["Reflection utilities"]},{title:"Introduction",headers:[{level:2,title:"Navigation",slug:"navigation",link:"#navigation",children:[]},{level:2,title:"Plugins",slug:"plugins",link:"#plugins",children:[]},{level:2,title:"Components",slug:"components",link:"#components",children:[]}],path:"/archive/current/packages/vuepress-utils/",pathLocale:"/",extraFields:["Various helpers for your vuepress site"]},{title:"How to install",headers:[{level:2,title:"npm",slug:"npm",link:"#npm",children:[]},{level:2,title:"yarn",slug:"yarn",link:"#yarn",children:[]},{level:2,title:"pnpm",slug:"pnpm",link:"#pnpm",children:[]}],path:"/archive/current/packages/vuepress-utils/install.html",pathLocale:"/",extraFields:["How to install Vuepress Utils"]},{title:"XYZ (test package)",headers:[],path:"/archive/current/packages/xyz/",pathLocale:"/",extraFields:["XYZ Test Package"]},{title:"Version Disclaimer",headers:[{level:2,title:"Properties",slug:"properties",link:"#properties",children:[{level:3,title:"type (optional)",slug:"type-optional",link:"#type-optional",children:[]},{level:3,title:"label (optional)",slug:"label-optional",link:"#label-optional",children:[]}]},{level:2,title:"Extend Default Layout",slug:"extend-default-layout",link:"#extend-default-layout",children:[]},{level:2,title:"Client Config",slug:"client-config",link:"#client-config",children:[]}],path:"/archive/current/packages/vuepress-utils/components/version-disclaimer.html",pathLocale:"/",extraFields:["A simple notice container"]},{title:"Archive",headers:[{level:2,title:"Directory Structure",slug:"directory-structure",link:"#directory-structure",children:[]},{level:2,title:"Collections",slug:"collections",link:"#collections",children:[]},{level:2,title:"Archive Instance",slug:"archive-instance",link:"#archive-instance",children:[{level:3,title:"Name & Path",slug:"name-path",link:"#name-path",children:[]},{level:3,title:"Current & Next",slug:"current-next",link:"#current-next",children:[]}]},{level:2,title:"Vuepress Config File",slug:"vuepress-config-file",link:"#vuepress-config-file",children:[]},{level:2,title:"Onward",slug:"onward",link:"#onward",children:[]}],path:"/archive/current/packages/vuepress-utils/navigation/archive.html",pathLocale:"/",extraFields:["Archive Structure and Navigation"]},{title:"Last Updated",headers:[{level:2,title:"How to use",slug:"how-to-use",link:"#how-to-use",children:[]},{level:2,title:"Format",slug:"format",link:"#format",children:[]}],path:"/archive/current/packages/vuepress-utils/plugins/last-updated.html",pathLocale:"/",extraFields:["Last Updated Date Vuepress plugins"]}]},5220:function(e,t,i){i.d(t,{H:function(){return l}});const l=JSON.parse('{"base":"/ion/","lang":"en-GB","title":"Ion","description":"Ion Official Documentation","head":[["link",{"rel":"apple-touch-icon","sizes":"180x180","href":"/ion/images/icon/apple-touch-icon.png"}],["link",{"rel":"icon","type":"image/png","sizes":"32x32","href":"/ion/images/icon/favicon-32x32.png"}],["link",{"rel":"icon","type":"image/png","sizes":"16x16","href":"/ion/images/icon/favicon-16x16.png"}],["link",{"rel":"manifest","href":"/ion/site.webmanifest"}]],"locales":{}}')},2232:function(e,t,i){i.d(t,{f:function(){return l}});const l=JSON.parse('{"repo":"aedart/ion","colorMode":"light","logo":"/images/icon/apple-touch-icon.png","editLink":true,"editLinkText":"Edit page","docsRepo":"https://github.com/aedart/ion","docsBranch":"main","docsDir":"docs","lastUpdated":true,"lastUpdatedText":"Last Updated","navbar":[{"text":"Packages","link":"/archive/current/packages/"},{"text":"Archive","link":"/archive","children":[{"text":"next","link":"/archive/next"},{"text":"current","link":"/archive/current"}]},{"text":"Changelog","link":"https://github.com/aedart/ion/blob/main/CHANGELOG.md"}],"sidebar":{"/archive/next":[{"text":"Version 1.x","collapsible":true,"children":["/archive/next/"]}],"/archive/current":[{"text":"Version 0.x","collapsible":true,"children":["/archive/current/","/archive/current/upgrade-guide","/archive/current/contribution-guide","/archive/current/security","/archive/current/code-of-conduct","/archive/current/origin"]},{"text":"Packages","collapsible":true,"children":["/archive/current/packages/",{"text":"Contracts","collapsible":true,"children":["/archive/current/packages/contracts/","/archive/current/packages/contracts/install"]},{"text":"Support","collapsible":true,"children":["/archive/current/packages/support/","/archive/current/packages/support/install","/archive/current/packages/support/mixins","/archive/current/packages/support/meta","/archive/current/packages/support/objects","/archive/current/packages/support/reflections","/archive/current/packages/support/misc"]},{"text":"Vuepress Utils","collapsible":true,"children":["/archive/current/packages/vuepress-utils/","/archive/current/packages/vuepress-utils/install",{"text":"Navigation","collapsible":true,"children":["/archive/current/packages/vuepress-utils/navigation/archive"]},{"text":"Plugins","collapsible":true,"children":["/archive/current/packages/vuepress-utils/plugins/last-updated"]},{"text":"Components","collapsible":true,"children":["/archive/current/packages/vuepress-utils/components/version-disclaimer"]}]},"/archive/current/packages/xyz/"]}]},"locales":{"/":{"selectLanguageName":"English"}},"colorModeSwitch":true,"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebarDepth":2,"contributors":true,"contributorsText":"Contributors","notFound":["There\'s nothing here.","How did we get here?","That\'s a Four-Oh-Four.","Looks like we\'ve got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}')},69:function(e,t,i){i.d(t,{Z:function(){return s}});var l=i(6252),n=i(9945),a=i(4393),r=i(7126),s=(0,l.aZ)({__name:"LastUpdatedPlugin",setup(e){return(0,l.bv)((()=>{var e,t,i,n;const s=(0,a.Vi)(),c=null!=(t=null==(e=s.value.git)?void 0:e.updatedTime)?t:null;if(!c)return;let o=null!=(i=s.value.lastUpdatedDateFormat)?i:"yyyy-LL-dd HH:mm:ss",h=null!=(n=s.value.lastUpdatedDateOptions)?n:{},u=r.ou.fromMillis(c,h).toFormat(o);(0,l.Y3)((()=>{var e;const t=document.querySelector(".last-updated > span.meta-item-info");if(!t)return void console.warn("Unable to find .last-updated DOM element");t.innerHTML=u;let i=null!=(e=r.ou.fromMillis(c).toRelative())?e:"";t.setAttribute("title",i)}))})),(e,t)=>((0,l.wg)(),(0,l.j4)(n.Z))}})}},function(e){e.O(0,[163,989],(function(){return 6669,e(e.s=6669)})),e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~app.0d2724f4.js b/assets/js/runtime~app.0d2724f4.js new file mode 100644 index 00000000..10389fef --- /dev/null +++ b/assets/js/runtime~app.0d2724f4.js @@ -0,0 +1 @@ +!function(){"use strict";var e,n,r,t={},o={};function a(e){var n=o[e];if(void 0!==n)return n.exports;var r=o[e]={exports:{}};return t[e](r,r.exports,a),r.exports}a.m=t,e=[],a.O=function(n,r,t,o){if(!r){var f=1/0;for(d=0;d=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[c])}))?r.splice(c--,1):(i=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,t,o]},a.d=function(e,n){for(var r in n)a.o(n,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(n,r){return a.f[r](e,n),n}),[]))},a.u=function(e){return"assets/js/"+{81:"v-24676366",88:"v-3706649a",109:"v-7a57a83e",138:"v-93f9e4c6",161:"v-5f62758e",171:"v-8ef60844",213:"v-8b586dbe",242:"v-6bbff312",378:"v-efab5bac",399:"v-6628b2c2",425:"v-4ada6c94",429:"v-1e43a6e6",435:"v-6d570d7c",447:"v-1aa7d52a",509:"v-8daa1a0e",514:"v-652ac1f2",600:"v-bd9a9378",621:"v-41ce79e7",639:"v-c4c6a970",755:"v-2d9bb678",794:"v-f7a66f9c",830:"v-74e2259c",863:"v-5d96db26",880:"v-10f2da6b",888:"v-705c21a6",910:"v-296d8152",945:"v-c5cc3bd8"}[e]+"."+{81:"8f4db958",88:"13721e5f",109:"8145f4b5",138:"a6b3f945",161:"dc3b8de1",171:"acd799fd",213:"323f1839",242:"fa312722",378:"d7ab96a9",399:"36f84516",425:"73df1f35",429:"7e8556cb",435:"e97cf19d",447:"794f17af",509:"a6f39e96",514:"c0210724",600:"7942bfcc",621:"62d50826",639:"7f47bd86",755:"e4596229",794:"9f2407a3",830:"e7f35ed5",863:"5a6fea9d",880:"c87ef46d",888:"96727af7",910:"3607f52d",945:"0f58e73c"}[e]+".js"},a.miniCssF=function(e){},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n={},r="@aedart/ion-monorepo:",a.l=function(e,t,o,f){if(n[e])n[e].push(t);else{var i,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d
import {forget} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        c: {\n            age: 24\n        }\n    },\n};\n\nforget(target, 'b.c');\n\nconsole.log(target); // { a: 1234, b: {} }\n

forgetAll

Remove (deletes) all values in object, at given paths.

import {forgetAll} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        c: {\n            age: 24\n        }\n    },\n};\n\nforgetAll(target, [ 'a', 'b.c.age' ]);\n\nconsole.log(target); // { b: { c: {} } }\n

get

',5),d={href:"https://lodash.com/docs/4.17.15#get",target:"_blank",rel:"noopener noreferrer"},k=(0,t._)("code",null,"get",-1),v=(0,t.uE)('

See also set().

import {get} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        c: {\n            age: 24\n        }\n    },\n};\n\nlet age = get(target, 'b.c.age');\nconsole.log(age); // 24\n

You can also specify a default value to be returned, if the resolved value is undefined.

const target = {\n    a: 1234,\n    b: {\n        c: {\n            age: undefined\n        }\n    },\n};\n\n// Returns default value...\nlet age = get(target, 'b.c.age', 20);\nconsole.log(age); // 20\n

has

',5),m={href:"https://lodash.com/docs/4.17.15#hasIn",target:"_blank",rel:"noopener noreferrer"},b=(0,t._)("code",null,"hasIn",-1),g=(0,t.uE)('

See also isset().

import {has} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        c: {\n            age: 24\n        }\n    },\n};\n\nlet result = has(target, 'b.c.age');\nconsole.log(result); // true\n

hasAll

Determine if all paths are properties of given object.

See also isset().

import {hasAll} from "@aedart/support/objects";\n\nconst mySymbol = Symbol('my-symbol');\nconst target = {\n    a: 1234,\n    b: {\n        name: 'Sven',\n        c: {\n            age: 24,\n            [mySymbol]: true\n        }\n    },\n    d: [\n        { name: 'Jane'},\n        { name: 'Ashley'},\n    ],\n};\n\nconst paths = [\n    'a',\n    'b.name',\n    'b.c.age',\n    ['b', 'c', mySymbol],\n    'd[0]',\n    'd[1].name',\n];\n\nlet result = hasAll(target, paths);\nconsole.log(result); // true\n

hasAny

Determine if any paths are properties of given object.

import {hasAny} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        name: 'Sven',\n        c: {\n            age: 24\n        }\n    }\n};\n\nconst paths = [\n    'z', // does not exist\n    'b.c.name', // does not exist\n    'b.c.age', // exist\n];\n\nlet result = hasAny(target, paths);\nconsole.log(result); // true\n
',9),h={id:"hasuniqueid",tabindex:"-1"},y={class:"header-anchor",href:"#hasuniqueid"},f=(0,t._)("code",null,"hasUniqueId",-1),j=(0,t.uE)('

Determine if an object has a unique id.

See uniqueId for additional details.

import {hasUniqueId} from "@aedart/support/objects";\n\nconst target = {\n    name: 'Ursula'\n};\n\nconsole.log(hasUniqueId(target)); // false\n

isset

Determine if paths are properties of given object and have values. This method differs from has(), in that it only returns true if properties' values are not undefined and not null.

',5),_=(0,t._)("code",null,"isset()",-1),w=(0,t.uE)('
import {isset} from "@aedart/support/objects";\n\nconst target = {\n    a: 1234,\n    b: {\n        name: undefined,\n        c: {\n            age: null\n        }\n    },\n};\n\nconsole.log(isset(target, 'a')); // true\nconsole.log(isset(target, 'b')); // true\nconsole.log(isset(target, 'b.name')); // false\nconsole.log(isset(target, 'b.c')); // true\nconsole.log(isset(target, 'b.c.age')); // false\n

You can also check if multiple paths are set.

console.log(isset(target, 'a', 'b')); // true\nconsole.log(isset(target, 'b.c', 'b.name')); // false\nconsole.log(isset(target, 'a', 'b.name', 'b.c.age')); // false\n

set

',4),q={href:"https://lodash.com/docs/4.17.15#set",target:"_blank",rel:"noopener noreferrer"},U=(0,t._)("code",null,"set",-1),x=(0,t.uE)('
import {set} from "@aedart/support/objects";\n\nconst target = {};\n\nset(target, 'a.foo', 'bar');\n\nconsole.log(target); // { a: { foo: 'bar } }\n
',1),A={id:"uniqueid",tabindex:"-1"},W={class:"header-anchor",href:"#uniqueid"},I=(0,t._)("code",null,"uniqueId",-1),S=(0,t.uE)('

The uniqueId() is able to return a "unique¹" reference identifier for any given object.

import {uniqueId, hasUniqueId} from "@aedart/support/objects";\n\nconst target = {\n    name: 'Ursula'\n};\n\nconsole.log(uniqueId(target)); // 27\n\n// ...later in your application\nconsole.log(hasUniqueId(target)); // true\nconsole.log(uniqueId(target)); // 27\n
',2),D={href:"https://github.com/ngehlert",target:"_blank",rel:"noopener noreferrer"},E={href:"https://developapa.com/object-ids/",target:"_blank",rel:"noopener noreferrer"},T=(0,t._)("em",null,"Get object reference IDs in JavaScript/TypeScript",-1),M=(0,t._)("p",null,[(0,t.Uk)("¹: "),(0,t._)("em",null,"In this context, the returned number is unique in the current session. The number will NOT be unique across multiple sessions, nor guarantee that an object will receive the exact same identifier as in a previous session!")],-1),O={};var L=(0,a(3744).Z)(O,[["render",function(n,s){const a=(0,t.up)("router-link"),O=(0,t.up)("Badge"),L=(0,t.up)("ExternalLinkIcon"),R=(0,t.up)("RouterLink");return(0,t.wg)(),(0,t.iD)("div",null,[e,p,(0,t._)("nav",o,[(0,t._)("ul",null,[(0,t._)("li",null,[(0,t.Wm)(a,{to:"#forget"},{default:(0,t.w5)((()=>[(0,t.Uk)("forget")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#forgetall"},{default:(0,t.w5)((()=>[(0,t.Uk)("forgetAll")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#get"},{default:(0,t.w5)((()=>[(0,t.Uk)("get")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#has"},{default:(0,t.w5)((()=>[(0,t.Uk)("has")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#hasall"},{default:(0,t.w5)((()=>[(0,t.Uk)("hasAll")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#hasany"},{default:(0,t.w5)((()=>[(0,t.Uk)("hasAny")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#hasuniqueid"},{default:(0,t.w5)((()=>[(0,t.Uk)("hasUniqueId "),(0,t.Wm)(O,{type:"tip",text:"Available since v0.6",vertical:"middle"})])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#isset"},{default:(0,t.w5)((()=>[(0,t.Uk)("isset")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#set"},{default:(0,t.w5)((()=>[(0,t.Uk)("set")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(a,{to:"#uniqueid"},{default:(0,t.w5)((()=>[(0,t.Uk)("uniqueId "),(0,t.Wm)(O,{type:"tip",text:"Available since v0.6",vertical:"middle"})])),_:1})])])]),l,(0,t._)("p",null,[(0,t.Uk)("Remove ("),c,(0,t.Uk)(") a value in object at given path. "),(0,t._)("em",null,[(0,t.Uk)("Method is an alias for "),(0,t._)("a",i,[(0,t.Uk)("Lodash "),u,(0,t.Wm)(L)]),(0,t.Uk)(".")])]),r,(0,t._)("p",null,[(0,t.Uk)("Get value in object at given path. "),(0,t._)("em",null,[(0,t.Uk)("Method is an alias for "),(0,t._)("a",d,[(0,t.Uk)("Lodash "),k,(0,t.Wm)(L)]),(0,t.Uk)(".")])]),v,(0,t._)("p",null,[(0,t.Uk)("Determine if path is a property of given object. "),(0,t._)("em",null,[(0,t.Uk)("Method is an alias for "),(0,t._)("a",m,[(0,t.Uk)("Lodash "),b,(0,t.Wm)(L)]),(0,t.Uk)(".")])]),g,(0,t._)("h2",h,[(0,t._)("a",y,[(0,t._)("span",null,[f,(0,t.Uk)(),(0,t.Wm)(O,{type:"tip",text:"Available since v0.6",vertical:"middle"})])])]),j,(0,t._)("p",null,[(0,t._)("em",null,[(0,t.Uk)("See also "),(0,t.Wm)(R,{to:"/archive/current/packages/support/misc/#isset"},{default:(0,t.w5)((()=>[(0,t.Uk)("misc. "),_])),_:1}),(0,t.Uk)(".")])]),w,(0,t._)("p",null,[(0,t.Uk)("Set a value in object at given path. "),(0,t._)("em",null,[(0,t.Uk)("Method is an alias for "),(0,t._)("a",q,[(0,t.Uk)("Lodash "),U,(0,t.Wm)(L)]),(0,t.Uk)(".")])]),x,(0,t._)("h2",A,[(0,t._)("a",W,[(0,t._)("span",null,[I,(0,t.Uk)(),(0,t.Wm)(O,{type:"tip",text:"Available since v0.6",vertical:"middle"})])])]),S,(0,t._)("p",null,[(0,t.Uk)("The source code is heavily inspired by "),(0,t._)("a",D,[(0,t.Uk)("Nicolas Gehlert's"),(0,t.Wm)(L)]),(0,t.Uk)(" blog post: "),(0,t._)("a",E,[(0,t.Uk)('"'),T,(0,t.Uk)('" (September 28, 2022)'),(0,t.Wm)(L)])]),M])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-1aa7d52a.794f17af.js b/assets/js/v-1aa7d52a.794f17af.js new file mode 100644 index 00000000..d12120b4 --- /dev/null +++ b/assets/js/v-1aa7d52a.794f17af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[447],{6726:function(n,s,a){a.r(s),a.d(s,{data:function(){return e}});const e=JSON.parse('{"key":"v-1aa7d52a","path":"/archive/current/packages/vuepress-utils/navigation/archive.html","title":"Archive","lang":"en-GB","frontmatter":{"title":"Archive","description":"Archive Structure and Navigation","sidebarDepth":0},"headers":[{"level":2,"title":"Directory Structure","slug":"directory-structure","link":"#directory-structure","children":[]},{"level":2,"title":"Collections","slug":"collections","link":"#collections","children":[]},{"level":2,"title":"Archive Instance","slug":"archive-instance","link":"#archive-instance","children":[{"level":3,"title":"Name & Path","slug":"name-path","link":"#name-path","children":[]},{"level":3,"title":"Current & Next","slug":"current-next","link":"#current-next","children":[]}]},{"level":2,"title":"Vuepress Config File","slug":"vuepress-config-file","link":"#vuepress-config-file","children":[]},{"level":2,"title":"Onward","slug":"onward","link":"#onward","children":[]}],"git":{"updatedTime":1706259575000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1},{"name":"alin","email":"alin@rspsystems.com","commits":1}]},"filePathRelative":"archive/current/packages/vuepress-utils/navigation/archive.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6667:function(n,s,a){a.r(s),a.d(s,{default:function(){return m}});var e=a(6252);const t=(0,e._)("h1",{id:"archive",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#archive"},[(0,e._)("span",null,"Archive")])],-1),i=(0,e._)("p",null,[(0,e.Uk)("The "),(0,e._)("code",null,"Archive"),(0,e.Uk)(' component is a helper that keeps track of collections of pages in an "archive" ('),(0,e._)("em",null,"exactly like this site"),(0,e.Uk)('). It operates on the notion that there is always a "current" and "next" collection of pages. It can be used to structure documentation for various versions of your application, components, packages...etc.')],-1),o={class:"table-of-contents"},c=(0,e.uE)('

Directory Structure

The following illustrates a possible archive structure of your documentation. Notice the "current" and "next" directories. These two directories are essential for the Archive component. Their names can be configured (shown later). Each of the directories contains a collection of pages.

/.vuepress\n    /my_archive\n        index.ts\n        v3x.ts\n        v4x.ts\n        v5x.ts\n        ...\n    client.ts\n    config.ts\n\n/my_archive\n    /current\n        README.md\n        ...\n    /next\n        README.md\n        ...\n    /v4x\n        README.md\n        ...\n    /v3x\n        README.md\n        ...\n    README.md\n

 









 


 









Collections

Each Archive component is dependent on having its structure defined by means of PagesCollection components. As such, to represent the "current" collection, you must create a new PagesCollection instance. Use the static make() method to create a new instance. It accepts 3 arguments:

  • name: string Name or title of the collection.
  • path: string The relative path in the archive to the collection.
  • pages: SidebarConfigArray = [] An array of pages or group of pages. Each page's path is relative to the collection's path.
// E.g. inside /.vuepress/my_archive/v5x.ts\nimport {PagesCollection} from "@aedart/vuepress-utils/navigation";\n\nexport default PagesCollection.make('v5.x', '/v5x', [\n    {\n        text: 'Version 5.x',\n        collapsible: true,\n        children: [\n            '',\n            'contribution-guide',\n            'security',\n            'code-of-conduct',\n        ]\n    },\n    {\n        text: 'Packages',\n        collapsible: true,\n        children: [\n            'packages/',\n\n            // ...remaining not shown here...\n        ]\n    },\n\n    // ...etc\n]);\n

PagesCollection `path`

The path argument of a pages collection will automatically be changed, by the Archive component, if the collection is marked as the "current" or "next" collection (covered in next section).

Archive Instance

Once you have your "current" and "next" collections defined, you can create a new Archive instance. Use the static make() method to create a new instance. It accepts 3 arguments:

  • current: PagesCollection The collection to be marked as the "current".
  • next: PagesCollection The collection to be marked as the "next".
  • collections: PagesCollection[] = [] Array of all available collections, including "next" and "current".
// E.g. inside /.vuepress/my_archive/index.ts\nimport {PagesCollection} from "@aedart/vuepress-utils/contracts";\nimport {Archive} from "@aedart/vuepress-utils/navigation";\nimport v3x from "./v3x.ts";\nimport v4x from "./v4x.ts";\nimport v5x from "./v5x.ts";\nimport v6x from "./v6x.ts";\n\n// Defined the "current" colelction \nconst CURRENT: PagesCollection = v5x;\n\n// Defined the "next" colelction\nconst NEXT: PagesCollection = v6x;\n\n// Define all collections... next and current should also be part of this...\nconst ALL: PagesCollection[] = [\n    NEXT,\n    CURRENT,\n    v4x,\n    v3x,\n    // ... etc\n];\n\n// Finally, create and export your archive with "current" and "next" \nconst archive = Archive.make(CURRENT, NEXT, ALL);\narchive.path = '/my_archive';\n\nexport default archive;\n

Name & Path

As shown in the previous example, the archive's path was set to /my_archive by explicitly setting the path property. You can do the same for its name:

// ...previous not shown ... \nconst archive = Archive.make(CURRENT, NEXT, ALL);\narchive.name = 'Good old stuff';\narchive.path = '/old_stuff';\n

WARNING

Your archive's directory structure must match the specified path or vuepress will not be able to find it and display a "404 Not Found".

/old_stuff\n    /current\n        README.md\n        ...\n    /next\n        README.md\n        ...\n    ...\n
 







Current & Next

Whenever a collection is marked as "current" or "next", its path is automatically changed to /current or /next. This means that the full path of those collections will be the archive's path + current or next, e.g.

  • /archive/current
  • /archive/next

To change these paths, specify the currentPath and nextPath properties in your Archive instance.

archive.currentPath = '/live'\narchive.nextPath = '/upcoming'\n

WARNING

When you change the "current" and "next" paths in your archive, then the directory structure MUST reflect these names. From the above example, the archive's directory structure should now be the following:

/my_archive\n    /live\n        README.md\n        ...\n    /upcoming\n        README.md\n        ...\n    ...\n

 


 



Labels

You may also change the labels for "current" and "next", in a similar way as for changing their paths.

archive.currentLabel = 'Live'\narchive.nextLabel = 'What\\'s Next?'\n

Vuepress Config File

',26),l={href:"https://v2.vuepress.vuejs.org/guide/configuration.html#config-file",target:"_blank",rel:"noopener noreferrer"},p=(0,e._)("code",null,"theme",-1),r=(0,e._)("code",null,"asNavigationItem()",-1),u=(0,e._)("code",null,"sidebarConfiguration()",-1),d=(0,e.uE)('
import {defineUserConfig} from 'vuepress';\nimport defaultTheme from "@vuepress/theme-default"\nimport archive from './my_archive'\n\nexport default defineUserConfig({\n    \n    // ...other settings not shown...\n\n    theme: defaultTheme({\n        \n        // ... other theme settings not shown ...\n        \n        navbar: [\n            archive.asNavigationItem(),\n        ],\n\n        sidebar: archive.sidebarConfiguration()\n    }),\n});\n

Onward

Use can review the source code and configuration of this site, as a complete example of how the Archive component can be used.

',3),v={};var m=(0,a(3744).Z)(v,[["render",function(n,s){const a=(0,e.up)("router-link"),v=(0,e.up)("ExternalLinkIcon");return(0,e.wg)(),(0,e.iD)("div",null,[t,i,(0,e._)("nav",o,[(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(a,{to:"#directory-structure"},{default:(0,e.w5)((()=>[(0,e.Uk)("Directory Structure")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#collections"},{default:(0,e.w5)((()=>[(0,e.Uk)("Collections")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#archive-instance"},{default:(0,e.w5)((()=>[(0,e.Uk)("Archive Instance")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(a,{to:"#name-path"},{default:(0,e.w5)((()=>[(0,e.Uk)("Name & Path")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#current-next"},{default:(0,e.w5)((()=>[(0,e.Uk)("Current & Next")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#vuepress-config-file"},{default:(0,e.w5)((()=>[(0,e.Uk)("Vuepress Config File")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#onward"},{default:(0,e.w5)((()=>[(0,e.Uk)("Onward")])),_:1})])])]),c,(0,e._)("p",null,[(0,e.Uk)("To put it all together, in your "),(0,e._)("a",l,[(0,e.Uk)("Config File"),(0,e.Wm)(v)]),(0,e.Uk)(", import your archive instance. Inside your "),p,(0,e.Uk)(" settings, you can create a dropdown representation of your archive, by invoking the "),r,(0,e.Uk)(" method. A sidebar configuration can be created via the "),u,(0,e.Uk)(" method.")]),d])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-1e43a6e6.7e8556cb.js b/assets/js/v-1e43a6e6.7e8556cb.js new file mode 100644 index 00000000..6daec0c1 --- /dev/null +++ b/assets/js/v-1e43a6e6.7e8556cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[429],{327:function(e,a,t){t.r(a),t.d(a,{data:function(){return n}});const n=JSON.parse('{"key":"v-1e43a6e6","path":"/archive/current/packages/","title":"Introduction","lang":"en-GB","frontmatter":{"title":"Introduction","description":"Ion Packages","sidebarDepth":0},"headers":[{"level":2,"title":"Environment","slug":"environment","link":"#environment","children":[]},{"level":2,"title":"Available Since","slug":"available-since","link":"#available-since","children":[]},{"level":2,"title":"Not Released","slug":"not-released","link":"#not-released","children":[]},{"level":2,"title":"Not Published","slug":"not-published","link":"#not-published","children":[]}],"git":{"updatedTime":1706895598000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":6}]},"filePathRelative":"archive/current/packages/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6345:function(e,a,t){t.r(a),t.d(a,{default:function(){return k}});var n=t(6252);const l=(0,n._)("h1",{id:"packages",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#packages"},[(0,n._)("span",null,"Packages")])],-1),i=(0,n._)("p",null,"In here, you will find documentation for the available packages. A few things that might be good to know:",-1),s={class:"table-of-contents"},o=(0,n._)("h2",{id:"environment",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#environment"},[(0,n._)("span",null,"Environment")])],-1),r=(0,n._)("p",null,[(0,n._)("em",null,"You are of course welcome to use a package in a different environment than its original intent, if it is possible.")],-1),d=(0,n._)("h2",{id:"available-since",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#available-since"},[(0,n._)("span",null,"Available Since")])],-1),u=(0,n._)("em",null,"available since x.y.z",-1),c=(0,n._)("em",null,"or feature",-1),h=(0,n._)("h2",{id:"not-released",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#not-released"},[(0,n._)("span",null,"Not Released")])],-1),m=(0,n._)("strong",null,"not yet been released",-1),p=(0,n._)("h2",{id:"not-published",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#not-published"},[(0,n._)("span",null,"Not Published")])],-1),g=(0,n._)("em",null,"if documentation is made available about the package!",-1),b={};var k=(0,t(3744).Z)(b,[["render",function(e,a){const t=(0,n.up)("router-link"),b=(0,n.up)("Badge"),k=(0,n.up)("RouterLink");return(0,n.wg)(),(0,n.iD)("div",null,[l,i,(0,n._)("nav",s,[(0,n._)("ul",null,[(0,n._)("li",null,[(0,n.Wm)(t,{to:"#environment"},{default:(0,n.w5)((()=>[(0,n.Uk)("Environment")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(t,{to:"#available-since"},{default:(0,n.w5)((()=>[(0,n.Uk)("Available Since")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(t,{to:"#not-released"},{default:(0,n.w5)((()=>[(0,n.Uk)("Not Released")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(t,{to:"#not-published"},{default:(0,n.w5)((()=>[(0,n.Uk)("Not Published")])),_:1})])])]),o,(0,n._)("p",null,[(0,n.Uk)("Badges are used to indicate the environment that a package is intended for, e.g. "),(0,n.Wm)(b,{type:"success",text:"Node",vertical:"middle"}),(0,n.Wm)(b,{type:"success",text:"Browser",vertical:"middle"}),(0,n.Uk)(".")]),r,d,(0,n._)("p",null,[(0,n.Uk)('The "'),u,(0,n.Uk)('" badge might also be displayed, if a package '),c,(0,n.Uk)(" was released during a minor version. E.g. "),(0,n.Wm)(b,{type:"tip",text:"Available since v1.5",vertical:"middle"}),(0,n.Uk)(".")]),h,(0,n._)("p",null,[(0,n.Uk)("Sometimes, documentation might be available for a package that has "),m,(0,n.Uk)(". Usually it is tagged with a "),(0,n.Wm)(b,{type:"warning",text:"Not Released",vertical:"middle"}),(0,n.Uk)(" badge, "),(0,n._)("em",null,[(0,n.Uk)("unless the package documentation is located in "),(0,n.Wm)(k,{to:"/archive/next/"},{default:(0,n.w5)((()=>[(0,n.Uk)('"next" release"')])),_:1}),(0,n.Uk)(".")])]),p,(0,n._)("p",null,[(0,n.Uk)("In rare situations, a package might only exist in the mono-repository and not published to npm's registry. Such a package is either experimental or internal, which means that it might not ever be published. Usually, it will be tagged with "),(0,n.Wm)(b,{type:"danger",text:"Internal (not published)",vertical:"middle"}),(0,n.Wm)(b,{type:"danger",text:"Experimental",vertical:"middle"}),(0,n.Uk)(", or similar badges, "),g])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-24676366.8f4db958.js b/assets/js/v-24676366.8f4db958.js new file mode 100644 index 00000000..7b3d40a2 --- /dev/null +++ b/assets/js/v-24676366.8f4db958.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[81],{2642:function(a,e,n){n.r(e),n.d(e,{data:function(){return s}});const s=JSON.parse('{"key":"v-24676366","path":"/archive/current/packages/vuepress-utils/install.html","title":"How to install","lang":"en-GB","frontmatter":{"description":"How to install Vuepress Utils","sidebarDepth":0},"headers":[{"level":2,"title":"npm","slug":"npm","link":"#npm","children":[]},{"level":2,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":2,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]}],"git":{"updatedTime":1706259575000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":3},{"name":"alin","email":"alin@rspsystems.com","commits":1}]},"filePathRelative":"archive/current/packages/vuepress-utils/install.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},9318:function(a,e,n){n.r(e),n.d(e,{default:function(){return i}});var s=n(6252);const t=[(0,s.uE)('

How to install

npm

npm install --save-dev @aedart/vuepress-utils\n

yarn

yarn add --dev @aedart/vuepress-utils\n

pnpm

pnpm add --save-dev @aedart/vuepress-utils\n
',7)],l={};var i=(0,n(3744).Z)(l,[["render",function(a,e){return(0,s.wg)(),(0,s.iD)("div",null,t)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-296d8152.3607f52d.js b/assets/js/v-296d8152.3607f52d.js new file mode 100644 index 00000000..70af1345 --- /dev/null +++ b/assets/js/v-296d8152.3607f52d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[910],{7733:function(n,s,a){a.r(s),a.d(s,{data:function(){return t}});const t=JSON.parse('{"key":"v-296d8152","path":"/archive/current/packages/support/reflections.html","title":"Reflections","lang":"en-GB","frontmatter":{"title":"Reflections","description":"Reflection utilities","sidebarDepth":0},"headers":[{"level":2,"title":"isConstructor","slug":"isconstructor","link":"#isconstructor","children":[]}],"git":{"updatedTime":1706611982000,"contributors":[{"name":"alin","email":"alin@rspsystems.com","commits":1}]},"filePathRelative":"archive/current/packages/support/reflections.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},8780:function(n,s,a){a.r(s),a.d(s,{default:function(){return h}});var t=a(6252);const e={id:"reflections",tabindex:"-1"},o={class:"header-anchor",href:"#reflections"},c=(0,t._)("p",null,[(0,t.Uk)("The "),(0,t._)("code",null,"@aedart/support/reflections"),(0,t.Uk)(" submodule offers a few reflection related utilities.")],-1),i={class:"table-of-contents"},p=(0,t._)("h2",{id:"isconstructor",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#isconstructor"},[(0,t._)("span",null,[(0,t._)("code",null,"isConstructor")])])],-1),l={href:"https://github.com/caitp/TC39-Proposals/blob/trunk/tc39-reflect-isconstructor-iscallable.md",target:"_blank",rel:"noopener noreferrer"},u=(0,t._)("code",null,"Function.isCallable() / Function.isConstructor()",-1),r=(0,t._)("code",null,"isConstructor()",-1),k=(0,t.uE)('
import { isConstructor } from "@aedart/support/reflections";\n\nisConstructor(null); // false\nisConstructor({}); // false\nisConstructor([]); // false\nisConstructor(function() {}); // true\nisConstructor(() => {}); // false\nisConstructor(Array); // true\nisConstructor(class {}); // true\n





 

 
 

Acknowledgement

',2),d={href:"https://github.com/zloirock/core-js#function-iscallable-isconstructor-",target:"_blank",rel:"noopener noreferrer"},m=(0,t._)("em",null,"License MIT",-1),f={};var h=(0,a(3744).Z)(f,[["render",function(n,s){const a=(0,t.up)("Badge"),f=(0,t.up)("router-link"),h=(0,t.up)("ExternalLinkIcon");return(0,t.wg)(),(0,t.iD)("div",null,[(0,t._)("h1",e,[(0,t._)("a",o,[(0,t._)("span",null,[(0,t.Uk)("Reflections "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),c,(0,t._)("nav",i,[(0,t._)("ul",null,[(0,t._)("li",null,[(0,t.Wm)(f,{to:"#isconstructor"},{default:(0,t.w5)((()=>[(0,t.Uk)("isConstructor")])),_:1})])])]),p,(0,t._)("p",null,[(0,t.Uk)("Based on the "),(0,t._)("a",l,[(0,t.Uk)("TC39 "),u,(0,t.Wm)(h)]),(0,t.Uk)(" proposal, the "),r,(0,t.Uk)(" can determine if given argument is a constructor.")]),k,(0,t._)("p",null,[(0,t.Uk)("The source code of the above shown methods is heavily inspired by Denis Pushkarev's Core-js implementation of the "),(0,t._)("a",d,[(0,t.Uk)("Function.isCallable / Function.isConstructor"),(0,t.Wm)(h)]),(0,t.Uk)(" proposal ("),m,(0,t.Uk)(").")])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-2d9bb678.e4596229.js b/assets/js/v-2d9bb678.e4596229.js new file mode 100644 index 00000000..ae45c614 --- /dev/null +++ b/assets/js/v-2d9bb678.e4596229.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[755],{9553:function(n,a,s){s.r(a),s.d(a,{data:function(){return t}});const t=JSON.parse('{"key":"v-2d9bb678","path":"/archive/current/packages/vuepress-utils/components/version-disclaimer.html","title":"Version Disclaimer","lang":"en-GB","frontmatter":{"title":"Version Disclaimer","description":"A simple notice container","sidebarDepth":0},"headers":[{"level":2,"title":"Properties","slug":"properties","link":"#properties","children":[{"level":3,"title":"type (optional)","slug":"type-optional","link":"#type-optional","children":[]},{"level":3,"title":"label (optional)","slug":"label-optional","link":"#label-optional","children":[]}]},{"level":2,"title":"Extend Default Layout","slug":"extend-default-layout","link":"#extend-default-layout","children":[]},{"level":2,"title":"Client Config","slug":"client-config","link":"#client-config","children":[]}],"git":{"updatedTime":1679769520000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/vuepress-utils/components/version-disclaimer.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},8498:function(n,a,s){s.r(a),s.d(a,{default:function(){return h}});var t=s(6252);const e=(0,t.uE)('

Version Disclaimer

The <VersionDisclaimer /> component is a simply "notice" container, which can be used in your layout. Most often, you would use this to display a custom message when outdated / unsupported documentation is being viewed.

<VersionDisclaimer type="warning" label="Note">\n    You are viewing documentation for an unsupported version...\n</VersionDisclaimer>\n

Properties

type (optional)

The type property accepts the following values:

  • info (default)
  • warning
  • danger

label (optional)

An optional label that is used as a prefix for the custom disclaim message.

Extend Default Layout

',10),o=(0,t._)("code",null,"Archive",-1),p={href:"https://v2.vuepress.vuejs.org/advanced/theme.html#create-a-theme",target:"_blank",rel:"noopener noreferrer"},i=(0,t._)("em",null,"e.g. extend the default theme",-1),l=(0,t._)("code",null,".vuepress/layouts/Layout.vue",-1),c=(0,t.uE)('
<script setup lang="ts">\nimport ParentLayout from '@vuepress/theme-default/layouts/Layout.vue';\nimport VersionDisclaimer from "@aedart/vuepress-utils/components/VersionDisclaimer.vue";\nimport {usePageData} from "@vuepress/client";\nimport {isViewingNextRef, isViewingOtherRef} from "@aedart/vuepress-utils";\nimport archive from "../my_archive";\n\nconst page = usePageData();\nconst showForNext = isViewingNextRef(page, archive);\nconst showForOther = isViewingOtherRef(page, archive);\n</script>\n\n<template>\n  <ParentLayout>\n    <template #page-top>\n        \n      <VersionDisclaimer v-if="showForNext">\n        You are viewing documentation for next version...\n      </VersionDisclaimer>\n        \n      <VersionDisclaimer v-if="showForOther" type="danger" label="Oh oh">\n        You are viewing old stuff...\n      </VersionDisclaimer>\n\n    </template>\n  </ParentLayout>\n</template>\n
',1),u=(0,t._)("code",null,"isViewingNextRef()",-1),r=(0,t._)("code",null,"isViewingOtherRef()",-1),d=(0,t._)("h2",{id:"client-config",tabindex:"-1"},[(0,t._)("a",{class:"header-anchor",href:"#client-config"},[(0,t._)("span",null,"Client Config")])],-1),k={href:"https://v2.vuepress.vuejs.org/guide/configuration.html#client-config-file",target:"_blank",rel:"noopener noreferrer"},v=(0,t._)("code",null,"Layout",-1),m=(0,t.uE)('
import { defineClientConfig } from '@vuepress/client';\nimport Layout from "./layouts/Layout.vue";\n\nexport default defineClientConfig({\n    layouts: {\n        Layout\n    }\n});\n
',1),g={};var h=(0,s(3744).Z)(g,[["render",function(n,a){const s=(0,t.up)("RouterLink"),g=(0,t.up)("ExternalLinkIcon");return(0,t.wg)(),(0,t.iD)("div",null,[e,(0,t._)("p",null,[(0,t.Uk)("The following example assumes that you are using an "),(0,t.Wm)(s,{to:"/archive/current/packages/vuepress-utils/navigation/archive.html"},{default:(0,t.w5)((()=>[o,(0,t.Uk)(" component")])),_:1}),(0,t.Uk)(' to structure documentation. When doing so, you can display a custom message whenever "outdated" or "upcoming" documentation is being viewed.')]),(0,t._)("p",null,[(0,t.Uk)("To achieve this, you will need to create a "),(0,t._)("a",p,[(0,t.Uk)("custom layout"),(0,t.Wm)(g)]),(0,t.Uk)(" ("),i,(0,t.Uk)("). Create a new layout, e.g. in "),l,(0,t.Uk)(".")]),c,(0,t._)("p",null,[(0,t.Uk)("The "),u,(0,t.Uk)(" method returns a computed property that indicates if visitor is viewing the "),(0,t.Wm)(s,{to:"/archive/current/packages/vuepress-utils/navigation/archive.html#current--next"},{default:(0,t.w5)((()=>[(0,t.Uk)('"next" collection of pages')])),_:1}),(0,t.Uk)(". The "),r,(0,t.Uk)(' methods returns a computed property that determines if pages are viewed that do not belong to "next" nor "current" collections.')]),d,(0,t._)("p",null,[(0,t.Uk)("In your "),(0,t._)("a",k,[(0,t.Uk)("Client Config File"),(0,t.Wm)(g)]),(0,t.Uk)(", use the custom "),v,(0,t.Uk)(".")]),m])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-3706649a.13721e5f.js b/assets/js/v-3706649a.13721e5f.js new file mode 100644 index 00000000..a4f40490 --- /dev/null +++ b/assets/js/v-3706649a.13721e5f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[88],{1801:function(t,e,n){n.r(e),n.d(e,{data:function(){return a}});const a=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-GB","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null,"lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6172:function(t,e,n){n.r(e),n.d(e,{default:function(){return o}});var a=n(6252);const r={};var o=(0,n(3744).Z)(r,[["render",function(t,e){return(0,a.wg)(),(0,a.iD)("div")}]])}}]); \ No newline at end of file diff --git a/assets/js/v-41ce79e7.62d50826.js b/assets/js/v-41ce79e7.62d50826.js new file mode 100644 index 00000000..8ffc6de4 --- /dev/null +++ b/assets/js/v-41ce79e7.62d50826.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[621],{6314:function(e,n,o){o.r(n),o.d(n,{data:function(){return t}});const t=JSON.parse('{"key":"v-41ce79e7","path":"/archive/current/code-of-conduct.html","title":"Code of Conduct","lang":"en-GB","frontmatter":{"description":"Code of Conduct - Ion","sidebarDepth":0},"headers":[{"level":2,"title":"Consequences","slug":"consequences","link":"#consequences","children":[]}],"git":{"updatedTime":1679232326000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/code-of-conduct.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6308:function(e,n,o){o.r(n),o.d(n,{default:function(){return i}});var t=o(6252);const a=[(0,t.uE)('

Code of Conduct

Be nice... be fair! Writing free Open Source software often means spending time developing after-hours, and in weekends. Chances are pretty good that you yourself are involved in one or many Open Source projects and already know how time-consuming it can be. In any case, the following constitutes the code of conduct used by Ion:

  • Be patient, nice and fair.
  • Be helpful and constructive.
  • Your words and actions must be free of harassment, harmful deeds or remarks, and malicious intent.
  • Respect the opinions of others, even if they contradict yours.

Consequences

Participants can be subject to consequences, if the code of conduct is not upheld. Such consequences include, but not limited to, warnings, and banning from further participation.

',5)],c={};var i=(0,o(3744).Z)(c,[["render",function(e,n){return(0,t.wg)(),(0,t.iD)("div",null,a)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-4ada6c94.73df1f35.js b/assets/js/v-4ada6c94.73df1f35.js new file mode 100644 index 00000000..ca19f7f4 --- /dev/null +++ b/assets/js/v-4ada6c94.73df1f35.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[425],{4464:function(e,a,t){t.r(a),t.d(a,{data:function(){return n}});const n=JSON.parse('{"key":"v-4ada6c94","path":"/archive/next/","title":"Not Available","lang":"en-GB","frontmatter":{"title":"Not Available","description":"Next Ion Version","sidebarDepth":0},"headers":[],"git":{"updatedTime":1679232326000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":2}]},"filePathRelative":"archive/next/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},8181:function(e,a,t){t.r(a),t.d(a,{default:function(){return r}});var n=t(6252);const i=[(0,n._)("h1",{id:"not-available",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#not-available"},[(0,n._)("span",null,"Not Available")])],-1),(0,n._)("p",null,[(0,n._)("em",null,"The next version of Ion has yet to be designed and implemented. Come back at a later time to review the documentation...")],-1)],o={};var r=(0,t(3744).Z)(o,[["render",function(e,a){return(0,n.wg)(),(0,n.iD)("div",null,i)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-5d96db26.5a6fea9d.js b/assets/js/v-5d96db26.5a6fea9d.js new file mode 100644 index 00000000..b66eebbc --- /dev/null +++ b/assets/js/v-5d96db26.5a6fea9d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[863],{6432:function(t,e,a){a.r(e),a.d(e,{data:function(){return n}});const n=JSON.parse('{"key":"v-5d96db26","path":"/archive/current/packages/support/","title":"Introduction","lang":"en-GB","frontmatter":{"title":"Introduction","description":"Ion Support package","sidebarDepth":0},"headers":[],"git":{"updatedTime":1680807324000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/support/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},1568:function(t,e,a){a.r(e),a.d(e,{default:function(){return d}});var n=a(6252);const r={id:"introduction",tabindex:"-1"},i={class:"header-anchor",href:"#introduction"},o=(0,n._)("p",null,"The support package offers various utilities.",-1),c={};var d=(0,a(3744).Z)(c,[["render",function(t,e){const a=(0,n.up)("Badge");return(0,n.wg)(),(0,n.iD)("div",null,[(0,n._)("h1",r,[(0,n._)("a",i,[(0,n._)("span",null,[(0,n.Uk)("Introduction "),(0,n.Wm)(a,{type:"tip",text:"Available since v0.3",vertical:"middle"}),(0,n.Wm)(a,{type:"success",text:"Browser",vertical:"middle"})])])]),o])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-5f62758e.dc3b8de1.js b/assets/js/v-5f62758e.dc3b8de1.js new file mode 100644 index 00000000..6a61b937 --- /dev/null +++ b/assets/js/v-5f62758e.dc3b8de1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[161],{8047:function(n,a,s){s.r(a),s.d(a,{data:function(){return e}});const e=JSON.parse('{"key":"v-5f62758e","path":"/archive/current/packages/support/meta.html","title":"Meta","lang":"en-GB","frontmatter":{"title":"Meta","description":"Add arbitrary metadata on classes, methods and properties.","sidebarDepth":0},"headers":[{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Supported Elements","slug":"supported-elements","link":"#supported-elements","children":[]},{"level":2,"title":"Defining and Retrieving Metadata","slug":"defining-and-retrieving-metadata","link":"#defining-and-retrieving-metadata","children":[{"level":3,"title":"Default Value","slug":"default-value","link":"#default-value","children":[]},{"level":3,"title":"Callback","slug":"callback","link":"#callback","children":[]}]},{"level":2,"title":"Inheritance","slug":"inheritance","link":"#inheritance","children":[{"level":3,"title":"Overwrites","slug":"overwrites","link":"#overwrites","children":[]}]},{"level":2,"title":"Changes outside the decorator","slug":"changes-outside-the-decorator","link":"#changes-outside-the-decorator","children":[]},{"level":2,"title":"TC39 Decorator Metadata","slug":"tc39-decorator-metadata","link":"#tc39-decorator-metadata","children":[]},{"level":2,"title":"Target Meta","slug":"target-meta","link":"#target-meta","children":[{"level":3,"title":"Inheritance","slug":"inheritance-1","link":"#inheritance-1","children":[]}]}],"git":{"updatedTime":1706882801000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":6},{"name":"alin","email":"alin@rspsystems.com","commits":2}]},"filePathRelative":"archive/current/packages/support/meta.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},7864:function(n,a,s){s.r(a),s.d(a,{default:function(){return Y}});var e=s(6252);const t={id:"meta",tabindex:"-1"},p={class:"header-anchor",href:"#meta"},c=(0,e.uE)('

Provides a decorator that is able to associate metadata with a class, its methods and properties.

import {meta, getMeta} from '@aedart/support/meta';\n\n@meta('service_alias', 'locationSearcher')\nclass Service {}\n\ngetMeta(Service, 'service_alias'); // locationSearcher\n
',2),o={class:"table-of-contents"},i=(0,e._)("h2",{id:"prerequisites",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#prerequisites"},[(0,e._)("span",null,"Prerequisites")])],-1),l={href:"https://github.com/tc39/proposal-decorators",target:"_blank",rel:"noopener noreferrer"},r={href:"https://babeljs.io/docs/babel-plugin-proposal-decorators",target:"_blank",rel:"noopener noreferrer"},u={href:"https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#decorators",target:"_blank",rel:"noopener noreferrer"},d=(0,e.uE)('

Supported Elements

The meta decorator supports the following elements¹:

  • class
  • method
  • getter
  • setter
  • field
  • accessor
',3),k={href:"https://github.com/tc39/proposal-decorators#2-calling-decorators",target:"_blank",rel:"noopener noreferrer"},m=(0,e._)("code",null,"context.kind",-1),v=(0,e._)("h2",{id:"defining-and-retrieving-metadata",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#defining-and-retrieving-metadata"},[(0,e._)("span",null,"Defining and Retrieving Metadata")])],-1),h=(0,e._)("p",null,[(0,e.Uk)("To define metadata on a class or its elements, use "),(0,e._)("code",null,"meta()"),(0,e.Uk)(". It accepts the following arguments:")],-1),b=(0,e._)("code",null,"key",-1),g=(0,e._)("code",null,"set",-1),f=(0,e._)("code",null,"value",-1),y={href:"https://developer.mozilla.org/en-US/docs/Glossary/Primitive",target:"_blank",rel:"noopener noreferrer"},w={href:"https://developer.mozilla.org/en-US/docs/Glossary/Object",target:"_blank",rel:"noopener noreferrer"},_={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",target:"_blank",rel:"noopener noreferrer"},S=(0,e.uE)('

To obtain metadata, use the getMeta() method. You can also use getAllMeta(), if you wish to obtain all available metadata for a target class.

import {meta, getMeta, getAllMeta} from '@aedart/support/meta';\n\n@meta('service_alias', 'locationSearcher')\nclass Service\n{\n    @meta('name', 'Name of service') name;\n    \n    @meta('fetch.desc', 'Fetches resource via a gateway')\n    @meta('fetch.dependencies', [ 'my-gateway' ])\n    async fetch(gateway)\n    {\n        // ...implementation not shown...\n    }\n}\n\n// Later in your application...\nconst service = new Service();\n\nconst desc = getMeta(Service, 'fetch.desc');\nconst dependencies = getMeta(Service, 'fetch.dependencies');\n\n// Or, obtain all metadata\nconst allMeta = getAllMeta(Service);\n
',2),M={class:"custom-container tip"},j=(0,e.uE)('

Metadata Availability

Depending on the kind of element that is decorated, metadata might only become available for reading, after a new class instance has been instantiated. This is true for the following elements:

  • method
  • getter
  • setter
  • field
  • accessor

Static Elements

',4),x={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static",target:"_blank",rel:"noopener noreferrer"},U=(0,e._)("code",null,"static",-1),C=(0,e.uE)('

Default Value

The getMeta() method also offers a defaultValue argument, which is returned, in case that a metadata value does not exist for a given identifier.

const description = getMeta(Service, 'fetch.desc', 'N/A - method has no description');\n

Callback

If you need to create more advanced metadata, you can specify a callback as the first argument for the meta() decorator method. When using a callback you gain access to the target that is being decorated, as well as the decorator context. The callback MUST return an object that contains a key and a value property.

import {meta} from '@aedart/support/meta';\n\nclass Service {\n\n    @meta((target, context) => {\n        return {\n            key: context.name,\n            value: '...'\n        }\n    })\n    delegateTo(gateway) {\n        // ...not shown...\n    }\n}\n

Although the above example is a bit cumbersome to read, it shows a simple way to defined metadata for a method, which utilises the decorator context. If you wish, you can use this approach to create your own specialised meta decorators. Doing so can also improve the readability of your class. Consider the following example:

import {meta} from '@aedart/support/meta';\n\nfunction delegateMeta() {\n    return meta((target, context) => {\n        return {\n            key: context.name,\n            value: '...'\n        }\n    });\n}\n\nclass Service {\n\n    @delegateMeta()\n    delegateTo(gateway) {\n        // ...not shown...\n    }\n}\n

Inheritance

Metadata is automatically inherited by subclasses.

import {meta, getMeta} from '@aedart/support/meta';\n\n@meta('service_alias', 'locationSearcher')\nclass Service {}\n\nclass CitySearcher extends Service {}\n\ngetMeta(CitySearcher, 'service_alias'); // locationSearcher\n

Overwrites

You can also overwrite the inherited metadata. The subclass that defines the metadata creates its own copy of the inherited metadata. The parent class' metadata remains untouched.

import {meta, getMeta} from '@aedart/support/meta';\n\nclass Service {\n    \n    @meta('search.desc', 'Searches for countries')\n    search() {\n        // ...not shown...\n    }\n}\n\nclass CitySearcher extends Service {\n\n    @meta('search.desc', 'Searches for cities')\n    search() {\n        // ...not shown...\n    }\n}\n\nconst service = new CitySearcher();\n\ngetMeta(CitySearcher, 'search.desc'); // Searches for cities\ngetMeta(Service, 'search.desc'); // Searches for countries\n

Changes outside the decorator

Whenever you read metadata, a copy is returned by the getMeta() method. This means that you can change the data, in your given context, but the original metadata remains the same.

import {meta, getMeta} from '@aedart/support/meta';\n\n@meta('description', { name: 'Search Service', alias: 'Location Sercher' })\nclass Service {}\n\n// Obtain "copy" and change it...\nlet desc = getMeta(Service, 'description');\ndesc.name = 'Country Searcher';\n\n// Original remains unchanged\ngetMeta(Service, 'description').name; // Search Service\n

Caution

Only the meta decorator is intended to alter existing metadata - even if the value is an object. Please be mindful of this behaviour, whenever you change retrieved metadata using the getMeta() and getAllMeta() methods.

TC39 Decorator Metadata

',19),T={href:"https://github.com/tc39/proposal-decorator-metadata",target:"_blank",rel:"noopener noreferrer"},W=(0,e._)("em",null,'"mimics"',-1),A=(0,e._)("code",null,"context.metadata",-1),E=(0,e._)("code",null,"Symbol.metadata",-1),D=(0,e.uE)('

Example:

import {meta, getMeta} from '@aedart/support/meta';\n\n@meta('service_alias', 'locationSearcher')\nclass Service {}\n\ngetMeta(Service, 'service_alias'); // locationSearcher\n

Roughly "desugars" to the following:

function meta(key, value) {\n    return (target, context) => {\n        context.metadata[key] = value;\n    }\n}\n\n@meta('service_alias', 'locationSearcher')\nclass Service {}\n\nService[Symbol.metadata].service_alias; // locationSearcher\n

(Above shown example is very simplified. Actual implementation is a bit more complex...)

',5),q=(0,e._)("code",null,"meta",-1),I={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",target:"_blank",rel:"noopener noreferrer"},O=(0,e._)("code",null,"WeakMap",-1),L={href:"https://github.com/tc39/proposal-decorator-metadata",target:"_blank",rel:"noopener noreferrer"},R=(0,e._)("code",null,"context.metadata",-1),P=(0,e._)("em",null,"or when browsers support it",-1),z={id:"target-meta",tabindex:"-1"},B={class:"header-anchor",href:"#target-meta"},G=(0,e._)("p",null,[(0,e.Uk)("The "),(0,e._)("code",null,"targetMeta()"),(0,e.Uk)(" decorator offers the ability to associate metadata directly with a class instance or class method reference. This can be useful in situations when you do not know the class that owns the metadata.")],-1),J=(0,e._)("code",null,"targetMeta()",-1),Z=(0,e._)("code",null,"meta()",-1),V={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",target:"_blank",rel:"noopener noreferrer"},F=(0,e._)("code",null,"WeakMap",-1),H=(0,e.uE)('

Supported Elements

Unlike the meta() decorator, targetMeta() only supports the following elements:

  • class
  • method

Example: class instance

import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\n@targetMeta('description', { type: 'Search Service', alias: 'Location Sercher' })\nclass LocationSearcherService {}\n\nconst instance = new LocationSearcherService();\n\n// ...later in your application...\ngetTargetMeta(instance, 'description')?.type; // Search Service\n

Example: method reference

import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\nclass LocationSearcherService {\n\n    @targetMeta('dependencies', [ 'httpClient' ])    \n    search(apiClient) {}\n}\n\nconst instance = new LocationSearcherService();\n\n// ...later in your application...\ngetTargetMeta(instance.search, 'dependencies'); // [ 'httpClient' ]\n

Inheritance

Target meta is automatically inherited by subclasses and can also be overwritten, similar to that of the meta() decorator.

Example: classes

import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\n@meta('service_alias', 'locationSearcher')\nclass Service {}\n\nclass CitySearcher extends Service {}\n\nconst instance = new CitySearcher();\n\n// ...later in your application...\ngetTargetMeta(instance, 'service_alias'); // locationSearcher\n

Example: methods

import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\nclass Service {\n\n    @targetMeta('dependencies', [ 'countrySearchApiClient' ])\n    search(apiClient) {\n        // ...not shown...\n    }\n}\n\nclass CountrySearcher extends Service {\n    // ... not method overwrite here...\n}\n\nclass CitySearcher extends Service {\n\n    @targetMeta('dependencies', [ 'citySearchApiClient' ])\n    search(apiClient) {\n        // ...not shown...\n    }\n}\n\nconst instanceA = new Service();\nconst instanceB = new CountrySearcher();\nconst instanceC = new CitySearcher();\n\n// ...later in your application...\ngetTargetMeta(instanceA.search, 'dependencies'); // [ 'countrySearchApiClient' ]\ngetTargetMeta(instanceB.search, 'dependencies'); // [ 'countrySearchApiClient' ]\ngetTargetMeta(instanceC.search, 'dependencies'); // [ 'citySearchApiClient' ]\n

Static Methods

Inheritance for static methods works a bit differently. By default, any subclass will automatically inherit target metadata, even for static methods. However, if you overwrite the given static method, the metadata is lost.

Limitation

When a static method is overwritten, the parent's "target" metadata cannot be obtained due to a general limitation of the meta() decorator. The decorator has no late this binding available to the overwritten static method. This makes it impossible to associate the overwritten static method with metadata from the parent.

Example: inheritance for static methods

import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\nclass Service {\n\n    @targetMeta('dependencies', [ 'xmlClient' ])\n    static search(client) {\n        // ...not shown...\n    }\n}\n\nclass CountrySearcher extends Service {\n    // ... not method overwrite here...\n}\n\nclass CitySearcher extends Service {\n    \n    // Overwite of static method - target meta is lost\n    static search(client) {}\n}\n\n// ...later in your application...\ngetTargetMeta(CountrySearcher.search, 'dependencies'); // [ 'xmlClient' ]\ngetTargetMeta(CitySearcher.search, 'dependencies'); // undefined\n

To overcome the above shown issue, you can use the inheritTargetMeta() decorator. It forces the static method to "copy" metadata from its parent, if available.

Example: force inheritance for static methods

import {\n    targetMeta,\n    getTargetMeta,\n    inheritTargetMeta\n} from '@aedart/support/meta';\n\nclass Service {\n\n    @targetMeta('dependencies', [ 'xmlClient' ])\n    static search(client) {\n        // ...not shown...\n    }\n}\n\nclass CountrySearcher extends Service {\n    // ... not method overwrite here...\n}\n\nclass CitySearcher extends Service {\n    \n    @inheritTargetMeta()\n    static search(client) {}\n}\n\n// ...later in your application...\ngetTargetMeta(CountrySearcher.search, 'dependencies'); // [ 'xmlClient' ]\ngetTargetMeta(CitySearcher.search, 'dependencies'); // [ 'xmlClient' ]\n
',19),N={};var Y=(0,s(3744).Z)(N,[["render",function(n,a){const s=(0,e.up)("Badge"),N=(0,e.up)("router-link"),Y=(0,e.up)("ExternalLinkIcon"),K=(0,e.up)("RouterLink");return(0,e.wg)(),(0,e.iD)("div",null,[(0,e._)("h1",t,[(0,e._)("a",p,[(0,e._)("span",null,[(0,e.Uk)("Meta "),(0,e.Wm)(s,{type:"tip",text:"Available since v0.6",vertical:"middle"})])])]),c,(0,e._)("nav",o,[(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(N,{to:"#prerequisites"},{default:(0,e.w5)((()=>[(0,e.Uk)("Prerequisites")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#supported-elements"},{default:(0,e.w5)((()=>[(0,e.Uk)("Supported Elements")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#defining-and-retrieving-metadata"},{default:(0,e.w5)((()=>[(0,e.Uk)("Defining and Retrieving Metadata")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(N,{to:"#default-value"},{default:(0,e.w5)((()=>[(0,e.Uk)("Default Value")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#callback"},{default:(0,e.w5)((()=>[(0,e.Uk)("Callback")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#inheritance"},{default:(0,e.w5)((()=>[(0,e.Uk)("Inheritance")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(N,{to:"#overwrites"},{default:(0,e.w5)((()=>[(0,e.Uk)("Overwrites")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#changes-outside-the-decorator"},{default:(0,e.w5)((()=>[(0,e.Uk)("Changes outside the decorator")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#tc39-decorator-metadata"},{default:(0,e.w5)((()=>[(0,e.Uk)("TC39 Decorator Metadata")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(N,{to:"#target-meta"},{default:(0,e.w5)((()=>[(0,e.Uk)("Target Meta "),(0,e.Wm)(s,{type:"tip",text:"Available since v0.7",vertical:"middle"})])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(N,{to:"#inheritance-1"},{default:(0,e.w5)((()=>[(0,e.Uk)("Inheritance")])),_:1})])])])])]),i,(0,e._)("p",null,[(0,e.Uk)("At the time of this writing, "),(0,e._)("a",l,[(0,e.Uk)("decorators"),(0,e.Wm)(Y)]),(0,e.Uk)(" are still in a proposal phase. To use the meta decorator, you must either use "),(0,e._)("a",r,[(0,e.Uk)("@babel/plugin-proposal-decorators"),(0,e.Wm)(Y)]),(0,e.Uk)(", or use "),(0,e._)("a",u,[(0,e.Uk)("TypeScript 5 decorators"),(0,e.Wm)(Y)]),(0,e.Uk)(".")]),d,(0,e._)("p",null,[(0,e.Uk)("¹: "),(0,e._)("em",null,[(0,e.Uk)("An element is determined by the decorator's "),(0,e._)("a",k,[m,(0,e.Wm)(Y)]),(0,e.Uk)(" property.")])]),v,h,(0,e._)("ul",null,[(0,e._)("li",null,[b,(0,e.Uk)(": "),(0,e._)("em",null,[(0,e.Uk)("name of metadata identifier. Can also be a path ("),(0,e._)("em",null,[(0,e.Uk)("see "),(0,e.Wm)(K,{to:"/archive/current/packages/support/objects.html#set"},{default:(0,e.w5)((()=>[g])),_:1})]),(0,e.Uk)(").")])]),(0,e._)("li",null,[f,(0,e.Uk)(": "),(0,e._)("em",null,[(0,e.Uk)("arbitrary data. Can be a "),(0,e._)("a",y,[(0,e.Uk)("primitive value"),(0,e.Wm)(Y)]),(0,e.Uk)(", an "),(0,e._)("a",w,[(0,e.Uk)("object"),(0,e.Wm)(Y)]),(0,e.Uk)(", or a "),(0,e._)("a",_,[(0,e.Uk)("function"),(0,e.Wm)(Y)]),(0,e.Uk)(".")])])]),S,(0,e._)("div",M,[j,(0,e._)("p",null,[(0,e.Uk)("If an element is declared as "),(0,e._)("a",x,[U,(0,e.Wm)(Y)]),(0,e.Uk)(", then it's metadata becomes available as soon as the class has been defined.")])]),C,(0,e._)("p",null,[(0,e.Uk)("In relation to the "),(0,e._)("a",T,[(0,e.Uk)("Decorator Metadata proposal"),(0,e.Wm)(Y)]),(0,e.Uk)(", this decorator "),W,(0,e.Uk)(" a similar behaviour as the one defined by the proposal. Defining and retrieving metadata relies on a decorator's "),A,(0,e.Uk)(" object, and the "),E,(0,e.Uk)(" property of a class.")]),D,(0,e._)("p",null,[(0,e.Uk)("At present, the internal mechanisms of the "),q,(0,e.Uk)(" decorator must rely on a "),(0,e._)("a",I,[O,(0,e.Wm)(Y)]),(0,e.Uk)(" to associate metadata with the intended class. When the "),(0,e._)("a",L,[(0,e.Uk)("Decorator Metadata proposal"),(0,e.Wm)(Y)]),(0,e.Uk)(" becomes more mature and transpilers offer the "),R,(0,e.Uk)(" object ("),P,(0,e.Uk)("), then this decorator will be updated respectfully to use the available metadata object.")]),(0,e._)("h2",z,[(0,e._)("a",B,[(0,e._)("span",null,[(0,e.Uk)("Target Meta "),(0,e.Wm)(s,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),G,(0,e._)("p",null,[(0,e.Uk)("Behind the scene, "),J,(0,e.Uk)(" uses the "),Z,(0,e.Uk)(" decorator and stores a reference to the target that is decorated inside a "),(0,e._)("a",V,[F,(0,e.Wm)(Y)]),(0,e.Uk)(".")]),H])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-652ac1f2.c0210724.js b/assets/js/v-652ac1f2.c0210724.js new file mode 100644 index 00000000..881430ed --- /dev/null +++ b/assets/js/v-652ac1f2.c0210724.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[514],{8759:function(n,s,a){a.r(s),a.d(s,{data:function(){return t}});const t=JSON.parse('{"key":"v-652ac1f2","path":"/archive/current/packages/support/misc.html","title":"Misc.","lang":"en-GB","frontmatter":{"title":"Misc.","description":"Misc. utilities","sidebarDepth":0},"headers":[{"level":2,"title":"descTag","slug":"desctag","link":"#desctag","children":[]},{"level":2,"title":"empty","slug":"empty","link":"#empty","children":[]},{"level":2,"title":"isKey","slug":"iskey","link":"#iskey","children":[]},{"level":2,"title":"isPrimitive","slug":"isprimitive","link":"#isprimitive","children":[]},{"level":2,"title":"isPropertyKey","slug":"ispropertykey","link":"#ispropertykey","children":[]},{"level":2,"title":"isset","slug":"isset","link":"#isset","children":[]},{"level":2,"title":"mergeKeys","slug":"mergekeys","link":"#mergekeys","children":[]},{"level":2,"title":"toWeakRef","slug":"toweakref","link":"#toweakref","children":[]}],"git":{"updatedTime":1706522630000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":8},{"name":"alin","email":"alin@rspsystems.com","commits":4}]},"filePathRelative":"archive/current/packages/support/misc.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6395:function(n,s,a){a.r(s),a.d(s,{default:function(){return G}});var t=a(6252);const e={id:"misc",tabindex:"-1"},p={class:"header-anchor",href:"#misc"},o=(0,t._)("p",null,[(0,t._)("code",null,"@aedart/support/misc"),(0,t.Uk)(" offers miscellaneous utility methods.")],-1),c={class:"table-of-contents"},l=(0,t.uE)('

descTag

Return the default string description of an object.

import {descTag} from '@aedart/support/misc';\n\ndescTag('foo'); // [object String]\ndescTag(3); // [object Number]\ndescTag([1, 2, 3]); // [object Array]\ndescTag(true); // [object Boolean]\n// ... etc\n

The method is a shorthand for the following:

Object.prototype.toString.call(/* your value */);\n
',5),i={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag",target:"_blank",rel:"noopener noreferrer"},u=(0,t.uE)('

empty

Determine if value is empty.

See also isset().

import {empty} from '@aedart/support/misc';\n\nempty(''); // true\nempty(false); // true\nempty(0); // true\nempty(0n); // true\nempty(NaN); // true\nempty(null); // true\nempty(undefined); // true\nempty([]); // true\nempty({}); // true\nempty(new Set()); // true\nempty(new Map()); // true\nempty(new Int8Array()); // true\n\nempty(' '); // false\nempty('a'); // false\nempty(true); // false\nempty(1); // false\nempty(1n); // false\nempty(-1); // false\nempty(Infinity); // false\nempty([ 1 ]); // false\nempty({ name: 'Jimmy' }); // false\nempty((new Set()).add('a')); // false\nempty((new Map).set('foo', 'bar')); // false\nempty(new Date()); // false\nempty(function() {}); // false\nempty(Symbol('my-symbol')); // false\n\nlet typedArr = new Int8Array(1);\ntypedArr[0] = 1;\nempty(typedArr); // false\n
',4),k={class:"custom-container warning"},r=(0,t._)("p",{class:"custom-container-title"},"WeakMap and WeakSet",-1),d=(0,t._)("code",null,"empty()",-1),m={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",target:"_blank",rel:"noopener noreferrer"},v=(0,t._)("code",null,"WeakMap",-1),f={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",target:"_blank",rel:"noopener noreferrer"},b=(0,t._)("code",null,"WeakSet",-1),y={id:"iskey",tabindex:"-1"},g={class:"header-anchor",href:"#iskey"},h=(0,t._)("code",null,"isKey",-1),_=(0,t._)("a",{href:"#ispropertykey"},"key",-1),w=(0,t.uE)('
import {isKey} from '@aedart/support/misc';\n\nisKey('foo'); // true\nisKey(12); // true\nisKey(Symbol('my-symbol')); // true\nisKey([ 'a', 'b.c', Symbol('my-other-symbol')]); // true\n\nisKey(true); // false\nisKey([]); // false\nisKey(null); // false\nisKey(undefined); // false\nisKey(() => true); // false\n

isPrimitive

',2),j={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#primitive_values",target:"_blank",rel:"noopener noreferrer"},W=(0,t.uE)('
import {isPrimitive} from '@aedart/support/misc';\n\nisPrimitive(null); // true\nisPrimitive(undefined); // true\nisPrimitive(true); // true\nisPrimitive(1); // true\nisPrimitive(1n); // true\nisPrimitive('foo'); // true\nisPrimitive(Symbol('my-symbol')); // true\n\nisPrimitive([1, 2, 3]); // false\nisPrimitive({ name: 'Rian' }); // false\nisPrimitive(function() {}); // false\n
',1),U={id:"ispropertykey",tabindex:"-1"},K={class:"header-anchor",href:"#ispropertykey"},S=(0,t._)("code",null,"isPropertyKey",-1),x=(0,t.uE)('

Determine if a key a valid property key name.

import {isPropertyKey} from '@aedart/support/misc';\n\nisPropertyKey('foo'); // true\nisPropertyKey(12); // true\nisPropertyKey(Symbol('my-symbol')); // true\n\nisPropertyKey(true); // false\nisPropertyKey(['a', 'b', 'c']); // false\nisPropertyKey(null); // false\nisPropertyKey(undefined); // false\nisPropertyKey(() => true); // false\n

isset

Determine if value is different from undefined and null.

See also empty().

import {isset} from '@aedart/support/misc';\n\nisset('foo'); // true\nisset(''); // true\nisset(true); // true\nisset(false); // true\nisset(1234); // true\nisset(1.234); // true\nisset([]); // true\nisset({}); // true\nisset(() => true); // true\n\nisset(undefined); // false\nisset(null); // false\n

You can also determine if multiple values differ from undefined and null.

Note: All given values must differ from undefined and null, before method returns true.

isset('foo', { name: 'Jane' }, [ 1, 2, 3 ]); // true\n\nisset('foo', null, [ 1, 2, 3 ]); // false\nisset('foo', { name: 'Jane' }, undefined); // false\n
',9),P={id:"mergekeys",tabindex:"-1"},R={class:"header-anchor",href:"#mergekeys"},A=(0,t._)("code",null,"mergeKeys",-1),D=(0,t.uE)('

The mergeKeys() method is able to merge two or more keys into a single key (see isKey()).

import { mergeKeys } from "@aedart/support/misc";\n\nconst key = mergeKeys(Symbol('my-symbol'), [ 'b', 'c.d' ], 23);\n\nconsole.log(key); // [ Symbol('my-symbol'), 'b', 'c.d', 23 ];\n
',2),M={id:"toweakref",tabindex:"-1"},T={class:"header-anchor",href:"#toweakref"},E=(0,t._)("code",null,"toWeakRef",-1),J={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakRef",target:"_blank",rel:"noopener noreferrer"},q=(0,t._)("code",null,"WeakRef",-1),O=(0,t.uE)('
import { toWeakRef } from "@aedart/support/misc";\n\nconst person = { name: 'Sine' };\n\nconst a = toWeakRef(person); // new WeakRef of "person"\nconst b = toWeakRef(a); // same WeakRef instance as "a"\n\ntoWeakRef(null); // undefined\ntoWeakRef(undefined); // undefined\n
',1),z={};var G=(0,a(3744).Z)(z,[["render",function(n,s){const a=(0,t.up)("Badge"),z=(0,t.up)("router-link"),G=(0,t.up)("ExternalLinkIcon"),N=(0,t.up)("RouterLink");return(0,t.wg)(),(0,t.iD)("div",null,[(0,t._)("h1",e,[(0,t._)("a",p,[(0,t._)("span",null,[(0,t.Uk)("Misc. "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.4",vertical:"middle"})])])]),o,(0,t._)("nav",c,[(0,t._)("ul",null,[(0,t._)("li",null,[(0,t.Wm)(z,{to:"#desctag"},{default:(0,t.w5)((()=>[(0,t.Uk)("descTag")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#empty"},{default:(0,t.w5)((()=>[(0,t.Uk)("empty")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#iskey"},{default:(0,t.w5)((()=>[(0,t.Uk)("isKey "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#isprimitive"},{default:(0,t.w5)((()=>[(0,t.Uk)("isPrimitive")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#ispropertykey"},{default:(0,t.w5)((()=>[(0,t.Uk)("isPropertyKey "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#isset"},{default:(0,t.w5)((()=>[(0,t.Uk)("isset")])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#mergekeys"},{default:(0,t.w5)((()=>[(0,t.Uk)("mergeKeys "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])),_:1})]),(0,t._)("li",null,[(0,t.Wm)(z,{to:"#toweakref"},{default:(0,t.w5)((()=>[(0,t.Uk)("toWeakRef "),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])),_:1})])])]),l,(0,t._)("p",null,[(0,t.Uk)("See "),(0,t._)("a",i,[(0,t.Uk)("Mozilla's documentation"),(0,t.Wm)(G)]),(0,t.Uk)(" for additional information.")]),u,(0,t._)("div",k,[r,(0,t._)("p",null,[d,(0,t.Uk)(" is not able to determine if a "),(0,t._)("a",m,[v,(0,t.Wm)(G)]),(0,t.Uk)(" or "),(0,t._)("a",f,[b,(0,t.Wm)(G)]),(0,t.Uk)(" is empty.")])]),(0,t._)("h2",y,[(0,t._)("a",g,[(0,t._)("span",null,[h,(0,t.Uk)(),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),(0,t._)("p",null,[(0,t.Uk)("Determine if given is a valid "),_,(0,t.Uk)(" or "),(0,t.Wm)(N,{to:"/archive/current/packages/support/objects.html#has"},{default:(0,t.w5)((()=>[(0,t.Uk)("property path identifier")])),_:1}),(0,t.Uk)(".")]),w,(0,t._)("p",null,[(0,t.Uk)("Determine if a value is a "),(0,t._)("a",j,[(0,t.Uk)("primitive value"),(0,t.Wm)(G)]),(0,t.Uk)(".")]),W,(0,t._)("h2",U,[(0,t._)("a",K,[(0,t._)("span",null,[S,(0,t.Uk)(),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),x,(0,t._)("h2",P,[(0,t._)("a",R,[(0,t._)("span",null,[A,(0,t.Uk)(),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),D,(0,t._)("h2",M,[(0,t._)("a",T,[(0,t._)("span",null,[E,(0,t.Uk)(),(0,t.Wm)(a,{type:"tip",text:"Available since v0.7",vertical:"middle"})])])]),(0,t._)("p",null,[(0,t.Uk)("Wraps a target object into a "),(0,t._)("a",J,[q,(0,t.Wm)(G)]),(0,t.Uk)(", if not already instance of a weak reference.")]),O])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-6628b2c2.36f84516.js b/assets/js/v-6628b2c2.36f84516.js new file mode 100644 index 00000000..f36c2074 --- /dev/null +++ b/assets/js/v-6628b2c2.36f84516.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[399],{691:function(e,a,t){t.r(a),t.d(a,{data:function(){return n}});const n=JSON.parse('{"key":"v-6628b2c2","path":"/archive/not_available.html","title":"Not Available","lang":"en-GB","frontmatter":{"title":"Not Available","description":"Next Ion Version","sidebarDepth":0},"headers":[],"git":{"updatedTime":1679232263000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/not_available.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},2627:function(e,a,t){t.r(a),t.d(a,{default:function(){return l}});var n=t(6252);const i=[(0,n._)("h1",{id:"not-available",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#not-available"},[(0,n._)("span",null,"Not Available")])],-1),(0,n._)("p",null,[(0,n._)("em",null,"The next version of Ion has yet to be designed and implemented. Come back at a later time to review the documentation...")],-1)],o={};var l=(0,t(3744).Z)(o,[["render",function(e,a){return(0,n.wg)(),(0,n.iD)("div",null,i)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-6bbff312.fa312722.js b/assets/js/v-6bbff312.fa312722.js new file mode 100644 index 00000000..25700fc8 --- /dev/null +++ b/assets/js/v-6bbff312.fa312722.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[242],{757:function(e,n,r){r.r(n),r.d(n,{data:function(){return a}});const a=JSON.parse('{"key":"v-6bbff312","path":"/archive/current/origin.html","title":"Origin","lang":"en-GB","frontmatter":{"description":"The origin of Ion","sidebarDepth":0},"headers":[{"level":2,"title":"Meaning of \\"Ion\\"","slug":"meaning-of-ion","link":"#meaning-of-ion","children":[]}],"git":{"updatedTime":1679938081000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":3}]},"filePathRelative":"archive/current/origin.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},3352:function(e,n,r){r.r(n),r.d(n,{default:function(){return d}});var a=r(6252);const o=(0,a._)("h1",{id:"origin",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#origin"},[(0,a._)("span",null,"Origin")])],-1),t={href:"https://aedart.github.io/athenaeum/",target:"_blank",rel:"noopener noreferrer"},i={href:"https://lerna.js.org/",target:"_blank",rel:"noopener noreferrer"},s={href:"https://www.typescriptlang.org/",target:"_blank",rel:"noopener noreferrer"},l={href:"https://en.wikipedia.org/wiki/Monorepo",target:"_blank",rel:"noopener noreferrer"},c=(0,a._)("h2",{id:"meaning-of-ion",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#meaning-of-ion"},[(0,a._)("span",null,'Meaning of "Ion"')])],-1),m=(0,a._)("em",null,"positive or negative",-1),p={href:"https://www.dictionary.com/browse/ion",target:"_blank",rel:"noopener noreferrer"},h={};var d=(0,r(3744).Z)(h,[["render",function(e,n){const r=(0,a.up)("ExternalLinkIcon");return(0,a.wg)(),(0,a.iD)("div",null,[o,(0,a._)("p",null,[(0,a.Uk)("For many years, I was too discouraged and overburden to publish my JavaScript as packages. Having a full-time job and maintaining "),(0,a._)("a",t,[(0,a.Uk)("Athenaeum"),(0,a.Wm)(r)]),(0,a.Uk)(" took most of my time. Like so many other developers, I was copying JavaScript from one project into another. I always knew that was very bad practice. But, it was too cumbersome trying to maintain so much code, spread throughout various repositories.")]),(0,a._)("p",null,[(0,a.Uk)("Nevertheless, in recent years, "),(0,a._)("a",i,[(0,a.Uk)("Lerna"),(0,a.Wm)(r)]),(0,a.Uk)(", "),(0,a._)("a",s,[(0,a.Uk)("TypeScript"),(0,a.Wm)(r)]),(0,a.Uk)(", and many other tools & frameworks made it somewhat easier to manage "),(0,a._)("a",l,[(0,a.Uk)("mono-repos"),(0,a.Wm)(r)]),(0,a.Uk)(". I cannot claim to have gained more time, but decided to give JavaScript packages another shoot.")]),c,(0,a._)("blockquote",null,[(0,a._)("p",null,[(0,a.Uk)('"[...] An atom or a group of atoms that has an electric charge [...] - '),m,(0,a.Uk)('" ('),(0,a._)("a",p,[(0,a.Uk)('"Scientific definition" from dictionary.com'),(0,a.Wm)(r)]),(0,a.Uk)(")")])])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-6d570d7c.e97cf19d.js b/assets/js/v-6d570d7c.e97cf19d.js new file mode 100644 index 00000000..10c5c09c --- /dev/null +++ b/assets/js/v-6d570d7c.e97cf19d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[435],{1857:function(n,s,a){a.r(s),a.d(s,{data:function(){return e}});const e=JSON.parse('{"key":"v-6d570d7c","path":"/archive/current/","title":"Release Notes","lang":"en-GB","frontmatter":{"title":"Release Notes","description":"Ion Release Notes","sidebarDepth":0},"headers":[{"level":2,"title":"Support Policy","slug":"support-policy","link":"#support-policy","children":[]},{"level":2,"title":"v0.x Highlights","slug":"v0-x-highlights","link":"#v0-x-highlights","children":[{"level":3,"title":"Mixins","slug":"mixins","link":"#mixins","children":[]},{"level":3,"title":"\\"Target\\" Meta Decorator","slug":"target-meta-decorator","link":"#target-meta-decorator","children":[]},{"level":3,"title":"Meta Decorator","slug":"meta-decorator","link":"#meta-decorator","children":[]},{"level":3,"title":"Support","slug":"support","link":"#support","children":[]},{"level":3,"title":"Vuepress Utils","slug":"vuepress-utils","link":"#vuepress-utils","children":[]}]}],"git":{"updatedTime":1707752930000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":9},{"name":"alin","email":"alin@rspsystems.com","commits":2}]},"filePathRelative":"archive/current/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},3382:function(n,s,a){a.r(s),a.d(s,{default:function(){return j}});var e=a(6252);const t=(0,e._)("h1",{id:"release-notes",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#release-notes"},[(0,e._)("span",null,"Release Notes")])],-1),i={class:"custom-container danger"},p=(0,e._)("p",{class:"custom-container-title"},"DANGER",-1),l=(0,e._)("p",null,[(0,e.Uk)("Ion is still in development. You "),(0,e._)("em",null,"SHOULD NOT"),(0,e.Uk)(" use any of the packages in production. Breaking changes "),(0,e._)("em",null,[(0,e._)("strong",null,"MUST")]),(0,e.Uk)(" be expected for all "),(0,e._)("code",null,"v0.x"),(0,e.Uk)(" releases!")],-1),o={href:"https://github.com/aedart/ion/blob/main/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"},c=(0,e._)("code",null,"CHANGELOG.md",-1),r={class:"table-of-contents"},u=(0,e.uE)('

Support Policy

VersionTypeScriptECMA ScriptReleaseSecurity Fixes Until
1.x5.0 - ?TBDTBDTBD
0.x*5.0ES2022ongoing releasesuntil v1.x release

*: current supported version.

TBD: "To be decided".

v0.x Highlights

',5),d={id:"mixins",tabindex:"-1"},k={class:"header-anchor",href:"#mixins"},m={href:"https://github.com/justinfagnani/mixwith.js",target:"_blank",rel:"noopener noreferrer"},v=(0,e._)("code",null,"mixwith.js",-1),h=(0,e.uE)('
import { mix, Mixin } from "@aedart/support/mixins";\n\nconst NameMixin = Mixin((superclass) => class extends superclass {\n    #name;\n    \n    set name(value) {\n        this.#name = value;\n    }\n    \n    get name() {\n        return this.#name;\n    }\n});\n\nclass Item extends mix().with(\n    NameMixin\n) {}\n\n// ...Later in your application\nconst item = new Item();\nitem.name = 'My Item';\n\nconsole.log(item.name); // My Item\n
',1),g=(0,e._)("code",null,"@aedart/support/mixins",-1),b={id:"target-meta-decorator",tabindex:"-1"},_={class:"header-anchor",href:"#target-meta-decorator"},f=(0,e.uE)('
import {targetMeta, getTargetMeta} from '@aedart/support/meta';\n\nclass Service {\n\n    @targetMeta('desc', 'Seaches for cities')\n    search() {\n        // ...not shown...\n    }\n}\n\nconst instance = new Service();\n\n// ...later in your application...\ngetTargetMeta(instance.search, 'desc'); // Seaches for cities\n
',1),x={id:"meta-decorator",tabindex:"-1"},y={class:"header-anchor",href:"#meta-decorator"},w=(0,e.uE)('
import {meta, getMeta} from '@aedart/support/meta';\n\n@meta('description', 'Able to search for locations')\nclass Service {}\n\ngetMeta(Service, 'description'); // Able to search for locations\n
',1),U={id:"support",tabindex:"-1"},M={class:"header-anchor",href:"#support"},W={id:"vuepress-utils",tabindex:"-1"},A={class:"header-anchor",href:"#vuepress-utils"},S=(0,e._)("code",null,"Archive",-1),D={};var j=(0,a(3744).Z)(D,[["render",function(n,s){const a=(0,e.up)("ExternalLinkIcon"),D=(0,e.up)("router-link"),j=(0,e.up)("Badge"),T=(0,e.up)("RouterLink");return(0,e.wg)(),(0,e.iD)("div",null,[t,(0,e._)("div",i,[p,l,(0,e._)("p",null,[(0,e._)("em",null,[(0,e.Uk)("Please review the "),(0,e._)("a",o,[c,(0,e.Wm)(a)]),(0,e.Uk)(" for additional details.")])])]),(0,e._)("nav",r,[(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(D,{to:"#support-policy"},{default:(0,e.w5)((()=>[(0,e.Uk)("Support Policy")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(D,{to:"#v0-x-highlights"},{default:(0,e.w5)((()=>[(0,e.Uk)("v0.x Highlights")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(D,{to:"#mixins"},{default:(0,e.w5)((()=>[(0,e.Uk)("Mixins "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.8"})])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(D,{to:"#target-meta-decorator"},{default:(0,e.w5)((()=>[(0,e.Uk)('"Target" Meta Decorator '),(0,e.Wm)(j,{type:"tip",text:"Available since v0.7"})])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(D,{to:"#meta-decorator"},{default:(0,e.w5)((()=>[(0,e.Uk)("Meta Decorator "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.6"})])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(D,{to:"#support"},{default:(0,e.w5)((()=>[(0,e.Uk)("Support "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.3"})])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(D,{to:"#vuepress-utils"},{default:(0,e.w5)((()=>[(0,e.Uk)("Vuepress Utils "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.1"})])),_:1})])])])])]),u,(0,e._)("h3",d,[(0,e._)("a",k,[(0,e._)("span",null,[(0,e.Uk)("Mixins "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.8"})])])]),(0,e._)("p",null,[(0,e.Uk)("Adaptation of Justin Fagnani's "),(0,e._)("a",m,[v,(0,e.Wm)(a)]),(0,e.Uk)(".")]),h,(0,e._)("p",null,[(0,e.Uk)("See details and more examples in the "),(0,e.Wm)(T,{to:"/archive/current/packages/support/mixins.html"},{default:(0,e.w5)((()=>[g,(0,e.Uk)(" documentation")])),_:1}),(0,e.Uk)(".")]),(0,e._)("h3",b,[(0,e._)("a",_,[(0,e._)("span",null,[(0,e.Uk)('"Target" Meta Decorator '),(0,e.Wm)(j,{type:"tip",text:"Available since v0.7"})])])]),(0,e._)("p",null,[(0,e.Uk)("Associate arbitrary metadata directly with the target element that is being decorated. "),(0,e._)("em",null,[(0,e.Uk)("See "),(0,e.Wm)(T,{to:"/archive/current/packages/support/meta.html"},{default:(0,e.w5)((()=>[(0,e.Uk)("target meta decorator")])),_:1}),(0,e.Uk)(" fro additional details.")])]),f,(0,e._)("h3",x,[(0,e._)("a",y,[(0,e._)("span",null,[(0,e.Uk)("Meta Decorator "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.6"})])])]),(0,e._)("p",null,[(0,e.Uk)("The "),(0,e.Wm)(T,{to:"/archive/current/packages/support/meta.html"},{default:(0,e.w5)((()=>[(0,e.Uk)("meta decorator")])),_:1}),(0,e.Uk)(" is able to associate arbitrary metadata with a class and its elements.")]),w,(0,e._)("h3",U,[(0,e._)("a",M,[(0,e._)("span",null,[(0,e.Uk)("Support "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.3"})])])]),(0,e._)("p",null,[(0,e.Uk)("A package intended to contain various helpers and utilities. At the moment, the package comes with a few "),(0,e.Wm)(T,{to:"/archive/current/packages/support/objects/"},{default:(0,e.w5)((()=>[(0,e.Uk)("object utilities")])),_:1}),(0,e.Uk)(". See "),(0,e.Wm)(T,{to:"/archive/current/packages/support/"},{default:(0,e.w5)((()=>[(0,e.Uk)("package documentation")])),_:1}),(0,e.Uk)(" for more details.")]),(0,e._)("h3",W,[(0,e._)("a",A,[(0,e._)("span",null,[(0,e.Uk)("Vuepress Utils "),(0,e.Wm)(j,{type:"tip",text:"Available since v0.1"})])])]),(0,e._)("p",null,[(0,e.Uk)("Utilities for vuepress sites, which includes an "),S,(0,e.Uk)(" component for structuring documentation into an archive. See "),(0,e.Wm)(T,{to:"/archive/current/packages/vuepress-utils/"},{default:(0,e.w5)((()=>[(0,e.Uk)("package documentation")])),_:1}),(0,e.Uk)(" for details.")])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-705c21a6.96727af7.js b/assets/js/v-705c21a6.96727af7.js new file mode 100644 index 00000000..0523ed30 --- /dev/null +++ b/assets/js/v-705c21a6.96727af7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[888],{6762:function(e,a,t){t.r(a),t.d(a,{data:function(){return n}});const n=JSON.parse('{"key":"v-705c21a6","path":"/archive/","title":"Archive","lang":"en-GB","frontmatter":{},"headers":[],"git":{"updatedTime":1679150525000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},9904:function(e,a,t){t.r(a),t.d(a,{default:function(){return o}});var n=t(6252);const r=[(0,n._)("h1",{id:"archive",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#archive"},[(0,n._)("span",null,"Archive")])],-1),(0,n._)("p",null,'Here you can find documentation for previous versions of Ion. Please select the desired version via the "Archive" menu item located in the top-menu.',-1)],i={};var o=(0,t(3744).Z)(i,[["render",function(e,a){return(0,n.wg)(),(0,n.iD)("div",null,r)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-74e2259c.e7f35ed5.js b/assets/js/v-74e2259c.e7f35ed5.js new file mode 100644 index 00000000..37dee9cd --- /dev/null +++ b/assets/js/v-74e2259c.e7f35ed5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[830],{7620:function(e,t,a){a.r(t),a.d(t,{data:function(){return n}});const n=JSON.parse('{"key":"v-74e2259c","path":"/archive/current/packages/xyz/","title":"XYZ (test package)","lang":"en-GB","frontmatter":{"title":"XYZ (test package)","description":"XYZ Test Package"},"headers":[],"git":{"updatedTime":1680022542000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":3}]},"filePathRelative":"archive/current/packages/xyz/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},2190:function(e,t,a){a.r(t),a.d(t,{default:function(){return s}});var n=a(6252);const r={id:"introduction",tabindex:"-1"},i={class:"header-anchor",href:"#introduction"},o=(0,n._)("p",null,[(0,n._)("code",null,"@aedart/xyz"),(0,n.Uk)(' is an internal package that is used for experiments, e.g. tinkering with decorators, proxies, or whatever might be "fun" to try out. The package is NOT published, nor is it intended to ever be published.')],-1),d={};var s=(0,a(3744).Z)(d,[["render",function(e,t){const a=(0,n.up)("Badge");return(0,n.wg)(),(0,n.iD)("div",null,[(0,n._)("h1",r,[(0,n._)("a",i,[(0,n._)("span",null,[(0,n.Uk)("Introduction "),(0,n.Wm)(a,{type:"danger",text:"Internal (not published)",vertical:"middle"})])])]),o])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-7a57a83e.8145f4b5.js b/assets/js/v-7a57a83e.8145f4b5.js new file mode 100644 index 00000000..ced1624b --- /dev/null +++ b/assets/js/v-7a57a83e.8145f4b5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[109],{661:function(e,t,r){r.r(t),r.d(t,{data:function(){return n}});const n=JSON.parse('{"key":"v-7a57a83e","path":"/archive/current/contribution-guide.html","title":"Contribution Guide","lang":"en-GB","frontmatter":{"description":"How to contribute to Ion","sidebarDepth":0},"headers":[{"level":2,"title":"Bug Report","slug":"bug-report","link":"#bug-report","children":[]},{"level":2,"title":"Security Vulnerability","slug":"security-vulnerability","link":"#security-vulnerability","children":[]},{"level":2,"title":"Feature Request","slug":"feature-request","link":"#feature-request","children":[]},{"level":2,"title":"Fork, code and send pull-request","slug":"fork-code-and-send-pull-request","link":"#fork-code-and-send-pull-request","children":[]}],"git":{"updatedTime":1679232326000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/contribution-guide.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},5398:function(e,t,r){r.r(t),r.d(t,{default:function(){return q}});var n=r(6252);const l=(0,n._)("h1",{id:"contribution-guide",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#contribution-guide"},[(0,n._)("span",null,"Contribution Guide")])],-1),o={href:"https://en.wikipedia.org/wiki/Software_bug",target:"_blank",rel:"noopener noreferrer"},i={class:"table-of-contents"},a=(0,n._)("h2",{id:"bug-report",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#bug-report"},[(0,n._)("span",null,"Bug Report")])],-1),u={href:"https://github.com/aedart/ion/issues/new/choose",target:"_blank",rel:"noopener noreferrer"},s=(0,n.uE)('
  • Where is the defect located
  • A good, short and precise description of the defect (Why is it a defect)
  • How to replicate the defect
  • (A possible solution for how to resolve the defect)

When time permits it, I will review your issue and take action upon it.

Security Vulnerability

',3),d=(0,n._)("h2",{id:"feature-request",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#feature-request"},[(0,n._)("span",null,"Feature Request")])],-1),c={href:"https://github.com/aedart/ion/issues/new/choose",target:"_blank",rel:"noopener noreferrer"},h={href:"https://github.com/aedart/ion/discussions",target:"_blank",rel:"noopener noreferrer"},p=(0,n._)("h2",{id:"fork-code-and-send-pull-request",tabindex:"-1"},[(0,n._)("a",{class:"header-anchor",href:"#fork-code-and-send-pull-request"},[(0,n._)("span",null,"Fork, code and send pull-request")])],-1),f=(0,n._)("p",null,"If you wish to fix a bug, add new feature, or perhaps change an existing, then please follow this guideline",-1),k=(0,n._)("li",null,"Fork this project",-1),g=(0,n._)("li",null,"Create a new local development branch for the given fix, addition or change",-1),_=(0,n._)("li",null,"Write your code / changes",-1),m=(0,n._)("li",null,[(0,n.Uk)("Create executable test-cases ("),(0,n._)("em",null,"prove that your changes are solid!"),(0,n.Uk)(")")],-1),y=(0,n._)("li",null,"Commit and push your changes to your fork-repository",-1),b=(0,n._)("li",null,[(0,n.Uk)("Send a pull-request with your changes ("),(0,n._)("em",null,'please check "Allow edits from maintainers"'),(0,n.Uk)(")")],-1),w={href:"https://en.wikipedia.org/wiki/Beer",target:"_blank",rel:"noopener noreferrer"},v=(0,n._)("p",null,[(0,n.Uk)("As soon as I receive the pull-request ("),(0,n._)("em",null,"and have time for it"),(0,n.Uk)("), I will review your changes and merge them into this project. If not, I will inform you why I choose not to.")],-1),U={};var q=(0,r(3744).Z)(U,[["render",function(e,t){const r=(0,n.up)("ExternalLinkIcon"),U=(0,n.up)("router-link"),q=(0,n.up)("RouterLink");return(0,n.wg)(),(0,n.iD)("div",null,[l,(0,n._)("p",null,[(0,n.Uk)("Have you found a defect ( "),(0,n._)("a",o,[(0,n.Uk)("bug or design flaw"),(0,n.Wm)(r)]),(0,n.Uk)(" ), or do you wish improvements? In the following sections, you might find some useful information on how you can help this project. In any case, I thank you for taking the time to help me improve this project's deliverables and overall quality.")]),(0,n._)("nav",i,[(0,n._)("ul",null,[(0,n._)("li",null,[(0,n.Wm)(U,{to:"#bug-report"},{default:(0,n.w5)((()=>[(0,n.Uk)("Bug Report")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(U,{to:"#security-vulnerability"},{default:(0,n.w5)((()=>[(0,n.Uk)("Security Vulnerability")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(U,{to:"#feature-request"},{default:(0,n.w5)((()=>[(0,n.Uk)("Feature Request")])),_:1})]),(0,n._)("li",null,[(0,n.Wm)(U,{to:"#fork-code-and-send-pull-request"},{default:(0,n.w5)((()=>[(0,n.Uk)("Fork, code and send pull-request")])),_:1})])])]),a,(0,n._)("p",null,[(0,n.Uk)("If you have found a bug, please report it on "),(0,n._)("a",u,[(0,n.Uk)("GitHub"),(0,n.Wm)(r)]),(0,n.Uk)(". When reporting the bug, do consider the following:")]),s,(0,n._)("p",null,[(0,n.Uk)("Please read the "),(0,n.Wm)(q,{to:"/archive/current/security.html"},{default:(0,n.w5)((()=>[(0,n.Uk)("Security Policy")])),_:1}),(0,n.Uk)(".")]),d,(0,n._)("p",null,[(0,n.Uk)("If you have an idea for a new feature or perhaps changing an existing, feel free to create a "),(0,n._)("a",c,[(0,n.Uk)("feature request"),(0,n.Wm)(r)]),(0,n.Uk)(". Should you feel unsure whether your idea is good or not, then perhaps you could start a "),(0,n._)("a",h,[(0,n.Uk)("discussion"),(0,n.Wm)(r)]),(0,n.Uk)(".")]),p,f,(0,n._)("ul",null,[k,g,_,m,y,b,(0,n._)("li",null,[(0,n._)("em",null,[(0,n.Uk)("Drink a "),(0,n._)("a",w,[(0,n.Uk)("Beer"),(0,n.Wm)(r)]),(0,n.Uk)(" - you earned it")]),(0,n.Uk)(" 😃")])]),v])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-8b586dbe.323f1839.js b/assets/js/v-8b586dbe.323f1839.js new file mode 100644 index 00000000..f150a099 --- /dev/null +++ b/assets/js/v-8b586dbe.323f1839.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[213],{4762:function(n,s,a){a.r(s),a.d(s,{data:function(){return e}});const e=JSON.parse('{"key":"v-8b586dbe","path":"/archive/current/packages/support/mixins.html","title":"Mixins","lang":"en-GB","frontmatter":{"title":"Mixins","description":"Abstract subclasses (\\"Mixins\\") utilities","sidebarDepth":0},"headers":[{"level":2,"title":"Define Mixin","slug":"define-mixin","link":"#define-mixin","children":[{"level":3,"title":"Constructor","slug":"constructor","link":"#constructor","children":[]}]},{"level":2,"title":"Applying Mixins","slug":"applying-mixins","link":"#applying-mixins","children":[{"level":3,"title":"Extending Other Classes","slug":"extending-other-classes","link":"#extending-other-classes","children":[]}]},{"level":2,"title":"instanceof Operator","slug":"instanceof-operator","link":"#instanceof-operator","children":[]},{"level":2,"title":"How inheritance works","slug":"how-inheritance-works","link":"#how-inheritance-works","children":[]},{"level":2,"title":"Onward","slug":"onward","link":"#onward","children":[]}],"git":{"updatedTime":1707751216000,"contributors":[{"name":"alin","email":"alin@rspsystems.com","commits":1}]},"filePathRelative":"archive/current/packages/support/mixins.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},9639:function(n,s,a){a.r(s),a.d(s,{default:function(){return B}});var e=a(6252);const t={id:"mixins",tabindex:"-1"},p={class:"header-anchor",href:"#mixins"},o=(0,e._)("code",null,"@aedart/support/mixins",-1),i={href:"https://justinfagnani.com/author/justinfagnani/",target:"_blank",rel:"noopener noreferrer"},c={href:"https://github.com/justinfagnani/mixwith.js",target:"_blank",rel:"noopener noreferrer"},l=(0,e._)("code",null,"mixwith.js",-1),u={href:"https://github.com/justinfagnani/mixwith.js?tab=Apache-2.0-1-ov-file#readme",target:"_blank",rel:"noopener noreferrer"},r=(0,e.uE)('
import { mix, Mixin } from "@aedart/support/mixins";\n\n// Define mixin\nconst NameMixin = Mixin((superclass) => class extends superclass {\n\n    #name;\n    \n    set name(value) {\n        this.#name = value;\n    }\n    \n    get name() {\n        return this.#name;\n    }\n});\n\n// Apply mixin...\nclass Item extends mix().with(\n    NameMixin\n) {\n    // ...not shown...    \n}\n\n// ...Later in your application\nconst item = new Item();\nitem.name = 'My Item';\n\nconsole.log(item.name); // My Item\n
',1),d={class:"table-of-contents"},k=(0,e._)("h2",{id:"define-mixin",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#define-mixin"},[(0,e._)("span",null,"Define Mixin")])],-1),m=(0,e._)("code",null,"Mixin",-1),v={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof",target:"_blank",rel:"noopener noreferrer"},b=(0,e._)("code",null,"instanceof",-1),h=(0,e._)("a",{href:"#instanceof-operator"},[(0,e._)("code",null,"instanceof"),(0,e.Uk)(" Operator")],-1),f=(0,e.uE)('
import { Mixin } from "@aedart/support/mixins";\n\nexport const RectangleMixin = Mixin((superclass) => class extends superclass {\n    length = 0\n    width = 0;\n    \n    area() {\n        return this.length * this.width;\n    }\n});\n

Constructor

',2),g={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor",target:"_blank",rel:"noopener noreferrer"},w=(0,e._)("code",null,"constructor",-1),x={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super",target:"_blank",rel:"noopener noreferrer"},y=(0,e._)("code",null,"super()",-1),_=(0,e.uE)('
import { Mixin } from "@aedart/support/mixins";\n\nexport const RectangleMixin = Mixin((superclass) => class extends superclass {\n    \n    constructor(...args) {\n        super(...args); // Invoke parent constructor and pass on arugments!\n        \n        // Perform your initialisaiton logic...\n    }\n    \n    // ...remaining not shown...\n});\n

Applying Mixins

To apply one or more mixins, use the mix() function and call width() with the mixins you wish to apply to a superclass.

import { mix } from "@aedart/support/mixins";\nimport {\n    RectangleMixin,\n    DescMixin\n} from "@acme/mixins";\n\nclass Box extends mix().with(\n    RectangleMixin,\n    DescMixin\n) {\n    // ...remaining not shown...\n}\n

Extending Other Classes

To extend a superclass and apply mixins onto it, pass the superclass as argument for the mix() function.

class Shape {\n    // ...not shown...\n}\n\nclass Box extends mix(Shape).with(\n    RectangleMixin,\n    DescMixin\n) {\n    // ...remaining not shown...\n}\n

Note

By default, if you do not provide mix() with a superclass, an empty class is automatically created. It is the equivalent of the following:

class Box extends mix(class {}).with(\n    MyMixinA,\n    MyMixinB,\n    MyMixinC,\n) {\n    // ...\n}\n

instanceof Operator

When you defined your mixins using the Mixin() decorator function, then it will support instanceof checks. Consider the following example:

// A regular mixin without "Mixin" decorator \nconst MixinA = (superclass) => class extends superclas {\n    // ...not shown...\n};\n\n// Mixin with "Mixin" decorator\nconst MixinB = Mixin((superclass) => class extends superclass {\n    // ...not shown...\n});\n\n// -------------------------------------------------------------------- //\n\nclass A {}\n\nclass B extends mix(A).with(\n    MixinA,\n    MixinB\n) {}\n\n// -------------------------------------------------------------------- //\n\nconst instance = new B();\n\nconsole.log(instance instanceof A); // true\nconsole.log(instance instanceof B); // true\nconsole.log(instance instanceof MixinA); // false\nconsole.log(instance instanceof MixinB); // true\n

How inheritance works

To gain an overview of how inheritance works when applying mixins onto a superclass, consider the following example:

const MyMixin = Mixin((superclass) => class extends superclass {\n    constructor(...args) {\n        super(...args); // Invokes A's constructor\n    }\n    \n    // Overwrites A's foo() method\n    foo() {\n        return 'zam';\n    }\n\n    // Overwrites A's bar() method\n    bar() {\n        return super.bar(); // Invoke A's bar() method\n    }\n});\n\n// -------------------------------------------------------------------- //\n\nclass A {\n    foo() {\n        return 'foo';\n    }\n    \n    bar() {\n        return 'bar';\n    }\n}\n\n// -------------------------------------------------------------------- //\n\nclass B extends mix(A).with(\n    MyMixin\n) {\n    constructor(...args) {\n        super(...args); // Invokes MyMixin's constructor\n    }\n\n    // Overwrite MyMixin's foo()\n    foo() {\n        const msg = super.foo(); // Invoke MyMixin's bar() method\n\n        return `<${msg}>`;\n    }\n}\n\n// -------------------------------------------------------------------- //\n\nconst instance = new B();\n\nconsole.log(instance.foo()); // <zam>\nconsole.log(instance.bar()); // bar\n

Onward

',15),M={href:"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/extends#mix-ins",target:"_blank",rel:"noopener noreferrer"},j=(0,e._)("em",null,'"Mix-ins"',-1),U={href:"https://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/",target:"_blank",rel:"noopener noreferrer"},A=(0,e._)("em",null,'"Real" Mixins with JavaScript Classes',-1),W={href:"https://justinfagnani.com/2016/01/07/enhancing-mixins-with-decorator-functions/",target:"_blank",rel:"noopener noreferrer"},O=(0,e._)("em",null,"Enhancing Mixins with Decorator Functions",-1),q={};var B=(0,a(3744).Z)(q,[["render",function(n,s){const a=(0,e.up)("Badge"),q=(0,e.up)("ExternalLinkIcon"),B=(0,e.up)("router-link");return(0,e.wg)(),(0,e.iD)("div",null,[(0,e._)("h1",t,[(0,e._)("a",p,[(0,e._)("span",null,[(0,e.Uk)("Mixins "),(0,e.Wm)(a,{type:"tip",text:"Available since v0.8",vertical:"middle"})])])]),(0,e._)("p",null,[o,(0,e.Uk)(" offers an adaptation of "),(0,e._)("a",i,[(0,e.Uk)("Justin Fagnani's"),(0,e.Wm)(q)]),(0,e._)("a",c,[l,(0,e.Wm)(q)]),(0,e.Uk)(" package ("),(0,e._)("em",null,[(0,e.Uk)("originally licensed under "),(0,e._)("a",u,[(0,e.Uk)("Apache License 2.0"),(0,e.Wm)(q)])]),(0,e.Uk)(").")]),r,(0,e._)("nav",d,[(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(B,{to:"#define-mixin"},{default:(0,e.w5)((()=>[(0,e.Uk)("Define Mixin")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(B,{to:"#constructor"},{default:(0,e.w5)((()=>[(0,e.Uk)("Constructor")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(B,{to:"#applying-mixins"},{default:(0,e.w5)((()=>[(0,e.Uk)("Applying Mixins")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(B,{to:"#extending-other-classes"},{default:(0,e.w5)((()=>[(0,e.Uk)("Extending Other Classes")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(B,{to:"#instanceof-operator"},{default:(0,e.w5)((()=>[(0,e.Uk)("instanceof Operator")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(B,{to:"#how-inheritance-works"},{default:(0,e.w5)((()=>[(0,e.Uk)("How inheritance works")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(B,{to:"#onward"},{default:(0,e.w5)((()=>[(0,e.Uk)("Onward")])),_:1})])])]),k,(0,e._)("p",null,[(0,e.Uk)("You can use the "),m,(0,e.Uk)(" decorator to define a new mixin. Amongst other things, the decorator will enable support for "),(0,e._)("a",v,[b,(0,e.Wm)(q)]),(0,e.Uk)(" checks. See "),h,(0,e.Uk)(" for additional information.")]),f,(0,e._)("p",null,[(0,e.Uk)("If you need to perform initialisation logic in your mixins, then you can do so by implementing a class "),(0,e._)("a",g,[w,(0,e.Wm)(q)]),(0,e.Uk)(". When doing so, it is important to invoke the parent constructor via "),(0,e._)("a",x,[y,(0,e.Wm)(q)]),(0,e.Uk)(" and pass on eventual arguments.")]),_,(0,e._)("p",null,[(0,e.Uk)("For more information and examples, please read Mozilla's documentation about "),(0,e._)("a",M,[j,(0,e.Wm)(q)]),(0,e.Uk)(", and Justin Fagnani's blog posts:")]),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e._)("a",U,[A,(0,e.Wm)(q)])]),(0,e._)("li",null,[(0,e._)("a",W,[O,(0,e.Wm)(q)])])])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-8daa1a0e.a6f39e96.js b/assets/js/v-8daa1a0e.a6f39e96.js new file mode 100644 index 00000000..132776dd --- /dev/null +++ b/assets/js/v-8daa1a0e.a6f39e96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[509],{6464:function(e,t,a){a.r(t),a.d(t,{data:function(){return n}});const n=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"","lang":"en-GB","frontmatter":{"home":true,"footer":"Copyright © 2023-present Alin Eugen Deac, License BSD-3-Clause","heroImage":"/images/icon/apple-touch-icon.png","actions":[{"text":"View Documentation","link":"/archive/current/","type":"primary"},{"text":"Packages","link":"/archive/current/packages/","type":"secondary"}]},"headers":[],"git":{"updatedTime":1679237873000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":4}]},"filePathRelative":"README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},8728:function(e,t,a){a.r(t),a.d(t,{default:function(){return i}});var n=a(6252);const r=[(0,n._)("p",null,[(0,n._)("em",null,"Work in progress. Ion is at a very early stage. Feel free to browse the available documentation...")],-1)],o={};var i=(0,a(3744).Z)(o,[["render",function(e,t){return(0,n.wg)(),(0,n.iD)("div",null,r)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-8ef60844.acd799fd.js b/assets/js/v-8ef60844.acd799fd.js new file mode 100644 index 00000000..dcdf94e9 --- /dev/null +++ b/assets/js/v-8ef60844.acd799fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[171],{8032:function(n,e,a){a.r(e),a.d(e,{data:function(){return s}});const s=JSON.parse('{"key":"v-8ef60844","path":"/archive/current/packages/vuepress-utils/plugins/last-updated.html","title":"Last Updated","lang":"en-GB","frontmatter":{"title":"Last Updated","description":"Last Updated Date Vuepress plugins","sidebarDepth":0},"headers":[{"level":2,"title":"How to use","slug":"how-to-use","link":"#how-to-use","children":[]},{"level":2,"title":"Format","slug":"format","link":"#format","children":[]}],"git":{"updatedTime":1679756362000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/vuepress-utils/plugins/last-updated.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},5247:function(n,e,a){a.r(e),a.d(e,{default:function(){return v}});var s=a(6252);const t=(0,s._)("h1",{id:"last-updated",tabindex:"-1"},[(0,s._)("a",{class:"header-anchor",href:"#last-updated"},[(0,s._)("span",null,"Last Updated")])],-1),o=(0,s._)("code",null,"lastUpdatedPlugin()",-1),i={href:"https://v2.vuepress.vuejs.org/reference/default-theme/config.html#lastupdated",target:"_blank",rel:"noopener noreferrer"},l={href:"https://moment.github.io/luxon/#/",target:"_blank",rel:"noopener noreferrer"},p=(0,s._)("h2",{id:"how-to-use",tabindex:"-1"},[(0,s._)("a",{class:"header-anchor",href:"#how-to-use"},[(0,s._)("span",null,"How to use")])],-1),r={href:"https://v2.vuepress.vuejs.org/guide/configuration.html#config-file",target:"_blank",rel:"noopener noreferrer"},u=(0,s._)("code",null,"lastUpdatedPlugin()",-1),d=(0,s.uE)('
import {defineUserConfig} from 'vuepress';\nimport {lastUpdatedPlugin} from "@aedart/vuepress-utils/plugins";\n\nexport default defineUserConfig({\n    \n    // ...other settings not shown...\n    \n    plugins: [\n        \n        lastUpdatedPlugin()\n    ]\n});\n

Format

',2),c=(0,s._)("code",null,"format",-1),m={href:"https://moment.github.io/luxon/#/formatting?id=table-of-tokens",target:"_blank",rel:"noopener noreferrer"},k=(0,s.uE)('
lastUpdatedPlugin({ format: 'dd-MM-yyyy HH:mm:ss' })\n

Note

The plugin uses yyyy-MM-dd HH:mm:ss ZZZZ as default format, when none is given.

Example output: 2023-03-19 16:09:20 GMT+1

',2),f={};var v=(0,a(3744).Z)(f,[["render",function(n,e){const a=(0,s.up)("ExternalLinkIcon");return(0,s.wg)(),(0,s.iD)("div",null,[t,(0,s._)("p",null,[o,(0,s.Uk)(" allows you to specify a custom datetime format for the "),(0,s._)("a",i,[(0,s.Uk)('"last updated" date'),(0,s.Wm)(a)]),(0,s.Uk)(", for the default theme. It uses "),(0,s._)("a",l,[(0,s.Uk)("Luxon"),(0,s.Wm)(a)]),(0,s.Uk)(" to perform the formatting.")]),p,(0,s._)("p",null,[(0,s.Uk)("In your "),(0,s._)("a",r,[(0,s.Uk)("Config File"),(0,s.Wm)(a)]),(0,s.Uk)(", add the "),u,(0,s.Uk)(":")]),d,(0,s._)("p",null,[(0,s.Uk)("Use the "),c,(0,s.Uk)(" argument to specify your desired datetime format. See "),(0,s._)("a",m,[(0,s.Uk)("Luxon documentation"),(0,s.Wm)(a)]),(0,s.Uk)(" for available format tokens.")]),k])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-93f9e4c6.a6b3f945.js b/assets/js/v-93f9e4c6.a6b3f945.js new file mode 100644 index 00000000..ab45cc07 --- /dev/null +++ b/assets/js/v-93f9e4c6.a6b3f945.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[138],{8017:function(e,i,n){n.r(i),n.d(i,{data:function(){return l}});const l=JSON.parse('{"key":"v-93f9e4c6","path":"/archive/current/security.html","title":"Security Policy","lang":"en-GB","frontmatter":{"description":"Security Policy of Athenaeum","sidebarDepth":0},"headers":[{"level":2,"title":"How to report a vulnerability","slug":"how-to-report-a-vulnerability","link":"#how-to-report-a-vulnerability","children":[{"level":3,"title":"Public PGP Key","slug":"public-pgp-key","link":"#public-pgp-key","children":[]}]},{"level":2,"title":"Supported Versions","slug":"supported-versions","link":"#supported-versions","children":[]}],"git":{"updatedTime":1679232326000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/security.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},6132:function(e,i,n){n.r(i),n.d(i,{default:function(){return h}});var l=n(6252);const s=(0,l._)("h1",{id:"security-policy",tabindex:"-1"},[(0,l._)("a",{class:"header-anchor",href:"#security-policy"},[(0,l._)("span",null,"Security Policy")])],-1),r=(0,l._)("div",{class:"custom-container warning"},[(0,l._)("p",{class:"custom-container-title"},"WARNING"),(0,l._)("p",null,[(0,l._)("strong",null,"DO NOT DISCLOSE SECURITY RELATED ISSUES PUBLICLY!"),(0,l._)("strong",null,"PLEASE SEND AN ENCRYPTED EMAIL TO ME INSTEAD!")]),(0,l._)("p",null,[(0,l._)("em",null,'See "How to report a vulnerability" for instructions.')])],-1),a={class:"table-of-contents"},t=(0,l.uE)('

How to report a vulnerability

If you have discovered a vulnerability, please send an encrypted email to Alin Eugen Deac (aedart@gmail.com). Use the public PGP key listed below for encryption. Your email will be prioritised and addressed as quickly as possible.

In addition, please make sure that the contents of your email contains appropriate information about the vulnerability. E.g.:

  • Where the vulnerability is located
  • Why it is a vulnerability
  • Affected version(s)
  • (How it can be resolved, if you have a possible solution)
',4),u={class:"custom-container tip"},d=(0,l._)("p",{class:"custom-container-title"},"How to encrypt emails using PGP",-1),o=(0,l._)("p",null,"If you do not know how to use PGP encryption, then the following can help you",-1),c={href:"https://youtu.be/Ro3MSBS9w-A",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/mailvelope/mailvelope",target:"_blank",rel:"noopener noreferrer"},m={href:"https://sela.io/pgp-en/",target:"_blank",rel:"noopener noreferrer"},p=(0,l.uE)('

Public PGP Key

-----BEGIN PGP PUBLIC KEY BLOCK-----\nVersion: Mailvelope v4.4.1\nComment: https://www.mailvelope.com\n\nxsFNBGISJyIBEAC6JEo+xr48WA6fDTVjJKuF3MaT91VBrjynKNxcCBHINLw8\nqIiJYfRFvny0Ffx8xuKlK1rVJ4BpsX4fURb5mFiQtFe6paSBVLUOCDyjlhdz\nsrKwhtz4tDpzc94dCUWkNJgWNa4ah5TuEJZLdXGptYeUtj3/UNqmAxsx6NEj\n/xXLX3eZ+rwn88UVxKoTFge1AwCLmRk0N55s6g1tQJ8MrGZvjjJ0OGCnDKhy\nh3CZI2SqlovL4/MXq0cYexqyUDLcZzEgbAKvNA/vnxc9oIBEIZoRZ1QxqXO6\nZ/Da8ItUJ8Eg8MmWIFmnqs+YfeOcHqxflm288c44BRPN3e3bM9tb8qhi+Xd8\nSE3D0Az1QVq3aoKzvF35bnV0KwB86so8ud4/fVtfBq6kklS6ZSS3wNhCRG3f\nimenk2DvOni9MqriXPOKxVBqa9yC0otua7/IoZGksNOwzjdUwpfY3guTv4iu\nnUcieHBmXtX57N4PHx1DZAWi0Zyh0dop3cnV8my3ZdQ0fR+GSI49z+1gcpSE\nOgANIDb5Ejk3EalmYxv4OKWl9M3sztaP5q7dOAo5vYoTwFv9cnjXaj7+8F7b\nfH0rQi/xJWeHd7BKHzgwz3zP/Wz57wFNvW9Yg0HVjjkBB/fwmqIGtImkVICV\nJfhnWBApezI+m8W4GI777GtG+DhR3nsTJQ43DQARAQABzSJBbGluIEV1Z2Vu\nIERlYWMgPGFlZGFydEBnbWFpbC5jb20+wsF1BBABCAAfBQJiEiciBgsJBwgD\nAgQVCAoCAxYCAQIZAQIbAwIeAQAKCRBcsQfpwXzHeO1kEACHLk3KrWzJ3qqP\nRP4RERnaD3wXy7j2my4zuAEDPq4miEekSfSSgna0yca5L22scDcJYk18wOlX\nf3TprZVkQ0xKKukHMgaJY3ydpug1dEM1Ve9TxzDVUEqiOAxg55P0s5rA8Uec\nexW8lzQcfCnR4ascuPCKoxo/zbvVoIZr3tnKaQirE+DJFcbsJlqNROG/XV+f\nmwjpI2/LIi+qJ/qxmL8iqE4KqUI147Usk1wztQGc6aY0OfK7uxZ+s0YvkbFQ\nlBJoJLG0MVodq9fpiakEzWN0q1OoQEJALrm1OvZD4JtxGSeSVw973y33nBdg\nNDbbwXmeh4mu6ObZgmNImxt/nTLBWsqYTS/3mzyUC/3eimuYWIsSi7A8JJ/s\nAmcG+Wp7yM9rRbiuZG/m0C+HneAICBcJ4QDV84XY4bMgu2zMgyWM5dbd65cR\n7ug+p8z7g7CieH+H1OYXNApn8+7HZjw7CbMsUaAGk4IgndCb1kxxI8+q1Et4\nwaR0mMJ6uOslbP+24uEwrIe2boW4mcssqlNBSfBR3OCWs0VWNvB1tq1NBUZK\nrMuqdPzL/eNtObuNcEndXz18VWWmJBJaGCC7r5ARXB+MzO07B5UTHCu1mXCR\n6t9gqLuSEOwpbK8BJHSuyxYAPPlc7X7BUSlyZVmEqiVgmtHM0F6E4pydR7e4\nuSiBOG7d0c7BTQRiEiciARAAzR2TnBvCNI3/3bl6ZOPtru0Yr++gjIsNYsNc\n61wHDy9mhRENi1AjYngJK4UEmDrm/3rxlIrZrVm2OOXTLFxveGWJozeR1ovk\nog3zojZyYOgr8AabEtRAbsEHwIfjCSXV/z0c4mp05Jtcztll0OM+NE962gRI\ngt7tDzJweWKdsHOF4agQ3+L4g+nD76ZFLnpjoZsfSekdJLtCfl4bYVQgi4/I\nFFpJM3o7CiHeEjm26eaIu5SQ/U2Ciwnepgp7WDq+J9pbQS/5pq8wjSqUO0wW\nzyrD4fEjx2TnBTzV7aea4OumKZB6X+lJwTTpvN7BVF2ODfL2IEohzk14p3kM\nRMSpNgGtFeg7lfFDW9j0zK6vHOkFSDUZ0VbWpj6K6FtsimKx92bSS046Bdu4\n7l8Vx33vGk/QL09YiEJkeqE39DJ28TShyw1mtfUQXAJykaPIO9bpImTgYjwu\numD9y7v3Ubr+9g0Bvsy7byEsppDtcFCuYK1wtd6kvdFZSCEAJIc23JGPwVLJ\nMo7gDgR8W30TBuvhi2hEuwQq1kgE2XgrYMb4BbIo5OTplRqKePvEyq+Xgn1K\nKak4HErs0X6uFcCXynAGINIV2H7pVCtCYC0XtaoG6WvtC6NR1TWGpmhVchY0\n3jCQdBpwvQyuTw4DcSJcbhFmJzo9PdzRN8fu8M4Kh9LapvUAEQEAAcLBXwQY\nAQgACQUCYhInIgIbDAAKCRBcsQfpwXzHeEmKD/4mysrPW/t9BfDE4kWYBCHO\nl54lXV9FfC6xHAR0v9qJTurv87svOZBwWeL8lnyFELB9DCLjgOtNT9ZbUcdm\nHuesBTm9jV83K3uvMBqzPKvxX1IZnxhVsg+KSRocY3PMa2QPCyriKDZ7tsFe\n5yMeXqHOtHuDsVzYJhmCK9oz85tl5xozFVJgmapn007ozAoK6XsQQmjY8U+C\njiL/WHdN9yuFxYnxwCdtJ7Nh72uixs2nRZKjcCzWAFYHo6iJuWbxWG2l4LIq\nRh9x3pLDSCth4xigObAaGiIj4nMWtrX9Re8/lze3BFKfB0IDp0+KUl63afeI\n/xcOoJ5JkhFqe/AJVX203Gr6niqn3ckD08zeB3ZgMgTVTo2uwX03wM9AHz43\n0Sp5n1c321E6mWtrBPTDL8xdBccLETYcmpDKA6jHUepwQTxst3ytbv/G1nZ5\nDj6ADe/CSC95O6CO5BeXkM3gZeMmkuHtxjue1MLLhnGgrp1HMjxp5L92tUMU\n6chem/yKqEE5Ac0TCNMDAs+soQ/ISN++NQtk1f5QEDE2F7Ji8eLAFSclnXbh\nlf1Hu4IaSrvr8q+ctAGIgrh/N4oWDm/jYPT+QPCQEaYKUuGBNHIWWU5Pb+9S\n1IIhuIP3hQAzawPbIeoEgt2lCIii3BjLcZAZ2cVv9KuCG09D7F86j5Dz/R7V\ngA==\n=E13G\n-----END PGP PUBLIC KEY BLOCK-----\n

Supported Versions

',3),b={};var h=(0,n(3744).Z)(b,[["render",function(e,i){const n=(0,l.up)("router-link"),b=(0,l.up)("ExternalLinkIcon"),h=(0,l.up)("RouterLink");return(0,l.wg)(),(0,l.iD)("div",null,[s,r,(0,l._)("nav",a,[(0,l._)("ul",null,[(0,l._)("li",null,[(0,l.Wm)(n,{to:"#how-to-report-a-vulnerability"},{default:(0,l.w5)((()=>[(0,l.Uk)("How to report a vulnerability")])),_:1}),(0,l._)("ul",null,[(0,l._)("li",null,[(0,l.Wm)(n,{to:"#public-pgp-key"},{default:(0,l.w5)((()=>[(0,l.Uk)("Public PGP Key")])),_:1})])])]),(0,l._)("li",null,[(0,l.Wm)(n,{to:"#supported-versions"},{default:(0,l.w5)((()=>[(0,l.Uk)("Supported Versions")])),_:1})])])]),t,(0,l._)("div",u,[d,o,(0,l._)("ul",null,[(0,l._)("li",null,[(0,l._)("a",c,[(0,l.Uk)("How to Use PGP Encryption With Gmail and Other Web Email With Mailvelope"),(0,l.Wm)(b)])]),(0,l._)("li",null,[(0,l._)("a",v,[(0,l.Uk)("Mailvelope - Browser Extension"),(0,l.Wm)(b)])]),(0,l._)("li",null,[(0,l._)("a",m,[(0,l.Uk)("Sela - Online PGP Encrypt & Decrypt"),(0,l.Wm)(b)])])])]),p,(0,l._)("p",null,[(0,l.Uk)("Please read the "),(0,l.Wm)(h,{to:"/archive/current/#support-policy"},{default:(0,l.w5)((()=>[(0,l.Uk)("Support Policy")])),_:1}),(0,l.Uk)(" for additional information about what versions are supported.")])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-bd9a9378.7942bfcc.js b/assets/js/v-bd9a9378.7942bfcc.js new file mode 100644 index 00000000..3bd942ba --- /dev/null +++ b/assets/js/v-bd9a9378.7942bfcc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[600],{6993:function(a,n,e){e.r(n),e.d(n,{data:function(){return s}});const s=JSON.parse('{"key":"v-bd9a9378","path":"/archive/current/packages/support/install.html","title":"How to install","lang":"en-GB","frontmatter":{"description":"How to install Ion Support package","sidebarDepth":0},"headers":[{"level":2,"title":"npm","slug":"npm","link":"#npm","children":[]},{"level":2,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":2,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]}],"git":{"updatedTime":1680807324000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/support/install.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},7057:function(a,n,e){e.r(n),e.d(n,{default:function(){return l}});var s=e(6252);const t=[(0,s.uE)('

How to install

npm

npm install --save-peer @aedart/support\n

yarn

yarn add --peer @aedart/support\n

pnpm

pnpm add --save-peer @aedart/support\n
',7)],p={};var l=(0,e(3744).Z)(p,[["render",function(a,n){return(0,s.wg)(),(0,s.iD)("div",null,t)}]])}}]); \ No newline at end of file diff --git a/assets/js/v-c4c6a970.7f47bd86.js b/assets/js/v-c4c6a970.7f47bd86.js new file mode 100644 index 00000000..cfe5dc76 --- /dev/null +++ b/assets/js/v-c4c6a970.7f47bd86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[639],{4661:function(e,t,n){n.r(t),n.d(t,{data:function(){return a}});const a=JSON.parse('{"key":"v-c4c6a970","path":"/archive/current/packages/vuepress-utils/","title":"Introduction","lang":"en-GB","frontmatter":{"title":"Introduction","description":"Various helpers for your vuepress site","sidebarDepth":0},"headers":[{"level":2,"title":"Navigation","slug":"navigation","link":"#navigation","children":[]},{"level":2,"title":"Plugins","slug":"plugins","link":"#plugins","children":[]},{"level":2,"title":"Components","slug":"components","link":"#components","children":[]}],"git":{"updatedTime":1680022561000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":4}]},"filePathRelative":"archive/current/packages/vuepress-utils/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},889:function(e,t,n){n.r(t),n.d(t,{default:function(){return d}});var a=n(6252);const i={id:"introduction",tabindex:"-1"},l={class:"header-anchor",href:"#introduction"},r={href:"https://v2.vuepress.vuejs.org/",target:"_blank",rel:"noopener noreferrer"},s=(0,a._)("h2",{id:"navigation",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#navigation"},[(0,a._)("span",null,"Navigation")])],-1),o=(0,a._)("h2",{id:"plugins",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#plugins"},[(0,a._)("span",null,"Plugins")])],-1),u=(0,a._)("h2",{id:"components",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#components"},[(0,a._)("span",null,"Components")])],-1),c={};var d=(0,n(3744).Z)(c,[["render",function(e,t){const n=(0,a.up)("Badge"),c=(0,a.up)("ExternalLinkIcon"),d=(0,a.up)("RouterLink");return(0,a.wg)(),(0,a.iD)("div",null,[(0,a._)("h1",i,[(0,a._)("a",l,[(0,a._)("span",null,[(0,a.Uk)("Introduction "),(0,a.Wm)(n,{type:"tip",text:"Available since v0.1",vertical:"middle"}),(0,a.Wm)(n,{type:"success",text:"Node",vertical:"middle"}),(0,a.Wm)(n,{type:"success",text:"Browser",vertical:"middle"})])])]),(0,a._)("p",null,[(0,a.Uk)("Contains a few utilities for "),(0,a._)("a",r,[(0,a.Uk)("Vuepress v2"),(0,a.Wm)(c)]),(0,a.Uk)(", which are also used for building this documentation site. Amongst them are:")]),s,(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Wm)(d,{to:"/archive/current/packages/vuepress-utils/navigation/archive.html"},{default:(0,a.w5)((()=>[(0,a.Uk)("Archive")])),_:1})])]),o,(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Wm)(d,{to:"/archive/current/packages/vuepress-utils/plugins/last-updated.html"},{default:(0,a.w5)((()=>[(0,a.Uk)("Last Updated")])),_:1})])]),u,(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Wm)(d,{to:"/archive/current/packages/vuepress-utils/components/version-disclaimer.html"},{default:(0,a.w5)((()=>[(0,a.Uk)("Version Disclaimer")])),_:1})])])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-c5cc3bd8.0f58e73c.js b/assets/js/v-c5cc3bd8.0f58e73c.js new file mode 100644 index 00000000..4b160298 --- /dev/null +++ b/assets/js/v-c5cc3bd8.0f58e73c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[945],{6102:function(t,e,a){a.r(e),a.d(e,{data:function(){return n}});const n=JSON.parse('{"key":"v-c5cc3bd8","path":"/archive/current/packages/contracts/","title":"Introduction","lang":"en-GB","frontmatter":{"title":"Introduction","description":"Ion Support package","sidebarDepth":0},"headers":[],"git":{"updatedTime":1680807921000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/contracts/README.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},4703:function(t,e,a){a.r(e),a.d(e,{default:function(){return s}});var n=a(6252);const r={id:"introduction",tabindex:"-1"},i={class:"header-anchor",href:"#introduction"},c=(0,n._)("p",null,"The contracts package contains types, interfaces and unique identifiers.",-1),o=(0,n._)("p",null,[(0,n._)("em",null,"More information available at a later point...")],-1),d={};var s=(0,a(3744).Z)(d,[["render",function(t,e){const a=(0,n.up)("Badge");return(0,n.wg)(),(0,n.iD)("div",null,[(0,n._)("h1",r,[(0,n._)("a",i,[(0,n._)("span",null,[(0,n.Uk)("Introduction "),(0,n.Wm)(a,{type:"tip",text:"Available since v0.3",vertical:"middle"}),(0,n.Wm)(a,{type:"success",text:"Browser",vertical:"middle"})])])]),c,o])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-efab5bac.d7ab96a9.js b/assets/js/v-efab5bac.d7ab96a9.js new file mode 100644 index 00000000..dc297d2f --- /dev/null +++ b/assets/js/v-efab5bac.d7ab96a9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[378],{7369:function(n,s,a){a.r(s),a.d(s,{data:function(){return e}});const e=JSON.parse('{"key":"v-efab5bac","path":"/archive/current/upgrade-guide.html","title":"Upgrade Guide","lang":"en-GB","frontmatter":{"description":"Ion Upgrade Guide","sidebarDepth":1},"headers":[{"level":2,"title":"From v0.6.x to v0.7.x","slug":"from-v0-6-x-to-v0-7-x","link":"#from-v0-6-x-to-v0-7-x","children":[{"level":3,"title":"Node.js 20.11.0 Required","slug":"node-js-20-11-0-required","link":"#node-js-20-11-0-required","children":[]},{"level":3,"title":"Meta","slug":"meta","link":"#meta","children":[]},{"level":3,"title":"Vuepress Utils","slug":"vuepress-utils","link":"#vuepress-utils","children":[]}]},{"level":2,"title":"From v0.3.x to v0.4.x","slug":"from-v0-3-x-to-v0-4-x","link":"#from-v0-3-x-to-v0-4-x","children":[{"level":3,"title":"Rest Parameters for forgetAll(), hasAll() and hasAny()","slug":"rest-parameters-for-forgetall-hasall-and-hasany","link":"#rest-parameters-for-forgetall-hasall-and-hasany","children":[]}]},{"level":2,"title":"Onward","slug":"onward","link":"#onward","children":[]}],"git":{"updatedTime":1706895436000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":3},{"name":"alin","email":"alin@rspsystems.com","commits":2}]},"filePathRelative":"archive/current/upgrade-guide.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},5963:function(n,s,a){a.r(s),a.d(s,{default:function(){return m}});var e=a(6252);const t=(0,e._)("h1",{id:"upgrade-guide",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#upgrade-guide"},[(0,e._)("span",null,"Upgrade Guide")])],-1),o={class:"table-of-contents"},p=(0,e._)("h2",{id:"from-v0-6-x-to-v0-7-x",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#from-v0-6-x-to-v0-7-x"},[(0,e._)("span",null,"From v0.6.x to v0.7.x")])],-1),l=(0,e._)("h3",{id:"node-js-20-11-0-required",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#node-js-20-11-0-required"},[(0,e._)("span",null,"Node.js 20.11.0 Required")])],-1),i={href:"https://nodejs.org",target:"_blank",rel:"noopener noreferrer"},c=(0,e._)("code",null,"v20.11.0",-1),r=(0,e.uE)('

Meta

Various metadata related type definitions have now been deprecated in favour of TypeScript's own definitions. Mostly, this should not affect the implementation. However, if your decorator(s) depend on the following types (see below), then you are strongly encouraged to use corresponding TypeScript defined types instead.

Deprecated types and interfaces are defined in @aedart/contracts/support/meta:

  • ClassContext
  • MethodContext
  • GetterContext
  • SetterContext
  • FieldContext
  • AccessorContext
  • MetadataContext
  • MemberContext

More information available in the source code and CHANGELOG.md

Vuepress Utils

The @aedart/vuepress-utils has been upgraded to use vuepress v2.0.0-rc.2, meaning that you no longer should require to manually define your vuepress dependency, in your application's packages.json file.

❌ Previously

{\n    "devDependencies": {\n        "@aedart/vuepress-utils": "^0.6.1",\n        "vuepress": "2.0.0-beta.61",\n        "@vuepress/core": "2.0.0-beta.61",\n        "@vuepress/utils": "2.0.0-beta.61",\n        "@vuepress/client": "2.0.0-beta.61"\n    }   \n}\n

✔️ Now

{\n    "devDependencies": {\n        "@aedart/vuepress-utils": "^0.7.0"\n    }   \n}\n
',11),u={href:"https://github.com/vuepress/core/blob/main/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"},d=(0,e.uE)('

Webpack Bundle

In addition to the above, the @aedart/vuepress-utils automatically comes with @vuepress/bundler-webpack as its peed dependency.

From v0.3.x to v0.4.x

Rest Parameters for forgetAll(), hasAll() and hasAny()

forgetAll(), hasAll() and hasAny() (in @aedart/support/object submodule) now accept rest parameters instead of an array of paths. If you are using these methods, then you need to upgrade or risk unexpected results.

❌ Previously

import {\n    forgetAll,\n    hasAll,\n    hasAny\n} from "@aedart/support/objects";\n\nhasAny(target, [ 'a', 'b.c.age' ]);\nhasAll(target, [ 'a', 'b.c.age' ]);\nforgetAll(target, [ 'a', 'b.c.age' ]);\n

✔️ Now

hasAny(target, ...[ 'a', 'b.c.age' ]);\nhasAll(target, ...[ 'a', 'b.c.age' ]);\nforgetAll(target, ...[ 'a', 'b.c.age' ]);\n\n// ...Or\nhasAny(target, 'a', 'b.c.age');\nhasAll(target, 'a', 'b.c.age');\nforgetAll(target, 'a', 'b.c.age');\n

Onward

',10),k={href:"https://github.com/aedart/ion/blob/main/CHANGELOG.md",target:"_blank",rel:"noopener noreferrer"},v={};var m=(0,a(3744).Z)(v,[["render",function(n,s){const a=(0,e.up)("router-link"),v=(0,e.up)("ExternalLinkIcon");return(0,e.wg)(),(0,e.iD)("div",null,[t,(0,e._)("nav",o,[(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(a,{to:"#from-v0-6-x-to-v0-7-x"},{default:(0,e.w5)((()=>[(0,e.Uk)("From v0.6.x to v0.7.x")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(a,{to:"#node-js-20-11-0-required"},{default:(0,e.w5)((()=>[(0,e.Uk)("Node.js 20.11.0 Required")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#meta"},{default:(0,e.w5)((()=>[(0,e.Uk)("Meta")])),_:1})]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#vuepress-utils"},{default:(0,e.w5)((()=>[(0,e.Uk)("Vuepress Utils")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#from-v0-3-x-to-v0-4-x"},{default:(0,e.w5)((()=>[(0,e.Uk)("From v0.3.x to v0.4.x")])),_:1}),(0,e._)("ul",null,[(0,e._)("li",null,[(0,e.Wm)(a,{to:"#rest-parameters-for-forgetall-hasall-and-hasany"},{default:(0,e.w5)((()=>[(0,e.Uk)("Rest Parameters for forgetAll(), hasAll() and hasAny()")])),_:1})])])]),(0,e._)("li",null,[(0,e.Wm)(a,{to:"#onward"},{default:(0,e.w5)((()=>[(0,e.Uk)("Onward")])),_:1})])])]),p,l,(0,e._)("p",null,[(0,e.Uk)("Ion now requires "),(0,e._)("a",i,[(0,e.Uk)("Node.js"),(0,e.Wm)(v)]),(0,e.Uk)(),c,(0,e.Uk)(" or greater.")]),r,(0,e._)("p",null,[(0,e.Uk)("Please read "),(0,e._)("a",u,[(0,e.Uk)("vuepress' changelog"),(0,e.Wm)(v)]),(0,e.Uk)(" for additional details.")]),d,(0,e._)("p",null,[(0,e.Uk)("More details can be found in the "),(0,e._)("a",k,[(0,e.Uk)("changelog"),(0,e.Wm)(v)]),(0,e.Uk)(".")])])}]])}}]); \ No newline at end of file diff --git a/assets/js/v-f7a66f9c.9f2407a3.js b/assets/js/v-f7a66f9c.9f2407a3.js new file mode 100644 index 00000000..a902ec9e --- /dev/null +++ b/assets/js/v-f7a66f9c.9f2407a3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_aedart_ion_monorepo=self.webpackChunk_aedart_ion_monorepo||[]).push([[794],{4808:function(a,n,e){e.r(n),e.d(n,{data:function(){return t}});const t=JSON.parse('{"key":"v-f7a66f9c","path":"/archive/current/packages/contracts/install.html","title":"How to install","lang":"en-GB","frontmatter":{"description":"How to install Ion Contracts package","sidebarDepth":0},"headers":[{"level":2,"title":"npm","slug":"npm","link":"#npm","children":[]},{"level":2,"title":"yarn","slug":"yarn","link":"#yarn","children":[]},{"level":2,"title":"pnpm","slug":"pnpm","link":"#pnpm","children":[]}],"git":{"updatedTime":1680807921000,"contributors":[{"name":"Alin Eugen Deac","email":"aedart@gmail.com","commits":1}]},"filePathRelative":"archive/current/packages/contracts/install.md","lastUpdatedDateFormat":"yyyy-MM-dd HH:mm:ss ZZZZ","lastUpdatedDateOptions":{}}')},9398:function(a,n,e){e.r(n),e.d(n,{default:function(){return r}});var t=e(6252);const s=[(0,t.uE)('

How to install

npm

npm install --save-peer @aedart/contracts\n

yarn

yarn add --peer @aedart/contracts\n

pnpm

pnpm add --save-peer @aedart/contracts\n
',7)],l={};var r=(0,e(3744).Z)(l,[["render",function(a,n){return(0,t.wg)(),(0,t.iD)("div",null,s)}]])}}]); \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..8bbf645e Binary files /dev/null and b/favicon.ico differ diff --git a/images/icon/README.md b/images/icon/README.md new file mode 100644 index 00000000..6f7d2cb2 --- /dev/null +++ b/images/icon/README.md @@ -0,0 +1,4 @@ +# About Ion Icon + +The icon was generated using [favicon.io](https://favicon.io/favicon-generator/). +See details in [about](about.txt). diff --git a/images/icon/about.txt b/images/icon/about.txt new file mode 100644 index 00000000..7d6aedf6 --- /dev/null +++ b/images/icon/about.txt @@ -0,0 +1,6 @@ +This favicon was generated using the following font: + +- Font Title: Leckerli One +- Font Author: Copyright (c) 2011 Gesine Todt (www.gesine-todt.de), with Reserved Font Names "Leckerli" +- Font Source: http://fonts.gstatic.com/s/leckerlione/v16/V8mCoQH8VCsNttEnxnGQ-1itLZxcBtItFw.ttf +- Font License: SIL Open Font License, 1.1 (http://scripts.sil.org/OFL)) diff --git a/images/icon/android-chrome-192x192.png b/images/icon/android-chrome-192x192.png new file mode 100644 index 00000000..a1405ac4 Binary files /dev/null and b/images/icon/android-chrome-192x192.png differ diff --git a/images/icon/android-chrome-512x512.png b/images/icon/android-chrome-512x512.png new file mode 100644 index 00000000..e3d0ea11 Binary files /dev/null and b/images/icon/android-chrome-512x512.png differ diff --git a/images/icon/apple-touch-icon.png b/images/icon/apple-touch-icon.png new file mode 100644 index 00000000..4dc18c75 Binary files /dev/null and b/images/icon/apple-touch-icon.png differ diff --git a/images/icon/favicon-16x16.png b/images/icon/favicon-16x16.png new file mode 100644 index 00000000..8dc03ca1 Binary files /dev/null and b/images/icon/favicon-16x16.png differ diff --git a/images/icon/favicon-32x32.png b/images/icon/favicon-32x32.png new file mode 100644 index 00000000..4ca10cc3 Binary files /dev/null and b/images/icon/favicon-32x32.png differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..1af44d04 --- /dev/null +++ b/index.html @@ -0,0 +1,34 @@ + + + + + + + + + Ion + + + + + +
Ion

Ion

Ion Official Documentation

View Documentation Packages

Work in progress. Ion is at a very early stage. Feel free to browse the available documentation...

+ + + diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 00000000..94bd8959 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "Ion Official Documentation", + "short_name": "Ion Docs", + "icons": [ + { + "src": "/ion/images/icon/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/ion/images/icon/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +}