diff --git a/docs/node/clients/opal_async_ip.md b/docs/node/clients/opal_async_ip.md index 94387c8..f0db678 100644 --- a/docs/node/clients/opal_async_ip.md +++ b/docs/node/clients/opal_async_ip.md @@ -15,33 +15,33 @@ You can start right away using this example project provided by OPAL-RT when thi ``` url="external/node/etc/examples/formats/opal-asyncip.conf" title="node/etc/examples/formats/opal-asyncip.conf" nodes = { - node = { - type = "socket" - layer = "udp" + node = { + type = "socket" + layer = "udp" - format = { - type = "opal.asyncip" + format = { + type = "opal.asyncip" - dev_id = 99 - } + dev_id = 99 + } - in = { - # Port number specified in Asynchronous Process block of RTlab project - address = ":12000" + in = { + # Port number specified in Asynchronous Process block of RTlab project + address = ":12000" - signals = { - count = 64 + signals = { + count = 64 - # The Asynchronous Process block only supports floating point values! - type = "float" - } - } + # The Asynchronous Process block only supports floating point values! + type = "float" + } + } - out = { - # IP address and port of OPAL-RT Target - address = "192.168.0.44:12000" - } - } + out = { + # IP address and port of OPAL-RT Target + address = "192.168.0.44:12000" + } + } } ``` diff --git a/docs/node/clients/typhoon.md b/docs/node/clients/typhoon.md index f82be54..ebc6e35 100644 --- a/docs/node/clients/typhoon.md +++ b/docs/node/clients/typhoon.md @@ -90,7 +90,7 @@ nodes = { paths = ( { # A simple loopback - in = "typhoon_1", + in = "typhoon_1" out = "typhoon_1" } ) diff --git a/docs/node/formats/csv.md b/docs/node/formats/csv.md index 9f3cabe..66eb94e 100644 --- a/docs/node/formats/csv.md +++ b/docs/node/formats/csv.md @@ -23,19 +23,19 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/csv.conf" title="node/etc/examples/formats/csv.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" - - format = { - type = "csv" - - separator = "," - delimiter = "\n" - skip_first_line = false - header = true - } - } + node = { + type = "file" + uri = "/dev/null" + + format = { + type = "csv" + + separator = "," + delimiter = "\n" + skip_first_line = false + header = true + } + } } ``` diff --git a/docs/node/formats/iotagent_ul.md b/docs/node/formats/iotagent_ul.md index dd7b2f0..30e5908 100644 --- a/docs/node/formats/iotagent_ul.md +++ b/docs/node/formats/iotagent_ul.md @@ -25,12 +25,12 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/iotagent_ul.conf" title="node/etc/examples/formats/iotagent_ul.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = "iotagent_ul" - } + format = "iotagent_ul" + } } ``` diff --git a/docs/node/formats/json.md b/docs/node/formats/json.md index 2a627bf..5fb0ece 100644 --- a/docs/node/formats/json.md +++ b/docs/node/formats/json.md @@ -23,20 +23,20 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/json.conf" title="node/etc/examples/formats/json.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = { - type = "json" + format = { + type = "json" - indent = 4 - compact = true - ensure_ascii = true - escape_slash = false - sort_keys = true - } - } + indent = 4 + compact = true + ensure_ascii = true + escape_slash = false + sort_keys = true + } + } } ``` diff --git a/docs/node/formats/json_kafka.md b/docs/node/formats/json_kafka.md index 45e4bb2..d0d6e93 100644 --- a/docs/node/formats/json_kafka.md +++ b/docs/node/formats/json_kafka.md @@ -21,20 +21,20 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/json-kafka.conf" title="node/etc/examples/formats/json-kafka.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = { - type = "json.kafka" + format = { + type = "json.kafka" - indent = 2 - schema = { - type = "struct" - name = "villas-node.Value" - } - } - } + indent = 2 + schema = { + type = "struct" + name = "villas-node.Value" + } + } + } } ``` diff --git a/docs/node/formats/opal_asyncip.md b/docs/node/formats/opal_asyncip.md index 37066b6..81c9299 100644 --- a/docs/node/formats/opal_asyncip.md +++ b/docs/node/formats/opal_asyncip.md @@ -48,32 +48,32 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/opal-asyncip.conf" title="node/etc/examples/formats/opal-asyncip.conf" nodes = { - node = { - type = "socket" - layer = "udp" + node = { + type = "socket" + layer = "udp" - format = { - type = "opal.asyncip" + format = { + type = "opal.asyncip" - dev_id = 99 - } + dev_id = 99 + } - in = { - # Port number specified in Asynchronous Process block of RTlab project - address = ":12000" + in = { + # Port number specified in Asynchronous Process block of RTlab project + address = ":12000" - signals = { - count = 64 + signals = { + count = 64 - # The Asynchronous Process block only supports floating point values! - type = "float" - } - } + # The Asynchronous Process block only supports floating point values! + type = "float" + } + } - out = { - # IP address and port of OPAL-RT Target - address = "192.168.0.44:12000" - } - } + out = { + # IP address and port of OPAL-RT Target + address = "192.168.0.44:12000" + } + } } ``` diff --git a/docs/node/formats/protobuf.md b/docs/node/formats/protobuf.md index 55cce95..ea1d1b5 100644 --- a/docs/node/formats/protobuf.md +++ b/docs/node/formats/protobuf.md @@ -13,52 +13,53 @@ The `.proto` Protocol Buffers Version Language Specification of the payload used https://github.com/VILLASframework/node/blob/master/lib/formats/villas.proto ```protobuf url="external/node/lib/formats/villas.proto" title="node/lib/formats/villas.proto" -/// Protobuf schema based on msg_format.h -/// -/// @file -/// @author Steffen Vogel -/// @copyright 2014-2022, Institute for Automation of Complex Power Systems, EONERC -/// @license Apache 2.0 -//////////////////////////////////////////////////////////////////////////////////// +// Protobuf schema based on msg_format.h +// +// @file +// Author: Steffen Vogel +// SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University +// SPDX-License-Identifier: Apache-2.0 syntax = "proto2"; package villas.node; message Message { - repeated Sample samples = 1; + repeated Sample samples = 1; } message Sample { - enum Type { - DATA = 1; // Message contains float / integer data values - START = 2; // Message marks the beginning of a new simulation case - STOP = 3; // Message marks the end of a simulation case - }; - - required Type type = 1 [default = DATA]; - optional uint64 sequence = 2; // The sequence number is incremented by one for consecutive messages. - optional Timestamp timestamp = 4; - repeated Value values = 5; + enum Type { + DATA = 1; // Message contains float / integer data values + START = 2; // Message marks the beginning of a new simulation case + STOP = 3; // Message marks the end of a simulation case + }; + + required Type type = 1 [default = DATA]; + optional uint64 sequence = 2; // The sequence number is incremented for consecutive samples. + optional Timestamp ts_origin = 3; + optional Timestamp ts_received = 4; + optional bool new_frame = 5; + repeated Value values = 100; } message Timestamp { - required uint32 sec = 1; // Seconds since 1970-01-01 00:00:00 - required uint32 nsec = 2; // Nanoseconds of the current second. + required uint32 sec = 1; // Seconds since 1970-01-01 00:00:00 + required uint32 nsec = 2; // Nanoseconds of the current second. } message Value { - oneof value { - double f = 1; // Floating point values. - int64 i = 2; // Integer values. - bool b = 3; // Boolean values. - Complex z = 4; // Complex values. - } + oneof value { + double f = 1; // Floating point values. + int64 i = 2; // Integer values. + bool b = 3; // Boolean values. + Complex z = 4; // Complex values. + } } message Complex { - required float real = 1; // Real component - required float imag = 2; // Imaginary component + required float real = 1; // Real component + required float imag = 2; // Imaginary component } ``` @@ -77,11 +78,11 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/protobuf.conf" title="node/etc/examples/formats/protobuf.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = "protobuf" - } + format = "protobuf" + } } ``` diff --git a/docs/node/formats/raw.md b/docs/node/formats/raw.md index d61a14b..4a62d50 100644 --- a/docs/node/formats/raw.md +++ b/docs/node/formats/raw.md @@ -23,18 +23,18 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/raw.conf" title="node/etc/examples/formats/raw.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" - - format = { - type = "raw" - - bits = 32 - endianess = "little" - fake = false - } - } + node = { + type = "file" + uri = "/dev/null" + + format = { + type = "raw" + + bits = 32 + endianess = "little" + fake = false + } + } } ``` diff --git a/docs/node/formats/tsv.md b/docs/node/formats/tsv.md index 397cf5d..79cce08 100644 --- a/docs/node/formats/tsv.md +++ b/docs/node/formats/tsv.md @@ -21,19 +21,19 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/tsv.conf" title="node/etc/examples/formats/tsv.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" - - format = { - type = "tsv" - - separator = "\t" - delimiter = "\n" - skip_first_line = false - header = true - } - } + node = { + type = "file" + uri = "/dev/null" + + format = { + type = "tsv" + + separator = "\t" + delimiter = "\n" + skip_first_line = false + header = true + } + } } ``` diff --git a/docs/node/formats/value.md b/docs/node/formats/value.md index 55bde4a..3ebe5f3 100644 --- a/docs/node/formats/value.md +++ b/docs/node/formats/value.md @@ -23,15 +23,15 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/value.conf" title="node/etc/examples/formats/value.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = { - type = "value" + format = { + type = "value" - real_precision = 5 - } - } + real_precision = 5 + } + } } ``` diff --git a/docs/node/formats/villas_binary.md b/docs/node/formats/villas_binary.md index 579aa96..116e7fb 100644 --- a/docs/node/formats/villas_binary.md +++ b/docs/node/formats/villas_binary.md @@ -49,16 +49,16 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/villas-binary.conf" title="node/etc/examples/formats/villas-binary.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = { - type = "villas.binary" + format = { + type = "villas.binary" - source_index = 99 - } - } + source_index = 99 + } + } } ``` diff --git a/docs/node/formats/villas_human.md b/docs/node/formats/villas_human.md index d9c9df7..c672c30 100644 --- a/docs/node/formats/villas_human.md +++ b/docs/node/formats/villas_human.md @@ -39,17 +39,17 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/formats/villas-human.conf" title="node/etc/examples/formats/villas-human.conf" nodes = { - node = { - type = "file" - uri = "/dev/null" + node = { + type = "file" + uri = "/dev/null" - format = { - type = "villas.human" + format = { + type = "villas.human" - comment_prefix = "#" - header = false - } - } + comment_prefix = "#" + header = false + } + } } ``` diff --git a/docs/node/guides/lab10.md b/docs/node/guides/lab10.md index 2029218..191434e 100644 --- a/docs/node/guides/lab10.md +++ b/docs/node/guides/lab10.md @@ -43,79 +43,82 @@ All of the following examples use the same set of nodes, which we define in the hugepages = 200 nodes = { - # Node names can be any alphanumeric value - rpi-1 = { - type = "socket" - layer = "udp" - format = "gtnet" # pre-built format to communicate in RTDS GTNET-SKT payload - - in = { - address = "*:12005" # villas node machine IP and port number - - signals = { - count = 8 - type = "float" - } - - hooks = ( - { - type = "stats" - warmup = 3000 - } - ) - }, - out = { - address = "192.168.0.5:12005" # remote machine IP and port number - } - }, - rpi-2 = { - type = "socket" - layer = "udp" - format = "gtnet" # pre-built format to communicate in RTDS GTNET-SKT payload - - in = { - address = "*:12006" # villas node machine IP and port number - - signals = { - count = 8 - type = "float" - } - - hooks = ( - { - type = "stats" - warmup = 3000 - } - ) - } - out = { - address = "192.168.0.6:12006" # remote machine IP and port number - } - }, - rtds-1 = { - type = "socket" - layer = "udp" - format = "gtnet" - - in = { - address = "*:12083" # villas node machine IP and port number - - signals = { - count = 8 - type = "float" - } - - hooks = ( - { - type = "stats" - warmup = 3000 - } - ) - } - out = { - address = "192.168.0.4:12083" # remote machine IP and port number - } - } + # Node names can be any alphanumeric value + rpi-1 = { + type = "socket" + layer = "udp" + format = "gtnet" # Pre-built format to communicate in RTDS GTNET-SKT payload + + in = { + address = "*:12005" # VILLASnode machine IP and port number + + signals = { + count = 8 + type = "float" + } + + hooks = ( + { + type = "stats" + warmup = 3000 + } + ) + } + + out = { + address = "192.168.0.5:12005" # Remote machine IP and port number + } + } + + rpi-2 = { + type = "socket" + layer = "udp" + format = "gtnet" # Pre-built format to communicate in RTDS GTNET-SKT payload + + in = { + address = "*:12006" # VILLASnode machine IP and port number + + signals = { + count = 8 + type = "float" + } + + hooks = ( + { + type = "stats" + warmup = 3000 + } + ) + } + out = { + address = "192.168.0.6:12006" # Remote machine IP and port number + } + } + + rtds-1 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12083" # VILLASnode machine IP and port number + + signals = { + count = 8 + type = "float" + } + + hooks = ( + { + type = "stats" + warmup = 3000 + } + ) + } + out = { + address = "192.168.0.4:12083" # Remote machine IP and port number + } + } } ``` @@ -130,10 +133,10 @@ This example reads samples from node `rpi-1` and forwards them immediately to no @include "lab10_nodes.conf" paths = ( - { - in = [ "rpi-1" ], - out = [ "rtds-1" ] - } + { + in = [ "rpi-1" ] + out = [ "rtds-1" ] + } ) ``` @@ -146,10 +149,10 @@ This example reads samples from node `rtds-1`, duplicates them and forwards them @include "lab10_nodes.conf" paths = ( - { - in = [ "rtds-1" ], - out = [ "rpi-1", "rpi-2" ] - } + { + in = [ "rtds-1" ] + out = [ "rpi-1", "rpi-2" ] + } ) ``` @@ -164,14 +167,14 @@ This examples uses the `print` hook to display all forwarded samples on `stdout` @include "lab10_nodes.conf" paths = ( - { - in = [ "rpi-1" ], - out = [ "rtds-1" ], - - hooks = ( - { type = "print", output = "stdout" } - ) - } + { + in = [ "rpi-1" ] + out = [ "rtds-1" ] + + hooks = ( + { type = "print", output = "stdout" } + ) + } ) ``` @@ -183,23 +186,23 @@ In a last example we demonstrate a bi-directional path by using multiple entries @include "lab10_nodes.conf" paths = ( - # Each path dictionary corresponds to one way communication - { - in = [ "rpi-1" ], - out = [ "rtds-1" ] - }, - { - in = [ "rtds-1" ], - out = [ "rpi-1" ] - } - - # Alternatively, you can use a single path specification - # and set reverse = true - # Example: - # { - # in = [ "rpi-1" ], - # out = [ "rtds-1" ], - # reverse = true - # } + # Each path dictionary corresponds to one way communication + { + in = [ "rpi-1" ] + out = [ "rtds-1" ] + }, + { + in = [ "rtds-1" ] + out = [ "rpi-1" ] + } + + # Alternatively, you can use a single path specification + # and set reverse = true + # Example: + # { + # in = [ "rpi-1" ] + # out = [ "rtds-1" ] + # reverse = true + # } ) ``` diff --git a/docs/node/guides/lab11.md b/docs/node/guides/lab11.md index 702f080..5288851 100644 --- a/docs/node/guides/lab11.md +++ b/docs/node/guides/lab11.md @@ -43,89 +43,93 @@ VILLASnode supports de-multiplexing by using __mapping__ expressions in the [`pa ``` url="external/node/etc/labs/lab11.conf" title="node/etc/labs/lab11.conf" nodes = { - rtds_gtnet1 = { - type = "socket" - layer = "udp" - format = "gtnet" - - in = { - address = "*:12000" - - signals = { - count = 8 - type = "float" - } - } - out = { - address = "134.130.169.89:12000" - } - }, - rtds_gtnet2 = { - type = "socket" - layer = "udp" - format = "gtnet" - - in = { - address = "*:12001" - - signals = { - count = 8 - type = "float" - } - } - out = { - address = "134.130.169.90:12001" - } - } - monitoring = { - type = "websocket" - } - monitoring_log = { - type = "file", - - uri = "ftp://acs:fake@134.130.169.32/var/villas/log/monitoring_%Y-%m-%d_%H_%M_%S.dat" - - out = { - - } - } + rtds_gtnet1 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12000" + + signals = { + count = 8 + type = "float" + } + } + out = { + address = "134.130.169.89:12000" + } + } + + rtds_gtnet2 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12001" + + signals = { + count = 8 + type = "float" + } + } + out = { + address = "134.130.169.90:12001" + } + } + monitoring = { + type = "websocket" + } + monitoring_log = { + type = "file" + + uri = "ftp://acs:fake@134.130.169.32/var/villas/log/monitoring_%Y-%m-%d_%H_%M_%S.dat" + + out = { + + } + } } paths = ( - { - # Combine data from rtds_gtnet1 and rtds_gtnet2 - in = [ - "rtds_gtnet1.ts.origin", - "rtds_gtnet1.hdr.sequence", - "rtds_gtnet1.data[0-6]", - - "rtds_gtnet2.ts.origin", - "rtds_gtnet2.hdr.sequence", - "rtds_gtnet2.data[0-6]" - ], - - out = [ - "monitoring", - "monitoring_log" - ], - - reverse = false, - - # The mode of a path determines when the path is triggered - # and forwarding samples to its destination nodes. - mode = "any", - - # List of nodes which trigger the path - mask = [ "rtds_gtnet1", "rtds_gtnet2" ], - - hooks = ( - # We do not want to overload the WebBrowsers - { - type = "decimate", - ratio = 10 - } - ) - } + { + # Combine data from rtds_gtnet1 and rtds_gtnet2 + in = [ + "rtds_gtnet1.ts.origin", + "rtds_gtnet1.hdr.sequence", + "rtds_gtnet1.data[0-6]", + + "rtds_gtnet2.ts.origin", + "rtds_gtnet2.hdr.sequence", + "rtds_gtnet2.data[0-6]" + ] + + out = [ + "monitoring", + "monitoring_log" + ] + + reverse = false + + # The mode of a path determines when the path is triggered + # and forwarding samples to its destination nodes + mode = "any" + + # List of nodes which trigger the path + mask = [ + "rtds_gtnet1", + "rtds_gtnet2" + ] + + hooks = ( + # We do not want to overload the WebBrowsers + { + type = "decimate" + ratio = 10 + } + ) + } ) ``` diff --git a/docs/node/guides/lab12.md b/docs/node/guides/lab12.md index 3517c47..b7ab52a 100644 --- a/docs/node/guides/lab12.md +++ b/docs/node/guides/lab12.md @@ -18,51 +18,53 @@ This technique is useful for live monitoring and user interaction with simulatio ``` url="external/node/etc/labs/lab12.conf" title="node/etc/labs/lab12.conf" nodes = { - udp_node1 = { - type = "socket", - layer = "udp", - - in = { - address = "*:12000" - - signals = { - count = 8, - type = "float" - } - }, - out = { - address = "127.0.0.1:12001" - } - }, - web_node1 = { - type = "websocket", - - vectorize = 2, - series = ( - { label = "Random walk", unit = "V" }, - { label = "Sine", unit = "A" }, - { label = "Rect", unit = "Var" }, - { label = "Ramp", unit = "°C" } - ) - } + udp_node1 = { + type = "socket" + layer = "udp" + + in = { + address = "*:12000" + + signals = { + count = 8 + type = "float" + } + } + + out = { + address = "127.0.0.1:12001" + } + } + + web_node1 = { + type = "websocket" + + vectorize = 2 + series = ( + { label = "Random walk", unit = "V" }, + { label = "Sine", unit = "A" }, + { label = "Rect", unit = "Var" }, + { label = "Ramp", unit = "°C" } + ) + } } paths = ( - { - in = [ "udp_node1" ], - out = [ "web_node1" ], - - hooks = ( - # We do not want to overload the WebBrowsers - { type = "decimate", ratio = 2 } - ) - }, - { - in = [ "web_node1" ], - out = [ "udp_node1" ] - - # Web -> UDP does not require decimation - } + { + in = [ "udp_node1" ] + out = [ "web_node1" ] + + hooks = ( + # We do not want to overload the WebBrowsers + { type = "decimate", ratio = 2 } + ) + }, + { + in = [ "web_node1" ] + out = [ "udp_node1" ] + + # Web -> UDP does not require decimation + } ) ``` diff --git a/docs/node/guides/lab13.md b/docs/node/guides/lab13.md index 7d1049a..95aa8f3 100644 --- a/docs/node/guides/lab13.md +++ b/docs/node/guides/lab13.md @@ -7,52 +7,55 @@ sidebar_position: 13 # Configuration ``` url="external/node/etc/labs/lab13.conf" title="node/etc/labs/lab13.conf" -affinity = 0x8, +affinity = 0x8 nodes = { - rtds_gtnet1 = { - type = "socket", - layer = "udp", - format = "gtnet", - - in = { - address = "*:12000" - - signals = { - count = 8, - type = "float" - } - }, - out = { - address = "134.130.169.98:12000" - } - }, - rtds_gtnet2 = { - type = "socket", - layer = "udp", - format = "gtnet", - - in = { - address = "*:12001" - - signals = { - count = 8, - type = "float" - } - }, - out = { - address = "134.130.169.99:12001" - } - } + rtds_gtnet1 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12000" + + signals = { + count = 8 + type = "float" + } + } + + out = { + address = "134.130.169.98:12000" + } + } + + rtds_gtnet2 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12001" + + signals = { + count = 8 + type = "float" + } + } + + out = { + address = "134.130.169.99:12001" + } + } } paths = ( - { - in = "rtds_gtnet1" - out = "rtds_gtnet2" + { + in = "rtds_gtnet1" + out = "rtds_gtnet2" - reverse = true - } + reverse = true + } ) ``` diff --git a/docs/node/guides/lab17.md b/docs/node/guides/lab17.md index b3fd7a4..62ca399 100644 --- a/docs/node/guides/lab17.md +++ b/docs/node/guides/lab17.md @@ -41,152 +41,150 @@ The setup requires the following components: ## VILLASnode configuration ``` url="external/node/etc/labs/lab17.conf" title="node/etc/labs/lab17.conf" - nodes = { - rtds_ss1 = { - type = "socket", - layer = "udp", - format = { - type = "gtnet" - fake = true - } - - in = { # Local address, i.e. address of villas instance - address = "134.130.169.31:12000" - - signals = ( - { name="trigger", type="integer" }, - { name="if1_tx_phA_dp0_mag", type="float" }, - { name="if1_tx_phA_dp0_phase", type="float" }, - { name="if1_tx_phA_dp1_mag", type="float" }, - { name="if1_tx_phA_dp1_phase", type="float" }, - { name="if1_tx_phA_dp2_mag", type="float" }, - { name="if1_tx_phA_dp2_phase", type="float" }, - { name="if1_tx_phA_dp3_mag", type="float" }, - { name="if1_tx_phA_dp3_phase", type="float" }, - { name="if1_tx_phB_dp0_mag", type="float" }, - { name="if1_tx_phB_dp0_phase", type="float" }, - { name="if1_tx_phB_dp1_mag", type="float" }, - { name="if1_tx_phB_dp1_phase", type="float" }, - { name="if1_tx_phB_dp2_mag", type="float" }, - { name="if1_tx_phB_dp2_phase", type="float" }, - { name="if1_tx_phB_dp3_mag", type="float" }, - { name="if1_tx_phB_dp3_phase", type="float" }, - { name="if1_tx_phC_dp0_mag", type="float" }, - { name="if1_tx_phC_dp0_phase", type="float" }, - { name="if1_tx_phC_dp1_mag", type="float" }, - { name="if1_tx_phC_dp1_phase", type="float" }, - { name="if1_tx_phC_dp2_mag", type="float" }, - { name="if1_tx_phC_dp2_phase", type="float" }, - { name="if1_tx_phC_dp3_mag", type="float" }, - { name="if1_tx_phC_dp3_phase", type="float" } - ) - } - - out = { # Remote address, i.e. address of GTNET card - address = "134.130.169.97:12000" # GTNET#4 -> Rack5(GPC4) - } - } - - rtds_ss2 = { - type = "socket", - layer = "udp", - format = { - type = "gtnet" - fake = true - } - - in = { - # Local address, i.e. address of villas instance - address = "134.130.169.31:12001" - - signals = ( - { name="trigger", type="integer" }, - { name="if1_tx_phA_dp0_mag", type="float" }, - { name="if1_tx_phA_dp0_phase", type="float" }, - { name="if1_tx_phA_dp1_mag", type="float" }, - { name="if1_tx_phA_dp1_phase", type="float" }, - { name="if1_tx_phA_dp2_mag", type="float" }, - { name="if1_tx_phA_dp2_phase", type="float" }, - { name="if1_tx_phA_dp3_mag", type="float" }, - { name="if1_tx_phA_dp3_phase", type="float" }, - { name="if1_tx_phB_dp0_mag", type="float" }, - { name="if1_tx_phB_dp0_phase", type="float" }, - { name="if1_tx_phB_dp1_mag", type="float" }, - { name="if1_tx_phB_dp1_phase", type="float" }, - { name="if1_tx_phB_dp2_mag", type="float" }, - { name="if1_tx_phB_dp2_phase", type="float" }, - { name="if1_tx_phB_dp3_mag", type="float" }, - { name="if1_tx_phB_dp3_phase", type="float" }, - { name="if1_tx_phC_dp0_mag", type="float" }, - { name="if1_tx_phC_dp0_phase", type="float" }, - { name="if1_tx_phC_dp1_mag", type="float" }, - { name="if1_tx_phC_dp1_phase", type="float" }, - { name="if1_tx_phC_dp2_mag", type="float" }, - { name="if1_tx_phC_dp2_phase", type="float" }, - { name="if1_tx_phC_dp3_mag", type="float" }, - { name="if1_tx_phC_dp3_phase", type="float" } - ) - - } - - out = { - # Remote address, i.e. address of GTNET card - address = "134.130.169.98:12000" # GTNET#5 -> Rack1(GPC4) - } - } - - rtds_ss1_monitoring = { - type = "socket" - layer = "udp" - format = { - type = "gtnet" - fake = true - } - - in = { # Local address, i.e. address of villas instance - address = "134.130.169.31:12002" - - signals = ( - { name="orgn_V3phRMSintrf", type="float", unit="V" }, - { name="orgn_Pintrf", type="float", unit="W" }, - { name="orgn_Qintrf", type="float", unit="Var" }, - { name="orgn_Sintrf", type="float", unit="VA" }, - { name="if1_V3phRMS", type="float", unit="V" }, - { name="if1_I3phRMS", type="float", unit="A" }, - { name="if1_P", type="float", unit="W" }, - { name="if1_Q", type="float", unit="Var" }, - { name="if1_S", type="float", unit="VA" } - ) - } - - out = { # Remote address, i.e. address of GTNET card - address = "134.130.169.97:12000" - } - } - - - web_monitoring = { - type = "websocket" - - destinations = [ - "https://villas.k8s.eonerc.rwth-aachen.de//ws/relay/lab17" - ] - } + rtds_ss1 = { + type = "socket" + layer = "udp" + format = { + type = "gtnet" + fake = true + } + + in = { # Local address, i.e. address of villas instance + address = "134.130.169.31:12000" + + signals = ( + { name="trigger", type="integer" }, + { name="if1_tx_phA_dp0_mag", type="float" }, + { name="if1_tx_phA_dp0_phase", type="float" }, + { name="if1_tx_phA_dp1_mag", type="float" }, + { name="if1_tx_phA_dp1_phase", type="float" }, + { name="if1_tx_phA_dp2_mag", type="float" }, + { name="if1_tx_phA_dp2_phase", type="float" }, + { name="if1_tx_phA_dp3_mag", type="float" }, + { name="if1_tx_phA_dp3_phase", type="float" }, + { name="if1_tx_phB_dp0_mag", type="float" }, + { name="if1_tx_phB_dp0_phase", type="float" }, + { name="if1_tx_phB_dp1_mag", type="float" }, + { name="if1_tx_phB_dp1_phase", type="float" }, + { name="if1_tx_phB_dp2_mag", type="float" }, + { name="if1_tx_phB_dp2_phase", type="float" }, + { name="if1_tx_phB_dp3_mag", type="float" }, + { name="if1_tx_phB_dp3_phase", type="float" }, + { name="if1_tx_phC_dp0_mag", type="float" }, + { name="if1_tx_phC_dp0_phase", type="float" }, + { name="if1_tx_phC_dp1_mag", type="float" }, + { name="if1_tx_phC_dp1_phase", type="float" }, + { name="if1_tx_phC_dp2_mag", type="float" }, + { name="if1_tx_phC_dp2_phase", type="float" }, + { name="if1_tx_phC_dp3_mag", type="float" }, + { name="if1_tx_phC_dp3_phase", type="float" } + ) + } + + out = { # Remote address, i.e. address of GTNET card + address = "134.130.169.97:12000" # GTNET#4 -> Rack5(GPC4) + } + } + + rtds_ss2 = { + type = "socket" + layer = "udp" + format = { + type = "gtnet" + fake = true + } + + in = { + # Local address, i.e. address of villas instance + address = "134.130.169.31:12001" + + signals = ( + { name="trigger", type="integer" }, + { name="if1_tx_phA_dp0_mag", type="float" }, + { name="if1_tx_phA_dp0_phase", type="float" }, + { name="if1_tx_phA_dp1_mag", type="float" }, + { name="if1_tx_phA_dp1_phase", type="float" }, + { name="if1_tx_phA_dp2_mag", type="float" }, + { name="if1_tx_phA_dp2_phase", type="float" }, + { name="if1_tx_phA_dp3_mag", type="float" }, + { name="if1_tx_phA_dp3_phase", type="float" }, + { name="if1_tx_phB_dp0_mag", type="float" }, + { name="if1_tx_phB_dp0_phase", type="float" }, + { name="if1_tx_phB_dp1_mag", type="float" }, + { name="if1_tx_phB_dp1_phase", type="float" }, + { name="if1_tx_phB_dp2_mag", type="float" }, + { name="if1_tx_phB_dp2_phase", type="float" }, + { name="if1_tx_phB_dp3_mag", type="float" }, + { name="if1_tx_phB_dp3_phase", type="float" }, + { name="if1_tx_phC_dp0_mag", type="float" }, + { name="if1_tx_phC_dp0_phase", type="float" }, + { name="if1_tx_phC_dp1_mag", type="float" }, + { name="if1_tx_phC_dp1_phase", type="float" }, + { name="if1_tx_phC_dp2_mag", type="float" }, + { name="if1_tx_phC_dp2_phase", type="float" }, + { name="if1_tx_phC_dp3_mag", type="float" }, + { name="if1_tx_phC_dp3_phase", type="float" } + ) + } + + out = { + # Remote address, i.e. address of GTNET card + address = "134.130.169.98:12000" # GTNET#5 -> Rack1(GPC4) + } + } + + rtds_ss1_monitoring = { + type = "socket" + layer = "udp" + format = { + type = "gtnet" + fake = true + } + + in = { # Local address, i.e. address of villas instance + address = "134.130.169.31:12002" + + signals = ( + { name="orgn_V3phRMSintrf", type="float", unit="V" }, + { name="orgn_Pintrf", type="float", unit="W" }, + { name="orgn_Qintrf", type="float", unit="Var" }, + { name="orgn_Sintrf", type="float", unit="VA" }, + { name="if1_V3phRMS", type="float", unit="V" }, + { name="if1_I3phRMS", type="float", unit="A" }, + { name="if1_P", type="float", unit="W" }, + { name="if1_Q", type="float", unit="Var" }, + { name="if1_S", type="float", unit="VA" } + ) + } + + out = { # Remote address, i.e. address of GTNET card + address = "134.130.169.97:12000" + } + } + + + web_monitoring = { + type = "websocket" + + destinations = [ + "https://villas.k8s.eonerc.rwth-aachen.de//ws/relay/lab17" + ] + } } paths = ( - { - in = "rtds_ss1", - out = "rtds_ss2", - reverse = true - }, - { - enabled = false, - in = "rtds_ss1_monitoring", - out = "web_monitoring", - reverse = true - } + { + in = "rtds_ss1" + out = "rtds_ss2" + reverse = true + }, + { + enabled = false + in = "rtds_ss1_monitoring" + out = "web_monitoring" + reverse = true + } ) ``` diff --git a/docs/node/guides/lab18.md b/docs/node/guides/lab18.md index 99a2374..df19c4c 100644 --- a/docs/node/guides/lab18.md +++ b/docs/node/guides/lab18.md @@ -87,141 +87,138 @@ Two configuration files are needed to have one VILLASnode instance to generate t ### Signal Generator -``` url="external/node/etc/labs/lab18-siggen.conf" title="node/etc/labs/lab18-siggen.conf" - -nodes = { - webrtc_siggen = { - type = "webrtc", - - format = "json" - - in = { - signals = ( - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" } - ) - } - - out = { - signals = ( - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" } - ) - } - - # A unique session identifier which must be shared between two nodes - session = "villas-test" - - # Address to the websocket signaling server - server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" - - # Limit the number of times a channel will retransmit data if not successfully delivered. - # This value may be clamped if it exceeds the maximum value supported. - max_retransmits = 0 - - # Number of seconds to wait for a WebRTC connection before proceeding the start - # of VILLASnode. Mainly used for testing - wait_seconds = 10 # in seconds - - # Indicates if data is allowed to be delivered out of order. - # The default value of false, does not make guarantees that data will be delivered in order. - ordered = false - - # Setting for Interactive Connectivity Establishment - # If empty then configured servers in signaling server are used. - ice = { - # List of STUN/TURN servers - servers = ( - ) - } - } - siggen = { - type = "signal" - signal = [ "sine", "pulse", "square" ] - values = 3, # Number of values per sample - limit = 1, # Number of samples to generate - rate = 1, # Rate in Hz - } -} -paths = ( - { - in = "siggen" - out = "webrtc_siggen" - - hooks = ( { type = "print" }) - }, - { - in = "webrtc_siggen" - - hooks = ( { type = "print" }) - } -) - +``` url="external/node/etc/labs/lab18-siggen.conf" title="node/etc/labs/lab18-siggen.conf" +nodes = { + webrtc_siggen = { + type = "webrtc", + + format = "json" + + in = { + signals = ( + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" } + ) + } + + out = { + signals = ( + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" } + ) + } + + # A unique session identifier which must be shared between two nodes + session = "villas-test" + + # Address to the websocket signaling server + server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" + + # Limit the number of times a channel will retransmit data if not successfully delivered. + # This value may be clamped if it exceeds the maximum value supported. + max_retransmits = 0 + + # Number of seconds to wait for a WebRTC connection before proceeding the start + # of VILLASnode. Mainly used for testing + wait_seconds = 10 # in seconds + + # Indicates if data is allowed to be delivered out of order. + # The default value of false, does not make guarantees that data will be delivered in order. + ordered = false + + # Setting for Interactive Connectivity Establishment + # If empty then configured servers in signaling server are used. + ice = { + # List of STUN/TURN servers + servers = ( ) + } + } + + siggen = { + type = "signal" + signal = [ "sine", "pulse", "square" ] + values = 3 # Number of values per sample + limit = 1 # Number of samples to generate + rate = 1 # Rate in Hz + } +} + +paths = ( + { + in = "siggen" + out = "webrtc_siggen" + + hooks = ( "print" ) + }, + { + in = "webrtc_siggen" + + hooks = ( "print" ) + } +) ``` ### Loopback -``` url="external/node/etc/labs/lab18-loopback.conf" title="node/etc/labs/lab18-loopback.conf" - -nodes = { - webrtc_loopback = { - type = "webrtc", - - format = "json" - - in = { - signals = ( - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" } - ) - } - - out = { - signals = ( - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" }, - { name = "signal", type = "float", unit = "unit" } - ) - } - - # A unique session identifier which must be shared between two nodes - session = "villas-test" - - # Address to the websocket signaling server - server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" - - # Limit the number of times a channel will retransmit data if not successfully delivered. - # This value may be clamped if it exceeds the maximum value supported. - max_retransmits = 0 - - # Number of seconds to wait for a WebRTC connection before proceeding the start - # of VILLASnode. Mainly used for testing - wait_seconds = 10 # in seconds - - # Indicates if data is allowed to be delivered out of order. - # The default value of false, does not make guarantees that data will be delivered in order. - ordered = false - - # Setting for Interactive Connectivity Establishment - # If empty then configured servers in signaling server are used. - ice = { - # List of STUN/TURN servers - servers = ( - ) - } - } -} -paths = ( - { - in = "webrtc_loopback" - out = "webrtc_loopback" - - hooks = ( { type = "print" }) - } -) - +``` url="external/node/etc/labs/lab18-loopback.conf" title="node/etc/labs/lab18-loopback.conf" +nodes = { + webrtc_loopback = { + type = "webrtc" + + format = "json" + + in = { + signals = ( + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" } + ) + } + + out = { + signals = ( + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" }, + { name = "signal", type = "float", unit = "unit" } + ) + } + + # A unique session identifier which must be shared between two nodes + session = "villas-test" + + # Address to the websocket signaling server + server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" + + # Limit the number of times a channel will retransmit data if not successfully delivered. + # This value may be clamped if it exceeds the maximum value supported. + max_retransmits = 0 + + # Number of seconds to wait for a WebRTC connection before proceeding the start + # of VILLASnode. Mainly used for testing + wait_seconds = 10 # in seconds + + # Indicates if data is allowed to be delivered out of order. + # The default value of false, does not make guarantees that data will be delivered in order. + ordered = false + + # Setting for Interactive Connectivity Establishment + # If empty then configured servers in signaling server are used. + ice = { + # List of STUN/TURN servers + servers = ( ) + } + } +} + +paths = ( + { + in = "webrtc_loopback" + out = "webrtc_loopback" + + hooks = ( { type = "print" }) + } +) ``` ## Steps diff --git a/docs/node/guides/lab19.md b/docs/node/guides/lab19.md index 9e8b4b1..ad404c8 100644 --- a/docs/node/guides/lab19.md +++ b/docs/node/guides/lab19.md @@ -26,22 +26,23 @@ nodes = { type = "float" } hooks = ( - { - type = "print" - } - ) - }, + { + type = "print" + } + ) + } + out = { address = "127.0.0.1:12001" } } signal = { type = "signal" - + signal = "mixed" values = 5 # values per sample limit = 3 # emit limited number of samples - } + } } paths = ( diff --git a/docs/node/guides/lab2.md b/docs/node/guides/lab2.md index f32863a..6add39a 100644 --- a/docs/node/guides/lab2.md +++ b/docs/node/guides/lab2.md @@ -20,21 +20,22 @@ It only contains a single node named `udp_node1` which sends / receives samples ``` url="external/node/etc/labs/lab3.conf" title="node/etc/labs/lab3.conf" nodes = { - udp_node1 = { - type = "socket", - layer = "udp", - - in = { - address = "*:12000" - - signals = { - count = 3 - type = "float" - } - }, - out = { - address = "127.0.0.1:12001" - } - } + udp_node1 = { + type = "socket" + layer = "udp" + + in = { + address = "*:12000" + + signals = { + count = 3 + type = "float" + } + } + + out = { + address = "127.0.0.1:12001" + } + } } ``` diff --git a/docs/node/guides/lab20.md b/docs/node/guides/lab20.md index 900659f..b1e86f6 100644 --- a/docs/node/guides/lab20.md +++ b/docs/node/guides/lab20.md @@ -16,11 +16,15 @@ An example is created to test the connection between VILLASnode's [TCP client (` nodes = { tcp_node = { type = "socket" + layer = "tcp-server" + format = "villas.human" + in = { address = "127.0.0.1:12000" - }, + } + out = { address = "127.0.0.1:12000" } @@ -29,7 +33,7 @@ nodes = { paths = ( { in = "tcp_node" - out = "tcp_node", + out = "tcp_node" hooks = ( { type = "print" } ) } ) @@ -40,8 +44,11 @@ paths = ( nodes = { tcp_node = { type = "socket" + layer = "tcp-client" + format = "villas.human" + in = { address = "127.0.0.1:12000" } diff --git a/docs/node/guides/lab5.md b/docs/node/guides/lab5.md index 0cf6791..2adff77 100644 --- a/docs/node/guides/lab5.md +++ b/docs/node/guides/lab5.md @@ -17,23 +17,24 @@ We use a slightly modified configuration file in order to change the UDP packet ``` url="external/node/etc/labs/lab5.conf" title="node/etc/labs/lab5.conf" nodes = { - rtds_gtnet1 = { - type = "socket", - layer = "udp", - format = "gtnet", - - in = { - address = "*:12000" - - signals = { - count = 8, - type = "float" - } - }, - out = { - address = "134.130.169.89:12000" - } - } + rtds_gtnet1 = { + type = "socket" + layer = "udp" + format = "gtnet" + + in = { + address = "*:12000" + + signals = { + count = 8 + type = "float" + } + } + + out = { + address = "134.130.169.89:12000" + } + } } ``` diff --git a/docs/node/guides/lab7.md b/docs/node/guides/lab7.md index 1f41938..06caad4 100644 --- a/docs/node/guides/lab7.md +++ b/docs/node/guides/lab7.md @@ -26,15 +26,15 @@ We will show later how to stream the samples _in real-time_ to a destination nod ``` url="external/node/etc/labs/lab7.conf" title="node/etc/labs/lab7.conf" nodes = { - file_node1 = { - type = "file", - - uri = "file_send.dat" - - in = { - - } - } + file_node1 = { + type = "file" + + uri = "file_send.dat" + + in = { + + } + } } ``` diff --git a/docs/node/guides/lab8.md b/docs/node/guides/lab8.md index 14ea3d0..9816cf5 100644 --- a/docs/node/guides/lab8.md +++ b/docs/node/guides/lab8.md @@ -60,49 +60,49 @@ When used with `villas node` the hook is configured as part of a path: ``` url="external/node/etc/labs/lab8.conf" title="node/etc/labs/lab8.conf" nodes = { - udp_node1 = { - type = "socket" - layer = "udp" - - in = { - address = "*:12000" - - signals = ( - { name = "sig1", type = "float" }, - { name = "sig2", type = "float" }, - { name = "sig3", type = "float" }, - { name = "sig4", type = "float" } - ) - } - out = { - address = "127.0.0.1:12001" - } - } + udp_node1 = { + type = "socket" + layer = "udp" + + in = { + address = "*:12000" + + signals = ( + { name = "sig1", type = "float" }, + { name = "sig2", type = "float" }, + { name = "sig3", type = "float" }, + { name = "sig4", type = "float" } + ) + } + out = { + address = "127.0.0.1:12001" + } + } } paths = ( - { - in = [ "udp_node1" ] - out = [ "udp_node1" ] - - hooks = ( - { - type = "decimate" - priority = 1 - - # Hook specific parameters follow - # [parameter1] = [value1] - ratio = 2 - }, - { - type = "scale" - - signal = "sig3" - offset = 10.0 - scale = 2.5 - } - ) - } + { + in = [ "udp_node1" ] + out = [ "udp_node1" ] + + hooks = ( + { + type = "decimate" + priority = 1 + + # Hook specific parameters follow + # [parameter1] = [value1] + ratio = 2 + }, + { + type = "scale" + + signal = "sig3" + offset = 10.0 + scale = 2.5 + } + ) + } ) ``` diff --git a/docs/node/guides/lab9.md b/docs/node/guides/lab9.md index 60d1eb0..ebfd2fd 100644 --- a/docs/node/guides/lab9.md +++ b/docs/node/guides/lab9.md @@ -32,32 +32,33 @@ villas signal -r 1000 -l 10000 sine | villas hook -o verbose=true -o warmup=3000 ``` url="external/node/etc/labs/lab9_netem.conf" title="node/etc/labs/lab9_netem.conf" nodes = { - udp_node1 = { - type = "socket", - layer = "udp", - - in = { - address = "*:12000" - - signals = { - count = 8, - type = "float" - } - }, - out = { - address = "127.0.0.1:12001", - - netem = { - enabled = true, - loss = 0, # in % - corrupt = 0, # in % - duplicate = 0, # in % - delay = 100000, # in uS - jitter = 5000, # in uS - distribution = "normal" - } - } - } + udp_node1 = { + type = "socket" + layer = "udp" + + in = { + address = "*:12000" + + signals = { + count = 8 + type = "float" + } + } + + out = { + address = "127.0.0.1:12001" + + netem = { + enabled = true + loss = 0 # In % + corrupt = 0 # In % + duplicate = 0 # In % + delay = 100000 # In uS + jitter = 5000 # In uS + distribution = "normal" + } + } + } } ``` diff --git a/docs/node/hooks/average.md b/docs/node/hooks/average.md index 928c7b5..4d4642d 100644 --- a/docs/node/hooks/average.md +++ b/docs/node/hooks/average.md @@ -23,18 +23,18 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "average" - - signals = [ "sine", "square" ] - offset = 0 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "average" + + signals = [ "sine", "square" ] + offset = 0 + } + ) + } ) ``` diff --git a/docs/node/hooks/cast.md b/docs/node/hooks/cast.md index 2146fd4..550be19 100644 --- a/docs/node/hooks/cast.md +++ b/docs/node/hooks/cast.md @@ -23,21 +23,21 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "cast" - - signal = "random" - - new_name = "int_random" - new_unit = "pts" - new_type = "integer" - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "cast" + + signal = "random" + + new_name = "int_random" + new_unit = "pts" + new_type = "integer" + } + ) + } ) ``` diff --git a/docs/node/hooks/decimate.md b/docs/node/hooks/decimate.md index 0d33cf2..3fc60e1 100644 --- a/docs/node/hooks/decimate.md +++ b/docs/node/hooks/decimate.md @@ -23,17 +23,17 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "decimate" - - ratio = 10 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "decimate" + + ratio = 10 + } + ) + } ) ``` diff --git a/docs/node/hooks/dp.md b/docs/node/hooks/dp.md index 7e2e0d7..5a6a6fd 100644 --- a/docs/node/hooks/dp.md +++ b/docs/node/hooks/dp.md @@ -23,25 +23,25 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "dp" - - signal = "sine" - f0 = 50 # Hz - dt = 0.1 # seconds - - # Alternative to dt - # rate = 10 Hz - - harmonics = [ 0, 1, 3, 5, 7 ] - inverse = false - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "dp" + + signal = "sine" + f0 = 50 # In Hz + dt = 0.1 # In seconds + + # Alternative to dt + # rate = 10 Hz + + harmonics = [ 0, 1, 3, 5, 7 ] + inverse = false + } + ) + } ) ``` diff --git a/docs/node/hooks/dump.md b/docs/node/hooks/dump.md index 8695c65..089ff00 100644 --- a/docs/node/hooks/dump.md +++ b/docs/node/hooks/dump.md @@ -23,15 +23,15 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "dump" - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "dump" + } + ) + } ) ``` diff --git a/docs/node/hooks/ebm.md b/docs/node/hooks/ebm.md index 101cced..a26b665 100644 --- a/docs/node/hooks/ebm.md +++ b/docs/node/hooks/ebm.md @@ -23,21 +23,21 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "ebm" - - phases = ( - [ 0, 1 ], - [ 2, 3 ], - [ 4, 5 ] - ) - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "ebm" + + phases = ( + [ 0, 1 ], + [ 2, 3 ], + [ 4, 5 ] + ) + } + ) + } ) ``` diff --git a/docs/node/hooks/jitter_calc.md b/docs/node/hooks/jitter_calc.md index eecb503..5abdfa3 100644 --- a/docs/node/hooks/jitter_calc.md +++ b/docs/node/hooks/jitter_calc.md @@ -24,15 +24,15 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "jitter_calc" - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "jitter_calc" + } + ) + } ) ``` diff --git a/docs/node/hooks/limit_rate.md b/docs/node/hooks/limit_rate.md index 696d3ca..54a913f 100644 --- a/docs/node/hooks/limit_rate.md +++ b/docs/node/hooks/limit_rate.md @@ -24,17 +24,17 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "limit_rate" - - rate = 5.5 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "limit_rate" + + rate = 5.5 + } + ) + } ) ``` diff --git a/docs/node/hooks/lua.md b/docs/node/hooks/lua.md index 69e324c..d5b28ca 100644 --- a/docs/node/hooks/lua.md +++ b/docs/node/hooks/lua.md @@ -32,83 +32,83 @@ import ApiSchema from '@theme/ApiSchema'; stats = 1 paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "lua" - - # Enables or disables the use of signal names in the process() function - # of the Lua script. If disabled, numeric indices will be used. - use_names = true - - # The Lua hook will pass the complete hook configuration to the prepare() - # function. So you can add arbitrary settings here which are then - # consumed by the Lua script. - some_setting = "Hello World" - this = { - is = { - nested = 1234 - bool_val = true - } - } - - # Script mode: we provide a Lua script containing functions - # for the individual hook points - # Define some or all of the following functions in your Lua script: - # - # prepare(cfg) Called during initialization with a Lua table which contains - # the full hook configuration - # start() Called when the node/path is started - # - # stop() Called when the node/path is stopped - # - # restart() Called when the node/path is restarted. - # Falls back to stop() + start() if absent. - # - # process(smp) Called for each sample which is being processed. - # The sample is passed as a Lua table with the following - # fields: - # - sequence The sequence number of the sample. - # - flags The flags field of the sample. - # - ts_origin The origin timestamp as a Lua table containing - # the following keys: - # 0: seconds - # 1: nanoseconds - # - ts_received The receive timestamp a Lua table containing - # the following keys: - # 0: seconds - # 1: nanoseconds - # - data The sample data as a Lua table container either - # numeric indices or the signal names depending - # on the 'use_names' option of the hook. - # - # periodic() Called periodically with the rate of the global 'stats' option. - script = "../lua/hooks/test.lua" - - # Expression mode: We provide a mangled signal list including Lua expressions - signals = ( - { name = "sum", type="float", unit = "V", expression = "smp.data.square * 10" }, - - # You can access any global variable set by the script - { name = "sequence", type="float", unit = "V", expression = "global_var" }, - - # Here we set a global variable from the periodic handler - { name = "temp_aachen", type="float", unit = "°C", expression = "temp_aachen" }, - - # We can refer to the current time the global Lua variable 't' - { name = "sum", type="float", unit = "V", expression = "math.sin(2 * math.pi * f * t)" }, - - { name = "random", expression = "smp.data.random" } - ) - }, - { - type = "print" - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "lua" + + # Enables or disables the use of signal names in the process() function + # of the Lua script. If disabled, numeric indices will be used + use_names = true + + # The Lua hook will pass the complete hook configuration to the prepare() + # function. So you can add arbitrary settings here which are then + # consumed by the Lua script + some_setting = "Hello World" + this = { + is = { + nested = 1234 + bool_val = true + } + } + + # Script mode: we provide a Lua script containing functions + # for the individual hook points + # Define some or all of the following functions in your Lua script: + # + # prepare(cfg) Called during initialization with a Lua table which contains + # the full hook configuration + # start() Called when the node/path is started + # + # stop() Called when the node/path is stopped + # + # restart() Called when the node/path is restarted + # Falls back to stop() + start() if absent + # + # process(smp) Called for each sample which is being processed + # The sample is passed as a Lua table with the following + # fields: + # - sequence The sequence number of the sample + # - flags The flags field of the sample + # - ts_origin The origin timestamp as a Lua table containing + # the following keys: + # 0: seconds + # 1: nanoseconds + # - ts_received The receive timestamp a Lua table containing + # the following keys: + # 0: seconds + # 1: nanoseconds + # - data The sample data as a Lua table container either + # numeric indices or the signal names depending + # on the 'use_names' option of the hook + # + # periodic() Called periodically with the rate of the global 'stats' option + script = "../lua/hooks/test.lua" + + # Expression mode: We provide a mangled signal list including Lua expressions + signals = ( + { name = "sum", type="float", unit = "V", expression = "smp.data.square * 10" }, + + # You can access any global variable set by the script + { name = "sequence", type="float", unit = "V", expression = "global_var" }, + + # Here we set a global variable from the periodic handler + { name = "temp_aachen", type="float", unit = "°C", expression = "temp_aachen" }, + + # We can refer to the current time the global Lua variable 't' + { name = "sum", type="float", unit = "V", expression = "math.sin(2 * math.pi * f * t)" }, + + { name = "random", expression = "smp.data.random" } + ) + }, + { + type = "print" + } + ) + } ) ``` @@ -117,6 +117,9 @@ paths = ( ``` url="external/node/lua/hooks/test.lua" title="node/lua/hooks/test.lua" -- Install with: luarocks install lunajson luasockets +-- SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University +-- SPDX-License-Identifier: Apache-2.0 + json = require 'lunajson' http = require 'socket.http' @@ -129,15 +132,16 @@ Reason = { } SampleFlags = { - HAS_TS_ORIGIN = 1, -- "(1 << 1)" Include origin timestamp in output. - HAS_TS_RECEIVED = 2, -- "(1 << 2)" Include receive timestamp in output. - HAS_OFFSET = 4, -- "(1 << 3)" Include offset (received - origin timestamp) in output. - HAS_SEQUENCE = 8, -- "(1 << 4)" Include sequence number in output. - HAS_DATA = 16, -- "(1 << 5)" Include values in output. - HAS_ALL = 15, -- "(1 << 6) -1" Enable all output options. - - IS_FIRST = 65536, -- "(1 << 16)" This sample is the first of a new simulation case - IS_LAST = 131072 -- "(1 << 17)" This sample is the last of a running simulation case + HAS_TS_ORIGIN = 1, -- "(1 << 1)" Include origin timestamp in output. + HAS_TS_RECEIVED = 2, -- "(1 << 2)" Include receive timestamp in output. + HAS_OFFSET = 4, -- "(1 << 3)" Include offset (received - origin timestamp) in output. + HAS_SEQUENCE = 8, -- "(1 << 4)" Include sequence number in output. + HAS_DATA = 16, -- "(1 << 5)" Include values in output. + + NEW_FRAME = 65536, -- "(1 << 16)" This sample is the first of a new simulation case + NEW_SIMULATION = 131072, -- "(1 << 16)" This sample is the first of a new simulation case + + ALL = 2147483647, -- "INT_MAX" Enable all output options. } @@ -185,7 +189,7 @@ end function process(smp) - info("Process test_hook") + info("Process test_hook") if smp.sequence == 1 then dump_sample(smp) @@ -226,7 +230,7 @@ function periodic() temp_aachen = tonumber(weather.current_condition[1].temp_C) - info(string.format('Temperature in %s is %d °C', city, temp_aachen)) + info(string.format('Temperature in %s is %d °C', city, temp_aachen)) end diff --git a/docs/node/hooks/pmu_dft.md b/docs/node/hooks/pmu_dft.md index 5c8e7ed..144a4f0 100644 --- a/docs/node/hooks/pmu_dft.md +++ b/docs/node/hooks/pmu_dft.md @@ -27,35 +27,52 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "pmu_dft", - - signals = ( - "sine" - ) - - sample_rate = 1000, # sample rate of the input signal - dft_rate = 10, # number of phasors calculated per second - - start_frequency = 49.7, # lowest frequency bin - end_frequency = 50.3, # highest frequency bin - frequency_resolution = 0.1, # frequency bin resolution - - window_size_factor = 1, # a factor with which the window will be increased - window_type = "hamming", # one of: flattop, hamming, hann - padding_type = "zero", # one of: signal_repeat, zero - frequency_estimate_type = "quadratic", # one of: quadratic - - pps_index = 0, # signal index of the PPS signal - - angle_unit = "rad" # one of: rad, degree - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "pmu_dft" + + signals = ( + "sine" + ) + + # Sample rate of the input signal + sample_rate = 1000 + + # Number of phasors calculated per second + dft_rate = 10 + + # Lowest frequency bin + start_frequency = 49.7 + + # Highest frequency bin + end_frequency = 50.3 + + # Frequency bin resolution + frequency_resolution = 0.1 + + # A factor with which the window will be increased + window_size_factor = 1 + + # One of: flattop, hamming, hann + window_type = "hamming" + + # One of: signal_repeat, zero + padding_type = "zero" + + # One of: quadratic + frequency_estimate_type = "quadratic" + + # Signal index of the PPS signal + pps_index = 0 + + # One of: rad, degree + angle_unit = "rad" + } + ) + } ) ``` diff --git a/docs/node/hooks/pps_ts.md b/docs/node/hooks/pps_ts.md index c86b76f..9ffc28b 100644 --- a/docs/node/hooks/pps_ts.md +++ b/docs/node/hooks/pps_ts.md @@ -37,23 +37,23 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "pps_ts" - - signal = "pps" - - mode = "simple" # Oneof: simple, horizon - threshold = 0.5 - expected_smp_rate = 5e3 - horizon_estimation = 10 - horizon_compensation = 10 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "pps_ts" + + signal = "pps" + + mode = "simple" # Oneof: simple, horizon + threshold = 0.5 + expected_smp_rate = 5e3 + horizon_estimation = 10 + horizon_compensation = 10 + } + ) + } ) ``` diff --git a/docs/node/hooks/print.md b/docs/node/hooks/print.md index e28aacb..6043398 100644 --- a/docs/node/hooks/print.md +++ b/docs/node/hooks/print.md @@ -25,19 +25,19 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "print", - - output = "print_output_file.log" - format = "villas.human" - # prefix = "[file_node] " # prefix and output are exclusive settings! - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "print" + + output = "print_output_file.log" + format = "villas.human" + # prefix = "[file_node] " # Prefix and output are exclusive settings! + } + ) + } ) ``` diff --git a/docs/node/hooks/rms.md b/docs/node/hooks/rms.md index 00a5365..5a5163b 100644 --- a/docs/node/hooks/rms.md +++ b/docs/node/hooks/rms.md @@ -23,21 +23,21 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "rms", - - window_size = 1000 - - signals = [ - "sine" - ] - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "rms" + + window_size = 1000 + + signals = [ + "sine" + ] + } + ) + } ) ``` diff --git a/docs/node/hooks/round.md b/docs/node/hooks/round.md index 5c0a6a6..9e7e0de 100644 --- a/docs/node/hooks/round.md +++ b/docs/node/hooks/round.md @@ -23,18 +23,18 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "round" - - signal = "sine" - precision = 4 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "round" + + signal = "sine" + precision = 4 + } + ) + } ) ``` diff --git a/docs/node/hooks/scale.md b/docs/node/hooks/scale.md index 1bc0b74..ca77ebd 100644 --- a/docs/node/hooks/scale.md +++ b/docs/node/hooks/scale.md @@ -24,20 +24,20 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" + { + in = "signal_node" + out = "file_node" - hooks = ( - { - type = "scale" + hooks = ( + { + type = "scale" - signal = "sine" + signal = "sine" - offset = 100.0 - scale = 55.0 - } - ) - } + offset = 100.0 + scale = 55.0 + } + ) + } ) ``` diff --git a/docs/node/hooks/shift_seq.md b/docs/node/hooks/shift_seq.md index 4548e91..1acdd2e 100644 --- a/docs/node/hooks/shift_seq.md +++ b/docs/node/hooks/shift_seq.md @@ -23,17 +23,17 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "shift_seq" - - offset = 10 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "shift_seq" + + offset = 10 + } + ) + } ) ``` diff --git a/docs/node/hooks/shift_ts.md b/docs/node/hooks/shift_ts.md index d63ae0f..a071dfb 100644 --- a/docs/node/hooks/shift_ts.md +++ b/docs/node/hooks/shift_ts.md @@ -24,18 +24,18 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "shift_ts" - - mode = "origin" - offset = 5.5 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "shift_ts" + + mode = "origin" + offset = 5.5 + } + ) + } ) ``` diff --git a/docs/node/hooks/skip_first.md b/docs/node/hooks/skip_first.md index 3f181a7..c0eb1f2 100644 --- a/docs/node/hooks/skip_first.md +++ b/docs/node/hooks/skip_first.md @@ -24,18 +24,18 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "average" - - signals = [ "sine", "square" ] - offset = 0 - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "average" + + signals = [ "sine", "square" ] + offset = 0 + } + ) + } ) ``` diff --git a/docs/node/hooks/stats.md b/docs/node/hooks/stats.md index 7af69a8..06fc72e 100644 --- a/docs/node/hooks/stats.md +++ b/docs/node/hooks/stats.md @@ -53,29 +53,32 @@ import ApiSchema from '@theme/ApiSchema'; # Example ``` url="external/node/etc/examples/hooks/stats.conf" title="node/etc/examples/hooks/stats.conf" +stats = 1 + nodes = { - udp_node = { - type = "socket" - - in = { - address = "*:12000" - - hooks = ( - { - type = "stats" - - verbose = true - warmup = 100 - buckets = 25 - - output = "stats.log" - format = "json" - } - ) - } - out = { - address = "127.0.0.1:12000" - } - } + signal_node = { + type = "signal" + signal = "mixed" + values = 5 + rate = 50 + + in = { + hooks = ( + { + type = "stats" + + verbose = true + warmup = 10 + buckets = 25 + } + ) + } + } } + +paths = ( + { + in = "signal_node" + } +) ``` diff --git a/docs/node/hooks/ts.md b/docs/node/hooks/ts.md index 3411a80..8039b1a 100644 --- a/docs/node/hooks/ts.md +++ b/docs/node/hooks/ts.md @@ -25,15 +25,15 @@ import ApiSchema from '@theme/ApiSchema'; @include "hook-nodes.conf" paths = ( - { - in = "signal_node" - out = "file_node" - - hooks = ( - { - type = "ts" - } - ) - } + { + in = "signal_node" + out = "file_node" + + hooks = ( + { + type = "ts" + } + ) + } ) ``` diff --git a/docs/node/installation.md b/docs/node/installation.md index f6a7c30..6dad8a7 100644 --- a/docs/node/installation.md +++ b/docs/node/installation.md @@ -46,7 +46,6 @@ VILLASnode currently has the following list of dependencies: | [libnanomsg](http://nanomsg.org/) | >= 1.0.0 | for the [Nanomsg node-type](nodes/nanomsg.md) | optional | MIT | | [libnice](https://libnice.freedesktop.org/) | >= 0.1.16 | for libdatachannel / WebRTC | optional | MPL-1.1 & LGPL-2.1 | | [libnl3](http://www.infradead.org/~tgr/libnl/) | >= 3.2.27 | for the network communication & emulation support of the [Socket node-type](nodes/socket.md) node-type | optional | LGPL-2.1 | -| [libOpal\{AsyncApi,Core,Utils\}](https://git.rwth-aachen.de/acs/public/villas/libopal) | - | for running VILLASnode as an Asynchronous process inside your RT-LAB model with [OPAL node-type](nodes/opal.md) | optional | ??? | | [librdmacm](https://github.com/linux-rdma/rdma-core) | >= 16.2 | for the [Infiniband node-type](nodes/infiniband.md) | optional | BSD | | [libre](http://www.creytiv.com/re.html) | >= 2.9.0 | for the [RTP node-type](nodes/rtp.md) | optional | BSD 3 | | [libuldaq](https://github.com/mccdaq/uldaq) | >= 1.0.0 | for the [ULDAQ node-type](nodes/uldaq.md) | optional | MIT | diff --git a/docs/node/netem.md b/docs/node/netem.md index fdf7aa0..5bbd36f 100644 --- a/docs/node/netem.md +++ b/docs/node/netem.md @@ -54,30 +54,42 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/netem.conf" title="node/etc/examples/nodes/netem.conf" nodes = { - udp_node = { # The dictionary is indexed by the name of the node. - type = "socket", # For a list of available node-types run: 'villas-node -h' - - ### The following settings are specific to the socket node-type!! ### - - format = "gtnet", # For a list of available node-types run: 'villas-node -h' - - in = { - address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair - }, - out = { - address = "127.0.0.1:12000", # This node sends outgoing messages to this IP:Port pair - - netem = { # Network emulation settings - enabled = true, - # These settings can be specified for each node individually! - delay = 100000, # Additional latency in microseconds - jitter = 30000, # Jitter in µs - distribution = "normal", # Distribution of delay: uniform, normal, pareto, paretonormal - loss = 10, # Packet loss in percent - duplicate = 10, # Duplication in percent - corrupt = 10 # Corruption in percent - } - } - } + udp_node = { + type = "socket" + + format = "gtnet" + + in = { + address = "127.0.0.1:12001" + } + + out = { + address = "127.0.0.1:12000" + + # Network emulation settings + # Those settings can be specified for each node individually! + netem = { + enabled = true + + # Additional latency in microseconds + delay = 100000 + + # Jitter in uS + jitter = 30000 + + # Distribution of delay: uniform, normal, pareto, paretonormal + distribution = "normal" + + # Packet loss in percent + loss = 10 + + # Duplication in percent + duplicate = 10 + + # Corruption in percent + corrupt = 10 + } + } + } } ``` diff --git a/docs/node/nodes/amqp.md b/docs/node/nodes/amqp.md index 565b46d..bb82ad4 100644 --- a/docs/node/nodes/amqp.md +++ b/docs/node/nodes/amqp.md @@ -29,31 +29,31 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/amqp.conf" title="node/etc/examples/nodes/amqp.conf" nodes = { - amqp_node = { - type = "amqp", - format = "json", - - # Use 'amqps://' to enable SSL/TLS - uri = "amqp://username:password@example.com:1234/vhost", - - # Alternatively connection settings can be specified individually - username = "guest", - password = "guest", - host = "localhost", - vhost = "/", - port = 5672, - - exchange = "mytestexchange", - routing_key = "abc", - - ssl = { - verify_hostname = true, - verify_peer = true, - - ca_cert = "/path/to/ca.crt", - client_cert = "/path/to/client.crt", - client_key = "/path/to/client.key" - } - } + amqp_node = { + type = "amqp" + format = "json" + + # Use 'amqps://' to enable SSL/TLS + uri = "amqp://username:password@example.com:1234/vhost" + + # Alternatively connection settings can be specified individually + username = "guest" + password = "guest" + host = "localhost" + vhost = "/" + port = 5672 + + exchange = "mytestexchange" + routing_key = "abc" + + ssl = { + verify_hostname = true + verify_peer = true + + ca_cert = "/path/to/ca.crt" + client_cert = "/path/to/client.crt" + client_key = "/path/to/client.key" + } + } } ``` diff --git a/docs/node/nodes/api.md b/docs/node/nodes/api.md index e1bff29..8128b19 100644 --- a/docs/node/nodes/api.md +++ b/docs/node/nodes/api.md @@ -50,34 +50,43 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/api.conf" title="node/etc/examples/nodes/api.conf" nodes = { - api_node = { - type = "api" - - in = { - signals = ( - { - name = "" # Same as 'id' in uAPI context - description = "Volts on Bus A" # A human readable description of the channel - type = "float" # Same as 'datatype' in uAPI context - unit = "V" - payload = "events" # or 'samples' - rate = 100.0 # An expected refresh/sample rate of the signal - range = { - min = 20.0 - max = 100.0 - } - readable = true - writable = false - } - ) - } - - out = { - signals = ( - # Similar to above - ) - } - } + api_node = { + type = "api" + + in = { + signals = ( + { + # Same as 'id' in uAPI context + name = "" + + # A human readable description of the channel + description = "Volts on Bus A" + + # Same as 'datatype' in uAPI context + type = "float" + unit = "V" + payload = "events" # Or 'samples' + + # An expected refresh/sample rate of the signal + rate = 100.0 + + range = { + min = 20.0 + max = 100.0 + } + + readable = true + writable = false + } + ) + } + + out = { + signals = ( + # Similar to above + ) + } + } } ``` @@ -85,106 +94,107 @@ nodes = { ``` url="external/node/etc/examples/api.conf" title="node/etc/examples/api.conf" http = { - port = 8080 + port = 8080 } nodes = { - api_node = { - type = "api" - - in = { - signals = ( - { - name = "sig1_in", - type = "float", - unit = "V", - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - }, - { - name = "sig2_in", - type = "float", - unit = "A", - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - }, - { - name = "sig3_in", - type = "float", - unit = "A", - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - } - ) - } - - out = { - signals = ( - # Output signals have no name, type and unit settings as those are implicitly - # derived from the signals which are routed to this node - { - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - }, - { - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - }, - { - description = "Signal 1", - rate = 100, - readable = true, - writable = false, - payload = "samples" - } - ) - } - } - - signal_node = { - type = "signal" - - signal = "mixed" - values = 5 - rate = 1.0 - } + api_node = { + type = "api" + + in = { + signals = ( + { + name = "sig1_in" + type = "float" + unit = "V" + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + }, + { + name = "sig2_in" + type = "float" + unit = "A" + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + }, + { + name = "sig3_in" + type = "float" + unit = "A" + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + } + ) + } + + out = { + signals = ( + # Output signals have no name, type and unit settings as those are implicitly + # derived from the signals which are routed to this node + { + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + }, + { + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + }, + { + description = "Signal 1" + rate = 100 + readable = true + writable = false + payload = "samples" + } + ) + } + } + + signal_node = { + type = "signal" + + signal = "mixed" + values = 5 + rate = 1.0 + } } paths = ( - { - in = [ - "api_node" - ], - hooks = ( - "print" - ) - }, - { - in = [ - "signal_node" - ] - out = [ - "api_node" - ] - hooks = ( - "print" - ) - } + { + in = [ + "api_node" + ] + + hooks = ( + "print" + ) + }, + { + in = [ + "signal_node" + ] + out = [ + "api_node" + ] + hooks = ( + "print" + ) + } ) ``` diff --git a/docs/node/nodes/can.md b/docs/node/nodes/can.md index 418419d..27a3734 100644 --- a/docs/node/nodes/can.md +++ b/docs/node/nodes/can.md @@ -26,65 +26,65 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/can.conf" title="node/etc/examples/nodes/can.conf" nodes = { - can_node1 = { - type = "can" - interface_name = "vcan0" - sample_rate = 500000 + can_node1 = { + type = "can" + interface_name = "vcan0" + sample_rate = 500000 - in = { - signals = ( - { - name = "sigin1", - unit = "Volts", - type = "float", - enabled = true, - can_id = 66, - can_size = 4, - can_offset = 0 - }, - { - name = "sigin2", - unit = "Volts", - type = "float", - enabled = true, - can_id = 66, - can_size = 4, - can_offset = 4 - }, - { - name = "sigin3", - unit = "Volts", - type = "float", - enabled = true, - can_id = 67, - can_size = 8, - can_offset = 0 - } - ) - } + in = { + signals = ( + { + name = "sigin1" + unit = "Volts" + type = "float" + enabled = true + can_id = 66 + can_size = 4 + can_offset = 0 + }, + { + name = "sigin2" + unit = "Volts" + type = "float" + enabled = true + can_id = 66 + can_size = 4 + can_offset = 4 + }, + { + name = "sigin3" + unit = "Volts" + type = "float" + enabled = true + can_id = 67 + can_size = 8 + can_offset = 0 + } + ) + } - out = { - signals = ( - { - type = "float", - can_id = 66, - can_size = 4, - can_offset = 0 - }, - { - type = "float", - can_id = 66, - can_size = 4, - can_offset = 4 - }, - { - type = "float", - can_id = 67, - can_size = 8, - can_offset = 0 - } - ) - } - } + out = { + signals = ( + { + type = "float" + can_id = 66 + can_size = 4 + can_offset = 0 + }, + { + type = "float" + can_id = 66 + can_size = 4 + can_offset = 4 + }, + { + type = "float" + can_id = 67 + can_size = 8 + can_offset = 0 + } + ) + } + } } ``` diff --git a/docs/node/nodes/comedi.md b/docs/node/nodes/comedi.md index 5fd1742..0eee9fa 100644 --- a/docs/node/nodes/comedi.md +++ b/docs/node/nodes/comedi.md @@ -23,86 +23,89 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/comedi.conf" title="node/etc/examples/nodes/comedi.conf" nodes = { - pcie6259 = { - type = "comedi", - - device = "/dev/comedi0", - in = { - subdevice = 0, - rate = 1000, - - signals = ( - # note: order in this array defines order in villas sample - { channel = 0, range = 0, aref = 0, name = "temperature_int" }, - { channel = 1, range = 0, aref = 0, name = "loopback_ao0" }, - { channel = 2, range = 0, aref = 0, name = "loopback_ao1" }, - { channel = 3, range = 0, aref = 0, name = "bnc_ext" } - ) - }, - out = { - subdevice = 1, - # Note: buffer size and rate shouldn't be changed at the moment - # output sample rate - rate = 40000, - # comedi write buffer in kilobytes - bufsize = 24, - - signals = ( - # note: order in this array corresponds to order in villas sample - { name = "ao0", channel = 0, range = 0, aref = 0 }, - { name = "ao1", channel = 1, range = 0, aref = 0 }, - { name = "ao2", channel = 2, range = 0, aref = 0 }, - { name = "ao3", channel = 3, range = 0, aref = 0 } - ) - } - }, - - remote = { - type = "socket", - layer = "udp" - format = "protobuf", - - in = { - address = "*:12000" - }, - out = { - address = "134.130.169.32:12000" - } - }, - - sine1 = { - type = "signal", - signal = "sine", - values = 1, - frequency = 50, - rate = 10000, - }, - - sine2 = { - type = "signal", - signal = "sine", - values = 1, - frequency = 100, - rate = 10000, - } + pcie6259 = { + type = "comedi" + + device = "/dev/comedi0" + in = { + subdevice = 0 + rate = 1000 + + signals = ( + # Note: order in this array defines order in villas sample + { channel = 0, range = 0, aref = 0, name = "temperature_int" }, + { channel = 1, range = 0, aref = 0, name = "loopback_ao0" }, + { channel = 2, range = 0, aref = 0, name = "loopback_ao1" }, + { channel = 3, range = 0, aref = 0, name = "bnc_ext" } + ) + } + out = { + subdevice = 1 + # Note: buffer size and rate shouldn't be changed at the moment + # output sample rate + rate = 40000 + # Comedi write buffer in kilobytes + bufsize = 24 + + signals = ( + # Note: order in this array corresponds to order in villas sample + { name = "ao0", channel = 0, range = 0, aref = 0 }, + { name = "ao1", channel = 1, range = 0, aref = 0 }, + { name = "ao2", channel = 2, range = 0, aref = 0 }, + { name = "ao3", channel = 3, range = 0, aref = 0 } + ) + } + } + + remote = { + type = "socket" + layer = "udp" + format = "protobuf" + + in = { + address = "*:12000" + } + + out = { + address = "134.130.169.32:12000" + } + } + + sine1 = { + type = "signal" + + signal = "sine" + values = 1 + frequency = 50 + rate = 10000 + } + + sine2 = { + type = "signal" + + signal = "sine" + values = 1 + frequency = 100 + rate = 10000 + } } paths = ( - # 2-ch sine - # { - # in = [ "sine1.data[0]", "sine2.data[0]" ] - # out = "pcie6259" - # rate = 10000 - # mask = () - # } - - # Remote data via UDP - { - in = "remote.data[0-3]" - out = "pcie6259" - rate = 40000 - mask = () - } + # 2-ch sine + # { + # in = [ "sine1.data[0]", "sine2.data[0]" ] + # out = "pcie6259" + # rate = 10000 + # mask = () + # } + + # Remote data via UDP + { + in = "remote.data[0-3]" + out = "pcie6259" + rate = 40000 + mask = () + } ) ``` diff --git a/docs/node/nodes/ethercat.md b/docs/node/nodes/ethercat.md index 642ad78..af1cf09 100644 --- a/docs/node/nodes/ethercat.md +++ b/docs/node/nodes/ethercat.md @@ -27,45 +27,45 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/ethercat.conf" title="node/etc/examples/nodes/ethercat.conf" ethercat = { - coupler = { - position = 0 - vendor_id = 0x00000002 # Backhoff - product_code = 0x044c2c52 # EK1100 - } - - alias = 0 - master = 0 + coupler = { + position = 0 + vendor_id = 0x00000002 # Beckhoff + product_code = 0x044c2c52 # EK1100 + } + + alias = 0 + master = 0 } nodes = { - ethercat_node = { - type = "ethercat" + ethercat_node = { + type = "ethercat" - rate = 1000.0 # Rate of master cyclic task + rate = 1000.0 # Rate of master cyclic task - # Analog Input Slave - in = { - num_channels = 8 - range = 10.0 # -10.0 V to +10.0 V + # Analog Input Slave + in = { + num_channels = 8 + range = 10.0 # -10.0 V to +10.0 V - position = 2 - vendor_id = 0x00000002 # Beckhoff - product_code = 0x0bc03052 # EL3008 + position = 2 + vendor_id = 0x00000002 # Beckhoff + product_code = 0x0bc03052 # EL3008 - # PDOs are currently hardcoded! - } + # PDOs are currently hardcoded! + } - # Analog Output Slave - out = { - num_channels = 8 - range = 10.0 # -10.0 V to +10.0 V + # Analog Output Slave + out = { + num_channels = 8 + range = 10.0 # -10.0 V to +10.0 V - position = 1 - vendor_id = 0x00000002 # Beckhoff - product_code = 0x0fc63052 # EL4038 + position = 1 + vendor_id = 0x00000002 # Beckhoff + product_code = 0x0fc63052 # EL4038 - # PDOs are currently hardcoded! - } - } + # PDOs are currently hardcoded! + } + } } ``` diff --git a/docs/node/nodes/exec.md b/docs/node/nodes/exec.md index 477ff5f..ec9070c 100644 --- a/docs/node/nodes/exec.md +++ b/docs/node/nodes/exec.md @@ -29,16 +29,16 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/exec.conf" title="node/etc/examples/nodes/exec.conf" nodes = { - exec_node = { - type = "exec" - format = "villas.human" - flush = true - exec = "tee test" - shell = true - working_directory = "/tmp" - environment = { - MYVAR = "TESTVAL" - } - } + exec_node = { + type = "exec" + format = "villas.human" + flush = true + exec = "tee test" + shell = true + working_directory = "/tmp" + environment = { + MYVAR = "TESTVAL" + } + } } ``` diff --git a/docs/node/nodes/file.md b/docs/node/nodes/file.md index b40b317..e3b3c69 100644 --- a/docs/node/nodes/file.md +++ b/docs/node/nodes/file.md @@ -28,33 +28,43 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/file.conf" title="node/etc/examples/nodes/file.conf" nodes = { - file_node = { - type = "file" + file_node = { + type = "file" - ### The following settings are specific to the file node-type!! ### + # These options specify the URI where the the files are stored + # The URI accepts all format tokens of (see strftime(3)) + uri = "logs/input.log" + # uri = "logs/output_%F_%T.log" - uri = "logs/input.log", # These options specify the URI where the the files are stored - #uri = "logs/output_%F_%T.log" # The URI accepts all format tokens of (see strftime(3)) + format = "csv" - format = "csv" + in = { + # One of: direct (default), wait, relative, absolute + epoch_mode = "direct" - in = { - epoch_mode = "direct" # One of: direct (default), wait, relative, absolute - epoch = 10 # The interpretation of this value depends on epoch_mode (default is 0). - # Consult the documentation of a full explanation + # The interpretation of this value depends on epoch_mode (default is 0) + # Consult the documentation of a full explanation + epoch = 10 - rate = 2.0 # A constant rate at which the lines of the input files should be read - # A missing or zero value will use the timestamp in the first column - # of the file to determine the pause between consecutive lines. - eof = "rewind" # Rewind the file and start from the beginning. + # A constant rate at which the lines of the input files should be read + # A missing or zero value will use the timestamp in the first column + # of the file to determine the pause between consecutive lines + rate = 2.0 - buffer_size = 0 # Creates a stream buffer if value is positive - }, - out = { - flush = false # Flush or upload contents of the file every time new samples are sent. + # Rewind the file and start from the beginning + eof = "rewind" - buffer_size = 0 # Creates a stream buffer if value is positive - } - } + # Creates a stream buffer if value is positive + buffer_size = 0 + } + + out = { + # Flush or upload contents of the file every time new samples are sent + flush = false + + # Creates a stream buffer if value is positive + buffer_size = 0 + } + } } ``` diff --git a/docs/node/nodes/iec60870-5-104.md b/docs/node/nodes/iec60870-5-104.md index a7a1823..e9eacf1 100644 --- a/docs/node/nodes/iec60870-5-104.md +++ b/docs/node/nodes/iec60870-5-104.md @@ -24,75 +24,76 @@ import ApiSchema from '@theme/ApiSchema'; ## Example ``` url="external/node/etc/examples/nodes/iec60870-5-104.conf" title="node/etc/examples/nodes/iec60870-5-104.conf" - nodes = { - iec104_node = { - type = "iec60870-5-104" - - # Network address and port of the server - # 0.0.0.0 listens on all interfaces - address = "0.0.0.0" - port = 2404 - - # Common address of this IEC104 slave - ca = 41025 - - # Queue sizes for this node - low_priority_queue = 100 - high_priority_queue = 100 - - out = { - # Map signals to information object addresses and ASDU data types - # one ASDU per specified asdu_type_id/asdu_type+with_timestamp is - # send for each sample. Signals of the same type are collected - # in a single ASDU. - signals = ( - { - # The ASDU data type - asdu_type = "normalized-float" - # add 56 bit unix timestamp to ASDU - with_timestamp = false - # the information object address of this signal - ioa = 4202832 - }, - { - # Equivalent to the asdu_type above - asdu_type_id = "M_ME_NA_1" - ioa = 4202852 - }, - { - # A boolean value - asdu_type = "single-point" - with_timestamp = true - ioa = 4206948 - } - ) - } - } + iec104_node = { + type = "iec60870-5-104" + + # Network address and port of the server + # 0.0.0.0 listens on all interfaces + address = "0.0.0.0" + port = 2404 + + # Common address of this IEC104 slave + ca = 41025 + + # Queue sizes for this node + low_priority_queue = 100 + high_priority_queue = 100 + + out = { + # Map signals to information object addresses and ASDU data types + # one ASDU per specified asdu_type_id/asdu_type+with_timestamp is + # send for each sample. Signals of the same type are collected + # in a single ASDU + signals = ( + { + # The ASDU data type + asdu_type = "normalized-float" + + # Add 56 bit unix timestamp to ASDU + with_timestamp = false + + # The information object address of this signal + ioa = 4202832 + }, + { + # Equivalent to the asdu_type above + asdu_type_id = "M_ME_NA_1" + ioa = 4202852 + }, + { + # A boolean value + asdu_type = "single-point" + with_timestamp = true + ioa = 4206948 + } + ) + } + } } ``` ``` url="external/node/etc/examples/nodes/iec60870-5-104-sequence.conf" title="node/etc/examples/nodes/iec60870-5-104-sequence.conf" nodes = { - iec104_node_seq = { - type = "iec60870-5-104" - address = "0.0.0.0" - port = 2404 - ca = 1 - out = { - # Create a sequence of 5 floats with identical IOAs - signals = { - asdu_type_id = "M_ME_NA_1" - ioa = 4202852 - count = 5 - } - - # Interpret the duplicate IOAs as a sequence by incrementing the - # IOA with each duplication. This only applies to two adjacent - # signals with the same IOA. Specifying an IOA twice with other - # IOAs inbetween is an error. - duplicate_ioa_is_sequence = true - } - } + iec104_node_seq = { + type = "iec60870-5-104" + address = "0.0.0.0" + port = 2404 + ca = 1 + out = { + # Create a sequence of 5 floats with identical IOAs + signals = { + asdu_type_id = "M_ME_NA_1" + ioa = 4202852 + count = 5 + } + + # Interpret the duplicate IOAs as a sequence by incrementing the + # IOA with each duplication. This only applies to two adjacent + # signals with the same IOA. Specifying an IOA twice with other + # IOAs inbetween is an error + duplicate_ioa_is_sequence = true + } + } } ``` diff --git a/docs/node/nodes/iec61850-8-1.md b/docs/node/nodes/iec61850-8-1.md index 9aad53a..071aefc 100644 --- a/docs/node/nodes/iec61850-8-1.md +++ b/docs/node/nodes/iec61850-8-1.md @@ -24,149 +24,148 @@ import ApiSchema from '@theme/ApiSchema'; ## Example ``` url="external/node/etc/examples/nodes/iec61850-8-1.conf" title="node/etc/examples/nodes/iec61850-8-1.conf" - nodes = { - goose = { - type = "iec61850-8-1" - - out = { - # Ethernet interface to publish on - interface = "lo" - - # Array of goose publisher definitions - publishers = ( - { - # Mandatory GOOSE publisher meta data - go_id = "AA1J1Q01A3LD0/LLN0.gcbdata" - go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbdata" - data_set_ref = "AA1J1Q01A3LD0/LLN0$data" - dst_address = "01:0c:cd:01:00:00" - app_id = 2 - conf_rev = 100 - time_allowed_to_live = 11000 - - # Payload description with either constant data or values from a signal - data = ( - { - # Mandatory MMS type - mms_type = "boolean" - - # Name of the signal in the array below - signal = "ABB_cascade_state" - }, - { - # Mandatory MMS type - mms_type = "bitstring" - - # Type meta data - mms_bitstring_size = 13 - - # Constant value - value = 2048 - } - ) - }, - { - go_id = "AA1J1Q01A3LD0/LLN0.gcbDataset_1" - go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbDataset_1" - data_set_ref = "AA1J1Q01A3LD0/LLN0$Dataset_1" - dst_address = "01:0c:cd:01:00:01" - app_id = 1 - conf_rev = 300 - time_allowed_to_live = 22000 - data = ( - { - mms_type = "boolean" - signal = "ABB_cascade_state" - }, - { - mms_type = "bitstring" - mms_bitstring_size = 13 - value = 2048 - }, - { - mms_type = "bitstring" - mms_bitstring_size = 2 - value = 0 - }, - { - mms_type = "bitstring" - mms_bitstring_size = 13 - value = 2048 - }, - { - mms_type = "bitstring" - mms_bitstring_size = 13 - value = 2048 - }, - { - mms_type = "bitstring" - mms_bitstring_size = 2 - value = 0 - } - ) - } - ) - signals = ( - { - # The signal name used to identify the signal in a publishers data field - name = "ABB_cascade_state" - type = "boolean" - } - ) - } - - in = { - # Ethernet interface to listen on - interface = "lo" - - # Use the goose timestamp for a sample - with_timestamp = true - - # List of named subscriber definitions - subscribers = { - relay = { - # Mandatory GoCbRef - go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbdata" - - # Optional filter by packet destination MAC address - dst_address = "01:0c:cd:01:00:00" - - # Optional filter by AppID - app_id = 2 - - # Optional trigger specification (either "always" or "change") - # - # "always" = emit an updated sample for each incoming GOOSE message - # "change" = only emit an updated sample when SqNum is 0 - trigger = "change" - } - } - - signals = ( - { - name = "ABB_relay_state" - type = "boolean" - - # Mandatory MmsType specification - mms_type = "boolean" - - # Mandatory subscriber name - subscriber = "relay" - - # Mandatory index within the received vector of GOOSE values - index = 0 - }, - { - name = "ABB_relay_state_meta_bitset" - type = "integer" - mms_type = "bitstring" - subscriber = "relay" - index = 1 - } - ) - } - } + goose = { + type = "iec61850-8-1" + + out = { + # Ethernet interface to publish on + interface = "lo" + + # Array of goose publisher definitions + publishers = ( + { + # Mandatory GOOSE publisher meta data + go_id = "AA1J1Q01A3LD0/LLN0.gcbdata" + go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbdata" + data_set_ref = "AA1J1Q01A3LD0/LLN0$data" + dst_address = "01:0c:cd:01:00:00" + app_id = 2 + conf_rev = 100 + time_allowed_to_live = 11000 + + # Payload description with either constant data or values from a signal + data = ( + { + # Mandatory MMS type + mms_type = "boolean" + + # Name of the signal in the array below + signal = "ABB_cascade_state" + }, + { + # Mandatory MMS type + mms_type = "bitstring" + + # Type meta data + mms_bitstring_size = 13 + + # Constant value + value = 2048 + } + ) + }, + { + go_id = "AA1J1Q01A3LD0/LLN0.gcbDataset_1" + go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbDataset_1" + data_set_ref = "AA1J1Q01A3LD0/LLN0$Dataset_1" + dst_address = "01:0c:cd:01:00:01" + app_id = 1 + conf_rev = 300 + time_allowed_to_live = 22000 + data = ( + { + mms_type = "boolean" + signal = "ABB_cascade_state" + }, + { + mms_type = "bitstring" + mms_bitstring_size = 13 + value = 2048 + }, + { + mms_type = "bitstring" + mms_bitstring_size = 2 + value = 0 + }, + { + mms_type = "bitstring" + mms_bitstring_size = 13 + value = 2048 + }, + { + mms_type = "bitstring" + mms_bitstring_size = 13 + value = 2048 + }, + { + mms_type = "bitstring" + mms_bitstring_size = 2 + value = 0 + } + ) + } + ) + signals = ( + { + # The signal name used to identify the signal in a publishers data field + name = "ABB_cascade_state" + type = "boolean" + } + ) + } + + in = { + # Ethernet interface to listen on + interface = "lo" + + # Use the goose timestamp for a sample + with_timestamp = true + + # List of named subscriber definitions + subscribers = { + relay = { + # Mandatory GoCbRef + go_cb_ref = "AA1J1Q01A3LD0/LLN0$GO$gcbdata" + + # Optional filter by packet destination MAC address + dst_address = "01:0c:cd:01:00:00" + + # Optional filter by AppID + app_id = 2 + + # Optional trigger specification (either "always" or "change") + # + # "always" = emit an updated sample for each incoming GOOSE message + # "change" = only emit an updated sample when SqNum is 0 + trigger = "change" + } + } + + signals = ( + { + name = "ABB_relay_state" + type = "boolean" + + # Mandatory MmsType specification + mms_type = "boolean" + + # Mandatory subscriber name + subscriber = "relay" + + # Mandatory index within the received vector of GOOSE values + index = 0 + }, + { + name = "ABB_relay_state_meta_bitset" + type = "integer" + mms_type = "bitstring" + subscriber = "relay" + index = 1 + } + ) + } + } } ``` diff --git a/docs/node/nodes/iec61850-9-2.md b/docs/node/nodes/iec61850-9-2.md index 706dba0..c1d4b69 100644 --- a/docs/node/nodes/iec61850-9-2.md +++ b/docs/node/nodes/iec61850-9-2.md @@ -48,32 +48,36 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/iec61850-9-2.conf" title="node/etc/examples/nodes/iec61850-9-2.conf" nodes = { - sampled_values_node = { - type = "iec61850-9-2", - - interface = "lo", - dst_address = "01:0c:cd:01:00:01", - - out = { - signals = ( - { iec_type = "float32" }, - { iec_type = "float64" }, - { iec_type = "int8" }, - { iec_type = "int32" } - ) - - svid = "test1234", - smpmod = "samples_per_second", - confrev = 55 - }, - in = { - signals = ( - { iec_type = "float32" }, - { iec_type = "float64" }, - { iec_type = "int8" }, - { iec_type = "int32" } - ) - } - } + sampled_values_node = { + type = "iec61850-9-2" + + interface = "lo" + dst_address = "01:0c:cd:01:00:01" + + out = { + signals = ( + { iec_type = "float32" }, + { iec_type = "float64" }, + { iec_type = "int8" }, + { iec_type = "int32" } + ) + + sv_id = "test1234" + smp_mod = "samples_per_second" + smp_synch = "local_clock" + conf_rev = 55 + } + + in = { + signals = ( + { iec_type = "float32" }, + { iec_type = "float64" }, + { iec_type = "int8" }, + { iec_type = "int32" } + ) + + check_dst_address = false + } + } } ``` diff --git a/docs/node/nodes/index.md b/docs/node/nodes/index.md index 5ab7019..d0718a4 100644 --- a/docs/node/nodes/index.md +++ b/docs/node/nodes/index.md @@ -38,7 +38,7 @@ VILLASnode currently supports the following node-types: | [mqtt](mqtt.md) | no | yes | yes | unlimited | stable | | | [nanomsg](nanomsg.md) | yes | yes | yes | unlimited | stable | | | [ngsi](ngsi.md) | no | yes | yes | unlimited | stable | Use WebSockets for Live data | -| [opal](opal.md) | no | yes | yes | 1 | untested | | +| [opal](opal/index.md) | no | yes | yes | 1 | untested | | | [redis](redis.md) | no | yes | yes | unlimited | stable | | | [rtp](rtp.md) | yes | yes | yes | ? | beta | | | [shmem](shmem.md) | no | yes | yes | unlimited | stable | | diff --git a/docs/node/nodes/infiniband.md b/docs/node/nodes/infiniband.md index 042fb92..98d55cc 100644 --- a/docs/node/nodes/infiniband.md +++ b/docs/node/nodes/infiniband.md @@ -27,76 +27,75 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/infiniband.conf" title="node/etc/examples/nodes/infiniband.conf" nodes = { - results = { - type = "file", + results = { + type = "file" - uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log", - }, + uri = "logs/ib_results-%Y%m%d_%H-%M-%S.log" + } - siggen = { - type = "signal", + siggen = { + type = "signal" - signal = "mixed", - values = 3, - frequency = 3.0, - rate = 100000.0, - limit = 100000, - }, + signal = "mixed" + values = 3 + frequency = 3.0 + rate = 100000.0 + limit = 100000 + } - ib_node_source = { - type = "infiniband", + ib_node_source = { + type = "infiniband" - rdma_port_space = "RC", - - in = { - address = "10.0.0.2:1337", + rdma_port_space = "RC" - max_wrs = 8192, - cq_size = 8192, + in = { + address = "10.0.0.2:1337" - vectorize = 1, + max_wrs = 8192 + cq_size = 8192 - buffer_subtraction = 128, - }, + vectorize = 1 - out = { - address = "10.0.0.1:1337", - resolution_timeout = 1000, - - max_wrs = 8192, - cq_size = 256, + buffer_subtraction = 128 + } - vectorize = 1, + out = { + address = "10.0.0.1:1337" + resolution_timeout = 1000 - send_inline = true, - max_inline_data = 60, + max_wrs = 8192 + cq_size = 256 - use_fallback = true, - } - } + vectorize = 1 - ib_node_target = { - type = "infiniband", + send_inline = true + max_inline_data = 60 - rdma_port_space = "RC", + use_fallback = true + } + } - in = { - address = "10.0.0.1:1337", + ib_node_target = { + type = "infiniband" - max_wrs = 8192, - cq_size = 8192, + rdma_port_space = "RC" - vectorize = 1, + in = { + address = "10.0.0.1:1337" - buffer_subtraction = 128, + max_wrs = 8192 + cq_size = 8192 - hooks = ( - { type = "stats", verbose = true } - ) - } - } -} + vectorize = 1 + + buffer_subtraction = 128 + hooks = ( + { type = "stats", verbose = true } + ) + } + } +} ``` ## State diagram diff --git a/docs/node/nodes/influxdb.md b/docs/node/nodes/influxdb.md index cbcad1c..7e7b6bf 100644 --- a/docs/node/nodes/influxdb.md +++ b/docs/node/nodes/influxdb.md @@ -29,11 +29,11 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/influxdb.conf" title="node/etc/examples/nodes/influxdb.conf" nodes = { - influxdb_node = { - type = "influxdb", + influxdb_node = { + type = "influxdb" - server = "localhost:8089", - key = "villas" - } + server = "localhost:8089" + key = "villas" + } } ``` diff --git a/docs/node/nodes/kafka.md b/docs/node/nodes/kafka.md index 2716de2..f6bb135 100644 --- a/docs/node/nodes/kafka.md +++ b/docs/node/nodes/kafka.md @@ -25,31 +25,33 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/kafka.conf" title="node/etc/examples/nodes/kafka.conf" nodes = { - kafka_node = { - type = "kafka", - - format = "json.kafka", - - server = "localhost:9094", - protocol = "SASL_SSL", - client_id = "villas-node", - - in = { - consume = "test-topic", - group_id = "villas-node" - }, - out = { - produce = "test-topic" - }, - - ssl = { - ca = "/etc/ssl/certs/ca.pem", - }, - sasl = { - mechanisms = "SCRAM-SHA-512", - username = "scram-sha-512-usr", - password = "scram-sha-512-pwd" - } - } + kafka_node = { + type = "kafka" + + format = "json.kafka" + + server = "localhost:9094" + protocol = "SASL_SSL" + client_id = "villas-node" + + in = { + consume = "test-topic" + group_id = "villas-node" + } + + out = { + produce = "test-topic" + } + + ssl = { + ca = "/etc/ssl/certs/ca.pem" + } + + sasl = { + mechanisms = "SCRAM-SHA-512" + username = "scram-sha-512-usr" + password = "scram-sha-512-pwd" + } + } } ``` diff --git a/docs/node/nodes/loopback.md b/docs/node/nodes/loopback.md index 9031ca0..3ff7bf7 100644 --- a/docs/node/nodes/loopback.md +++ b/docs/node/nodes/loopback.md @@ -28,11 +28,16 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/loopback.conf" title="node/etc/examples/nodes/loopback.conf" nodes = { - loopback_node = { - type = "loopback", # A loopback node will receive exactly the same data which has been sent to it. - # The internal implementation is based on queue. - queuelen = 1024, # The queue length of the internal queue which buffers the samples. - mode = "polling" # Use busy polling for synchronization of the read and write side of the queue - } + loopback_node = { + # A loopback node will receive exactly the same data which has been sent to it + type = "loopback" + + # The internal implementation is based on queue + # The queue length of the internal queue which buffers the samples + queuelen = 1024 + + # Use busy polling for synchronization of the read and write side of the queue + mode = "polling" + } } ``` diff --git a/docs/node/nodes/modbus.md b/docs/node/nodes/modbus.md index 8f9194f..29ff0f3 100644 --- a/docs/node/nodes/modbus.md +++ b/docs/node/nodes/modbus.md @@ -25,168 +25,168 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/modbus.conf" title="node/etc/examples/nodes/modbus.conf" nodes = { - modbus_node = { - type = "modbus" + modbus_node = { + type = "modbus" - # Required transport type. Can be either "rtu" or "tcp" - transport = "tcp" + # Required transport type. Can be either "rtu" or "tcp" + transport = "tcp" - # Optional timeout in seconds when waiting for responses from a modbus server. - # Default is 1.0. - response_timeout = 1.0 + # Optional timeout in seconds when waiting for responses from a modbus server + # Default is 1.0 + response_timeout = 1.0 - # - # Settings for transport = "tcp". - # - - # Required remote IP address. - remote = "127.0.0.1" - - # Optional remote port. - # Default is 502. - port = 502 - - - # - # Settings for transport = "rtu" - # - - # Required device file. - device = "/dev/ttyS0" - - # Required baudrate. - baudrate = 9600 - - # Required parity. One of "none", "even" and "odd" - parity = "none" - - # Required data bits. One of 5, 6, 7, 8 - data_bits = 5 - - # Required stop bits. One of 1, 2 - stop_bits = 1 - - # The modbus unit ID. - # Required for transport = "rtu". - # Optional for transport = "tcp". - unit = 1 - - # Optional polling rate for the modbus remote reads. - # Defaults to 10. - rate = 10 - - in = { - signals = ( - # A 32-bit IEEE 754 floating point value. - # This spans 2 registers. - { - # Required type = "float". - type = "float" - - # Required address of the lowest register. - address = 0x50 - - # Optional endianess for joining the 2 16-bit registers into a 32-bit value. - # Defaults to "big". - word_endianess = "big" - - # Optional endianess for the 2 bytes within a register. - # Defaults to "big". - byte_endianess = "big" - - # Optional scale that should be applied to the integer value. - # Defaults to 1. - scale = 10 - - # Optional offset that should be applied to the integer value after scaling. - # Defaults to 0. - offset = 2 - }, - # A single bit within a register as a boolean value. - { - # Required type = "boolean". - type = "boolean" - - # Required address of the register. - address = 0x54 - - # Required bit within the register. - # Starting at 0. - bit = 0 - }, - # An integer value. - # This may span multiple registers. - { - # Required type = "integer". - type = "integer" - - # Required address of the lowest register. - address = 0x52 - - # Optional number of registers that should be joined to form the value. - # Defaults to 1. - integer_registers = 1 - - # Optional endianess for joining the 16-bit registers into a 32-bit value. - # Defaults to "big". - word_endianess = "big" - - # Optional endianess for the 2 bytes within a register. - # Defaults to "big". - byte_endianess = "big" - }, - # An float value created by reading an integer and applying an optional offset and scale. - # This may span multiple registers. - { - # Required type = "float". - type = "float" - - # Required address of the lowest register. - address = 0x52 - - # Required number of registers that should be joined to form the value. - # A "float" value without the "integer_registers" settings is considered an IEEE 754 float, spanning 2 registers. - integer_registers = 1 - - # Optional endianess for joining the 16-bit registers into a 32-bit value. - # Defaults to "big". - word_endianess = "big" - - # Optional endianess for the 2 bytes within a register. - # Defaults to "big". - byte_endianess = "big" - - # Optional scale that should be applied to the integer value. - # Defaults to 1. - scale = 10 - - # Optional offset that should be applied to the integer value after scaling. - # Defaults to 0. - offset = 2 - } - ) - } - - out = { - signals = ( - # All register mappings described for "in" except for "boolean" are supported in the "out" signals. - { - type = "float" - address = 0x50 - - # Scale and offset a applied as attributes of the register that is written to. - # This means the value written to "register" for a "signal" with "offset" and "scale" will be: - # - # register = (signal - offset) / scale - # - # It is fairly common to specify a scale and offset for modbus registers in a device manual. - # You should be able to plug those values into this configuration without conversion. - scale = 10 - offset = 2 - }, - ) - } - } + # + # Settings for transport = "tcp" + # + + # Required remote IP address + remote = "127.0.0.1" + + # Optional remote port + # Default is 502 + port = 502 + + + # + # Settings for transport = "rtu" + # + + # Required device file + device = "/dev/ttyS0" + + # Required baudrate + baudrate = 9600 + + # Required parity. One of "none", "even" and "odd" + parity = "none" + + # Required data bits. One of 5, 6, 7, 8 + data_bits = 5 + + # Required stop bits. One of 1, 2 + stop_bits = 1 + + # The modbus unit ID + # Required for transport = "rtu" + # Optional for transport = "tcp" + unit = 1 + + # Optional polling rate for the modbus remote reads + # Defaults to 10 + rate = 10 + + in = { + signals = ( + # A 32-bit IEEE 754 floating point value + # This spans 2 registers + { + # Required type = "float" + type = "float" + + # Required address of the lowest register + address = 0x50 + + # Optional endianess for joining the 2 16-bit registers into a 32-bit value + # Defaults to "big" + word_endianess = "big" + + # Optional endianess for the 2 bytes within a register + # Defaults to "big" + byte_endianess = "big" + + # Optional scale that should be applied to the integer value + # Defaults to 1 + scale = 10 + + # Optional offset that should be applied to the integer value after scaling + # Defaults to 0 + offset = 2 + }, + # A single bit within a register as a boolean value + { + # Required type = "boolean" + type = "boolean" + + # Required address of the register + address = 0x54 + + # Required bit within the register + # Starting at 0 + bit = 0 + }, + # An integer value + # This may span multiple registers + { + # Required type = "integer" + type = "integer" + + # Required address of the lowest register + address = 0x52 + + # Optional number of registers that should be joined to form the value + # Defaults to 1 + integer_registers = 1 + + # Optional endianess for joining the 16-bit registers into a 32-bit value + # Defaults to "big" + word_endianess = "big" + + # Optional endianess for the 2 bytes within a register + # Defaults to "big" + byte_endianess = "big" + }, + # An float value created by reading an integer and applying an optional offset and scale + # This may span multiple registers + { + # Required type = "float" + type = "float" + + # Required address of the lowest register + address = 0x52 + + # Required number of registers that should be joined to form the value + # A "float" value without the "integer_registers" settings is considered an IEEE 754 float, spanning 2 registers + integer_registers = 1 + + # Optional endianess for joining the 16-bit registers into a 32-bit value + # Defaults to "big" + word_endianess = "big" + + # Optional endianess for the 2 bytes within a register + # Defaults to "big" + byte_endianess = "big" + + # Optional scale that should be applied to the integer value + # Defaults to 1 + scale = 10 + + # Optional offset that should be applied to the integer value after scaling + # Defaults to 0 + offset = 2 + } + ) + } + + out = { + signals = ( + # All register mappings described for "in" except for "boolean" are supported in the "out" signals + { + type = "float" + address = 0x50 + + # Scale and offset a applied as attributes of the register that is written to + # This means the value written to "register" for a "signal" with "offset" and "scale" will be: + # + # register = (signal - offset) / scale + # + # It is fairly common to specify a scale and offset for modbus registers in a device manual + # You should be able to plug those values into this configuration without conversion + scale = 10 + offset = 2 + } + ) + } + } } ``` diff --git a/docs/node/nodes/mqtt.md b/docs/node/nodes/mqtt.md index 1f4ef46..62784fa 100644 --- a/docs/node/nodes/mqtt.md +++ b/docs/node/nodes/mqtt.md @@ -26,33 +26,36 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/mqtt.conf" title="node/etc/examples/nodes/mqtt.conf" nodes = { - mqtt_node = { - type = "mqtt", - - format = "protobuf", - - username = "guest", - password = "guest", - host = "localhost", - port = 1883, - - keepalive = 5, # Send ping every 5 seconds to keep connection alive - retain = false, - qos = 0, - - out = { - publish = "test-topic" - }, - in = { - subscribe = "test-topic" - }, - ssl = { - enabled = false, - insecure = true, - cafile = "/etc/ssl/certs/ca-bundle.crt", - certfile = "/etc/ssl/certs/my.crt", - keyfile = "/etc/ssl/keys/my.key" - } - } + mqtt_node = { + type = "mqtt" + + format = "protobuf" + + username = "guest" + password = "guest" + host = "localhost" + port = 1883 + + # Send ping every 5 seconds to keep connection alive + keepalive = 5 + retain = false + qos = 0 + + out = { + publish = "test-topic" + } + + in = { + subscribe = "test-topic" + } + + ssl = { + enabled = false + insecure = true + cafile = "/etc/ssl/certs/ca-bundle.crt" + certfile = "/etc/ssl/certs/my.crt" + keyfile = "/etc/ssl/keys/my.key" + } + } } ``` diff --git a/docs/node/nodes/nanomsg.md b/docs/node/nodes/nanomsg.md index be17606..da2316b 100644 --- a/docs/node/nodes/nanomsg.md +++ b/docs/node/nodes/nanomsg.md @@ -43,23 +43,28 @@ The `nanomsg` supports several different transport mechanisms which are listed i ``` url="external/node/etc/examples/nodes/nanomsg.conf" title="node/etc/examples/nodes/nanomsg.conf" nodes = { - nanomsg_node = { - type = "nanomsg", - - out = { - endpoints = [ - "tcp://*:12000", # TCP socket - "ipc:///tmp/test.ipc", # Interprocess communication - "inproc://test" # Inprocess communication - ], - } - in = { - endpoints = [ - "tcp://127.0.0.1:12000", - "ipc:///tmp/test.ipc", - "inproc://test" - ] - } - } + nanomsg_node = { + type = "nanomsg" + + out = { + endpoints = [ + # TCP socket + "tcp://*:12000", + + # Interprocess communication + "ipc:///tmp/test.ipc", + + # Inprocess communication + "inproc://test" + ] + } + in = { + endpoints = [ + "tcp://127.0.0.1:12000", + "ipc:///tmp/test.ipc", + "inproc://test" + ] + } + } } ``` diff --git a/docs/node/nodes/ngsi.md b/docs/node/nodes/ngsi.md index 98bdbc4..ef22b10 100644 --- a/docs/node/nodes/ngsi.md +++ b/docs/node/nodes/ngsi.md @@ -36,45 +36,50 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/ngsi.conf" title="node/etc/examples/nodes/ngsi.conf" nodes = { - ngsi_node = { - type = "ngsi", - - ### The following settings are specific to the ngsi node-type!! ### - - # The HTTP REST API endpoint of the FIRWARE context broker - endpoint = "http://46.101.131.212:1026", - - access_token: "aig1aaQuohsh5pee9uiC2Bae3loSh9wu" # Add an 'Auth-Token' token header to each request - - entity_id = "S3_ElectricalGrid", - entity_type = "ElectricalGridMonitoring", - - create = true # Create the NGSI entities during startup - - rate = 0.1 # Rate at which we poll the broker for updates - timeout = 1, # Timeout of HTTP request in seconds (default is 1, must be smaller than 1 / rate) - verify_ssl = false, # Verification of SSL server certificates (default is true) - - in = { - signals = ( - { - name = "attr1", - ngsi_attribute_name = "attr1", # defaults to signal 'name' - ngsi_attribute_type = "Volts", # default to signal 'unit' - ngsi_attribute_metadatas = ( - { name="accuracy", type="percent", value="5" } - ) - } - ) - } - - out = { - signals = ( - { name="PTotalLosses", unit="MW" }, - { name="QTotalLosses", unit="Mvar" } - ) - } - } + ngsi_node = { + type = "ngsi" + + # The HTTP REST API endpoint of the FIRWARE context broker + endpoint = "http://46.101.131.212:1026" + + # Add an 'Auth-Token' token header to each request + access_token = "aig1aaQuohsh5pee9uiC2Bae3loSh9wu" + + entity_id = "S3_ElectricalGrid" + entity_type = "ElectricalGridMonitoring" + + # Create the NGSI entities during startup + create = true + + # Rate at which we poll the broker for updates + rate = 0.1 + + # Timeout of HTTP request in seconds (default is 1, must be smaller than 1 / rate) + timeout = 1 + + # Verification of SSL server certificates (default is true) + verify_ssl = false + + in = { + signals = ( + { + name = "attr1" + ngsi_attribute_name = "attr1" # Defaults to signal 'name' + ngsi_attribute_type = "Volts" # Default to signal 'unit' + ngsi_attribute_metadatas = ( + { name="accuracy", type="percent", value="5" } + ) + } + ) + } + + out = { + signals = ( + { name="PTotalLosses", unit="MW" }, + { name="QTotalLosses", unit="Mvar" } + ) + } + } } ``` diff --git a/docs/node/nodes/opal/_category_.json b/docs/node/nodes/opal/_category_.json new file mode 100644 index 0000000..096fd8e --- /dev/null +++ b/docs/node/nodes/opal/_category_.json @@ -0,0 +1,3 @@ +{ + "label": "OPAL-RT" +} diff --git a/docs/node/nodes/opal/index.md b/docs/node/nodes/opal/index.md new file mode 100644 index 0000000..1583205 --- /dev/null +++ b/docs/node/nodes/opal/index.md @@ -0,0 +1,20 @@ +--- +hide_table_of_contents: true +--- + +# OPAL-RT Integration + +There are three options to exchange simulation signals with an OPAL-RT real-time simulator: + +1. **[UDP Sockets](../socket.md):** Use OPAL-RT's UDP/TCP I/O interfaces or an adapted version of the AsyncIP example for asynchronous processes. + In this mode, OPAL-RT targets will send signals via a UDP socket to VILLASnode. + VILLASnode use the [`socket` node-type](../socket.md) node-type to send and receive these UDP packets. + More information about our adapted AsyncIP example can be found here: [AsyncIP client](../../clients/opal_async_ip.md). + +2. **[Orchestra](opal_orchestra.md):** VILLASnode can act as an Orchestra client. + Orchstra is OPAL-RT's co-simulation framework for integrating custom code and external models. + The functionality is implemented in the closed-source [`opal.orchestra`](opal_orchestra.md) node-type. + +3. **[Asynchronous Process](opal_async.md):** VILLASnode can act as an RT-LAB Asynchronous Process. + Data exchange is then handled using OPAL-RT's `libOpalAsyncApi`. + The functionality is implemented in the closed-source [`opal.async`](opal_async.md) node-type. diff --git a/docs/node/nodes/opal.md b/docs/node/nodes/opal/opal_async.md similarity index 60% rename from docs/node/nodes/opal.md rename to docs/node/nodes/opal/opal_async.md index a669c6f..04710a9 100644 --- a/docs/node/nodes/opal.md +++ b/docs/node/nodes/opal/opal_async.md @@ -10,14 +10,6 @@ hide_table_of_contents: true They are used to exchange data between RT-LAB Simulink models and custom user-defined programs via [shared memory](https://en.wikipedia.org/wiki/Shared_memory) on a real-time target. -There are two ways to exchange sample values with an OPAL-RT simulator: - -1. Use our adapted version of OPAL-RT's AsyncIP example for asynchronous processes (see [AsyncIP client](../clients/opal_async_ip.md)) - In this mode, OPAL will send sample data via UDP to VILLASnode. VILLASnode has to use the [`socket` node-type](socket.md). -2. Run VILLASnode as an asynchronous process itself. This is a highly experimental feature and implemented in the node-type `opal.async`. - Data exchange is then handled using OPAL-RT's `libOpalAsyncApi`. - This settings of this node-type a described on this page. - ## Prerequisites This node-types requires a running version of VILLASnode on an OPAL-RT target: @@ -26,13 +18,19 @@ This node-types requires a running version of VILLASnode on an OPAL-RT target: - RT-LAB v2023.1 or newer :::caution -HYPERSIM or older targets running RHEL / CentOS operating systems are not supported. +The node-types requires the use of the RT-LAB simulation environment. +When using HYPERSIM, please consider the running VILLASnode as an [OPAL-RT Orchestra Client](opal_orchestra.md). + +Older targets running RHEL / CentOS operating systems are not supported. ::: ## Implementation -The source code of the node-type is available here: -https://github.com/VILLASframework/node/blob/master/lib/nodes/opal.cpp +:::note +The implementation of the `opal.async` node-type is currently not open source. + +Please contact [Steffen Vogel](mailto:steffen.vogel@opal-rt.com) if you are interested in run +::: ## Installation @@ -82,41 +80,24 @@ import ApiSchema from '@theme/ApiSchema'; ## Example -``` url="external/node/etc/examples/nodes/opal.conf" title="node/etc/examples/nodes/opal.conf" -nodes = { - opal_node = { # The server can be started as an Asynchronous process - type = "opal", # from within an OPAL-RT model. +``` url="external/node/etc/examples/nodes/opal_async.conf" title="node/etc/examples/nodes/opal_async.conf" +# Author: Steffen Vogel - ### The following settings are specific to the opal node-type!! ### - - send_id = 1, # It's possible to have multiple send / recv Icons per model - recv_id = 1, # Specify the ID here. - reply = true - }, - file_node = { - type = "file", - - ### The following settings are specific to the file node-type!! ### - - uri = "logs/input.log", # These options specify the path prefix where the the files are stored - - in = { - epoch_mode = "direct" # One of: direct (default), wait, relative, absolute - epoch = 10 # The interpretation of this value depends on epoch_mode (default is 0). - # Consult the documentation of a full explanation +nodes = { + opal_async_node1 = { + type = "opal.async" - rate = 2.0 # A constant rate at which the lines of the input files should be read - # A missing or zero value will use the timestamp in the first column - # of the file to determine the pause between consecutive lines. + # The Send/Recv ID of the RT-Lab OpAsyncSend/Recv blocks. + id = 1 - buffer_size = 1000000 + in = { + # Send a confirmation to the Simulink model that signals have been received and processed. + reply = false - eof = "rewind" # One of: rewind, exit (default) or wait - }, - out = { - flush = true - buffer_size = 1000000 - } - } + hooks = ( + "stats" + ) + } + } } ``` diff --git a/docs/node/nodes/opal/opal_orchestra.md b/docs/node/nodes/opal/opal_orchestra.md new file mode 100644 index 0000000..d4c4895 --- /dev/null +++ b/docs/node/nodes/opal/opal_orchestra.md @@ -0,0 +1,139 @@ +--- +hide_table_of_contents: true +--- + +# OPAL-RT Orchestra + +Orchstra is OPAL-RT's co-simulation framework for integrating custom code and external models. +More information about Orchestra can be found in the [OPAL-RT Wiki](https://opal-rt.atlassian.net/wiki/spaces/PRD/pages/143626248/Orchestra). + +## Prerequisites + +- `libOpalOrchestra.so` & `RTAPI.h` + +## Implementation + +:::note +The implementation of the `opal.orchestra` node-type is currently not open source. + +Please contact [Steffen Vogel](mailto:steffen.vogel@opal-rt.com) if you are interested in run +::: + +## Installation + + +## Configuration {#config} + +### Reference + +import ApiSchema from '@theme/ApiSchema'; + + + +## Example + +``` url="external/node/etc/examples/nodes/opal_orchestra.conf" title="node/etc/examples/nodes/opal_orchestra.conf" +stats = 1 + +nodes = { + domain1 = { + type = "opal.orchestra" + + # Path to the OPAL-RT Orchestra Data Defintion XML file (DDF). + ddf = "orchestra.xml" + + # Enable to overwrite the DDF file. + # This is useful when you want to generate the DDF file from the configuration file + # for importing it into RT-LAB or HYPERSIM. + ddf_overwrite = true + + # Orchestra domain name. + domain = "domain1" + + # Connection timeout. In seconds. + connect_timeout = "2s" + + # Define the delay to wait when using flag synchronisation (XHP). + # This will call the system function usleep and free the CPU. + # In micro-seconds. + flag_delay = "5us" + + # Force the local Orchestra communication to be made with flag instead of semaphore when using an external communication process. + # Define the delay to wait, this will call the system function usleep and free the CPU. + # In micro-seconds. + flag_delay_tool = "5us" + skip_wait_to_go = false + + rate = 500.0; + + # The following parameters are used to generate the Orchestra DDF XML file. + synchronous = false + states = false + multiple_publish_allowed = false + + connection = { + # One of: local, remote or dolphin + type = "local" + + # For 'local' + extcomm = "udp"; + addr_framework = "10.168.13.5"; + port_framework = 10000 + core_framework = 0 + core_client = 0 + nic_framework = "eno2" + nic_client = "eno1" + + # For 'remote' + card = "test" + pci_index = 0 + + # For 'dolphin' + node_id_framework = 0 + segment_id = 0 + } + + in = { + hooks = ( + { type = "stats" }, + { type = "print" } + ) + + signals = ( + { + name = "pub_signal1" + type = "float" + + orchestra_name = "pub_signal_float" + orchestra_type = "float64" + orchestra_index = 0 + }, + { + name = "pub_signal2" + type = "float" + + orchestra_name = "pub_signal_float" + orchestra_type = "float64" + }, + { name = "signal_float", orchestra_name = "some_bus/signal_float", orchestra_type = "float64", orchestra_index = 2 }, + { name = "signal_bool", orchestra_name = "some_bus/signal_bool", orchestra_type = "boolean" }, + { name = "signal_uint8", orchestra_name = "some_bus/some_nested_bus/signal_uint8", orchestra_type = "unsigned int8" }, + { name = "signal_uint8_2", orchestra_type = "unsigned int8" } + ) + } + + out = { + signals = ( + { name="pub_signal_float", init = 1.2, orchestra_name = "sub_signal_float", type = "float" } + ) + } + } +} + +paths = ( + { + in = "domain1" + out = "domain1" + } +) +``` diff --git a/docs/node/nodes/redis.md b/docs/node/nodes/redis.md index 24becf6..310a5f0 100644 --- a/docs/node/nodes/redis.md +++ b/docs/node/nodes/redis.md @@ -23,42 +23,53 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/redis.conf" title="node/etc/examples/nodes/redis.conf" nodes = { - redis_node = { - type = "redis", + redis_node = { + type = "redis" - format = "json", # only valid for mode = 'channel' and 'key' - # With mode = 'hash' we will use a simple human readable format + # Only valid for mode = 'channel' and 'key' + # With mode = 'hash' we will use a simple human readable format + format = "json" - key = "my_key" # The Redis key to be used for mode = 'key' or 'hash' (default is the node name) - channel = "my_channel" # the Redis channel tp be used for mode = 'channel' (default is the node name) + # The Redis key to be used for mode = 'key' or 'hash' (default is the node name) + key = "my_key" - mode = "key", # one of: - # - 'channel' (publish/subscribe) - # - 'key' (set/get) - # - 'hash' (hmset/hgetall) + # The Redis channel tp be used for mode = 'channel' (default is the node name) + channel = "my_channel" - notify = false # Whether or not to use Redis keyspace event notifications to get notified about updates - - rate = 1.0 # The polling rate when notify = false + # One of: + # - 'channel' (publish/subscribe) + # - 'key' (set/get) + # - 'hash' (hmset/hgetall) + mode = "key" - uri = "tcp://localhost:6379/0", # The Redis connection URI + # Whether or not to use Redis keyspace event notifications to get notified about updates + notify = false - # host = "localhost" # Alternatively the connection options can be specified independently - # port = 6379 # Note: options here will overwrite the respective part of the URI if both are given. - # db = 0 + # The polling rate when notify = false + rate = 1.0 - # path = "/var/run/redis.sock" + # The Redis connection URI + uri = "tcp://localhost:6379/0" - # user = "guest", - # password = "guest" + # Alternatively the connection options can be specified independently + # host = "localhost" - # ssl = { - # enabled: true - # cacert: "/etc/ssl/certs/ca-certificates.crt", - # cacertdir: "/etc/ssl/certs" - # cert: "./my_cert.crt", - # key, "./my_key.key" - # } - } + # Note: options here will overwrite the respective part of the URI if both are given + # port = 6379 + # db = 0 + + # path = "/var/run/redis.sock" + + # user = "guest" + # password = "guest" + + # ssl = { + # enabled = true + # cacert = "/etc/ssl/certs/ca-certificates.crt" + # cacertdir = "/etc/ssl/certs" + # cert = "./my_cert.crt" + # key = "./my_key.key" + # } + } } ``` diff --git a/docs/node/nodes/rtp.md b/docs/node/nodes/rtp.md index 6e4df1a..766f211 100644 --- a/docs/node/nodes/rtp.md +++ b/docs/node/nodes/rtp.md @@ -24,53 +24,57 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/rtp.conf" title="node/etc/examples/nodes/rtp.conf" nodes = { - rtp_node = { - type = "rtp" - - format = { - type = "raw" - bits = 32 - endianess = "big" - } - - rtcp = false - - aimd = { - a = 10, - b = 0.5 - - Kp = 1.0 - Ki = 0.0 - Kd = 0 - - rate_min = 100 - rate_init = 2000 - rate_source = 10000 - - log = "aimd-rates-%Y_%m_%d_%s.log" - - hook_type = "limit_rate" - } - - in = { - address = "0.0.0.0:12000", - signals = { - count = 3 - type = "float" - } - } - - out = { - address = "127.0.0.1:12000" - - netem = { # Network emulation settings - enabled = false, - - delay = 100000, # Additional latency in microseconds - loss = 10 # Packet loss in percent - } - } - } + rtp_node = { + type = "rtp" + + format = { + type = "raw" + bits = 32 + endianess = "big" + } + + rtcp = false + + aimd = { + a = 10 + b = 0.5 + + Kp = 1.0 + Ki = 0.0 + Kd = 0 + + rate_min = 100 + rate_init = 2000 + rate_source = 10000 + + log = "aimd-rates-%Y_%m_%d_%s.log" + + hook_type = "limit_rate" + } + + in = { + address = "0.0.0.0:12000" + signals = { + count = 3 + type = "float" + } + } + + out = { + address = "127.0.0.1:12000" + + # Network emulation settings + netem = { + enabled = false + + # Additional latency in microseconds + delay = 100000 + + # Packet loss in percent + loss = 10 + } + } + } } ``` diff --git a/docs/node/nodes/shmem.md b/docs/node/nodes/shmem.md index 9d44000..b3ce63e 100644 --- a/docs/node/nodes/shmem.md +++ b/docs/node/nodes/shmem.md @@ -25,24 +25,30 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/shmem.conf" title="node/etc/examples/nodes/shmem.conf" nodes = { - shmem_node = { - type = "shmem", - - in = { - name = "sn1_in" - }, # Name of shared memory segment for receiving side - out = { - name = "sn1_in" # Name of shared memory segment for sending side - }, - - queuelen = 1024, # Length of the queues - mode = "pthread", # We can busy-wait or use pthread condition variables for synchronizations - - # Execute an external process when starting the node which - # then starts the other side of this shared memory channel - # Usually we also pass the shmem names as parameters. - exec = [ "villas-shmem", "sn1_in", "sn1_out" ] - } + shmem_node = { + type = "shmem" + + in = { + # Name of shared memory segment for receiving side + name = "sn1_in" + } + + out = { + # Name of shared memory segment for sending side + name = "sn1_in" + } + + # Length of the queues + queuelen = 1024 + + # We can busy-wait or use pthread condition variables for synchronizations + mode = "pthread" + + # Execute an external process when starting the node which + # then starts the other side of this shared memory channel + # Usually we also pass the shmem names as parameters + exec = [ "villas-shmem", "sn1_in", "sn1_out" ] + } } ``` diff --git a/docs/node/nodes/signal.md b/docs/node/nodes/signal.md index 2e9104d..de990e4 100644 --- a/docs/node/nodes/signal.md +++ b/docs/node/nodes/signal.md @@ -33,21 +33,38 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/signal.conf" title="node/etc/examples/nodes/signal.conf" nodes = { - signal_node = { - type = "signal", - - # One of "sine", "square", "ramp", "triangle", "random", "mixed", "counter" - signal = [ "sine", "pulse", "square" ], - - values = 3, # Number of values per sample - amplitude = [ 1.2, 0.0, 4.0 ], # Amplitude of generated signals - frequency = 10, # Frequency of generated signals - stddev = 2, # Standard deviation of random signals (normal distributed) - rate = 10.0, # Sample rate - offset = 1.0, # Constant offset - realtime = true, # Wait between emitting each sample - limit = 1000, # Only emit 1000 samples, then stop - monitor_missed = true # Count and warn about missed steps - } + signal_node = { + type = "signal" + + # One of "sine", "square", "ramp", "triangle", "random", "mixed", "counter" + signal = [ "sine", "pulse", "square" ] + + # Number of values per sample + values = 3 + + # Amplitude of generated signals + amplitude = [ 1.2, 0.0, 4.0 ] + + # Frequency of generated signals in Hz + frequency = 10 + + # Standard deviation of random signals (normal distributed) + stddev = 2 + + # Sample rate in Hz + rate = 10.0 + + # Constant offset + offset = 1.0 + + # Wait between emitting each sample + realtime = true + + # Only emit 1000 samples, then stop + limit = 1000 + + # Count and warn about missed steps + monitor_missed = true + } } ``` diff --git a/docs/node/nodes/signal_v2.md b/docs/node/nodes/signal_v2.md index 1c2291e..f22f5ae 100644 --- a/docs/node/nodes/signal_v2.md +++ b/docs/node/nodes/signal_v2.md @@ -30,33 +30,40 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/signal-v2.conf" title="node/etc/examples/nodes/signal-v2.conf" nodes = { - signal_node = { - type = "signal.v2", - - rate = 10.0 - realtime = true, # Wait between emitting each sample - limit = 1000, # Only emit 1000 samples, then stop - monitor_missed = true # Count and warn about missed steps - - in = { - signals = ( - { name = "sine1", signal = "sine", amplitude = 123.456, frequency = 10, offset = 1.0 }, - { name = "sine2", signal = "sine", amplitude = 12.456, frequency = 20, offset = 10.0 }, - { name = "sine3", signal = "sine", amplitude = 2, frequency = 1, offset = 100.0 }, - { name = "random1", signal = "random", amplitude = 2, stddev = 2, offset = 13.0 }, - { name = "pulse1", signal = "pulse", frequency = 1.0, pulse_width = 1, pulse_high = 100, pulse_low = 50 } - ) - } - }, - signal_node2 = { - type = "signal.v2", - - in = { - signals = { - count = 8, - signal = "mixed" - } - } - } + signal_node = { + type = "signal.v2" + + rate = 10.0 + + # Wait between emitting each sample + realtime = true + + # Only emit 1000 samples, then stop + limit = 1000 + + # Count and warn about missed steps + monitor_missed = true + + in = { + signals = ( + { name = "sine1", signal = "sine", amplitude = 123.456, frequency = 10, offset = 1.0 }, + { name = "sine2", signal = "sine", amplitude = 12.456, frequency = 20, offset = 10.0 }, + { name = "sine3", signal = "sine", amplitude = 2, frequency = 1, offset = 100.0 }, + { name = "random1", signal = "random", amplitude = 2, stddev = 2, offset = 13.0 }, + { name = "pulse1", signal = "pulse", frequency = 1.0, pulse_width = 1, pulse_high = 100, pulse_low = 50 } + ) + } + } + + signal_node2 = { + type = "signal.v2" + + in = { + signals = { + count = 8 + signal = "mixed" + } + } + } } ``` diff --git a/docs/node/nodes/socket.md b/docs/node/nodes/socket.md index 1070dd7..ab1dd27 100644 --- a/docs/node/nodes/socket.md +++ b/docs/node/nodes/socket.md @@ -40,111 +40,100 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/socket.conf" title="node/etc/examples/nodes/socket.conf" nodes = { - udp_node = { # The dictionary is indexed by the name of the node. - type = "socket", # For a list of available node-types run: 'villas-node -h' - vectorize = 30, # Receive and sent 30 samples per message (combining). - samplelen = 10 # The maximum number of samples this node can receive - - builtin = false, # By default, all nodes will have a few builtin hooks attached to them. - # When collecting statistics or measurements these are undesired. - - ### The following settings are specific to the socket node-type!! ### - - layer = "udp", # Layer can be one of: - # - tcp-server Send / receive byte stream as a TCP client - # - tcp-client Send / receive byte stream as a TCP server - # - udp Send / receive L4 UDP packets - # - ip Send / receive L3 IP packets - # - eth Send / receive L2 Ethernet frames (IEEE802.3) - - format = "gtnet", # For a list of available node-types run: 'villas-node -h' - - in = { - address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair - - verify_source = true # Check if source address of incoming packets matches the remote address. - }, - out = { - address = "127.0.0.1:12000", # This node sends outgoing messages to this IP:Port pair - } - } - - ethernet_node = { - type = "socket", # See above. - - ### The following settings are specific to the socket node-type!! ### - - layer = "eth", - in = { - address = "12:34:56:78:90:AB%lo:12002" - }, - out = { - address = "12:34:56:78:90:AB%lo:12002" - } - }, - - unix_domain_node = { - type = "socket", - layer = "unix", # Datagram UNIX domain sockets require two endpoints - - in = { - address = "/var/run/villas-node/node.sock" - }, - out = { - address = "/var/run/villas-node/client.sock" - } - } - - udp_multicast_node = { # The dictionary is indexed by the name of the node. - type = "socket", # For a list of available node-types run: 'villas-node -h' - - ### The following settings are specific to the socket node-type!! ### - - in = { - address = "127.0.0.1:12001" # This node only received messages on this IP:Port pair - - multicast = { # IGMP multicast is only support for layer = (ip|udp) - enabled = true, - - group = "224.1.2.3", # The multicast group. Must be within 224.0.0.0/4 - interface = "1.2.3.4", # The IP address of the interface which should receive multicast packets. - ttl = 128, # The time to live for outgoing multicast packets. - loop = false, # Whether or not to loopback outgoing multicast packets to the local host. - } - }, - out = { - address = "127.0.0.1:12000", # This node sends outgoing messages to this IP:Port pair - } - } - -tcp_server_node = { # The dictionary is indexed by the name of the node. - type = "socket", # For a list of available node-types run: 'villas-node -h' - - ### The following settings are specific to the socket node-type!! ### - - layer = "tcp-server" # See above - in = { - address = "127.0.0.1:12001" # TCP server address - # This node only sends and received messages with its client - - }, - out = { - address = "127.0.0.1:12000", - } - } - tcp_client_node = { # The dictionary is indexed by the name of the node. - type = "socket", # For a list of available node-types run: 'villas-node -h' - - ### The following settings are specific to the socket node-type!! ### - - layer = "tcp-client" # See above - in = { - address = "127.0.0.1:12001" - }, - out = { - address = "127.0.0.1:12000", # This node connect to TCP server on this IP:Port pair - # This node only sends and receive messages with its server - } - } + udp_node = { + type = "socket" + + # Receive and sent 30 samples per message (combining) + vectorize = 30 + + # The maximum number of samples this node can receive + samplelen = 10 + + # By default, all nodes will have a few builtin hooks attached to them + # When collecting statistics or measurements these are undesired + builtin = false + + # Layer can be one of: + # - udp Send / receive L4 UDP packets + # - ip Send / receive L3 IP packets + # - eth Send / receive L2 Ethernet frames (IEEE802.3) + layer = "udp" + + + format = "gtnet" + + in = { + # This node only received messages on this IP:Port pair + address = "127.0.0.1:12001" + + # Check if source address of incoming packets matches the remote address + verify_source = true + } + + out = { + # This node sends outgoing messages to this IP:Port pair + address = "127.0.0.1:12000" + } + } + + # Raw Ethernet frames + ethernet_node = { + type = "socket" + + layer = "eth" + + in = { + address = "12:34:56:78:90:AB%lo:12002" + } + + out = { + address = "12:34:56:78:90:AB%lo:12002" + } + } + + # Datagram UNIX domain sockets require two endpoints + unix_domain_node = { + type = "socket" + layer = "unix" + + in = { + address = "/var/run/villas-node/node.sock" + } + + out = { + address = "/var/run/villas-node/client.sock" + } + } + + udp_multicast_node = { + type = "socket" + + in = { + # This node only received messages on this IP:Port pair + address = "127.0.0.1:12001" + + # IGMP multicast is only support for layer = (ip|udp) + multicast = { + enabled = true + + # The multicast group. Must be within 224.0.0.0/4 + group = "224.1.2.3" + + # The IP address of the interface which should receive multicast packets + interface = "1.2.3.4" + + # The time to live for outgoing multicast packets + ttl = 128 + + # Whether or not to loopback outgoing multicast packets to the local host + loop = false + } + } + + out = { + # This node sends outgoing messages to this IP:Port pair + address = "127.0.0.1:12000" + } + } } ``` diff --git a/docs/node/nodes/stats.md b/docs/node/nodes/stats.md index 42ccf77..3e6a113 100644 --- a/docs/node/nodes/stats.md +++ b/docs/node/nodes/stats.md @@ -25,29 +25,29 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/stats.conf" title="node/etc/examples/nodes/stats.conf" nodes = { - udp_node = { - type = "socket" - - in = { - address = "*:12000" - } - out = { - address = "127.0.0.1:12000" - } - } - stats_node = { - type = "stats" - - node = "udp_node" - rate = 2 - - in = { - signals = ( - { name = "one_way_delay_mean", type = "float", stats = "udp_node.owd.mean" }, - { name = "one_way_delay_min", type = "float", stats = "udp_node.owd.lowest" }, - { name = "one_way_delay_max", type = "float", stats = "udp_node.owd.highest" } - ) - } - } + udp_node = { + type = "socket" + + in = { + address = "*:12000" + } + out = { + address = "127.0.0.1:12000" + } + } + stats_node = { + type = "stats" + + node = "udp_node" + rate = 2 + + in = { + signals = ( + { name = "one_way_delay_mean", type = "float", stats = "udp_node.owd.mean" }, + { name = "one_way_delay_min", type = "float", stats = "udp_node.owd.lowest" }, + { name = "one_way_delay_max", type = "float", stats = "udp_node.owd.highest" } + ) + } + } } ``` diff --git a/docs/node/nodes/temper.md b/docs/node/nodes/temper.md index 4a76d42..33674f8 100644 --- a/docs/node/nodes/temper.md +++ b/docs/node/nodes/temper.md @@ -32,16 +32,16 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/temper.conf" title="node/etc/examples/nodes/temper.conf" nodes = { - temper_node = { - type = "temper" + temper_node = { + type = "temper" - calibration = { - scale = 1.0 - offset = 0.0 - } + calibration = { + scale = 1.0 + offset = 0.0 + } - bus = 0x1 - port = 0x1 - } + bus = 0x1 + port = 0x1 + } } ``` diff --git a/docs/node/nodes/test-rtt.md b/docs/node/nodes/test-rtt.md index 28f2d8d..0215547 100644 --- a/docs/node/nodes/test-rtt.md +++ b/docs/node/nodes/test-rtt.md @@ -32,45 +32,63 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/test_rtt.conf" title="node/etc/examples/nodes/test_rtt.conf" nodes = { - rtt_node = { # The "test_rtt" node-type runs a set of test cases for varying - type = "test_rtt", # sending rates, number of values and generates statistics. - cooldown = 2, # The cooldown time between each test case in seconds - - prefix = "test_rtt_%y-%m-%d_%H-%M-%S", # An optional prefix in the filename - output = "./results", # The output directory for all results - # The results of each test case will be written to a separate file. - format = "villas.human", # The output format of the result files. - - cases = ( # The list of test cases - # Each test case can specify a single or an array of rates and values - # If arrays are used, we will generate multiple test cases with all - # possible combinations - { - rates = 55.0, # The sending rate in Hz - values = [ 5, 10, 20], # The number of values which should be send in each sample - limit = 100 # The number of samples which should be send during this test case - }, - { - rates = [ 5, 10, 30 ], # An array of rates in Hz - values = [ 2, 10, 20 ],# An array of number of values - duration = 5 # The duration of the test case in seconds (depending on the sending rate) - } - ) - } -} - -paths = ( - { - # Simple loopback path to test the node - in = "rtt_node" - out = "rtt_node" - - # hooks = ( - # { - # type = "print" - # } - # ) - } -) + # The "test_rtt" node-type runs a set of test cases for varying + # sending rates, number of values and generates statistics + # The cooldown time between each test case in seconds + rtt_node = { + type = "test_rtt" + cooldown = 2 + + # An optional prefix in the filename + prefix = "test_rtt_%y-%m-%d_%H-%M-%S" + + # The output directory for all results + # The results of each test case will be written to a separate file + output = "./results" + + # The output format of the result files + format = "villas.human" + + # Shutdown the process after the cooldown phase of the + # last test case has been completed. + shutdown = true; + + # One of: + # - min + # - max + # - at_least_count + # - at_least_duration + # - stop_after_count + # - stop_after_duration + mode = "at_least_count" + + # The list of test cases + # Each test case can specify a single or an array of rates and values + # If arrays are used, we will generate multiple test cases with all + # possible combinations + cases = ( + { + # The sending rate in Hz + rates = 55.0 + + # The number of values which should be send in each sample + values = [ 5, 10, 20] + + # The number of samples which should be send during this test case + count = 100 + }, + { + # An array of sending rates in Hz + rates = [ 5, 10, 30 ] + + # An array of number of values + values = [ 2, 10, 20 ] + + # The duration of the test case in seconds (depending on the sending rate) + duration = 5 + } + ) + } +} ``` diff --git a/docs/node/nodes/uldaq.md b/docs/node/nodes/uldaq.md index fca5452..743a2b6 100644 --- a/docs/node/nodes/uldaq.md +++ b/docs/node/nodes/uldaq.md @@ -28,51 +28,55 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/uldaq.conf" title="node/etc/examples/nodes/uldaq.conf" http = { - enabled = false + enabled = false } nodes = { - ul201 = { - type = "uldaq" - interface_type = "usb" - in = { - range = "bipolar-10", - input_mode = "single-ended" - signals = ( - { name = "ch0", type = "float", channel = 0 } - ) - - sample_rate = 5000, - vectorize = 100 - } - }, - - vpmu = { - type = "socket", - layer = "udp", - - format = { - type = "raw" - bits = 32 - endianess = "big" - } - - in = { - address = "*:13001" - - signals = () - }, - out = { - vectorize = 100 - address = "10.100.1.125:13000" - } - } + ul201 = { + type = "uldaq" + + interface_type = "usb" + in = { + range = "bipolar-10" + input_mode = "single-ended" + + signals = ( + { name = "ch0", type = "float", channel = 0 } + ) + + sample_rate = 5000 + vectorize = 100 + } + } + + vpmu = { + type = "socket" + + layer = "udp" + + format = { + type = "raw" + bits = 32 + endianess = "big" + } + + in = { + address = "*:13001" + + signals = () + } + + out = { + vectorize = 100 + address = "10.100.1.125:13000" + } + } } paths = ( - { - in = "ul201", - out = "vpmu" - } + { + in = "ul201" + out = "vpmu" + } ) ``` diff --git a/docs/node/nodes/webrtc.md b/docs/node/nodes/webrtc.md index 15f6b37..684bc66 100644 --- a/docs/node/nodes/webrtc.md +++ b/docs/node/nodes/webrtc.md @@ -83,39 +83,39 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/webrtc.conf" title="node/etc/examples/nodes/webrtc.conf" nodes = { - webrtc_node = { - type = "webrtc", - - format = "json" - - # A unique session identifier which must be shared between two nodes - session = "my-session-name" - - # Address to the websocket signaling server - server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" - - # Limit the number of times a channel will retransmit data if not successfully delivered. - # This value may be clamped if it exceeds the maximum value supported. - max_retransmits = 0 - - # Number of seconds to wait for a WebRTC connection before proceeding the start - # of VILLASnode. Mainly used for testing - wait_seconds = 10 # in seconds - - # Indicates if data is allowed to be delivered out of order. - # The default value of false, does not make guarantees that data will be delivered in order. - ordered = false - - # Setting for Interactive Connectivity Establishment - ice = { - # List of STUN/TURN servers - servers = ( - "stun:stun.0l.de:3478", - "turn:villas:villas@turn.0l.de:3478?transport=udp", - "turn:villas:villas@turn.0l.de:3478?transport=tcp" - ) - } - } + webrtc_node = { + type = "webrtc" + + format = "json" + + # A unique session identifier which must be shared between two nodes + session = "my-session-name" + + # Address to the websocket signaling server + server = "https://villas.k8s.eonerc.rwth-aachen.de/ws/signaling" + + # Limit the number of times a channel will retransmit data if not successfully delivered + # This value may be clamped if it exceeds the maximum value supported + max_retransmits = 0 + + # Number of seconds to wait for a WebRTC connection before proceeding the start + # of VILLASnode. Mainly used for testing + wait_seconds = 10 # In seconds + + # Indicates if data is allowed to be delivered out of order + # The default value of false, does not make guarantees that data will be delivered in order + ordered = false + + # Setting for Interactive Connectivity Establishment + ice = { + # List of STUN/TURN servers + servers = ( + "stun:stun.0l.de:3478", + "turn:villas:villas@turn.0l.de:3478?transport=udp", + "turn:villas:villas@turn.0l.de:3478?transport=tcp" + ) + } + } } ``` diff --git a/docs/node/nodes/websocket.md b/docs/node/nodes/websocket.md index b52da71..af03a83 100644 --- a/docs/node/nodes/websocket.md +++ b/docs/node/nodes/websocket.md @@ -28,18 +28,18 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/websocket.conf" title="node/etc/examples/nodes/websocket.conf" nodes = { - ws = { - type = "websocket" + ws = { + type = "websocket" - destinations = [ - "ws://someserver:8080/somenode" - ] - } + destinations = [ + "ws://someserver:8080/somenode" + ] + } } http = { - port = 8080 - ssl_cert = "/etc/ssl/certs/mycert.pem" - ssl_private_key= "/etc/ssl/private/mykey.pem" + port = 8080 + ssl_cert = "/etc/ssl/certs/mycert.pem" + ssl_private_key= "/etc/ssl/private/mykey.pem" } ``` diff --git a/docs/node/nodes/zeromq.md b/docs/node/nodes/zeromq.md index 449d5b5..d97ede0 100644 --- a/docs/node/nodes/zeromq.md +++ b/docs/node/nodes/zeromq.md @@ -30,31 +30,42 @@ import ApiSchema from '@theme/ApiSchema'; ``` url="external/node/etc/examples/nodes/zeromq.conf" title="node/etc/examples/nodes/zeromq.conf" nodes = { - zeromq_node = { - type = "zeromq" - - pattern = "pubsub" # The ZeroMQ pattern. One of pubsub, radiodish - ipv6 = false # Enable IPv6 support - - curve = { # Z85 encoded Curve25519 keys - enabled = false, - public_key = "Veg+Q.V-c&1k>yVh663gQ^7fL($y47gybE-nZP1L" - secret_key = "HPY.+mFuB[jGs@(zZr6$IZ1H1dZ7Ji*j>oi@O?Pc" - } - - in = { - subscribe = "tcp://*:1234" # The subscribe endpoint. - # See http://api.zeromq.org/2-1:zmq-bind for details. - filter = "ab184" # A filter which is prefix matched for each received msg - } - out = { - publish = [ # The publish endpoints. - "tcp://localhost:1235", # See http://api.zeromq.org/2-1:zmq-connect for details. - "tcp://localhost:12444" - ] - - filter = "ab184" # A prefix which is pre-pended to each message. - } - } + zeromq_node = { + type = "zeromq" + + # The ZeroMQ pattern. One of pubsub, radiodish + pattern = "pubsub" + + # Enable IPv6 support + ipv6 = false + + # Z85 encoded Curve25519 keys + curve = { + enabled = false + public_key = "Veg+Q.V-c&1k>yVh663gQ^7fL($y47gybE-nZP1L" + secret_key = "HPY.+mFuB[jGs@(zZr6$IZ1H1dZ7Ji*j>oi@O?Pc" + } + + in = { + # The subscribe endpoint + # See http://api.zeromq.org/2-1:zmq-bind for details + subscribe = "tcp://*:1234" + + # A filter which is prefix matched for each received msg + filter = "ab184" + } + out = { + # The publish endpoints + # See http://api.zeromq.org/2-1:zmq-connect for details + publish = [ + + "tcp://localhost:1235", + "tcp://localhost:12444" + ] + + # A prefix which is pre-pended to each message + filter = "ab184" + } + } } ``` diff --git a/docs/node/usage/villas-graph.md b/docs/node/usage/villas-graph.md index bbbc744..e1d198c 100644 --- a/docs/node/usage/villas-graph.md +++ b/docs/node/usage/villas-graph.md @@ -41,4 +41,5 @@ Usage: villas graph [-Vv?] [-(GNE)name=val] [-(KTlso)] -c - Configure plugins (Writes $prefix/lib/graphviz/config with available plugin information. Needs write privilege.) - -? - Print usage and exit``` + -? - Print usage and exit +``` diff --git a/docs/node/usage/villas-test.md b/docs/node/usage/villas-test.md index 98f38c6..22a8cd4 100644 --- a/docs/node/usage/villas-test.md +++ b/docs/node/usage/villas-test.md @@ -54,7 +54,8 @@ Return codes: v0.11.0-5c666fb-debug (built on Feb 23 2021 02:34:46) Copyright 2014-2017, Institute for Automation of Complex Power Systems, EONERC - Steffen Vogel ``` + Steffen Vogel +``` # villas test-config @@ -68,7 +69,7 @@ Usage: villas-test-config [OPTIONS] CONFIG OPTIONS is one or more of the following options: -d LVL set debug level -V show version and exit - -c perform plausibility checks on config + -c perform plausability checks on config -D dump config in JSON format -h show usage and exit diff --git a/docusaurus.config.js b/docusaurus.config.js index f73de50..51bc78f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -15,11 +15,13 @@ const config = { onBrokenLinks: 'throw', onBrokenAnchors: 'throw', - onBrokenMarkdownLinks: 'throw', onDuplicateRoutes: 'throw', markdown: { mermaid: true, + hooks: { + onBrokenMarkdownLinks: 'throw', + } }, plugins: [ diff --git a/external/node b/external/node index 063f8b3..a354a7e 160000 --- a/external/node +++ b/external/node @@ -1 +1 @@ -Subproject commit 063f8b39c183558398062b12a6a954e7beb11218 +Subproject commit a354a7ec36f51b75a4c29fee10e234b138939f8d diff --git a/package.json b/package.json index 3f13944..deacda6 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,12 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/plugin-ideal-image": "3.7.0", - "@docusaurus/preset-classic": "3.7.0", - "@docusaurus/theme-common": "3.7.0", - "@docusaurus/theme-mermaid": "^3.7.0", - "@docusaurus/utils": "3.7.0", + "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-ideal-image": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", + "@docusaurus/theme-common": "^3.9.2", + "@docusaurus/theme-mermaid": "^3.9.2", + "@docusaurus/utils": "^3.9.2", "@mdx-js/react": "^3.0.0", "@svgr/webpack": "^8.1.0", "asciinema-player": "3.0.0-rc.1", diff --git a/tools/insert_examples.py b/tools/insert_examples.py index 8efa9e7..20a6c1f 100644 --- a/tools/insert_examples.py +++ b/tools/insert_examples.py @@ -10,39 +10,51 @@ def strip_path(path): - return path.removeprefix('external/') + return path.removeprefix("external/") + + +def get_contents(f): + contents = f.read() + + lines = contents.splitlines() + lines = filter(lambda line: not line.strip().startswith("# SPDX-"), lines) + + contents = "\n".join(lines) + contents = contents.strip() + "\n" + + return contents def replace_match(match): - tagline = match.group('tagline') - language = match.group('lang') + tagline = match.group("tagline") + language = match.group("lang") tags = {} - for tag in re.finditer(regex_tag, tagline or ''): - tags[tag.group('key')] = tag.group('value') + for tag in re.finditer(regex_tag, tagline or ""): + tags[tag.group("key")] = tag.group("value") - if 'url' not in tags: + if "url" not in tags: # print(f' Igoring empty non-url code block') return match.group(0) if language is None: - language = '' + language = "" - url = tags['url'] + url = tags["url"] try: with open(url) as f: - new_contents = f.read() + new_contents = get_contents(f) except FileNotFoundError: - print(f' Failed to find file: {url}') + print(f" Failed to find file: {url}") return match.group(0) - if 'title' not in tags: - tags['title'] = strip_path(url) + if "title" not in tags: + tags["title"] = strip_path(url) - new_tagline = ' ' + ' '.join([f'{k}="{v}"' for k, v in tags.items()]) + new_tagline = " " + " ".join([f'{k}="{v}"' for k, v in tags.items()]) - return f'```{language}{new_tagline}\n{new_contents}```' + return f"```{language}{new_tagline}\n{new_contents}```" def process_file(f): @@ -56,12 +68,12 @@ def process_file(f): def main(): - for path in Path('docs').rglob('*.md'): + for path in Path("docs").rglob("*.md"): # print(f'Processing: {path}') - with open(path, 'r+', encoding='utf-8', newline='\n') as f: + with open(path, "r+", encoding="utf-8", newline="\n") as f: process_file(f) -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/yarn.lock b/yarn.lock index b56fdf4..5baade6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,153 +2,191 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz#83374c47dc72482aa45d6b953e89377047f0dcdc" - integrity sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.17.9" - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-plugin-algolia-insights@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz#74c86024d09d09e8bfa3dd90b844b77d9f9947b6" - integrity sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ== - dependencies: - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-preset-algolia@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz#911f3250544eb8ea4096fcfb268f156b085321b5" - integrity sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ== - dependencies: - "@algolia/autocomplete-shared" "1.17.9" - -"@algolia/autocomplete-shared@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz#5f38868f7cb1d54b014b17a10fc4f7e79d427fa8" - integrity sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ== - -"@algolia/client-abtesting@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.24.0.tgz#51629ff6e7ccebf09f94b50c9e3f359f4236b971" - integrity sha512-pNTIB5YqVVwu6UogvdX8TqsRZENaflqMMjdY7/XIPMNGrBoNH9tewINLI7+qc9tIaOLcAp3ZldqoEwAihZZ3ig== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" - -"@algolia/client-analytics@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.24.0.tgz#d334e9fa3c45b17072cd67f96726483329859ef2" - integrity sha512-IF+r9RRQsIf0ylIBNFxo7c6hDxxuhIfIbffhBXEF1HD13rjhP5AVfiaea9RzbsAZoySkm318plDpH/nlGIjbRA== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" - -"@algolia/client-common@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.24.0.tgz#c869068f112473e43e39ae7c5dd4fada07053cf0" - integrity sha512-p8K6tiXQTebRBxbrzWIfGCvfkT+Umml+2lzI92acZjHsvl6KYH6igOfVstKqXJRei9pvRzEEvVDNDLXDVleGTA== - -"@algolia/client-insights@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.24.0.tgz#12ab54a74f9d5705038221055acd6c20d44fdf42" - integrity sha512-jOHF0+tixR3IZJMhZPquFNdCVPzwzzXoiqVsbTvfKojeaY6ZXybgUiTSB8JNX+YpsUT8Ebhu3UvRy4mw2PbEzw== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" - -"@algolia/client-personalization@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.24.0.tgz#7fa80c9e8ccf46ca4396796bd46fb432d8259838" - integrity sha512-Fx/Fp6d8UmDBHecTt0XYF8C9TAaA3qeCQortfGSZzWp4gVmtrUCFNZ1SUwb8ULREnO9DanVrM5hGE8R8C4zZTQ== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" - -"@algolia/client-query-suggestions@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.24.0.tgz#b68ffb5381c71089f6d1d88aa1f369b1e73036f2" - integrity sha512-F8ypOedSMhz6W7zuT5O1SXXsdXSOVhY2U6GkRbYk/mzrhs3jWFR3uQIfeQVWmsJjUwIGZmPoAr9E+T/Zm2M4wA== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" - -"@algolia/client-search@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.24.0.tgz#41ae3cf81af73e00696e4961257c97eb8ed49cc1" - integrity sha512-k+nuciQuq7WERNNE+hsx3DX636zIy+9R4xdtvW3PANT2a2BDGOv3fv2mta8+QUMcVTVcGe/Mo3QCb4pc1HNoxA== - dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" +"@ai-sdk/gateway@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@ai-sdk/gateway/-/gateway-2.0.7.tgz#e3b77ef01658b47a19956313fc2a36b9e5a951f3" + integrity sha512-/AI5AKi4vOK9SEb8Z1dfXkhsJ5NAfWsoJQc96B/mzn2KIrjw5occOjIwD06scuhV9xWlghCoXJT1sQD9QH/tyg== + dependencies: + "@ai-sdk/provider" "2.0.0" + "@ai-sdk/provider-utils" "3.0.16" + "@vercel/oidc" "3.0.3" + +"@ai-sdk/provider-utils@3.0.16": + version "3.0.16" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-3.0.16.tgz#17b7170bf51a7a690bf0186490ce29a8ce50a961" + integrity sha512-lsWQY9aDXHitw7C1QRYIbVGmgwyT98TF3MfM8alNIXKpdJdi+W782Rzd9f1RyOfgRmZ08gJ2EYNDhWNK7RqpEA== + dependencies: + "@ai-sdk/provider" "2.0.0" + "@standard-schema/spec" "^1.0.0" + eventsource-parser "^3.0.6" + +"@ai-sdk/provider@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-2.0.0.tgz#b853c739d523b33675bc74b6c506b2c690bc602b" + integrity sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA== + dependencies: + json-schema "^0.4.0" + +"@ai-sdk/react@^2.0.30": + version "2.0.88" + resolved "https://registry.yarnpkg.com/@ai-sdk/react/-/react-2.0.88.tgz#d43d95372d4be6659098ed5fc547d5c9bc222774" + integrity sha512-WdJfH2u5hJvpjCVYqEamt+k69OHonFqLDXz9qNcS07sjUewEHjjApMVu6r4DabP3i2fx+ycLzCNdJ3B91T99Mw== + dependencies: + "@ai-sdk/provider-utils" "3.0.16" + ai "5.0.88" + swr "^2.2.5" + throttleit "2.1.0" + +"@algolia/abtesting@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.8.0.tgz#7b0d358ba857e3bc1330ff16b575585c6dfa3158" + integrity sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/autocomplete-core@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz#702df67a08cb3cfe8c33ee1111ef136ec1a9e232" + integrity sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.19.2" + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-plugin-algolia-insights@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz#3584b625b9317e333d1ae43664d02358e175c52d" + integrity sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg== + dependencies: + "@algolia/autocomplete-shared" "1.19.2" + +"@algolia/autocomplete-shared@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz#c0b7b8dc30a5c65b70501640e62b009535e4578f" + integrity sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w== + +"@algolia/client-abtesting@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.42.0.tgz#c72516e9a266faaf537d367c74dfd66b7a2d774a" + integrity sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/client-analytics@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.42.0.tgz#9b7051e4256bb893c622a6d5cafc4d335a677b9d" + integrity sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/client-common@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.42.0.tgz#9187dca4d845faca499f9581a11460ecebe474c5" + integrity sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ== + +"@algolia/client-insights@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.42.0.tgz#fb234d81635ef1ed53cd2125f3d48d549ad8a18f" + integrity sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/client-personalization@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.42.0.tgz#0c778db08e2d61f387c511587c6f0bc6d7148a98" + integrity sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/client-query-suggestions@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.42.0.tgz#82566746a13a9d4ff15019e630711cfb833f92a2" + integrity sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" + +"@algolia/client-search@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.42.0.tgz#b4c9823af8621a17f1a9878242ac7518519ef0d8" + integrity sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww== + dependencies: + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.24.0": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.24.0.tgz#1e0fddb4a109f78fec6017b6dc3220e86bfafd8e" - integrity sha512-/lqVxmrvwoA+OyVK4XLMdz/PJaCTW4qYchX1AZ+98fdnH3K6XM/kMydQLfP0bUNGBQbmVrF88MqhqZRnZEn/MA== +"@algolia/ingestion@1.42.0": + version "1.42.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.42.0.tgz#4c542836fb5644a747d9d0f643685533e1431680" + integrity sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw== dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" -"@algolia/monitoring@1.24.0": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.24.0.tgz#de641742690082a6ad9b614c20bf3769ec7ae958" - integrity sha512-cRisDXQJhvfZCXL4hD22qca2CmW52TniOx6L7pvkaBDx0oQk1k9o+3w11fgfcCG+47OndMeNx5CMpu+K+COMzg== +"@algolia/monitoring@1.42.0": + version "1.42.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.42.0.tgz#8b68d4fe416ae686b280b13400a318d0afda7da3" + integrity sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ== dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" -"@algolia/recommend@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.24.0.tgz#ddd606fdbdef28b40ad0bc0403953a1290f84715" - integrity sha512-JTMz0JqN2gidvKa2QCF/rMe8LNtdHaght03px2cluZaZfBRYy8TgHgkCeBspKKvV/abWJwl7J0FzWThCshqT3w== +"@algolia/recommend@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.42.0.tgz#0576b5428b66a300767d1befd91f79a2c825ec3e" + integrity sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw== dependencies: - "@algolia/client-common" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" + "@algolia/client-common" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" -"@algolia/requester-browser-xhr@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.24.0.tgz#f99dfb92dfb2ff213127672d532316a95d926acc" - integrity sha512-B2Gc+iSxct1WSza5CF6AgfNgmLvVb61d5bqmIWUZixtJIhyAC6lSQZuF+nvt+lmKhQwuY2gYjGGClil8onQvKQ== +"@algolia/requester-browser-xhr@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.42.0.tgz#2de48dbf2c85e20e70c8f9091a5e2ef2a1254707" + integrity sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A== dependencies: - "@algolia/client-common" "5.24.0" + "@algolia/client-common" "5.42.0" -"@algolia/requester-fetch@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.24.0.tgz#1540bcf8e800beb64bc2426afede678276df928a" - integrity sha512-6E5+hliqGc5w8ZbyTAQ+C3IGLZ/GiX623Jl2bgHA974RPyFWzVSj4rKqkboUAxQmrFY7Z02ybJWVZS5OhPQocA== +"@algolia/requester-fetch@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.42.0.tgz#c3db64e0896e60b7ebd4a8e4a151c2199854ff0a" + integrity sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ== dependencies: - "@algolia/client-common" "5.24.0" + "@algolia/client-common" "5.42.0" -"@algolia/requester-node-http@5.24.0": - version "5.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.24.0.tgz#3cf9beb49250a63ecaf6945f0f45cd12ee5195aa" - integrity sha512-zM+nnqZpiQj20PyAh6uvgdSz+hD7Rj7UfAZwizqNP+bLvcbGXZwABERobuilkCQqyDBBH4uv0yqIcPRl8dSBEg== +"@algolia/requester-node-http@5.42.0": + version "5.42.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.42.0.tgz#18347c33d59c8c6f8c145f7cfa62e3c76f4569b8" + integrity sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w== dependencies: - "@algolia/client-common" "5.24.0" + "@algolia/client-common" "5.42.0" "@ampproject/remapping@^2.2.0": version "2.3.0" @@ -158,7 +196,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@antfu/install-pkg@^1.0.0": +"@antfu/install-pkg@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz#78fa036be1a6081b5a77a5cf59f50c7752b6ba26" integrity sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ== @@ -166,12 +204,12 @@ package-manager-detector "^1.3.0" tinyexec "^1.0.1" -"@antfu/utils@^8.1.0": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-8.1.1.tgz#95b1947d292a9a2efffba2081796dcaa05ecedfb" - integrity sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ== +"@antfu/utils@^9.2.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-9.3.0.tgz#e05e277f788ac3bec771f57a49fb64546bb32374" + integrity sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== @@ -1056,7 +1094,7 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@braintree/sanitize-url@^7.0.4": +"@braintree/sanitize-url@^7.1.1": version "7.1.1" resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz#15e19737d946559289b915e5dad3b4c28407735e" integrity sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw== @@ -1098,92 +1136,136 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@csstools/cascade-layer-name-parser@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.4.tgz#64d128529397aa1e1c986f685713363b262b81b1" - integrity sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA== +"@csstools/cascade-layer-name-parser@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz#43f962bebead0052a9fed1a2deeb11f85efcbc72" + integrity sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A== -"@csstools/color-helpers@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" - integrity sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== +"@csstools/color-helpers@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz#106c54c808cabfd1ab4c602d8505ee584c2996ef" + integrity sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA== -"@csstools/css-calc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.3.tgz#6f68affcb569a86b91965e8622d644be35a08423" - integrity sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw== +"@csstools/css-calc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" + integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== -"@csstools/css-color-parser@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.9.tgz#8d81b77d6f211495b5100ec4cad4c8828de49f6b" - integrity sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw== +"@csstools/css-color-parser@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz#4e386af3a99dd36c46fef013cfe4c1c341eed6f0" + integrity sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA== dependencies: - "@csstools/color-helpers" "^5.0.2" - "@csstools/css-calc" "^2.1.3" + "@csstools/color-helpers" "^5.1.0" + "@csstools/css-calc" "^2.1.4" -"@csstools/css-parser-algorithms@^3.0.4": +"@csstools/css-parser-algorithms@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" + integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== + +"@csstools/css-tokenizer@^3.0.4": version "3.0.4" - resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz#74426e93bd1c4dcab3e441f5cc7ba4fb35d94356" - integrity sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A== + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" + integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== -"@csstools/css-tokenizer@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz#a5502c8539265fecbd873c1e395a890339f119c2" - integrity sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw== +"@csstools/media-query-list-parser@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" + integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== -"@csstools/media-query-list-parser@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz#e80e17eba1693fceafb8d6f2cfc68c0e7a9ab78a" - integrity sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A== +"@csstools/postcss-alpha-function@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz#7989605711de7831bc7cd75b94c9b5bac9c3728e" + integrity sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" -"@csstools/postcss-cascade-layers@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.1.tgz#9640313e64b5e39133de7e38a5aa7f40dc259597" - integrity sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ== +"@csstools/postcss-cascade-layers@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz#dd2c70db3867b88975f2922da3bfbae7d7a2cae7" + integrity sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg== dependencies: "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" -"@csstools/postcss-color-function@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.9.tgz#67080c6b4635926d68cc9c8f52261b87ece70bf8" - integrity sha512-2UeQCGMO5+EeQsPQK2DqXp0dad+P6nIz6G2dI06APpBuYBKxZEq7CTH+UiztFQ8cB1f89dnO9+D/Kfr+JfI2hw== +"@csstools/postcss-color-function-display-p3-linear@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz#3017ff5e1f65307d6083e58e93d76724fb1ebf9f" + integrity sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-color-mix-function@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.9.tgz#103858388ba4d2c589daeecb02f9f05baecc27d0" - integrity sha512-Enj7ZIIkLD7zkGCN31SZFx4H1gKiCs2Y4taBo/v/cqaHN7p1qGrf5UTMNSjQFZ7MgClGufHx4pddwFTGL+ipug== +"@csstools/postcss-color-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz#a7c85a98c77b522a194a1bbb00dd207f40c7a771" + integrity sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-content-alt-text@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.5.tgz#86b195bef6ce32179a68011b87212a3e4e73b84a" - integrity sha512-9BOS535v6YmyOYk32jAHXeddRV+iyd4vRcbrEekpwxmueAXX5J8WgbceFnE4E4Pmw/ysnB9v+n/vSWoFmcLMcA== +"@csstools/postcss-color-mix-function@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz#2f1ee9f8208077af069545c9bd79bb9733382c2a" + integrity sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-mix-variadic-function-arguments@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz#b4012b62a4eaa24d694172bb7137f9d2319cb8f2" + integrity sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ== dependencies: - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-exponential-functions@^2.0.8": +"@csstools/postcss-content-alt-text@^2.0.8": version "2.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.8.tgz#da6b3673fcb48a78294d39d6afc1e4da45dedada" - integrity sha512-vHgDXtGIBPpFQnFNDftMQg4MOuXcWnK91L/7REjBNYzQ/p2Fa/6RcnehTqCRrNtQ46PNIolbRsiDdDuxiHolwQ== + resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz#1d52da1762893c32999ff76839e48d6ec7c7a4cb" + integrity sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-contrast-color-function@^2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz#ca46986d095c60f208d9e3f24704d199c9172637" + integrity sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-exponential-functions@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz#fc03d1272888cb77e64cc1a7d8a33016e4f05c69" + integrity sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw== dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" "@csstools/postcss-font-format-keywords@^4.0.0": version "4.0.0" @@ -1193,43 +1275,43 @@ "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-gamut-mapping@^2.0.9": - version "2.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.9.tgz#83b08d302865ce6fc3127589ff6658fe32635636" - integrity sha512-quksIsFm3DGsf8Qbr9KiSGBF2w3RwxSfOfma5wbORDB1AFF15r4EVW7sUuWw3s5IAEGMqzel/dE2rQsI7Yb8mA== - dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - -"@csstools/postcss-gradients-interpolation-method@^5.0.9": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.9.tgz#e2e1c59b08e7524c269bb4cac91618f95b9c849e" - integrity sha512-duqTeUHF4ambUybAmhX9KonkicLM/WNp2JjMUbegRD4O8A/tb6fdZ7jUNdp/UUiO1FIdDkMwmNw6856bT0XF8Q== - dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" +"@csstools/postcss-gamut-mapping@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz#be0e34c9f0142852cccfc02b917511f0d677db8b" + integrity sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-gradients-interpolation-method@^5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz#0955cce4d97203b861bf66742bbec611b2f3661c" + integrity sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-hwb-function@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.9.tgz#4abca35a88a382e211fc0abe125a8ce7bb07030b" - integrity sha512-sDpdPsoGAhYl/PMSYfu5Ez82wXb2bVkg1Cb8vsRLhpXhAk4OSlsJN+GodAql6tqc1B2G/WToxsFU6G74vkhPvA== +"@csstools/postcss-hwb-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz#07f7ecb08c50e094673bd20eaf7757db0162beee" + integrity sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-ic-unit@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.1.tgz#7b67b49d85713d8bad70ee5735f409b19fd906f9" - integrity sha512-lECc38i1w3qU9nhrUhP6F8y4BfcQJkR1cb8N6tZNf2llM6zPkxnqt04jRCwsUgNcB3UGKDy+zLenhOYGHqCV+Q== +"@csstools/postcss-ic-unit@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz#2ee2da0690db7edfbc469279711b9e69495659d2" + integrity sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg== dependencies: - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" @@ -1238,22 +1320,22 @@ resolved "https://registry.yarnpkg.com/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz#c385bd9d8ad31ad159edd7992069e97ceea4d09a" integrity sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg== -"@csstools/postcss-is-pseudo-class@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.1.tgz#12041448fedf01090dd4626022c28b7f7623f58e" - integrity sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ== +"@csstools/postcss-is-pseudo-class@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz#d34e850bcad4013c2ed7abe948bfa0448aa8eb74" + integrity sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ== dependencies: "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" -"@csstools/postcss-light-dark-function@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.8.tgz#bac218338f458f9a3f05edcc94ab009def14a532" - integrity sha512-v8VU5WtrZIyEtk88WB4fkG22TGd8HyAfSFfZZQ1uNN0+arMJdZc++H3KYTfbYDpJRGy8GwADYH8ySXiILn+OyA== +"@csstools/postcss-light-dark-function@^2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz#0df448aab9a33cb9a085264ff1f396fb80c4437d" + integrity sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA== dependencies: - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-logical-float-and-clear@^3.0.0": @@ -1278,32 +1360,32 @@ dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-logical-viewport-units@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.3.tgz#f6cc63520ca2a6eb76b9cd946070c38dda66d733" - integrity sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw== +"@csstools/postcss-logical-viewport-units@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz#016d98a8b7b5f969e58eb8413447eb801add16fc" + integrity sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ== dependencies: - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/css-tokenizer" "^3.0.4" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-media-minmax@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.8.tgz#b5397f18531c54ac0c12cbf20b6bf93208bd5d16" - integrity sha512-Skum5wIXw2+NyCQWUyfstN3c1mfSh39DRAo+Uh2zzXOglBG8xB9hnArhYFScuMZkzeM+THVa//mrByKAfumc7w== +"@csstools/postcss-media-minmax@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz#184252d5b93155ae526689328af6bdf3fc113987" + integrity sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig== dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/media-query-list-parser" "^4.0.2" + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" -"@csstools/postcss-media-queries-aspect-ratio-number-values@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.4.tgz#d71102172c74baf3f892fac88cf1ea46a961600d" - integrity sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ== +"@csstools/postcss-media-queries-aspect-ratio-number-values@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz#f485c31ec13d6b0fb5c528a3474334a40eff5f11" + integrity sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg== dependencies: - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/media-query-list-parser" "^4.0.2" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" "@csstools/postcss-nested-calc@^4.0.0": version "4.0.0" @@ -1320,42 +1402,42 @@ dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-oklab-function@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.9.tgz#21d8846b3fe632d663b8cfe5d1fa2ccdd3f0709a" - integrity sha512-UHrnujimwtdDw8BYDcWJtBXuJ13uc/BjAddPdfMc/RsWxhg8gG8UbvTF0tnMtHrZ4i7lwy85fPEzK1AiykMyRA== +"@csstools/postcss-oklab-function@^4.0.12": + version "4.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz#416640ef10227eea1375b47b72d141495950971d" + integrity sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -"@csstools/postcss-progressive-custom-properties@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.0.1.tgz#487e619d2577358cb08ed7319dd203d4d5db5bb6" - integrity sha512-Ofz81HaY8mmbP8/Qr3PZlUzjsyV5WuxWmvtYn+jhYGvvjFazTmN9R2io5W5znY1tyk2CA9uM0IPWyY4ygDytCw== +"@csstools/postcss-progressive-custom-properties@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz#c39780b9ff0d554efb842b6bd75276aa6f1705db" + integrity sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw== dependencies: postcss-value-parser "^4.2.0" -"@csstools/postcss-random-function@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.0.tgz#38da06d102bbe65504023278f670895c4a1ceef9" - integrity sha512-MYZKxSr4AKfjECL8vg49BbfNNzK+t3p2OWX+Xf7rXgMaTP44oy/e8VGWu4MLnJ3NUd9tFVkisLO/sg+5wMTNsg== - dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - -"@csstools/postcss-relative-color-syntax@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.9.tgz#1075eda90bb2a59f30bed94605def0a99cad3040" - integrity sha512-+AGOcLF5PmMnTRPnOdCvY7AwvD5veIOhTWbJV6vC3hB1tt0ii/k6QOwhWfsGGg1ZPQ0JY15u+wqLR4ZTtB0luA== - dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" +"@csstools/postcss-random-function@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz#3191f32fe72936e361dadf7dbfb55a0209e2691e" + integrity sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-relative-color-syntax@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz#ced792450102441f7c160e1d106f33e4b44181f8" + integrity sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw== + dependencies: + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" "@csstools/postcss-scope-pseudo-class@^4.0.1": @@ -1365,50 +1447,50 @@ dependencies: postcss-selector-parser "^7.0.0" -"@csstools/postcss-sign-functions@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.3.tgz#ba64c7a6e25f50221a2f37fac5d7592917245781" - integrity sha512-4F4GRhj8xNkBtLZ+3ycIhReaDfKJByXI+cQGIps3AzCO8/CJOeoDPxpMnL5vqZrWKOceSATHEQJUO/Q/r2y7OQ== +"@csstools/postcss-sign-functions@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz#a9ac56954014ae4c513475b3f1b3e3424a1e0c12" + integrity sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg== dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" -"@csstools/postcss-stepped-value-functions@^4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.8.tgz#345f5620cbeb0e9742f242e1dc6c88a051ce6700" - integrity sha512-6Y4yhL4fNhgzbZ/wUMQ4EjFUfoNNMpEXZnDw1JrlcEBHUT15gplchtFsZGk7FNi8PhLHJfCUwVKrEHzhfhKK+g== +"@csstools/postcss-stepped-value-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz#36036f1a0e5e5ee2308e72f3c9cb433567c387b9" + integrity sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA== dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" -"@csstools/postcss-text-decoration-shorthand@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz#a3bcf80492e6dda36477538ab8e8943908c9f80a" - integrity sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA== +"@csstools/postcss-text-decoration-shorthand@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz#fae1b70f07d1b7beb4c841c86d69e41ecc6f743c" + integrity sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA== dependencies: - "@csstools/color-helpers" "^5.0.2" + "@csstools/color-helpers" "^5.1.0" postcss-value-parser "^4.2.0" -"@csstools/postcss-trigonometric-functions@^4.0.8": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.8.tgz#ad7940798fafadc77846e9ca47e2b594515d4f60" - integrity sha512-YcDvYTRu7f78/91B6bX+mE1WoAO91Su7/8KSRpuWbIGUB8hmaNSRu9wziaWSLJ1lOB1aQe+bvo9BIaLKqPOo/g== +"@csstools/postcss-trigonometric-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz#3f94ed2e319b57f2c59720b64e4d0a8a6fb8c3b2" + integrity sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A== dependencies: - "@csstools/css-calc" "^2.1.3" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" "@csstools/postcss-unset-value@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz#7caa981a34196d06a737754864baf77d64de4bba" integrity sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA== -"@csstools/selector-resolve-nested@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz#704a9b637975680e025e069a4c58b3beb3e2752a" - integrity sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ== +"@csstools/selector-resolve-nested@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz#848c6f44cb65e3733e478319b9342b7aa436fac7" + integrity sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g== "@csstools/selector-specificity@^5.0.0": version "5.0.0" @@ -1425,25 +1507,34 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/css@3.9.0": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.9.0.tgz#3bc29c96bf024350d73b0cfb7c2a7b71bf251cd5" - integrity sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA== +"@docsearch/core@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@docsearch/core/-/core-4.3.1.tgz#88a97a6fe4d4025269b6dee8b9d070b76758ad82" + integrity sha512-ktVbkePE+2h9RwqCUMbWXOoebFyDOxHqImAqfs+lC8yOU+XwEW4jgvHGJK079deTeHtdhUNj0PXHSnhJINvHzQ== -"@docsearch/react@^3.8.1": - version "3.9.0" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.9.0.tgz#d0842b700c3ee26696786f3c8ae9f10c1a3f0db3" - integrity sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ== - dependencies: - "@algolia/autocomplete-core" "1.17.9" - "@algolia/autocomplete-preset-algolia" "1.17.9" - "@docsearch/css" "3.9.0" - algoliasearch "^5.14.2" +"@docsearch/css@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-4.3.1.tgz#bcb1115f3b65d41b61d30df0c9465b735c1fb28d" + integrity sha512-Jnct7LKOi/+Oxbmq215YPYASkMdZqtyyDCkma8Cj4sCcbBuybL6fvyBaX7uJoM6kVF7aIpBA38RhHAyN5ByCHg== -"@docusaurus/babel@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.7.0.tgz#770dd5da525a9d6a2fee7d3212ec62040327f776" - integrity sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ== +"@docsearch/react@^3.9.0 || ^4.1.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-4.3.1.tgz#2d87a9e17fce13be00106203545f9a801037c49c" + integrity sha512-vbKwgDuHi/YA0CiicXhJm4DSfOIOccl3FJlkdVmeZ5d61wNbPdAnAy71i7FF0JzO6noCQScidBBguOCaNfauEw== + dependencies: + "@ai-sdk/react" "^2.0.30" + "@algolia/autocomplete-core" "1.19.2" + "@docsearch/core" "4.3.1" + "@docsearch/css" "4.3.1" + ai "^5.0.30" + algoliasearch "^5.28.0" + marked "^16.3.0" + zod "^4.1.8" + +"@docusaurus/babel@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.9.2.tgz#f956c638baeccf2040e482c71a742bc7e35fdb22" + integrity sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA== dependencies: "@babel/core" "^7.25.9" "@babel/generator" "^7.25.9" @@ -1455,55 +1546,54 @@ "@babel/runtime" "^7.25.9" "@babel/runtime-corejs3" "^7.25.9" "@babel/traverse" "^7.25.9" - "@docusaurus/logger" "3.7.0" - "@docusaurus/utils" "3.7.0" + "@docusaurus/logger" "3.9.2" + "@docusaurus/utils" "3.9.2" babel-plugin-dynamic-import-node "^2.3.3" fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/bundler@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.7.0.tgz#d8e7867b3b2c43a1e320ed429f8dfe873c38506d" - integrity sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg== +"@docusaurus/bundler@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.9.2.tgz#0ca82cda4acf13a493e3f66061aea351e9d356cf" + integrity sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA== dependencies: "@babel/core" "^7.25.9" - "@docusaurus/babel" "3.7.0" - "@docusaurus/cssnano-preset" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" + "@docusaurus/babel" "3.9.2" + "@docusaurus/cssnano-preset" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" babel-loader "^9.2.1" - clean-css "^5.3.2" + clean-css "^5.3.3" copy-webpack-plugin "^11.0.0" - css-loader "^6.8.1" + css-loader "^6.11.0" css-minimizer-webpack-plugin "^5.0.1" cssnano "^6.1.2" file-loader "^6.2.0" html-minifier-terser "^7.2.0" - mini-css-extract-plugin "^2.9.1" + mini-css-extract-plugin "^2.9.2" null-loader "^4.0.1" - postcss "^8.4.26" - postcss-loader "^7.3.3" - postcss-preset-env "^10.1.0" - react-dev-utils "^12.0.1" + postcss "^8.5.4" + postcss-loader "^7.3.4" + postcss-preset-env "^10.2.1" terser-webpack-plugin "^5.3.9" tslib "^2.6.0" url-loader "^4.1.1" webpack "^5.95.0" webpackbar "^6.0.1" -"@docusaurus/core@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.7.0.tgz#e871586d099093723dfe6de81c1ce610aeb20292" - integrity sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ== - dependencies: - "@docusaurus/babel" "3.7.0" - "@docusaurus/bundler" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" +"@docusaurus/core@3.9.2", "@docusaurus/core@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.9.2.tgz#cc970f29b85a8926d63c84f8cffdcda43ed266ff" + integrity sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw== + dependencies: + "@docusaurus/babel" "3.9.2" + "@docusaurus/bundler" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" boxen "^6.2.1" chalk "^4.1.2" chokidar "^3.5.3" @@ -1511,19 +1601,19 @@ combine-promises "^1.1.0" commander "^5.1.0" core-js "^3.31.1" - del "^6.1.1" detect-port "^1.5.1" escape-html "^1.0.3" eta "^2.2.0" eval "^0.1.8" + execa "5.1.1" fs-extra "^11.1.1" html-tags "^3.3.1" html-webpack-plugin "^5.6.0" leven "^3.1.0" lodash "^4.17.21" + open "^8.4.0" p-map "^4.0.0" prompts "^2.4.2" - react-dev-utils "^12.0.1" react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" react-loadable-ssr-addon-v5-slorber "^1.0.1" @@ -1532,58 +1622,58 @@ react-router-dom "^5.3.4" semver "^7.5.4" serve-handler "^6.1.6" - shelljs "^0.8.5" + tinypool "^1.0.2" tslib "^2.6.0" update-notifier "^6.0.2" webpack "^5.95.0" webpack-bundle-analyzer "^4.10.2" - webpack-dev-server "^4.15.2" + webpack-dev-server "^5.2.2" webpack-merge "^6.0.1" -"@docusaurus/cssnano-preset@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.7.0.tgz#8fe8f2c3acbd32384b69e14983b9a63c98cae34e" - integrity sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ== +"@docusaurus/cssnano-preset@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz#523aab65349db3c51a77f2489048d28527759428" + integrity sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ== dependencies: cssnano-preset-advanced "^6.1.2" - postcss "^8.4.38" + postcss "^8.5.4" postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.7.0.tgz#07ecc2f460c4d2382df4991f9ce4e348e90af04c" - integrity sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA== +"@docusaurus/logger@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.9.2.tgz#6ec6364b90f5a618a438cc9fd01ac7376869f92a" + integrity sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/lqip-loader@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.7.0.tgz#af1e9ef7d11076a8a4b06bdac860cc2a682b301d" - integrity sha512-bEQ/6o9VSzpqV6OYbyoZUtrKAFJOPKdo8tBmvZCee3M+Hl4V1XAg4TY/KmlAlw6HfMdr42FuqGIy9CsFNxL3CQ== +"@docusaurus/lqip-loader@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-3.9.2.tgz#3be8153cc0bbbea9e4a50b1f6bd26f2bdcbc44f5" + integrity sha512-Q9QO0E+HLKhcpKVOIXRVBdJ1bbxxpfSwBll5NsmGxcx1fArH0fFi68cpEztqBg7WwbFRb976MTlqlBuGrMLpuw== dependencies: - "@docusaurus/logger" "3.7.0" + "@docusaurus/logger" "3.9.2" file-loader "^6.2.0" lodash "^4.17.21" sharp "^0.32.3" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.7.0.tgz#5890c6e7a5b68cb1d066264ac5290cdcd59d4ecc" - integrity sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA== +"@docusaurus/mdx-loader@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz#78d238de6c6203fa811cc2a7e90b9b79e111408c" + integrity sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ== dependencies: - "@docusaurus/logger" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/logger" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" estree-util-value-to-estree "^3.0.1" file-loader "^6.2.0" fs-extra "^11.1.1" - image-size "^1.0.2" + image-size "^2.0.2" mdast-util-mdx "^3.0.0" mdast-util-to-string "^4.0.0" rehype-raw "^7.0.0" @@ -1599,188 +1689,199 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.7.0.tgz#15c0745b829c6966c5b3b2c2527c72b54830b0e5" - integrity sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg== +"@docusaurus/module-type-aliases@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz#993c7cb0114363dea5ef6855e989b3ad4b843a34" + integrity sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew== dependencies: - "@docusaurus/types" "3.7.0" + "@docusaurus/types" "3.9.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" - react-helmet-async "npm:@slorber/react-helmet-async@*" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.7.0.tgz#7bd69de87a1f3adb652e1473ef5b7ccc9468f47e" - integrity sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" +"@docusaurus/plugin-content-blog@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz#d5ce51eb7757bdab0515e2dd26a793ed4e119df9" + integrity sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" cheerio "1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" lodash "^4.17.21" - reading-time "^1.5.0" + schema-dts "^1.1.2" srcset "^4.0.0" tslib "^2.6.0" unist-util-visit "^5.0.0" utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz#297a549e926ee2b1147b5242af6f21532c7b107c" - integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/module-type-aliases" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" +"@docusaurus/plugin-content-docs@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz#cd8f2d1c06e53c3fa3d24bdfcb48d237bf2d6b2e" + integrity sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/module-type-aliases" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" js-yaml "^4.1.0" lodash "^4.17.21" + schema-dts "^1.1.2" tslib "^2.6.0" utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.7.0.tgz#c4a8f7237872236aacb77665822c474c0a00e91a" - integrity sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q== +"@docusaurus/plugin-content-pages@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz#22db6c88ade91cec0a9e87a00b8089898051b08d" + integrity sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.7.0.tgz#a4fd45132e40cffe96bb51f48e89982a1cb8e194" - integrity sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA== +"@docusaurus/plugin-css-cascade-layers@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz#358c85f63f1c6a11f611f1b8889d9435c11b22f8" + integrity sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" + tslib "^2.6.0" + +"@docusaurus/plugin-debug@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz#b5df4db115583f5404a252dbf66f379ff933e53c" + integrity sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" fs-extra "^11.1.1" - react-json-view-lite "^1.2.0" + react-json-view-lite "^2.3.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.7.0.tgz#d20f665e810fb2295d1c1bbfe13398c5ff42eb24" - integrity sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA== +"@docusaurus/plugin-google-analytics@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz#857fe075fdeccdf6959e62954d9efe39769fa247" + integrity sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.7.0.tgz#a48638dfd132858060458b875a440b6cbda6bf8f" - integrity sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA== +"@docusaurus/plugin-google-gtag@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz#df75b1a90ae9266b0471909ba0265f46d5dcae62" + integrity sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.7.0.tgz#0a4390f4b0e760d073bdb1905436bfa7bd71356b" - integrity sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w== +"@docusaurus/plugin-google-tag-manager@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz#d1a3cf935acb7d31b84685e92d70a1d342946677" + integrity sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" tslib "^2.6.0" -"@docusaurus/plugin-ideal-image@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.7.0.tgz#85d44db4fda8a07ad8d6882f1ef5e478dd0c715c" - integrity sha512-1IKmXJ6I7WKxfESdCMroechuoQEo1IZzIOhQlga8m7ioHzu+sb+Egnyrau2buCYh0QJ8gZoXtscSt5TBFlzMOQ== +"@docusaurus/plugin-ideal-image@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-3.9.2.tgz#454ed546004fb4611f341c85dfc0c56ee512697f" + integrity sha512-YYYbmC2wSYFd7o4//5rPXt9+DkZwfwjCUmyGi5OIVqEbwELK80o3COXs2Xd0BtVIpuRvG7pKCYrMQwVo32Y9qw== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/lqip-loader" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/lqip-loader" "3.9.2" "@docusaurus/responsive-loader" "^1.7.0" - "@docusaurus/theme-translations" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" - "@slorber/react-ideal-image" "^0.0.14" - react-waypoint "^10.3.0" + "@docusaurus/theme-translations" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" sharp "^0.32.3" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-sitemap@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.7.0.tgz#2c1bf9de26aeda455df6f77748e5887ace39b2d7" - integrity sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" +"@docusaurus/plugin-sitemap@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz#e1d9f7012942562cc0c6543d3cb2cdc4ae713dc4" + integrity sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/plugin-svgr@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.7.0.tgz#018e89efd615d5fde77b891a8c2aadf203013f5d" - integrity sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg== +"@docusaurus/plugin-svgr@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz#62857ed79d97c0150d25f7e7380fdee65671163a" + integrity sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw== dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" "@svgr/core" "8.1.0" "@svgr/webpack" "^8.1.0" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/preset-classic@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.7.0.tgz#f6656a04ae6a4877523dbd04f7c491632e4003b9" - integrity sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/plugin-content-blog" "3.7.0" - "@docusaurus/plugin-content-docs" "3.7.0" - "@docusaurus/plugin-content-pages" "3.7.0" - "@docusaurus/plugin-debug" "3.7.0" - "@docusaurus/plugin-google-analytics" "3.7.0" - "@docusaurus/plugin-google-gtag" "3.7.0" - "@docusaurus/plugin-google-tag-manager" "3.7.0" - "@docusaurus/plugin-sitemap" "3.7.0" - "@docusaurus/plugin-svgr" "3.7.0" - "@docusaurus/theme-classic" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/theme-search-algolia" "3.7.0" - "@docusaurus/types" "3.7.0" +"@docusaurus/preset-classic@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz#85cc4f91baf177f8146c9ce896dfa1f0fd377050" + integrity sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/plugin-content-blog" "3.9.2" + "@docusaurus/plugin-content-docs" "3.9.2" + "@docusaurus/plugin-content-pages" "3.9.2" + "@docusaurus/plugin-css-cascade-layers" "3.9.2" + "@docusaurus/plugin-debug" "3.9.2" + "@docusaurus/plugin-google-analytics" "3.9.2" + "@docusaurus/plugin-google-gtag" "3.9.2" + "@docusaurus/plugin-google-tag-manager" "3.9.2" + "@docusaurus/plugin-sitemap" "3.9.2" + "@docusaurus/plugin-svgr" "3.9.2" + "@docusaurus/theme-classic" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/theme-search-algolia" "3.9.2" + "@docusaurus/types" "3.9.2" "@docusaurus/responsive-loader@^1.7.0": version "1.7.1" @@ -1789,31 +1890,30 @@ dependencies: loader-utils "^2.0.0" -"@docusaurus/theme-classic@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.7.0.tgz#b483bd8e2923b6994b5f47238884b9f8984222c5" - integrity sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/module-type-aliases" "3.7.0" - "@docusaurus/plugin-content-blog" "3.7.0" - "@docusaurus/plugin-content-docs" "3.7.0" - "@docusaurus/plugin-content-pages" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/theme-translations" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" +"@docusaurus/theme-classic@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz#6e514f99a0ff42b80afcf42d5e5d042618311ce0" + integrity sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/module-type-aliases" "3.9.2" + "@docusaurus/plugin-content-blog" "3.9.2" + "@docusaurus/plugin-content-docs" "3.9.2" + "@docusaurus/plugin-content-pages" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/theme-translations" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" - copy-text-to-clipboard "^3.2.0" infima "0.2.0-alpha.45" lodash "^4.17.21" nprogress "^0.2.0" - postcss "^8.4.26" + postcss "^8.5.4" prism-react-renderer "^2.3.0" prismjs "^1.29.0" react-router-dom "^5.3.4" @@ -1821,15 +1921,15 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.7.0.tgz#18bf5c6b149a701f4bd865715ee8b595aa40b354" - integrity sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A== +"@docusaurus/theme-common@3.9.2", "@docusaurus/theme-common@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.9.2.tgz#487172c6fef9815c2746ef62a71e4f5b326f9ba5" + integrity sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag== dependencies: - "@docusaurus/mdx-loader" "3.7.0" - "@docusaurus/module-type-aliases" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" + "@docusaurus/mdx-loader" "3.9.2" + "@docusaurus/module-type-aliases" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1839,34 +1939,34 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-mermaid@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.7.0.tgz#1bc4307e09886186ed6e51607bf43c5089f35de5" - integrity sha512-7kNDvL7hm+tshjxSxIqYMtsLUPsEBYnkevej/ext6ru9xyLgCed+zkvTfGzTWNeq8rJIEe2YSS8/OV5gCVaPCw== - dependencies: - "@docusaurus/core" "3.7.0" - "@docusaurus/module-type-aliases" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" - mermaid ">=10.4" +"@docusaurus/theme-mermaid@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.2.tgz#f065e4b4b319560ddd8c3be65ce9dd19ce1d5cc8" + integrity sha512-5vhShRDq/ntLzdInsQkTdoKWSzw8d1jB17sNPYhA/KvYYFXfuVEGHLM6nrf8MFbV8TruAHDG21Fn3W4lO8GaDw== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/module-type-aliases" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" + mermaid ">=11.6.0" tslib "^2.6.0" -"@docusaurus/theme-search-algolia@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.7.0.tgz#2108ddf0b300b82de7c2b9ff9fcf62121b66ea37" - integrity sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g== - dependencies: - "@docsearch/react" "^3.8.1" - "@docusaurus/core" "3.7.0" - "@docusaurus/logger" "3.7.0" - "@docusaurus/plugin-content-docs" "3.7.0" - "@docusaurus/theme-common" "3.7.0" - "@docusaurus/theme-translations" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-validation" "3.7.0" - algoliasearch "^5.17.1" - algoliasearch-helper "^3.22.6" +"@docusaurus/theme-search-algolia@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz#420fd5b27fc1673b48151fdc9fe7167ba135ed50" + integrity sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw== + dependencies: + "@docsearch/react" "^3.9.0 || ^4.1.0" + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/plugin-content-docs" "3.9.2" + "@docusaurus/theme-common" "3.9.2" + "@docusaurus/theme-translations" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" + algoliasearch "^5.37.0" + algoliasearch-helper "^3.26.0" clsx "^2.0.0" eta "^2.2.0" fs-extra "^11.1.1" @@ -1874,21 +1974,22 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.7.0.tgz#0891aedc7c7040afcb3a1b34051d3a69096d0d25" - integrity sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g== +"@docusaurus/theme-translations@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz#238cd69c2da92d612be3d3b4f95944c1d0f1e041" + integrity sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.7.0.tgz#3f5a68a60f80ecdcb085666da1d68f019afda943" - integrity sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ== +"@docusaurus/types@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.9.2.tgz#e482cf18faea0d1fa5ce0e3f1e28e0f32d2593eb" + integrity sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q== dependencies: "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" + "@types/mdast" "^4.0.2" "@types/react" "*" commander "^5.1.0" joi "^17.9.2" @@ -1897,37 +1998,38 @@ webpack "^5.95.0" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.7.0.tgz#1bef52837d321db5dd2361fc07f3416193b5d029" - integrity sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA== +"@docusaurus/utils-common@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.9.2.tgz#e89bfcf43d66359f43df45293fcdf22814847460" + integrity sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw== dependencies: - "@docusaurus/types" "3.7.0" + "@docusaurus/types" "3.9.2" tslib "^2.6.0" -"@docusaurus/utils-validation@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.7.0.tgz#dc0786fb633ae5cef8e93337bf21c2a826c7ecbd" - integrity sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA== +"@docusaurus/utils-validation@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz#04aec285604790806e2fc5aa90aa950dc7ba75ae" + integrity sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A== dependencies: - "@docusaurus/logger" "3.7.0" - "@docusaurus/utils" "3.7.0" - "@docusaurus/utils-common" "3.7.0" + "@docusaurus/logger" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" fs-extra "^11.2.0" joi "^17.9.2" js-yaml "^4.1.0" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.7.0.tgz#dfdebd63524c52b498f36b2907a3b2261930b9bb" - integrity sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA== +"@docusaurus/utils@3.9.2", "@docusaurus/utils@^3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.9.2.tgz#ffab7922631c7e0febcb54e6d499f648bf8a89eb" + integrity sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ== dependencies: - "@docusaurus/logger" "3.7.0" - "@docusaurus/types" "3.7.0" - "@docusaurus/utils-common" "3.7.0" + "@docusaurus/logger" "3.9.2" + "@docusaurus/types" "3.9.2" + "@docusaurus/utils-common" "3.9.2" escape-string-regexp "^4.0.0" + execa "5.1.1" file-loader "^6.2.0" fs-extra "^11.1.1" github-slugger "^1.5.0" @@ -1937,9 +2039,9 @@ js-yaml "^4.1.0" lodash "^4.17.21" micromatch "^4.0.5" + p-queue "^6.6.2" prompts "^2.4.2" resolve-pathname "^3.0.0" - shelljs "^0.8.5" tslib "^2.6.0" url-loader "^4.1.1" utility-types "^3.10.0" @@ -1984,18 +2086,18 @@ resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== -"@iconify/utils@^2.1.33": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.3.0.tgz#1bbbf8c477ebe9a7cacaea78b1b7e8937f9cbfba" - integrity sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA== +"@iconify/utils@^3.0.1": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-3.0.2.tgz#9599607f20690cd3e7a5d2d459af0eb81a89dc2b" + integrity sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ== dependencies: - "@antfu/install-pkg" "^1.0.0" - "@antfu/utils" "^8.1.0" + "@antfu/install-pkg" "^1.1.0" + "@antfu/utils" "^9.2.0" "@iconify/types" "^2.0.0" - debug "^4.4.0" - globals "^15.14.0" + debug "^4.4.1" + globals "^15.15.0" kolorist "^1.8.0" - local-pkg "^1.0.0" + local-pkg "^1.1.1" mlly "^1.7.4" "@jest/schemas@^29.6.3": @@ -2057,6 +2159,51 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jsonjoy.com/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== + +"@jsonjoy.com/codegen@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== + +"@jsonjoy.com/json-pack@^1.11.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== + dependencies: + "@jsonjoy.com/base64" "^1.1.2" + "@jsonjoy.com/buffers" "^1.2.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/json-pointer" "^1.0.2" + "@jsonjoy.com/util" "^1.9.0" + hyperdyperid "^1.2.0" + thingies "^2.5.0" + tree-dump "^1.1.0" + +"@jsonjoy.com/json-pointer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== + dependencies: + "@jsonjoy.com/codegen" "^1.0.0" + "@jsonjoy.com/util" "^1.9.0" + +"@jsonjoy.com/util@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== + dependencies: + "@jsonjoy.com/buffers" "^1.0.0" + "@jsonjoy.com/codegen" "^1.0.0" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" @@ -2099,10 +2246,10 @@ dependencies: "@types/mdx" "^2.0.0" -"@mermaid-js/parser@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-0.4.0.tgz#c1de1f5669f8fcbd0d0c9d124927d36ddc00d8a6" - integrity sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA== +"@mermaid-js/parser@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-0.6.3.tgz#3ce92dad2c5d696d29e11e21109c66a7886c824e" + integrity sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA== dependencies: langium "3.3.1" @@ -2127,6 +2274,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@opentelemetry/api@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -2237,11 +2389,6 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.6.0.tgz#41dd6093d34652cddb5d5bdeee04eafc33826668" integrity sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g== -"@slorber/react-ideal-image@^0.0.14": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@slorber/react-ideal-image/-/react-ideal-image-0.0.14.tgz#35b0756c6f06ec60c4a2b5cae9dcf346500e1e8a" - integrity sha512-ULJ1VtNg+B5puJp4ZQzEnDqYyDT9erbABoQygmAovg35ltOymLMH8jXPuxJQBVskcmaG29bTZ+++hE/PAXRgxA== - "@slorber/remark-comment@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@slorber/remark-comment/-/remark-comment-1.0.0.tgz#2a020b3f4579c89dec0361673206c28d67e08f5a" @@ -2251,6 +2398,11 @@ micromark-util-character "^1.1.0" micromark-util-symbol "^1.0.1" +"@standard-schema/spec@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c" + integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA== + "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" @@ -2377,14 +2529,14 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": +"@types/bonjour@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -2654,6 +2806,16 @@ "@types/range-parser" "*" "@types/send" "*" +"@types/express-serve-static-core@^4.17.21": + version "4.19.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10" + integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + "@types/express-serve-static-core@^4.17.33": version "4.19.6" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" @@ -2673,15 +2835,15 @@ "@types/express-serve-static-core" "^5.0.0" "@types/serve-static" "*" -"@types/express@^4.17.13": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== +"@types/express@^4.17.21": + version "4.17.25" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.25.tgz#070c8c73a6fee6936d65c195dbbfb7da5026649b" + integrity sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" - "@types/serve-static" "*" + "@types/serve-static" "^1" "@types/geojson@*": version "7946.0.16" @@ -2753,7 +2915,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2799,11 +2961,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - "@types/parse5@^5.0.0": version "5.0.3" resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" @@ -2857,10 +3014,10 @@ dependencies: csstype "^3.0.2" -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/sax@^1.2.1": version "1.2.7" @@ -2877,14 +3034,22 @@ "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1": +"@types/send@<1": + version "0.17.6" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.6.tgz#aeb5385be62ff58a52cd5459daa509ae91651d25" + integrity sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10": +"@types/serve-static@*": version "1.15.7" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== @@ -2893,7 +3058,16 @@ "@types/node" "*" "@types/send" "*" -"@types/sockjs@^0.3.33": +"@types/serve-static@^1", "@types/serve-static@^1.15.5": + version "1.15.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.10.tgz#768169145a778f8f5dfcb6360aead414a3994fee" + integrity sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "<1" + +"@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== @@ -2920,7 +3094,7 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== -"@types/ws@^8.5.5": +"@types/ws@^8.5.10": version "8.18.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== @@ -2944,6 +3118,11 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== +"@vercel/oidc@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@vercel/oidc/-/oidc-3.0.3.tgz#82c2b6dd4d5c3b37dcb1189718cdeb9db402d052" + integrity sha512-yNEQvPcVrK9sIe637+I0jD6leluPxzwJKx/Haw6F4H77CdDsszUn5V3o96LPziXkSNE2B83+Z3mjqGKBK/R6Gg== + "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" @@ -3105,7 +3284,7 @@ acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== -address@^1.0.1, address@^1.1.2: +address@^1.0.1: version "1.2.2" resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== @@ -3123,6 +3302,16 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ai@5.0.88, ai@^5.0.30: + version "5.0.88" + resolved "https://registry.yarnpkg.com/ai/-/ai-5.0.88.tgz#2726caa09e4fb2a507ab0b1e061ee73387eca0d4" + integrity sha512-72nSwQT6iMgfbblwDo59cmFTtsNzfyMVH9MigeIh5IHiqoDqxRAkv0IBb9XYj6RD52tAJw7Wj/n+LEhezvYqkw== + dependencies: + "@ai-sdk/gateway" "2.0.7" + "@ai-sdk/provider" "2.0.0" + "@ai-sdk/provider-utils" "3.0.16" + "@opentelemetry/api" "1.9.0" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -3130,7 +3319,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -3142,7 +3331,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.5: +ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3162,31 +3351,32 @@ ajv@^8.0.0, ajv@^8.9.0: json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -algoliasearch-helper@^3.22.6: - version "3.25.0" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.25.0.tgz#15cc79ad7909db66b8bb5a5a9c38b40e3941fa2f" - integrity sha512-vQoK43U6HXA9/euCqLjvyNdM4G2Fiu/VFp4ae0Gau9sZeIKBPvUPnXfLYAe65Bg7PFuw03coeu5K6lTPSXRObw== +algoliasearch-helper@^3.26.0: + version "3.26.0" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz#d6e283396a9fc5bf944f365dc3b712570314363f" + integrity sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^5.14.2, algoliasearch@^5.17.1: - version "5.24.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.24.0.tgz#14149402b1702888f3336dc063ee5fc1749c62af" - integrity sha512-CkaUygzZ91Xbw11s0CsHMawrK3tl+Ue57725HGRgRzKgt2Z4wvXVXRCtQfvzh8K7Tp4Zp7f1pyHAtMROtTJHxg== - dependencies: - "@algolia/client-abtesting" "5.24.0" - "@algolia/client-analytics" "5.24.0" - "@algolia/client-common" "5.24.0" - "@algolia/client-insights" "5.24.0" - "@algolia/client-personalization" "5.24.0" - "@algolia/client-query-suggestions" "5.24.0" - "@algolia/client-search" "5.24.0" - "@algolia/ingestion" "1.24.0" - "@algolia/monitoring" "1.24.0" - "@algolia/recommend" "5.24.0" - "@algolia/requester-browser-xhr" "5.24.0" - "@algolia/requester-fetch" "5.24.0" - "@algolia/requester-node-http" "5.24.0" +algoliasearch@^5.28.0, algoliasearch@^5.37.0: + version "5.42.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.42.0.tgz#c30247e6480030471dfa2899f591878ff2fc5e15" + integrity sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ== + dependencies: + "@algolia/abtesting" "1.8.0" + "@algolia/client-abtesting" "5.42.0" + "@algolia/client-analytics" "5.42.0" + "@algolia/client-common" "5.42.0" + "@algolia/client-insights" "5.42.0" + "@algolia/client-personalization" "5.42.0" + "@algolia/client-query-suggestions" "5.42.0" + "@algolia/client-search" "5.42.0" + "@algolia/ingestion" "1.42.0" + "@algolia/monitoring" "1.42.0" + "@algolia/recommend" "5.42.0" + "@algolia/requester-browser-xhr" "5.42.0" + "@algolia/requester-fetch" "5.42.0" + "@algolia/requester-node-http" "5.42.0" ansi-align@^3.0.1: version "3.0.1" @@ -3282,11 +3472,6 @@ astring@^1.8.0: resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - autocomplete.js@^0.37.1: version "0.37.1" resolved "https://registry.yarnpkg.com/autocomplete.js/-/autocomplete.js-0.37.1.tgz#a29a048d827e7d2bf8f7df8b831766e5cc97df01" @@ -3403,6 +3588,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +baseline-browser-mapping@^2.8.19: + version "2.8.25" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz#947dc6f81778e0fa0424a2ab9ea09a3033e71109" + integrity sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3450,7 +3640,7 @@ body-parser@1.20.3: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.0.11: +bonjour-service@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== @@ -3513,7 +3703,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4: +browserslist@^4.0.0, browserslist@^4.23.0, browserslist@^4.24.0, browserslist@^4.24.4: version "4.24.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== @@ -3523,6 +3713,17 @@ browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4 node-releases "^2.0.19" update-browserslist-db "^1.1.3" +browserslist@^4.26.0: + version "4.27.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.27.0.tgz#755654744feae978fbb123718b2f139bc0fa6697" + integrity sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw== + dependencies: + baseline-browser-mapping "^2.8.19" + caniuse-lite "^1.0.30001751" + electron-to-chromium "^1.5.238" + node-releases "^2.0.26" + update-browserslist-db "^1.1.4" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3536,6 +3737,13 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3633,17 +3841,17 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001716: - version "1.0.30001717" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129" - integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001716, caniuse-lite@^1.0.30001751: + version "1.0.30001754" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz" + integrity sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg== ccount@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3725,7 +3933,7 @@ chevrotain@~11.0.3: "@chevrotain/utils" "11.0.3" lodash-es "4.17.21" -chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3760,7 +3968,7 @@ classnames@^2.3.2: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== -clean-css@^5.2.2, clean-css@^5.3.2, clean-css@~5.3.2: +clean-css@^5.2.2, clean-css@^5.3.3, clean-css@~5.3.2: version "5.3.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== @@ -3942,7 +4150,7 @@ confbox@^0.1.8: resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== -confbox@^0.2.1: +confbox@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110" integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ== @@ -3981,11 +4189,6 @@ console-control-strings@^1.0.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -"consolidated-events@^1.1.0 || ^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" - integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== - content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -4018,11 +4221,6 @@ cookie@0.7.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== -copy-text-to-clipboard@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz#0202b2d9bdae30a49a53f898626dcc3b49ad960b" - integrity sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q== - copy-webpack-plugin@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" @@ -4071,17 +4269,6 @@ cose-base@^2.2.0: dependencies: layout-base "^2.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" @@ -4133,16 +4320,16 @@ css-declaration-sorter@^7.2.0: resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== -css-has-pseudo@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz#fb42e8de7371f2896961e1f6308f13c2c7019b72" - integrity sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ== +css-has-pseudo@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz#a5ee2daf5f70a2032f3cefdf1e36e7f52a243873" + integrity sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA== dependencies: "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" postcss-value-parser "^4.2.0" -css-loader@^6.8.1: +css-loader@^6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== @@ -4230,10 +4417,10 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -cssdb@^8.2.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.2.5.tgz#728313b62c744ea1590f740ef7827ec0ef5f80a1" - integrity sha512-leAt8/hdTCtzql9ZZi86uYAmCLzVKpJMMdjbvOGVnXFXz/BWFpBmM1MHEHU/RqtPyRYmabVmEW1DtX3YGLuuLA== +cssdb@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.4.2.tgz#1a367ab1904c97af0bb2c7ae179764deae7b078b" + integrity sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg== cssesc@^3.0.0: version "3.0.0" @@ -4604,38 +4791,45 @@ d3@^7.9.0: d3-transition "3" d3-zoom "3" -dagre-d3-es@7.0.11: - version "7.0.11" - resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz#2237e726c0577bfe67d1a7cfd2265b9ab2c15c40" - integrity sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw== +dagre-d3-es@7.0.13: + version "7.0.13" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.13.tgz#acfb4b449f6dcdd48d8ea8081a6d8c59bc8128c3" + integrity sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q== dependencies: d3 "^7.9.0" lodash-es "^4.17.21" -dayjs@^1.11.13: - version "1.11.13" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" - integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== +dayjs@^1.11.18: + version "1.11.19" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.19.tgz#15dc98e854bb43917f12021806af897c58ae2938" + integrity sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw== debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@^2.6.0: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.4.0: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" +debug@^4.4.1: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + decko@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" @@ -4660,17 +4854,23 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@^4.2.2, deepmerge@^4.3.1: +deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -default-gateway@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" - integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== dependencies: - execa "^5.0.0" + bundle-name "^4.1.0" + default-browser-id "^5.0.0" defer-to-connect@^2.0.1: version "2.0.1" @@ -4691,6 +4891,11 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== + define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" @@ -4700,20 +4905,6 @@ define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -del@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - delaunator@5: version "5.0.1" resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" @@ -4731,7 +4922,7 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dequal@^2.0.0: +dequal@^2.0.0, dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== @@ -4751,14 +4942,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - detect-port@^1.5.1: version "1.6.1" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" @@ -4879,13 +5062,20 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.0.6, dompurify@^3.2.4: +dompurify@^3.0.6: version "3.2.5" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.5.tgz#11b108656a5fb72b24d916df17a1421663d7129c" integrity sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ== optionalDependencies: "@types/trusted-types" "^2.0.7" +dompurify@^3.2.5: + version "3.3.0" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.3.0.tgz#aaaadbb83d87e1c2fbb066452416359e5b62ec97" + integrity sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -4948,6 +5138,11 @@ electron-to-chromium@^1.5.149: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.150.tgz#3120bf34453a7a82cb4d9335df20680b2bb40649" integrity sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA== +electron-to-chromium@^1.5.238: + version "1.5.245" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.245.tgz#81aea81adf1e06b6f703b4b35ac6d543421d0fd9" + integrity sha512-rdmGfW47ZhL/oWEJAY4qxRtdly2B98ooTJ0pdEI4jhVLZ6tNf8fPtov2wS1IRKwFJT92le3x4Knxiwzl7cPPpQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -5211,7 +5406,7 @@ eval@^0.1.8: "@types/node" "*" require-like ">= 0.1.1" -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -5226,7 +5421,12 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: +eventsource-parser@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.6.tgz#292e165e34cacbc936c3c92719ef326d4aeb4e90" + integrity sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg== + +execa@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -5246,7 +5446,7 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -express@^4.17.3: +express@^4.21.2: version "4.21.2" resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== @@ -5283,10 +5483,10 @@ express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" -exsolve@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.5.tgz#1f5b6b4fe82ad6b28a173ccb955a635d77859dcf" - integrity sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg== +exsolve@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.7.tgz#3b74e4c7ca5c5f9a19c3626ca857309fa99f9e9e" + integrity sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw== extend-shallow@^2.0.1: version "2.0.1" @@ -5386,11 +5586,6 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -5419,21 +5614,6 @@ find-cache-dir@^4.0.0: common-path-prefix "^3.0.0" pkg-dir "^7.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" @@ -5457,25 +5637,6 @@ foreach@^2.0.4: resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - form-data-encoder@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" @@ -5515,26 +5676,6 @@ fs-extra@^11.1.1, fs-extra@^11.2.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -5628,23 +5769,16 @@ glob-parent@^6.0.1: dependencies: is-glob "^4.0.3" +glob-to-regex.js@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-dirs@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" @@ -5652,33 +5786,17 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^15.14.0: +globals@^15.15.0: version "15.15.0" resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== -globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -6027,11 +6145,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-entities@^2.3.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" - integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== - html-escaper@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -6140,7 +6253,7 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== -http-proxy-middleware@^2.0.3: +http-proxy-middleware@^2.0.9: version "2.0.9" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== @@ -6186,6 +6299,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -6215,24 +6333,17 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -image-size@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.2.1.tgz#ee118aedfe666db1a6ee12bed5821cde3740276d" - integrity sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw== - dependencies: - queue "6.0.2" +image-size@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.2.tgz#84a7b43704db5736f364bf0d1b029821299b4bdc" + integrity sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w== immediate@^3.2.3: version "3.3.0" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== - -import-fresh@^3.1.0, import-fresh@^3.3.0: +import-fresh@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== @@ -6260,30 +6371,22 @@ infima@0.2.0-alpha.45: resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.45.tgz#542aab5a249274d81679631b492973dd2c1e7466" integrity sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw== -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== +inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + ini@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -6303,11 +6406,6 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -6320,7 +6418,7 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: +ipaddr.js@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== @@ -6384,6 +6482,11 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -6411,6 +6514,13 @@ is-hexadecimal@^2.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + is-installed-globally@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" @@ -6419,6 +6529,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-network-error@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.3.0.tgz#2ce62cbca444abd506f8a900f39d20b898d37512" + integrity sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw== + is-npm@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-6.0.0.tgz#b59e75e8915543ca5d881ecff864077cba095261" @@ -6439,11 +6554,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -6476,11 +6586,6 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -6498,6 +6603,13 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + is-yarn-global@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.4.1.tgz#b312d902b313f81e4eaf98b6361ba2b45cd694bb" @@ -6632,6 +6744,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + json5@^2.1.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -6646,10 +6763,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -katex@^0.16.9: - version "0.16.22" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.22.tgz#d2b3d66464b1e6d69e6463b28a86ced5a02c5ccd" - integrity sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg== +katex@^0.16.22: + version "0.16.25" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.25.tgz#61699984277e3bdb3e89e0e446b83cd0a57d87db" + integrity sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q== dependencies: commander "^8.3.0" @@ -6698,13 +6815,13 @@ latest-version@^7.0.0: dependencies: package-json "^8.1.0" -launch-editor@^2.6.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42" - integrity sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA== +launch-editor@^2.6.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.12.0.tgz#cc740f4e0263a6b62ead2485f9896e545321f817" + integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg== dependencies: - picocolors "^1.0.0" - shell-quote "^1.8.1" + picocolors "^1.1.1" + shell-quote "^1.8.3" layout-base@^1.0.0: version "1.0.2" @@ -6745,34 +6862,14 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" - integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== - -local-pkg@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.1.1.tgz#f5fe74a97a3bd3c165788ee08ca9fbe998dc58dd" - integrity sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg== +local-pkg@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.1.2.tgz#c03d208787126445303f8161619dc701afa4abb5" + integrity sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A== dependencies: mlly "^1.7.4" - pkg-types "^2.0.1" - quansync "^0.2.8" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" + pkg-types "^2.3.0" + quansync "^0.2.11" locate-path@^7.1.0: version "7.2.0" @@ -6874,10 +6971,10 @@ markdown-table@^3.0.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== -marked@^15.0.7: - version "15.0.11" - resolved "https://registry.yarnpkg.com/marked/-/marked-15.0.11.tgz#08a8d12c285e16259e44287b89ce0d871c9d55e8" - integrity sha512-1BEXAU2euRCG3xwgLVT1y0xbJEld1XOrmRJpUwRCcy7rxhSCwMrmEu9LXoPhHSCJG41V7YcQ2mjKRr5BA3ITIA== +marked@^16.2.1, marked@^16.3.0: + version "16.4.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.1.tgz#db37c878cfa28fa57b8dd471fe92a83282911052" + integrity sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg== marked@^4.3.0: version "4.3.0" @@ -7122,12 +7219,17 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.1.2, memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== +memfs@^4.43.1: + version "4.50.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.50.0.tgz#1832177d5592ec1e6a816fb4fe01012ada2856e7" + integrity sha512-N0LUYQMUA1yS5tJKmMtU9yprPm6ZIg24yr/OVv/7t6q0kKDIho4cBbXRi1XKttUmNYDYgF/q45qrKE/UhGO0CA== dependencies: - fs-monkey "^1.0.4" + "@jsonjoy.com/json-pack" "^1.11.0" + "@jsonjoy.com/util" "^1.9.0" + glob-to-regex.js "^1.0.1" + thingies "^2.5.0" + tree-dump "^1.0.3" + tslib "^2.0.0" merge-descriptors@1.0.3: version "1.0.3" @@ -7144,27 +7246,27 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -mermaid@>=10.4: - version "11.6.0" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.6.0.tgz#eee45cdc3087be561a19faf01745596d946bb575" - integrity sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg== +mermaid@>=11.6.0: + version "11.12.1" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.12.1.tgz#97445451ce7d0d3740bc2159cb25464bece60b67" + integrity sha512-UlIZrRariB11TY1RtTgUWp65tphtBv4CSq7vyS2ZZ2TgoMjs2nloq+wFqxiwcxlhHUvs7DPGgMjs2aeQxz5h9g== dependencies: - "@braintree/sanitize-url" "^7.0.4" - "@iconify/utils" "^2.1.33" - "@mermaid-js/parser" "^0.4.0" + "@braintree/sanitize-url" "^7.1.1" + "@iconify/utils" "^3.0.1" + "@mermaid-js/parser" "^0.6.3" "@types/d3" "^7.4.3" cytoscape "^3.29.3" cytoscape-cose-bilkent "^4.1.0" cytoscape-fcose "^2.2.0" d3 "^7.9.0" d3-sankey "^0.12.3" - dagre-d3-es "7.0.11" - dayjs "^1.11.13" - dompurify "^3.2.4" - katex "^0.16.9" + dagre-d3-es "7.0.13" + dayjs "^1.11.18" + dompurify "^3.2.5" + katex "^0.16.22" khroma "^2.1.0" lodash-es "^4.17.21" - marked "^15.0.7" + marked "^16.2.1" roughjs "^4.6.6" stylis "^4.3.6" ts-dedent "^2.2.0" @@ -7604,7 +7706,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0: version "1.54.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== @@ -7621,13 +7723,20 @@ mime-types@2.1.18: dependencies: mime-db "~1.33.0" -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" +mime-types@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" + integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== + dependencies: + mime-db "^1.54.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -7648,10 +7757,10 @@ mimic-response@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== -mini-css-extract-plugin@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz#966031b468917a5446f4c24a80854b2947503c5b" - integrity sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w== +mini-css-extract-plugin@^2.9.2: + version "2.9.4" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz#cafa1a42f8c71357f49cd1566810d74ff1cb0200" + integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -7661,7 +7770,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@3.1.2, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -7742,7 +7851,7 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@^3.3.7, nanoid@^3.3.8: +nanoid@^3.3.11, nanoid@^3.3.7, nanoid@^3.3.8: version "3.3.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== @@ -7828,6 +7937,11 @@ node-releases@^2.0.19: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== +node-releases@^2.0.26: + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== + nopt@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" @@ -7960,7 +8074,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: +on-finished@2.4.1, on-finished@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -7972,7 +8086,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== @@ -7986,7 +8100,17 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^8.0.9, open@^8.4.0: +open@^10.0.3: + version "10.2.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.2.0.tgz#b9d855be007620e80b6fb05fac98141fe62db73c" + integrity sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA== + dependencies: + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + wsl-utils "^0.1.0" + +open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -8014,19 +8138,10 @@ p-cancelable@^3.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^4.0.0: version "4.0.0" @@ -8035,20 +8150,6 @@ p-limit@^4.0.0: dependencies: yocto-queue "^1.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-locate@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" @@ -8063,18 +8164,29 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-retry@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.1.tgz#81828f8dc61c6ef5a800585491572cc9892703af" + integrity sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ== dependencies: - "@types/retry" "0.12.0" + "@types/retry" "0.12.2" + is-network-error "^1.0.0" retry "^0.13.1" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" package-json@^8.1.0: version "8.1.1" @@ -8119,7 +8231,7 @@ parse-entities@^4.0.0: is-decimal "^2.0.0" is-hexadecimal "^2.0.0" -parse-json@^5.0.0, parse-json@^5.2.0: +parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8177,26 +8289,11 @@ path-data-parser@0.1.0, path-data-parser@^0.1.0: resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - path-exists@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - path-is-inside@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -8270,22 +8367,15 @@ pkg-types@^1.3.0: mlly "^1.7.4" pathe "^2.0.1" -pkg-types@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.1.0.tgz#70c9e1b9c74b63fdde749876ee0aa007ea9edead" - integrity sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A== +pkg-types@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.3.0.tgz#037f2c19bd5402966ff6810e32706558cb5b5726" + integrity sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig== dependencies: - confbox "^0.2.1" - exsolve "^1.0.1" + confbox "^0.2.2" + exsolve "^1.0.7" pathe "^2.0.3" -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -8333,15 +8423,15 @@ postcss-clamp@^4.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-color-functional-notation@^7.0.9: - version "7.0.9" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.9.tgz#2be1abbdd68fc7e8906a7a4ae6e6c8484aae8485" - integrity sha512-WScwD3pSsIz+QP97sPkGCeJm7xUH0J18k6zV5o8O2a4cQJyv15vLUx/WFQajuJVgZhmJL5awDu8zHnqzAzm4lw== +postcss-color-functional-notation@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz#9a3df2296889e629fde18b873bb1f50a4ecf4b83" + integrity sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-color-hex-alpha@^10.0.0: @@ -8378,35 +8468,35 @@ postcss-convert-values@^6.1.0: browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-custom-media@^11.0.5: - version "11.0.5" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-11.0.5.tgz#2fcd88a9b1d4da41c67dac6f2def903063a3377d" - integrity sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ== - dependencies: - "@csstools/cascade-layer-name-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/media-query-list-parser" "^4.0.2" - -postcss-custom-properties@^14.0.4: - version "14.0.4" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-14.0.4.tgz#de9c663285a98833a946d7003a34369d3ce373a9" - integrity sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A== - dependencies: - "@csstools/cascade-layer-name-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" +postcss-custom-media@^11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz#6b450e5bfa209efb736830066682e6567bd04967" + integrity sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +postcss-custom-properties@^14.0.6: + version "14.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz#1af73a650bf115ba052cf915287c9982825fc90e" + integrity sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" -postcss-custom-selectors@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-8.0.4.tgz#95ef8268fdbbbd84f34cf84a4517c9d99d419c5a" - integrity sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg== +postcss-custom-selectors@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz#9448ed37a12271d7ab6cb364b6f76a46a4a323e8" + integrity sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg== dependencies: - "@csstools/cascade-layer-name-parser" "^2.0.4" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" postcss-selector-parser "^7.0.0" postcss-dir-pseudo-class@^9.0.1: @@ -8443,12 +8533,12 @@ postcss-discard-unused@^6.0.5: dependencies: postcss-selector-parser "^6.0.16" -postcss-double-position-gradients@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.1.tgz#5fde3de9fb78b467244d8c4fde39f60397beb0ce" - integrity sha512-ZitCwmvOR4JzXmKw6sZblTgwV1dcfLvClcyjADuqZ5hU0Uk4SVNpvSN9w8NcJ7XuxhRYxVA8m8AB3gy+HNBQOA== +postcss-double-position-gradients@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz#b482d08b5ced092b393eb297d07976ab482d4cad" + integrity sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g== dependencies: - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" @@ -8484,18 +8574,18 @@ postcss-image-set-function@^7.0.0: "@csstools/utilities" "^2.0.0" postcss-value-parser "^4.2.0" -postcss-lab-function@^7.0.9: - version "7.0.9" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.9.tgz#09052f22cc2b8c589e9b29b5c0a10be105b29b69" - integrity sha512-IGbsIXbqMDusymJAKYX+f9oakPo89wL9Pzd/qRBQOVf3EIQWT9hgvqC4Me6Dkzxp3KPuIBf6LPkjrLHe/6ZMIQ== +postcss-lab-function@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz#eb555ac542607730eb0a87555074e4a5c6eef6e4" + integrity sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w== dependencies: - "@csstools/css-color-parser" "^3.0.9" - "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" "@csstools/utilities" "^2.0.0" -postcss-loader@^7.3.3: +postcss-loader@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== @@ -8597,12 +8687,12 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nesting@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.1.tgz#c405796d7245a3e4c267a9956cacfe9670b5d43e" - integrity sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ== +postcss-nesting@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.2.tgz#fde0d4df772b76d03b52eccc84372e8d1ca1402e" + integrity sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ== dependencies: - "@csstools/selector-resolve-nested" "^3.0.0" + "@csstools/selector-resolve-nested" "^3.1.0" "@csstools/selector-specificity" "^5.0.0" postcss-selector-parser "^7.0.0" @@ -8705,67 +8795,71 @@ postcss-prefix-selector@^1.16.1: resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.1.tgz#87a77523838b79c0e8aec29f173234b2987cdc04" integrity sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ== -postcss-preset-env@^10.1.0: - version "10.1.6" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.1.6.tgz#0f5456ea55a6bcbd0fd3c5f41e194881f42b17e5" - integrity sha512-1jRD7vttKLJ7o0mcmmYWKRLm7W14rI8K1I7Y41OeXUPEVc/CAzfTssNUeJ0zKbR+zMk4boqct/gwS/poIFF5Lg== - dependencies: - "@csstools/postcss-cascade-layers" "^5.0.1" - "@csstools/postcss-color-function" "^4.0.9" - "@csstools/postcss-color-mix-function" "^3.0.9" - "@csstools/postcss-content-alt-text" "^2.0.5" - "@csstools/postcss-exponential-functions" "^2.0.8" +postcss-preset-env@^10.2.1: + version "10.4.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz#fa6167a307f337b2bcdd1d125604ff97cdeb5142" + integrity sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw== + dependencies: + "@csstools/postcss-alpha-function" "^1.0.1" + "@csstools/postcss-cascade-layers" "^5.0.2" + "@csstools/postcss-color-function" "^4.0.12" + "@csstools/postcss-color-function-display-p3-linear" "^1.0.1" + "@csstools/postcss-color-mix-function" "^3.0.12" + "@csstools/postcss-color-mix-variadic-function-arguments" "^1.0.2" + "@csstools/postcss-content-alt-text" "^2.0.8" + "@csstools/postcss-contrast-color-function" "^2.0.12" + "@csstools/postcss-exponential-functions" "^2.0.9" "@csstools/postcss-font-format-keywords" "^4.0.0" - "@csstools/postcss-gamut-mapping" "^2.0.9" - "@csstools/postcss-gradients-interpolation-method" "^5.0.9" - "@csstools/postcss-hwb-function" "^4.0.9" - "@csstools/postcss-ic-unit" "^4.0.1" + "@csstools/postcss-gamut-mapping" "^2.0.11" + "@csstools/postcss-gradients-interpolation-method" "^5.0.12" + "@csstools/postcss-hwb-function" "^4.0.12" + "@csstools/postcss-ic-unit" "^4.0.4" "@csstools/postcss-initial" "^2.0.1" - "@csstools/postcss-is-pseudo-class" "^5.0.1" - "@csstools/postcss-light-dark-function" "^2.0.8" + "@csstools/postcss-is-pseudo-class" "^5.0.3" + "@csstools/postcss-light-dark-function" "^2.0.11" "@csstools/postcss-logical-float-and-clear" "^3.0.0" "@csstools/postcss-logical-overflow" "^2.0.0" "@csstools/postcss-logical-overscroll-behavior" "^2.0.0" "@csstools/postcss-logical-resize" "^3.0.0" - "@csstools/postcss-logical-viewport-units" "^3.0.3" - "@csstools/postcss-media-minmax" "^2.0.8" - "@csstools/postcss-media-queries-aspect-ratio-number-values" "^3.0.4" + "@csstools/postcss-logical-viewport-units" "^3.0.4" + "@csstools/postcss-media-minmax" "^2.0.9" + "@csstools/postcss-media-queries-aspect-ratio-number-values" "^3.0.5" "@csstools/postcss-nested-calc" "^4.0.0" "@csstools/postcss-normalize-display-values" "^4.0.0" - "@csstools/postcss-oklab-function" "^4.0.9" - "@csstools/postcss-progressive-custom-properties" "^4.0.1" - "@csstools/postcss-random-function" "^2.0.0" - "@csstools/postcss-relative-color-syntax" "^3.0.9" + "@csstools/postcss-oklab-function" "^4.0.12" + "@csstools/postcss-progressive-custom-properties" "^4.2.1" + "@csstools/postcss-random-function" "^2.0.1" + "@csstools/postcss-relative-color-syntax" "^3.0.12" "@csstools/postcss-scope-pseudo-class" "^4.0.1" - "@csstools/postcss-sign-functions" "^1.1.3" - "@csstools/postcss-stepped-value-functions" "^4.0.8" - "@csstools/postcss-text-decoration-shorthand" "^4.0.2" - "@csstools/postcss-trigonometric-functions" "^4.0.8" + "@csstools/postcss-sign-functions" "^1.1.4" + "@csstools/postcss-stepped-value-functions" "^4.0.9" + "@csstools/postcss-text-decoration-shorthand" "^4.0.3" + "@csstools/postcss-trigonometric-functions" "^4.0.9" "@csstools/postcss-unset-value" "^4.0.0" autoprefixer "^10.4.21" - browserslist "^4.24.4" + browserslist "^4.26.0" css-blank-pseudo "^7.0.1" - css-has-pseudo "^7.0.2" + css-has-pseudo "^7.0.3" css-prefers-color-scheme "^10.0.0" - cssdb "^8.2.5" + cssdb "^8.4.2" postcss-attribute-case-insensitive "^7.0.1" postcss-clamp "^4.1.0" - postcss-color-functional-notation "^7.0.9" + postcss-color-functional-notation "^7.0.12" postcss-color-hex-alpha "^10.0.0" postcss-color-rebeccapurple "^10.0.0" - postcss-custom-media "^11.0.5" - postcss-custom-properties "^14.0.4" - postcss-custom-selectors "^8.0.4" + postcss-custom-media "^11.0.6" + postcss-custom-properties "^14.0.6" + postcss-custom-selectors "^8.0.5" postcss-dir-pseudo-class "^9.0.1" - postcss-double-position-gradients "^6.0.1" + postcss-double-position-gradients "^6.0.4" postcss-focus-visible "^10.0.1" postcss-focus-within "^9.0.1" postcss-font-variant "^5.0.0" postcss-gap-properties "^6.0.0" postcss-image-set-function "^7.0.0" - postcss-lab-function "^7.0.9" + postcss-lab-function "^7.0.12" postcss-logical "^8.1.0" - postcss-nesting "^13.0.1" + postcss-nesting "^13.0.2" postcss-opacity-percentage "^3.0.0" postcss-overflow-shorthand "^6.0.0" postcss-page-break "^3.0.4" @@ -8872,7 +8966,7 @@ postcss@8.4.49: picocolors "^1.1.1" source-map-js "^1.2.1" -postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.45: +postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33, postcss@^8.4.45: version "8.5.3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== @@ -8881,6 +8975,15 @@ postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4 picocolors "^1.1.1" source-map-js "^1.2.1" +postcss@^8.5.4: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + prebuild-install@^7.1.1: version "7.1.3" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" @@ -8938,7 +9041,7 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.0.0, prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.5.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -9004,23 +9107,16 @@ qs@6.13.0: dependencies: side-channel "^1.0.6" -quansync@^0.2.8: - version "0.2.10" - resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1" - integrity sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A== +quansync@^0.2.11: + version "0.2.11" + resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.11.tgz#f9c3adda2e1272e4f8cf3f1457b04cbdb4ee692a" + integrity sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA== queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -9063,36 +9159,6 @@ rc@1.2.8, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - react-dom@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -9101,17 +9167,12 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.2" -react-error-overlay@^6.0.11: - version "6.1.0" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.1.0.tgz#22b86256beb1c5856f08a9a228adb8121dd985f2" - integrity sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ== - react-fast-compare@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -"react-helmet-async@npm:@slorber/react-helmet-async@*", "react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": +"react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz#11fbc6094605cf60aa04a28c17e0aab894b4ecff" integrity sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A== @@ -9127,15 +9188,10 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^17.0.1 || ^18.0.0": - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react-json-view-lite@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz#377cc302821717ac79a1b6d099e1891df54c8662" - integrity sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw== +react-json-view-lite@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz#c7ff011c7cc80e9900abc7aa4916c6a5c6d6c1c6" + integrity sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g== react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" @@ -9194,16 +9250,6 @@ react-tabs@^6.0.2: clsx "^2.0.0" prop-types "^15.5.0" -react-waypoint@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-10.3.0.tgz#fcc60e86c6c9ad2174fa58d066dc6ae54e3df71d" - integrity sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ== - dependencies: - "@babel/runtime" "^7.12.5" - consolidated-events "^1.1.0 || ^2.0.0" - prop-types "^15.0.0" - react-is "^17.0.1 || ^18.0.0" - react@^18.2.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" @@ -9240,18 +9286,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -reading-time@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" - integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - recma-build-jsx@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz#c02f29e047e103d2fab2054954e1761b8ea253c4" @@ -9292,13 +9326,6 @@ recma-stringify@^1.0.0: unified "^11.0.0" vfile "^6.0.0" -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - redoc@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.4.0.tgz#4a978c91bfec426038001b8b6c26d1ebb7c60bb4" @@ -9552,7 +9579,7 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve@^1.1.6, resolve@^1.14.2: +resolve@^1.14.2: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -9578,13 +9605,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - robust-predicates@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" @@ -9610,6 +9630,11 @@ rtlcss@^4.1.0: postcss "^8.4.21" strip-json-comments "^3.1.1" +run-applescript@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.1.0.tgz#2e9e54c4664ec3106c5b5630e249d3d6595c4911" + integrity sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -9649,14 +9674,10 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" +schema-dts@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/schema-dts/-/schema-dts-1.1.5.tgz#9237725d305bac3469f02b292a035107595dc324" + integrity sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg== schema-utils@^3.0.0: version "3.3.0" @@ -9677,6 +9698,16 @@ schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0, schema-utils@^4.3 ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@^4.2.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.3.tgz#5b1850912fa31df90716963d45d9121fdfc09f46" + integrity sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" @@ -9690,7 +9721,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1: +selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -9710,7 +9741,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: +semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== @@ -9847,19 +9878,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" +shell-quote@^1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== should-equal@^2.0.0: version "2.0.0" @@ -10333,10 +10355,13 @@ swagger2openapi@^7.0.8: yaml "^1.10.0" yargs "^17.0.1" -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +swr@^2.2.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/swr/-/swr-2.3.6.tgz#5fee0ee8a0762a16871ee371075cb09422b64f50" + integrity sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw== + dependencies: + dequal "^2.0.3" + use-sync-external-store "^1.4.0" tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" @@ -10412,10 +10437,15 @@ text-decoder@^1.1.0: dependencies: b4a "^1.6.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thingies@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.5.0.tgz#5f7b882c933b85989f8466b528a6247a6881e04f" + integrity sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw== + +throttleit@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-2.1.0.tgz#a7e4aa0bf4845a5bd10daa39ea0c783f631a07b4" + integrity sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw== thunky@^1.0.2: version "1.1.0" @@ -10437,6 +10467,11 @@ tinyexec@^1.0.1: resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.1.tgz#70c31ab7abbb4aea0a24f55d120e5990bfa1e0b1" integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== +tinypool@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" + integrity sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -10467,6 +10502,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-dump@^1.0.3, tree-dump@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== + trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" @@ -10492,7 +10532,7 @@ tslib@2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@^2.0.3, tslib@^2.6.0: +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.6.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -10703,6 +10743,14 @@ update-browserslist-db@^1.1.3: escalade "^3.2.0" picocolors "^1.1.1" +update-browserslist-db@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a" + integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + update-notifier@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" @@ -10924,52 +10972,51 @@ webpack-bundle-analyzer@^4.10.2: sirv "^2.0.3" ws "^7.3.1" -webpack-dev-middleware@^5.3.4: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== +webpack-dev-middleware@^7.4.2: + version "7.4.5" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz#d4e8720aa29cb03bc158084a94edb4594e3b7ac0" + integrity sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA== dependencies: colorette "^2.0.10" - memfs "^3.4.3" - mime-types "^2.1.31" + memfs "^4.43.1" + mime-types "^3.0.1" + on-finished "^2.4.1" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.15.2: - version "4.15.2" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" - integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.5" +webpack-dev-server@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz#96a143d50c58fef0c79107e61df911728d7ceb39" + integrity sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/express-serve-static-core" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" + bonjour-service "^1.2.1" + chokidar "^3.6.0" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^2.0.0" - default-gateway "^6.0.3" - express "^4.17.3" + express "^4.21.2" graceful-fs "^4.2.6" - html-entities "^2.3.2" - http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" + http-proxy-middleware "^2.0.9" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + schema-utils "^4.2.0" + selfsigned "^2.4.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" - webpack-dev-middleware "^5.3.4" - ws "^8.13.0" + webpack-dev-middleware "^7.4.2" + ws "^8.18.0" webpack-merge@^5.9.0: version "5.10.0" @@ -11060,13 +11107,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -11131,10 +11171,17 @@ ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== -ws@^8.13.0: - version "8.18.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== +ws@^8.18.0: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +wsl-utils@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/wsl-utils/-/wsl-utils-0.1.0.tgz#8783d4df671d4d50365be2ee4c71917a0557baab" + integrity sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw== + dependencies: + is-wsl "^3.1.0" xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0" @@ -11168,7 +11215,7 @@ yaml-ast-parser@0.0.43: resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== -yaml@^1.10.0, yaml@^1.7.2: +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -11191,16 +11238,16 @@ yargs@^17.0.1: y18n "^5.0.5" yargs-parser "^21.1.1" -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - yocto-queue@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg== +zod@^4.1.8: + version "4.1.12" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.12.tgz#64f1ea53d00eab91853195653b5af9eee68970f0" + integrity sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ== + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"