Merge branch 'master' into plugin_error_handling

pull/5876/head
Jason Stirnaman 2025-03-13 14:31:47 -05:00 committed by GitHub
commit a1b1705069
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
38 changed files with 2253 additions and 898 deletions

View File

@ -355,9 +355,9 @@ To install {{% product-name %}} on Linux, do one of the following:
echo "943666881a1b8d9b849b74caebf02d3465d6beb716510d86a39f6c8e8dac7515 influxdata-archive.key" \
| sha256sum --check - && cat influxdata-archive.key \
| gpg --dearmor \
| tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null \
| sudo tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null \
&& echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' \
| tee /etc/apt/sources.list.d/influxdata.list
| sudo tee /etc/apt/sources.list.d/influxdata.list
# Install influxdb
sudo apt-get update && sudo apt-get install influxdb2
```

View File

@ -0,0 +1,19 @@
---
title: SQL binary string functions
list_title: Binary string functions
description: >
Use binary string functions to encode and decode binary string values in
SQL queries.
menu:
influxdb3_cloud_dedicated:
name: Binary string
parent: sql-functions
weight: 308
source: /content/shared/sql-reference/functions/binary-string.md
---
<!--
The content of this page is at
// SOURCE /content/shared/sql-reference/functions/binary-string.md
-->

View File

@ -0,0 +1,19 @@
---
title: SQL hashing functions
list_title: Hashing functions
description: >
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
menu:
influxdb3_cloud_dedicated:
name: Hashing
parent: sql-functions
weight: 309
source: /shared/sql-reference/functions/hashing.md
---
<!--
The content for this page is at
// SOURCE /content/shared/sql-reference/functions/hashing.md
-->

View File

@ -10,19 +10,21 @@ menu:
parent: Operators
weight: 302
list_code_example: |
| Operator | Meaning | Example |
| :------: | :------------------------------------------------------- | :---------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
| Operator | Meaning | Example |
| :--------------------: | :------------------------------------------------------- | :------------------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `IS DISTINCT FROM` | Is distinct from | `0 IS DISTINCT FROM 1` |
| `IS NOT DISTINCT FROM` | Is not distinct from | `0 IS NOT DISTINCT FROM 1` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
source: /content/shared/sql-reference/operators/comparison.md
---

View File

@ -0,0 +1,19 @@
---
title: SQL binary string functions
list_title: Binary string functions
description: >
Use binary string functions to encode and decode binary string values in
SQL queries.
menu:
influxdb3_cloud_serverless:
name: Binary string
parent: sql-functions
weight: 308
source: /content/shared/sql-reference/functions/binary-string.md
---
<!--
The content of this page is at
// SOURCE /content/shared/sql-reference/functions/binary-string.md
-->

View File

@ -0,0 +1,19 @@
---
title: SQL hashing functions
list_title: Hashing functions
description: >
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
menu:
influxdb3_cloud_serverless:
name: Hashing
parent: sql-functions
weight: 309
source: /shared/sql-reference/functions/hashing.md
---
<!--
The content for this page is at
// SOURCE /content/shared/sql-reference/functions/hashing.md
-->

View File

@ -10,19 +10,21 @@ menu:
parent: Operators
weight: 302
list_code_example: |
| Operator | Meaning | Example |
| :------: | :------------------------------------------------------- | :---------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
| Operator | Meaning | Example |
| :--------------------: | :------------------------------------------------------- | :------------------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `IS DISTINCT FROM` | Is distinct from | `0 IS DISTINCT FROM 1` |
| `IS NOT DISTINCT FROM` | Is not distinct from | `0 IS NOT DISTINCT FROM 1` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
source: /content/shared/sql-reference/operators/comparison.md
---

View File

@ -37,14 +37,22 @@ installing InfluxDB Clustered.
## Setup, configure, and deploy InfluxDB Clustered
> [!Note]
> #### Deploying in air-gapped environments
>
> To deploy InfluxDB Clustered in an air-gapped environment (without internet access),
> use one of the following approaches:
>
> - **Recommended**: Directly use `kubit local apply`
> - Helm (includes the kubit operator)
> - Directly use the kubit operator
>
> For more information, see [Choose the right deployment tool for your environment](/influxdb3/clustered/install/set-up-cluster/configure-cluster/#choose-the-right-deployment-tool-for-your-environment)
{{< children type="ordered-list" >}}
<!-- TODO: ADD CLUSTER ARCHITECTURE OVERVIEW -->
<!--
-------- TODO: ALL THIS INFORMATION NEEDS TO LAND IN THE ADMIN SECTION ---------
<!---------- TODO: ALL THIS INFORMATION NEEDS TO LAND IN THE ADMIN SECTION ---------
### Updating your InfluxDB Cluster

View File

@ -20,9 +20,64 @@ The AppInstance CRD is defined in a YAML file (use the `example-customer.yml`
provided by InfluxData as a template).
We recommend editing the `AppInstance` resource directly as the primary method
for configuring and managing your InfluxDB cluster. If you are required to use
[Helm](https://helm.sh/), there is a InfluxDB Clustered Helm chart available
for configuring and managing your InfluxDB cluster.
After you have edited your `AppInstance`, use the `kubit` CLI or `kubectl` [deployment tool](/influxdb3/clustered/install/set-up-cluster/configure-cluster/#choose-the-right-deployment-tool-for-your-environment), depending on your requirements.
If you are required to use
[Helm](https://helm.sh/), there is an InfluxDB Clustered Helm chart available
that acts as a wrapper for the `AppInstance` resource and lets you use Helm to
manage configuration changes in your InfluxDB cluster.
{{% expand-wrapper %}}
{{% expand "Choose the right deployment tool for your environment" %}}
| Deployment Tool | Best For | Requirements | Considerations |
|----------------|----------|--------------|----------------|
| [**kubectl**](#when-to-use-kubectl) | Standard deployments | Cluster-wide permissions | Simplest option if you have required permissions |
| [**kubit CLI**](#when-to-use-kubit-cli) | Limited permission environments or air-gapped | Local workstation access | Better for environments with permission restrictions |
| [**Helm**](#when-to-use-helm) | Teams standardized on Helm | Helm installation (includes kubit operator) | Provides consistent deployment with other Helm-managed applications |
### When to use kubectl
Use the `kubectl` approach when:
- You have cluster-wide permissions to install CRDs
- You prefer the simplest deployment method
> [!important]
>
> #### kubectl requires cluster-wide permissions
>
> InfluxDB Clustered uses an `AppInstance` Kubernetes custom resource (CR) to
> configure and deploy your InfluxDB Cluster. Installing a `CustomResourceDefinition`
> (CRD) requires cluster-wide permissions, so if you don't have these permissions,
> `kubectl` may fail.
### When to use kubit CLI
Use the `kubit local apply` CLI approach when:
- You don't have permissions to install CRDs
- You don't have permissions to install operators in the `kubit` namespace
- You don't have permissions to create cluster-wide RBAC
- You're working in an air-gapped environment
- You want to preview generated YAML before applying
- You don't want to run the operator in your cluster
The `kubit local apply` method is specifically designed to avoid having to install the operator in air-gapped environments, making it easier to implement. This approach processes the AppInstance resource on your local machine and then applies the resulting Kubernetes resources directly to the cluster without requiring the kubit operator to be running in the cluster.
### When to use Helm
Use the `Helm` approach when:
- Your team is standardized on Helm for Kubernetes deployments
- You prefer consistent deployment methods across applications
- You want simplified management of the full stack
- You need better support for upgrades and rollbacks
The InfluxDB Clustered Helm chart includes the [kubecfg kubit operator](/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm/#kubecfg-kubit-operator).
{{% /expand %}}
{{% /expand-wrapper %}}
{{< children >}}

View File

@ -128,7 +128,7 @@ In both scenarios, you need a valid _pull secret_.
{{< tabs-wrapper >}}
{{% tabs %}}
[Public registry (non-air-gapped)](#)
[Public registry](#)
[Private registry (air-gapped)](#)
{{% /tabs %}}
@ -136,7 +136,7 @@ In both scenarios, you need a valid _pull secret_.
<!--------------------------- BEGIN Public Registry --------------------------->
#### Public registry (non-air-gapped)
#### Public registry
To pull from the InfluxData registry, you need to create a Kubernetes secret in the target namespace.
@ -161,40 +161,34 @@ If you change the name of the secret, you must also change the value of the
{{% /tab-content %}}
{{% tab-content %}}
<!--------------------------- BEGIN Private Registry -------------------------->
<!--------------------------- BEGIN PRIVATE REGISTRY (AIR-GAPPED) -------------------------->
#### Private registry (air-gapped)
If your Kubernetes cluster can't use a public network to download container images
from the InfluxData container registry, do the following:
from the InfluxData container registry, follow these steps to copy images and
configure the AppInstance for a private registry:
1. Copy the images from the InfluxData registry to your own private registry.
2. Configure your `AppInstance` resource with a reference to your private
registry name.
3. Provide credentials to your private registry.
1. [Copy the images to your private registry](#copy-the-images-to-your-private-registry)
2. [Configure your AppInstance](#configure-your-appinstance)
##### Copy the images
##### Copy the images to your private registry
We recommend using [crane](https://github.com/google/go-containerregistry/tree/main/cmd/crane)
to copy images into your private registry.
Use `crane` to copy images from the InfluxData registry to your own private registry.
1. [Install crane](https://github.com/google/go-containerregistry/tree/main/cmd/crane#installation)
for your system.
2. Use the following command to create a container registry secret file and
retrieve the necessary secrets:
1. [Install crane](https://github.com/google/go-containerregistry/tree/main/cmd/crane#installation)
for your system.
2. Create a container registry secret file and verify access:
{{% code-placeholders "PACKAGE_VERSION" %}}
<!-- pytest.mark.skip -->
```bash
mkdir /tmp/influxdbsecret
mkdir -p /tmp/influxdbsecret
cp influxdb-docker-config.json /tmp/influxdbsecret/config.json
DOCKER_CONFIG=/tmp/influxdbsecret \
crane manifest \
us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:PACKAGE_VERSION
```
{{% /code-placeholders %}}
---
@ -244,8 +238,8 @@ manifest and the output is similar to the following error:
Error: fetching manifest us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:<package-version>: GET https://us-docker.pkg.dev/v2/token?scope=repository%3Ainfluxdb2-artifacts%2Fclustered%2Finfluxdb%3Apull&service=: DENIED: Permission "artifactregistry.repositories.downloadArtifacts" denied on resource "projects/influxdb2-artifacts/locations/us/repositories/clustered" (or it may not exist)
```
The list of images that you need to copy is included in the package metadata.
You can obtain it with any standard OCI image inspection tool--for example:
3. Extract the list of InfluxDB images from the package metadata:
You can use any standard OCI image inspection tool--for example:
{{% code-placeholders "PACKAGE_VERSION" %}}
@ -269,7 +263,7 @@ us-docker.pkg.dev/influxdb2-artifacts/iox/iox@sha256:b59d80add235f29b806badf7410
...
```
Use `crane` to copy the images to your private registry:
4. Use `crane` to copy the images to your private registry:
{{% code-placeholders "REGISTRY_HOSTNAME" %}}
@ -289,49 +283,50 @@ with the hostname of your private registry--for example:
myregistry.mydomain.io
```
##### Configure your AppInstance
Set the `spec.package.spec.images.registryOverride` field in your
`myinfluxdb.yml` to the location of your private registry--for example:
Configure your `AppInstance` resource with a reference to your private registry name.
{{% code-placeholders "REGISTRY_HOSTNAME" %}}
In your `myinfluxdb.yml`:
```yml
1. Set `spec.package.spec.images.registryOverride` to the location of your private registry.
2. If your private container registry requires pull secrets to access images, set `spec.imagePullSecrets.name` to the pull secret name.
{{% expand-wrapper %}}
{{% expand "View `myinfluxdb.yml` AppInstance configuration" %}}
{{% code-placeholders "REGISTRY_HOSTNAME | PULL_SECRET_NAME" %}}
```yaml
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
metadata:
name: influxdb
namespace: influxdb
spec:
package:
spec:
images:
registryOverride: REGISTRY_HOSTNAME
```
{{% /code-placeholders %}}
##### Provide credentials to your private registry
If your private container registry requires pull secrets to access images, you
can create the required kubernetes secrets, and then configure them in your
AppInstance resource--for example:
{{% code-placeholders "PULL_SECRET_NAME" %}}
```yml
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
# Configure connection to PostgreSQL database
values:
global:
catalog:
dsn: "postgres://username:password@postgres-host:5432/influxdb?sslmode=require"
# Configure S3-compatible object storage
objectStorage:
bucket: "influxdb-bucket"
endpoint: "https://s3-endpoint"
accessKeyId: "ACCESS_KEY"
secretAccessKey: "SECRET_KEY"
region: "region"
# Configure image pull secrets if needed
imagePullSecrets:
- name: PULL_SECRET_NAME
```
{{% /code-placeholders %}}
{{% /expand %}}
{{% /expand-wrapper %}}
<!---------------------------- END Private Registry --------------------------->
<!---------------------------- END Private Registry (AIR-GAPPED) --------------------------->
{{% /tab-content %}}
{{< /tabs-wrapper >}}

View File

@ -203,19 +203,18 @@ Error: fetching manifest us-docker.pkg.dev/influxdb2-artifacts/clustered/influxd
{{< tabs-wrapper >}}
{{% tabs %}}
[Public registry (non-air-gapped)](#)
[Public registry](#)
[Private registry (air-gapped)](#)
{{% /tabs %}}
{{% tab-content %}}
<!--------------------------- BEGIN Public Registry --------------------------->
#### Public registry (non-air-gapped)
#### Public registry
To pull from the InfluxData registry, you need to create a Kubernetes secret in the target namespace.
```sh
```bash
kubectl create secret docker-registry gar-docker-secret \
--from-file=.dockerconfigjson=influxdb-docker-config.json \
--namespace influxdb
@ -232,79 +231,97 @@ If you change the name of this secret, you must also change the value of the
`imagePullSecrets.name` field in your `values.yaml`.
<!---------------------------- END Public Registry ---------------------------->
{{% /tab-content %}}
{{% tab-content %}}
<!--------------------------- BEGIN Private Registry -------------------------->
#### Private registry (air-gapped)
If your Kubernetes cluster can't use a public network to download container images
from our container registry, do the following:
For air-gapped environments, you need to:
1. Copy the images from the InfluxDB registry to your own private registry.
2. Configure your `AppInstance` resource with a reference to your private
registry name.
3. Provide credentials to your private registry.
1. [Set up Docker configuration](#set-up-docker-configuration)
2. [Mirror InfluxDB images](#mirror-influxdb-images)
3. [Mirror kubit operator images](#mirror-kubit-operator-images)
4. [Configure registry access in values.yaml](#configure-registry-access-in-valuesyaml)
The list of images that you need to copy is included in the package metadata.
You can obtain it with any standard OCI image inspection tool. For example:
##### Set up Docker configuration
{{% code-placeholders "PACKAGE_VERSION" %}}
Create a directory to store your Docker configuration:
```sh
DOCKER_CONFIG=/tmp/influxdbsecret \
crane config \
us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:PACKAGE_VERSION \
| jq -r '.metadata["oci.image.list"].images[]' \
> /tmp/images.txt
```bash
mkdir -p /tmp/influxdbsecret
cp influxdb-docker-config.json /tmp/influxdbsecret/config.json
```
{{% /code-placeholders %}}
##### Mirror InfluxDB images
The output is a list of image names, similar to the following:
Use `crane` to copy images from the InfluxData registry to your own private registry:
```
us-docker.pkg.dev/influxdb2-artifacts/idpe/idpe-cd-ioxauth@sha256:5f015a7f28a816df706b66d59cb9d6f087d24614f485610619f0e3a808a73864
us-docker.pkg.dev/influxdb2-artifacts/iox/iox@sha256:b59d80add235f29b806badf7410239a3176bc77cf2dc335a1b07ab68615b870c
...
1. [Install crane](https://github.com/google/go-containerregistry/tree/main/cmd/crane#installation) on your system.
2. Extract the list of InfluxDB images:
```bash
DOCKER_CONFIG=/tmp/influxdbsecret \
crane config \
us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:PACKAGE_VERSION \
| jq -r '.metadata["oci.image.list"].images[]' \
> /tmp/influx-images.txt
```
Replace {{% code-placeholder-key %}}`PACKAGE_VERSION`{{% /code-placeholder-key %}} with your InfluxDB Clustered package version.
3. Copy the images to your private registry:
```bash
cat /tmp/influx-images.txt | xargs -I% crane cp % REGISTRY_HOSTNAME/%
```
Replace {{% code-placeholder-key %}}`REGISTRY_HOSTNAME`{{% /code-placeholder-key %}} with your private registry hostname (e.g., `myregistry.mydomain.io`).
##### Mirror kubit operator images
In addition to the InfluxDB images, copy the kubit operator images:
```bash
# Create a list of kubit-related images
cat > /tmp/kubit-images.txt << EOF
ghcr.io/kubecfg/kubit:v0.0.20
ghcr.io/kubecfg/kubecfg/kubecfg:latest
bitnami/kubectl:1.27.5
registry.k8s.io/kubectl:v1.28.0
EOF
# Copy kubit images to your private registry
cat /tmp/kubit-images.txt | xargs -I% crane cp % YOUR_PRIVATE_REGISTRY/%
```
Use `crane` to copy the images to your private registry:
##### Configure registry access in values.yaml
Configure your `values.yaml` to use your private registry:
{{% code-placeholders "REGISTRY_HOSTNAME" %}}
```sh
</tmp/images.txt xargs -I% crane cp % REGISTRY_HOSTNAME/%
```
{{% /code-placeholders %}}
---
Replace {{% code-placeholder-key %}}`REGISTRY_HOSTNAME`{{% /code-placeholder-key %}}
with the hostname of your private registry--for example:
```text
myregistry.mydomain.io
```
---
Set the
`images.registryOverride` field in your `values.yaml` to the location of your
private registry--for example:
{{% code-placeholders "REGISTRY_HOSTNAME" %}}
```yml
```yaml
# Configure registry override for all images
images:
registryOverride: REGISTRY_HOSTNAME
```
# Configure kubit operator images
kubit:
controller:
image: REGISTRY_HOSTNAME/ghcr.io/kubecfg/kubit:v0.0.20
apply_step_image: REGISTRY_HOSTNAME/bitnami/kubectl:1.27.5
render_step_image: REGISTRY_HOSTNAME/registry.k8s.io/kubectl:v1.28.0
kubecfg_image: REGISTRY_HOSTNAME/ghcr.io/kubecfg/kubecfg/kubecfg:latest
# Configure image pull secrets if needed
imagePullSecrets:
- name: your-registry-pull-secret
```
{{% /code-placeholders %}}
Replace {{% code-placeholder-key %}}`REGISTRY_HOSTNAME`{{% /code-placeholder-key %}} with your private registry hostname.
<!---------------------------- END Private Registry --------------------------->
{{% /tab-content %}}
@ -683,4 +700,114 @@ Replace the following:
---
{{< page-nav prev="/influxdb3/clustered/install/secure-cluster/auth/" prevText="Set up authentication" next="/influxdb3/clustered/install/set-up-cluster/licensing" nextText="Install your license" tab="Helm" >}}
### Deploy your cluster
{{< tabs-wrapper >}}
{{% tabs %}}
[Standard deployment](#)
[Air-gapped deployment](#)
{{% /tabs %}}
{{% tab-content %}}
<!--------------------------- BEGIN Standard Deployment --------------------------->
#### Standard deployment (with internet access)
1. Add the InfluxData Helm chart repository:
```bash
helm repo add influxdata https://helm.influxdata.com/
```
2. Update your Helm repositories to ensure you have the latest charts:
```bash
helm repo update
```
3. Deploy the InfluxDB Clustered Helm chart with your custom values:
```bash
helm install influxdb influxdata/influxdb3-clustered \
-f values.yaml \
--namespace influxdb \
--create-namespace
```
4. Verify the deployment:
```bash
kubectl get pods -n influxdb
```
If you need to update your deployment after making changes to your `values.yaml`:
```bash
helm upgrade influxdb influxdata/influxdb3-clustered \
-f values.yaml \
--namespace influxdb
```
<!---------------------------- END Standard Deployment ---------------------------->
{{% /tab-content %}}
{{% tab-content %}}
<!--------------------------- BEGIN Air-gapped Deployment -------------------------->
#### Air-gapped deployment
1. In your air-gapped environment, install the chart from the local tarball that you transferred:
```bash
helm install influxdb ./influxdb3-clustered-X.Y.Z.tgz \
-f values.yaml \
--namespace influxdb \
--create-namespace
```
Replace `X.Y.Z` with the specific chart version you downloaded.
2. Verify the deployment:
```bash
kubectl get pods -n influxdb
```
If you need to update your deployment after making changes to your `values.yaml`:
```bash
helm upgrade influxdb ./influxdb3-clustered-X.Y.Z.tgz \
-f values.yaml \
--namespace influxdb
```
{{% note %}}
#### Understanding kubit's role in air-gapped environments
When deploying with Helm in an air-gapped environment:
1. **Helm deploys the kubit operator** - The Helm chart includes the kubit operator, which needs its images mirrored to your private registry
2. **Operator requires access to all InfluxDB images** - The kubit operator deploys the actual InfluxDB components using images from your private registry
3. **Registry override is essential** - You must set the `images.registryOverride` and configure the kubit operator images correctly in the values file
This is why mirroring both the InfluxDB images and the kubit operator images is necessary for air-gapped deployments.
{{% /note %}}
<!---------------------------- END Air-gapped Deployment --------------------------->
{{% /tab-content %}}
{{< /tabs-wrapper >}}
## Troubleshooting
### Common issues
1. **Image pull errors**
```
Error: failed to create labeled resources: failed to create resources: failed to create resources:
Internal error occurred: failed to create pod sandbox: rpc error: code = Unknown
desc = failed to pull image "us-docker.pkg.dev/...": failed to pull and unpack image "...":
failed to resolve reference "...": failed to do request: ... i/o timeout

View File

@ -22,49 +22,32 @@ following tools:
- **kubit**: A Kubernetes controller that can render and apply jsonnet
templates based on the [kubecfg](https://github.com/kubecfg/kubecfg) jsonnet
tooling and framework
- **helm**: Uses the [InfluxDB Clustered Helm chart](https://github.com/influxdata/helm-charts/tree/master/charts/influxdb3-clustered), which includes the kubit operator.
InfluxDB Clustered uses an `AppInstance` Kubernetes custom resource (CR) to
configure and deploy your InfluxDB Cluster.
Installing a `CustomResourceDefinition` (CRD) requires cluster-wide permissions
and may cause `kubectl` to fail if you do not have those permissions in your cluster.
To compare these tools and deployment methods, see [Choose the right deployment tool for your environment](/influxdb3/clustered/install/set-up-cluster/configure-cluster/#choose-the-right-deployment-tool-for-your-environment).
`kubectl` uses your local credentials to install the `AppInstance` CRD.
If you do not have the necessary permissions, you can
[use the `kubit` CLI to manually install the package in your cluster](?t=kubit#kubectl-kubit-helm).
## Prerequisites
{{% note %}}
**If you meet any of the following criteria,
[install and use the `kubit` CLI](?t=kubit#kubectl-kubit-helm)
on your local machine. This allows you to act as the operator would and deploy
your cluster, but from your terminal.**
- You do not have permissions to install a CRD.
- You do not have permissions to install the operator in the `kubit` namespace.
- You do not have permissions to create cluster-wide role-based access
control (RBAC).
- You want to preview the generated YAML.
- You do not want to run the operator in your Kubernetes cluster.
{{% /note %}}
You can also use [Helm](https://helm.sh/) and the
[InfluxDB Clustered Helm chart](https://github.com/influxdata/helm-charts/tree/master/charts/influxdb3-clustered)
to deploy your InfluxDB cluster.
If you haven't already set up and configured your cluster, see how to
[install InfluxDB Clustered](/influxdb3/clustered/install/).
<!-- Hidden anchor for links to the kubectl/kubit/helm tabs -->
<span id="kubectl-kubit-helm"></span>
{{< tabs-wrapper >}}
{{% tabs %}}
[kubectl](#)
[kubit](#)
[Helm](#)
[kubit CLI](#)
[helm](#)
{{% /tabs %}}
{{% tab-content %}}
<!------------------------------- BEGIN kubectl ------------------------------->
- [`kubectl` standard deployment (with internet access)](#kubectl-standard-deployment-with-internet-access)
- [`kubectl` air-gapped deployment](#kubectl-air-gapped-deployment)
Use the `kubectl apply` command to apply your custom-configured `myinfluxdb.yml`
## kubectl standard deployment (with internet access)
Use the `kubectl apply` command to apply your [custom-configured `myinfluxdb.yml`](/influxdb3/clustered/install/set-up-cluster/configure-cluster/directly/)
and deploy your InfluxDB cluster:
```sh
@ -73,55 +56,150 @@ kubectl apply \
--namespace influxdb
```
> [!Note]
> Due to the additional complexity and maintenance requirements, using `kubectl apply` isn't
> recommended for air-gapped environments.
> Instead, consider using the [`kubit` CLI approach](#kubit-cli), which is specifically designed for air-gapped deployments.
<!-------------------------------- END kubectl -------------------------------->
{{% /tab-content %}}
{{% tab-content %}}
<!-------------------------------- BEGIN kubit CLI -------------------------------->
## Standard and air-gapped deployments
_This approach avoids the need for installing the kubit operator in the cluster,
making it ideal for air-gapped clusters._
> [!Important]
> For air-gapped deployment, ensure you have [configured access to a private registry for InfluxDB images](/influxdb3/clustered/install/set-up-cluster/configure-cluster/directly/#configure-access-to-the-influxDB-container-registry).
1. On a machine with internet access, download the [`kubit` CLI](https://github.com/kubecfg/kubit#cli-tool)--for example:
```bash
curl -L -o kubit https://github.com/kubecfg/kubit/archive/refs/tags/v0.0.20.tar.gz
chmod +x kubit
```
Replace {{% code-placeholder-key %}}`v0.0.20`{{% /code-placeholder-key%}} with the [latest release version](https://github.com/kubecfg/kubit/releases/latest).
2. If deploying InfluxDB in an air-gapped environment (without internet access),
transfer the binary to your air-gapped environment.
3. Use the `kubit local apply` command to process your [custom-configured `myinfluxdb.yml`](/influxdb3/clustered/install/set-up-cluster/configure-cluster/directly/) locally
and apply the resulting resources to your cluster:
```bash
# Point to Docker credentials that have access to your registry
# (public registry for standard deployments or private registry for air-gapped)
DOCKER_CONFIG=/path/to/credentials kubit local apply myinfluxdb.yml
```
If your local system doesn't have required tools installed, use Docker mode:
```bash
# For Linux or macOS
DOCKER_CONFIG=/path/to/credentials kubit local apply --docker myinfluxdb.yml
```
The `kubit local apply` command processes your AppInstance resource locally and
applies the resulting Kubernetes resources directly to your cluster.
<!------------------------------- END kubit CLI ------------------------------->
{{% /tab-content %}}
{{% tab-content %}}
<!-------------------------------- BEGIN kubit -------------------------------->
1. [Install the `kubit` CLI](https://github.com/kubecfg/kubit#cli-tool)
and related tools on your local machine.
2. Use the `kubit local apply` command to apply your custom-configured
`myinfluxdb.yml` and deploy your InfluxDB Cluster.
Set the `DOCKER_CONFIG` environment variable to the directory path of
your InfluxDB Clustered pull secret credentials provided by InfluxData.
```sh
DOCKER_CONFIG=/path/to/pullsecrets kubit local apply myinfuxdb.yml
```
**NOTE:** By default, `kubit` will use tools that are installed on your local system.
You can specify the `--docker` flag to opt-in to using containers instead. This will pull images
for tool dependencies, meaning the required versions are tracked by `kubit`.
<!--------------------------------- END kubit --------------------------------->
{{% /tab-content %}}
{{% tab-content %}}
<!-------------------------------- BEGIN Helm --------------------------------->
- [Helm standard deployment (with internet access)](#helm-standard-deployment-with-internet-access)
- [Helm air-gapped deployment](#helm-air-gapped-deployment)
1. Add the InfluxData Helm chart repository:
## Helm standard deployment (with internet access)
```bash
helm repo add influxdata https://helm.influxdata.com/
```
1. Add the InfluxData Helm chart repository:
2. Deploy your Helm chart using your modified local `values.yaml`:
```bash
helm repo add influxdata https://helm.influxdata.com/
```
```bash
helm upgrade \
--install \
influxdb \
influxdata/influxdb3-clustered \
-f ./values.yml \
--namespace influxdb
```
2. Update your Helm repositories to ensure you have the latest charts:
```bash
helm repo update
```
3. Deploy the InfluxDB Clustered Helm chart with your [customized `values.yaml`](/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm/#create-a-valuesyaml-file):
```bash
helm install influxdb influxdata/influxdb3-clustered \
-f values.yaml \
--namespace influxdb \
--create-namespace
```
If you need to update your deployment after making changes to your `values.yaml`, use the `helm upgrade` command:
```bash
helm upgrade influxdb influxdata/influxdb3-clustered \
-f values.yaml \
--namespace influxdb
```
## Helm air-gapped deployment
> [!Important]
> For air-gapped deployment, ensure you have [configured access to a private registry for InfluxDB images and the kubit operator](/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm/#configure-access-to-the-influxDB-container-registry).
1. On a machine with internet access, download the Helm chart:
```bash
# Add the InfluxData repository
helm repo add influxdata https://helm.influxdata.com/
# Update the repositories
helm repo update
# Download the chart as a tarball
helm pull influxdata/influxdb3-clustered --version X.Y.Z
```
Replace `X.Y.Z` with the specific chart version you want to use.
2. Transfer the chart tarball to your air-gapped environment using your secure file transfer method.
3. In your air-gapped environment, install the chart from the local tarball and values from your [customized `values.yaml`](/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm/#create-a-valuesyaml-file):
```bash
helm install influxdb ./influxdb3-clustered-X.Y.Z.tgz \
-f values.yaml \
--namespace influxdb \
--create-namespace
```
4. Verify the deployment:
```bash
kubectl get pods -n influxdb
```
If you need to update your deployment after making changes to your `values.yaml`, use the `helm upgrade` command:
```bash
helm upgrade influxdb ./influxdb3-clustered-X.Y.Z.tgz \
-f values.yaml \
--namespace influxdb
```
> [!Note]
> #### kubit's role in air-gapped environments
>
> When deploying with Helm in an air-gapped environment:
>
> 1. **Helm deploys the kubit operator** - The Helm chart includes the kubit operator, which needs its images mirrored to your private registry
> 2. **Operator requires access to all InfluxDB images** - The kubit operator deploys the actual InfluxDB components using images from your private registry
> 3. **Registry override is essential** - You must set the `images.registryOverride` and configure the kubit operator images correctly in the values file
>
> This is why you need to [mirror InfluxDB images and kubit operator images](/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm/#mirror-influxdb-images) for air-gapped deployments.
<!--------------------------------- END Helm ---------------------------------->
{{% /tab-content %}}
{{< /tabs-wrapper >}}
@ -204,4 +282,24 @@ influxdb iox-shared-querier-7f5998b9b-fpt62 4/4 Running 1 (6
influxdb kubit-apply-influxdb-g6qpx 0/1 Completed 0 8s
```
## Troubleshoot deploying InfluxDB Clustered
### Common issues
1. **Image pull errors**
- Check that registry override and image pull secrets are properly configured
- For air-gapped: Verify all images are mirrored and `registryOverride` is correctly set
2. **Missing kubit binary**
- Ensure you've transferred the correct version of kubit for your platform
- Verify the binary has executable permissions
3. **Kubit operator failures in air-gapped environments**
- Ensure you've properly mirrored all kubit operator images and configured their references in your values file.
4. **PostgreSQL connectivity issues**
- Verify network connectivity to your PostgreSQL database
- Check that database credentials are correct in your configuration
{{< page-nav prev="/influxdb3/clustered/install/set-up-cluster/licensing/" prevText="Install your license" next="/influxdb3/clustered/install/set-up-cluster/test-cluster/" nextText="Test your cluster" >}}

View File

@ -27,7 +27,7 @@ InfluxDB Clustered requires the following prerequisite external dependencies:
Stores the Write-Ahead Log (WAL) for
[InfluxDB Ingesters](/influxdb3/clustered/reference/internals/storage-engine/#ingester).
The following walks through preparing these prerequisites.
## Install prerequisites
- [Install kubectl](#install-kubectl)
- [Set up your Kubernetes cluster](#set-up-your-kubernetes-cluster)
@ -37,7 +37,7 @@ The following walks through preparing these prerequisites.
- [Set up your PostgreSQL-compatible database](#set-up-your-postgresql-compatible-database)
- [Set up local or attached storage](#set-up-local-or-attached-storage)
## Install kubectl
### Install kubectl
Kubernetes provides the `kubectl` command line tool for communicating with a
Kubernetes cluster's control plane. `kubectl` is used to manage your InfluxDB
@ -53,7 +53,7 @@ InfluxDB Clustered Kubernetes deployments require `kubectl` 1.27 or higher.
- [Install kubectl on macOS](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/)
- [Install kubectl on Windows](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/)
## Set up your Kubernetes cluster
#### Set up your Kubernetes cluster
1. Deploy a Kubernetes cluster. The deployment process depends on your
Kubernetes environment or Kubernetes cloud provider. Refer to the
@ -175,7 +175,7 @@ following sizing for {{% product-name %}} components:
Your sizing may need to be different based on your environment, cloud provider,
and workload, but this is a reasonable starting size for your initial testing.
## Install the kubecfg kubit operator
### Install the kubecfg kubit operator
The [`kubecfg kubit` operator](https://github.com/kubecfg/kubit) (maintained by InfluxData)
simplifies the installation and management of the InfluxDB Clustered package.
@ -199,7 +199,7 @@ operator **v0.0.18 or later**.
kubectl apply -k 'https://github.com/kubecfg/kubit//kustomize/global?ref=v0.0.19'
```
## Set up a Kubernetes ingress controller
### Set up a Kubernetes ingress controller
[Kubernetes ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)
routes HTTP/S requests to services within the cluster and requires deploying an
@ -208,19 +208,20 @@ You can provide your own ingress or you can install
[Nginx Ingress Controller](https://github.com/kubernetes/ingress-nginx) to use
the InfluxDB-defined ingress.
{{% note %}}
InfluxDB Clustered components use gRPC/HTTP2 protocols. If using an external
load balancer, you may need to explicitly enable these protocols on your load
balancers.
{{% /note %}}
> [!Important]
> #### Allow gRPC/HTTP2
>
> InfluxDB Clustered components use gRPC/HTTP2 protocols.
> If using an external load balancer,
> you may need to explicitly enable these protocols on your load
> balancers.
## Set up your object store
### Set up your object store
InfluxDB Clustered supports AWS S3 or S3-compatible storage (including Google
Cloud Storage, Azure Blob Storage, and MinIO) for storing
[InfluxDB Parquet files](/influxdb3/clustered/reference/internals/storage-engine/#object-store).
Refer to your object storage provider's documentation for information about
setting up an object store:
Refer to your object storage provider's documentation for information about setting up an object store:
- [Create an AWS S3 bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)
- [Create a Google Cloud Storage bucket](https://cloud.google.com/storage/docs/creating-buckets)
@ -252,7 +253,7 @@ We **strongly** recommend the following:
same namespace is possible, we do not recommend it for production environments.
{{% /note %}}
### Configure object storage permissions
#### Configure object storage permissions
Ensure the identity you use to connect to your S3-compatible object store has
the correct permissions to allow InfluxDB to perform all the actions it needs to.
@ -361,7 +362,7 @@ To configure permissions with MinIO, use the
[example AWS access policy](#view-example-aws-s3-access-policy).
{{% /note %}}
## Set up your PostgreSQL-compatible database
### Set up your PostgreSQL-compatible database
The [InfluxDB Catalog](/influxdb3/clustered/reference/internals/storage-engine/#catalog)
that stores metadata related to your time series data requires a PostgreSQL or
@ -371,7 +372,7 @@ depends on the database and database provider you use.
Refer to your database's or provider's documentation for setting up your
PostgreSQL-compatible database.
### PostgreSQL-compatible database requirements
#### PostgreSQL-compatible database requirements
- PostgreSQL version **13 or 14**.
- **Minimum of 4 GB of memory** or equivalent provider-specific units.
@ -389,7 +390,7 @@ While deploying everything in the same namespace is possible, we do not
recommend it for production environments.
{{% /note %}}
## Set up local or attached storage
### Set up local or attached storage
The [InfluxDB Ingester](/influxdb3/clustered/reference/internals/storage-engine/#ingester)
needs local or attached storage to store the Write-Ahead Log (WAL).

View File

@ -142,7 +142,7 @@ spec:
#### AppInstance image override bug fix
In [20240925-1257864](#20240925-1257864), the AppInstance image override was
In 20240925-1257864, the AppInstance image override was
broken with the introduction of strict always-on license enforcement.
This release fixes that bug.
@ -151,49 +151,19 @@ Clustered in air-gapped environments where the deployment model involves
overriding the default image repository to point to images copied to an
air-gapped registry.
This release is an alternative to [20240925-1257864](#20240925-1257864) for
This release is an alternative to 20240925-1257864 for
customers who depend on this image override feature.
#### Upgrade bug fix
[20240925-1257864](#20240925-1257864) introduced a schema migration bug that
20240925-1257864 introduced a schema migration bug that
caused an `init` container in the `account` Pods to hang indefinitely.
This would only affect InfluxDB Clustered during an upgrade; not a fresh install.
The 20240925-1257864 release has been removed from the release notes, but
relevant updates are included as part of this 20241024-1354148 release.
For customers who experience this bug when attempting to upgrade to
[20240925-1257864](#20240925-1257864), upgrade to this 20241024-1354148 instead.
### Changes
#### Deployment
- Enable overriding the default CPU and memory resource requests and limits for
the Garbage collector and Catalog services.
- Remove the Gateway service and implement the newly introduced Core service.
- Fix logic related to applying default resource limits for IOx components.
- Support [`ResourceQuota`s](https://kubernetes.io/docs/concepts/policy/resource-quotas/)
with the `enableDefaultResourceLimits` feature flag. This causes resource
limits to be applied even to containers that don't normally have limits
applied.
---
## 20240925-1257864 {date="2024-09-25" .checkpoint}
> [!Caution]
> This release has a number of bugs in it which make it unsuitable for customer use.
> If you are currently running this version, please upgrade to
> [20241024-1354148](#20241024-1354148).
### Quickstart
```yaml
spec:
package:
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:202409XX-XXXXXXX
```
### Highlights
20240925-1257864, upgrade to this 20241024-1354148 instead.
#### Default to partial write semantics
@ -283,6 +253,14 @@ The installation of the Prometheus operator should be handled externally.
#### Deployment
- Enable overriding the default CPU and memory resource requests and limits for
the Garbage collector and Catalog services.
- Remove the Gateway service and implement the newly introduced Core service.
- Fix logic related to applying default resource limits for IOx components.
- Support [`ResourceQuota`s](https://kubernetes.io/docs/concepts/policy/resource-quotas/)
with the `enableDefaultResourceLimits` feature flag. This causes resource
limits to be applied even to containers that don't normally have limits
applied.
- Introduces the `nodeAffinity` and CPU/Memory requests setting for "granite"
components. Previously, these settings were only available for core IOx
components.

View File

@ -0,0 +1,19 @@
---
title: SQL binary string functions
list_title: Binary string functions
description: >
Use binary string functions to encode and decode binary string values in
SQL queries.
menu:
influxdb3_clustered:
name: Binary string
parent: sql-functions
weight: 308
source: /content/shared/sql-reference/functions/binary-string.md
---
<!--
The content of this page is at
// SOURCE /content/shared/sql-reference/functions/binary-string.md
-->

View File

@ -0,0 +1,19 @@
---
title: SQL hashing functions
list_title: Hashing functions
description: >
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
menu:
influxdb3_clustered:
name: Hashing
parent: sql-functions
weight: 309
source: /shared/sql-reference/functions/hashing.md
---
<!--
The content for this page is at
// SOURCE /content/shared/sql-reference/functions/hashing.md
-->

View File

@ -10,19 +10,21 @@ menu:
parent: Operators
weight: 302
list_code_example: |
| Operator | Meaning | Example |
| :------: | :------------------------------------------------------- | :---------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
| Operator | Meaning | Example |
| :--------------------: | :------------------------------------------------------- | :------------------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `IS DISTINCT FROM` | Is distinct from | `0 IS DISTINCT FROM 1` |
| `IS NOT DISTINCT FROM` | Is not distinct from | `0 IS NOT DISTINCT FROM 1` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
source: /content/shared/sql-reference/operators/comparison.md
---

View File

@ -0,0 +1,19 @@
---
title: SQL binary string functions
list_title: Binary string functions
description: >
Use binary string functions to encode and decode binary string values in
SQL queries.
menu:
influxdb3_core:
name: Binary string
parent: sql-functions
weight: 308
source: /content/shared/sql-reference/functions/binary-string.md
---
<!--
The content of this page is at
// SOURCE /content/shared/sql-reference/functions/binary-string.md
-->

View File

@ -0,0 +1,19 @@
---
title: SQL hashing functions
list_title: Hashing functions
description: >
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
menu:
influxdb3_core:
name: Hashing
parent: sql-functions
weight: 309
source: /shared/sql-reference/functions/hashing.md
---
<!--
The content for this page is at
// SOURCE /content/shared/sql-reference/functions/hashing.md
-->

View File

@ -10,19 +10,21 @@ menu:
parent: Operators
weight: 302
list_code_example: |
| Operator | Meaning | Example |
| :------: | :------------------------------------------------------- | :---------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
| Operator | Meaning | Example |
| :--------------------: | :------------------------------------------------------- | :------------------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `IS DISTINCT FROM` | Is distinct from | `0 IS DISTINCT FROM 1` |
| `IS NOT DISTINCT FROM` | Is not distinct from | `0 IS NOT DISTINCT FROM 1` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
source: /content/shared/sql-reference/operators/comparison.md
---

View File

@ -0,0 +1,19 @@
---
title: SQL binary string functions
list_title: Binary string functions
description: >
Use binary string functions to encode and decode binary string values in
SQL queries.
menu:
influxdb3_enterprise:
name: Binary string
parent: sql-functions
weight: 308
source: /content/shared/sql-reference/functions/binary-string.md
---
<!--
The content of this page is at
// SOURCE /content/shared/sql-reference/functions/binary-string.md
-->

View File

@ -0,0 +1,19 @@
---
title: SQL hashing functions
list_title: Hashing functions
description: >
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
menu:
influxdb3_enterprise:
name: Hashing
parent: sql-functions
weight: 309
source: /shared/sql-reference/functions/hashing.md
---
<!--
The content for this page is at
// SOURCE /content/shared/sql-reference/functions/hashing.md
-->

View File

@ -10,19 +10,21 @@ menu:
parent: Operators
weight: 302
list_code_example: |
| Operator | Meaning | Example |
| :------: | :------------------------------------------------------- | :---------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
| Operator | Meaning | Example |
| :--------------------: | :------------------------------------------------------- | :------------------------- |
| `=` | Equal to | `123 = 123` |
| `<>` | Not equal to | `123 <> 456` |
| `!=` | Not equal to | `123 != 456` |
| `>` | Greater than | `3 > 2` |
| `>=` | Greater than or equal to | `3 >= 2` |
| `<` | Less than | `1 < 2` |
| `<=` | Less than or equal to | `1 <= 2` |
| `IS DISTINCT FROM` | Is distinct from | `0 IS DISTINCT FROM 1` |
| `IS NOT DISTINCT FROM` | Is not distinct from | `0 IS NOT DISTINCT FROM 1` |
| `~` | Matches a regular expression | `'abc' ~ 'a.*'` |
| `~*` | Matches a regular expression _(case-insensitive)_ | `'Abc' ~* 'A.*'` |
| `!~` | Does not match a regular expression | `'abc' !~ 'd.*'` |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | `'Abc' !~* 'a.*'` |
source: /content/shared/sql-reference/operators/comparison.md
---

View File

@ -12,11 +12,14 @@ aggregate value.
- [bool_or](#bool_or)
- [count](#count)
- [first_value](#first_value)
- [grouping](#grouping)
- [last_value](#last_value)
- [max](#max)
- [mean](#mean)
- [median](#median)
- [min](#min)
- [nth_value](#nth_value)
- [string_agg](#string_agg)
- [sum](#sum)
- [Statistical aggregate functions](#statistical-aggregate-functions)
- [corr](#corr)
@ -37,7 +40,9 @@ aggregate value.
- [stddev_samp](#stddev_samp)
- [var](#var)
- [var_pop](#var_pop)
- [var_population](#var_population)
- [var_samp](#var_samp)
- [var_sample](#var_sample)
- [Approximate aggregate functions](#approximate-aggregate-functions)
- [approx_distinct](#approx_distinct)
- [approx_median](#approx_median)
@ -57,11 +62,14 @@ aggregate value.
- [bool_or](#bool_or)
- [count](#count)
- [first_value](#first_value)
- [grouping](#grouping)
- [last_value](#last_value)
- [max](#max)
- [mean](#mean)
- [median](#median)
- [min](#min)
- [nth_value](#nth_value)
- [string_agg](#string_agg)
- [sum](#sum)
### array_agg
@ -69,9 +77,8 @@ aggregate value.
Returns an array created from the expression elements.
> [!Note]
> `array_agg` returns a `LIST` arrow type which is not supported by InfluxDB.
> To use with InfluxDB, use bracket notation to reference the index of an element
> in the returned array. Arrays are 1-indexed.
> `array_agg` returns a `LIST` arrow type. Use bracket notation to reference the
> index of an element in the returned array. Arrays are 1-indexed.
```sql
array_agg(expression)
@ -85,8 +92,7 @@ array_agg(expression)
{{< expand-wrapper >}}
{{% expand "View `array_agg` query example" %}}
_The following example uses the sample data set provided in the
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -124,18 +130,22 @@ avg(expression)
{{< expand-wrapper >}}
{{% expand "View `avg` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
avg(water_level) AS water_level_avg
FROM h2o_feet
avg(precip) AS avg_precip
FROM weather
GROUP BY location
```
| location | water_level_avg |
| :----------- | -----------------: |
| coyote_creek | 5.359142420303919 |
| santa_monica | 3.5307120942458843 |
| location | avg_precip |
| :------------ | -------------------: |
| Concord | 0.027120658135283374 |
| Hayward | 0.03708029197080292 |
| San Francisco | 0.03750912408759125 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -397,6 +407,45 @@ GROUP BY location
{{% /expand %}}
{{< /expand-wrapper >}}
### grouping
Returns 1 if the data is aggregated across the specified column, or 0 if it is
not aggregated in the result set.
```sql
grouping(expression)
```
##### Arguments
- **expression**: Expression to evaluate whether data is aggregated across the
specified column. Can be a constant, column, or function.
{{< expand-wrapper >}}
{{% expand "View `grouping` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
avg(temp_max) AS avg_max_temp,
grouping(location) AS grouping
FROM weather
GROUP BY GROUPING SETS ((location), ())
```
| location | avg_max_temp | grouping |
| :------------ | ----------------: | -------: |
| Concord | 75.54379562043796 | 0 |
| Hayward | 69.12043795620438 | 0 |
| San Francisco | 67.59945255474453 | 0 |
| | 70.75456204379562 | 1 |
{{% /expand %}}
{{< /expand-wrapper >}}
### last_value
Returns the last element in an aggregation group according to the specified ordering.
@ -453,18 +502,22 @@ _To return both the maximum value and its associated timestamp, use
{{< expand-wrapper >}}
{{% expand "View `max` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
max(water_level) AS water_level_max
FROM h2o_feet
max(precip) AS max_precip
FROM weather
GROUP BY location
```
| location | water_level_max |
| :----------- | --------------: |
| santa_monica | 7.205 |
| coyote_creek | 9.964 |
| location | max_precip |
| :------------ | ---------: |
| Concord | 4.53 |
| Hayward | 4.34 |
| San Francisco | 4.02 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -489,18 +542,22 @@ median(expression)
{{< expand-wrapper >}}
{{% expand "View `median` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
median(water_level) AS water_level_max
FROM h2o_feet
median(temp_avg) AS median_temp_avg
FROM weather
GROUP BY location
```
| location | water_level_median |
| :----------- | -----------------: |
| coyote_creek | 5.4645 |
| santa_monica | 3.471 |
| location | median_temp_avg |
| :------------ | --------------: |
| Concord | 61.0 |
| Hayward | 59.0 |
| San Francisco | 58.0 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -524,18 +581,103 @@ _To return both the minimum value and its associated timestamp, use
{{< expand-wrapper >}}
{{% expand "View `min` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
min(water_level) AS water_level_min
FROM h2o_feet
min(temp_min) AS min_temp_min
FROM weather
GROUP BY location
```
| location | water_level_min |
| :----------- | --------------: |
| coyote_creek | -0.61 |
| santa_monica | -0.243 |
| location | min_temp_min |
| :------------ | -----------: |
| Concord | 28.0 |
| Hayward | 32.0 |
| San Francisco | 35.0 |
{{% /expand %}}
{{< /expand-wrapper >}}
### nth_value
Returns the nth value in a group of values.
```sql
nth_value(expression, n [ORDER BY order_expression_1, ... order_expression_n])
```
##### arguments
- **expression**: The column or expression to retrieve the nth value from.
- **n**: The position (nth) of the value to retrieve, based on the ordering.
- **order_expression_1, ... order_expression_n**: Expressions to order by.
Can be a column or function, and any combination of arithmetic operators.
{{< expand-wrapper >}}
{{% expand "View `nth_value` query example" %}}
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
room,
nth_value(temp, 3 ORDER BY time) AS "3rd_temp"
FROM
home
GROUP BY
room
```
| room | 3rd_temp |
| :---------- | -------: |
| Living Room | 21.8 |
| Kitchen | 22.7 |
{{% /expand %}}
{{< /expand-wrapper >}}
### string_agg
Concatenates the values of string expressions and places separator values between them.
```sql
string_agg(expression, delimiter)
```
##### Arguments
- **expression**: The string expression to concatenate.
Can be a column or any valid string expression.
- **delimiter**: A literal string to use as a separator between the concatenated
values.
{{< expand-wrapper >}}
{{% expand "View `string_agg` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
string_agg(temp_avg::STRING, ', ') AS string_agg
FROM
weather
WHERE
time > '2020-01-01T00:00:00Z'
AND time < '2020-01-05T00:00:00Z'
GROUP BY
location
```
| location | string_agg |
| :------------ | :--------------- |
| San Francisco | 54.0, 52.0, 54.0 |
| Hayward | 51.0, 50.0, 51.0 |
| Concord | 53.0, 49.0, 51.0 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -556,18 +698,22 @@ sum(expression)
{{< expand-wrapper >}}
{{% expand "View `sum` query example" %}}
_The following example uses the
[NOAA Bay Area weather data](/influxdb/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
location,
sum(water_level) AS water_level_sum
FROM h2o_feet
sum(precip) AS total_precip
FROM weather
GROUP BY location
```
| location | water_level_sum |
| :----------- | -----------------: |
| santa_monica | 27024.070369358 |
| coyote_creek | 40750.918963991004 |
| location | total_precip |
| :------------ | -----------------: |
| Concord | 29.670000000000012 |
| Hayward | 40.64 |
| San Francisco | 41.110000000000014 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -593,7 +739,9 @@ GROUP BY location
- [stddev_samp](#stddev_samp)
- [var](#var)
- [var_pop](#var_pop)
- [var_population](#var_population)
- [var_samp](#var_samp)
- [var_sample](#var_sample)
### corr
@ -611,8 +759,7 @@ corr(expression1, expression2)
{{< expand-wrapper >}}
{{% expand "View `corr` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -646,8 +793,7 @@ covar(expression1, expression2)
{{< expand-wrapper >}}
{{% expand "View `covar` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -681,8 +827,7 @@ covar_pop(expression1, expression2)
{{< expand-wrapper >}}
{{% expand "View `covar_pop` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -716,8 +861,7 @@ covar_samp(expression1, expression2)
{{< expand-wrapper >}}
{{% expand "View `covar_samp` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1099,8 +1243,7 @@ stddev(expression)
{{< expand-wrapper >}}
{{% expand "View `stddev` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1134,8 +1277,7 @@ stddev_pop(expression)
{{< expand-wrapper >}}
{{% expand "View `stddev_pop` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1169,8 +1311,7 @@ stddev_samp(expression)
{{< expand-wrapper >}}
{{% expand "View `stddev_samp` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1204,8 +1345,7 @@ var(expression)
{{< expand-wrapper >}}
{{% expand "View `var` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1236,11 +1376,14 @@ var_pop(expression)
- **expression**: Expression to operate on.
Can be a constant, column, or function, and any combination of arithmetic operators.
##### Aliases
- var_population
{{< expand-wrapper >}}
{{% expand "View `var_pop` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1258,6 +1401,10 @@ GROUP BY room
{{% /expand %}}
{{< /expand-wrapper >}}
### var_population
_Alias of [var_pop](#var_pop)._
### var_samp
Returns the statistical sample variance of a set of numbers.
@ -1271,11 +1418,14 @@ var_samp(expression)
- **expression**: Expression to operate on.
Can be a constant, column, or function, and any combination of arithmetic operators.
##### Aliases
- var_sample
{{< expand-wrapper >}}
{{% expand "View `var_samp` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1293,6 +1443,10 @@ GROUP BY room
{{% /expand %}}
{{< /expand-wrapper >}}
### var_sample
_Alias of [var_samp](#var_samp)._
## Approximate aggregate functions
- [approx_distinct](#approx_distinct)
@ -1317,8 +1471,7 @@ approx_distinct(expression)
{{< expand-wrapper >}}
{{% expand "View `approx_distinct` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1353,8 +1506,7 @@ approx_median(expression)
{{< expand-wrapper >}}
{{% expand "View `approx_median` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1394,8 +1546,7 @@ approx_percentile_cont(expression, percentile, centroids)
{{< expand-wrapper >}}
{{% expand "View `approx_percentile_cont` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -1433,8 +1584,7 @@ approx_percentile_cont_with_weight(expression, weight, percentile)
{{< expand-wrapper >}}
{{% expand "View `approx_percentile_cont_with_weight` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT

View File

@ -0,0 +1,68 @@
Use binary string functions to encode and decode binary string values in
SQL queries.
- [decode](#decode)
- [encode](#encode)
## decode
Decode binary data from textual representation in string.
```sql
decode(expression, format)
```
##### Arguments
- **expression**: Expression containing encoded string data.
Can be a constant, column, or function, and any combination of string operators.
- **format**: Encoding format of the encoded string. Supported formats are:
- base64
- hex
##### Related functions
[encode](#encode)
## encode
Encode binary data into a textual representation.
```sql
encode(expression, format)
```
##### Arguments
- **expression**: Expression containing string or binary data.
Can be a constant, column, or function, and any combination of string operators.
- **format**: Encoding format to use. Supported formats are:
- base64
- hex
##### Related functions
[decode](#decode)
{{< expand-wrapper >}}
{{% expand "View `encode` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
encode(location::string, 'hex') AS location_encoded
FROM weather
```
| location | location_encoded |
| :------------ | :------------------------- |
| Concord | 436f6e636f7264 |
| Hayward | 48617977617264 |
| San Francisco | 53616e204672616e636973636f |
{{% /expand %}}
{{< /expand-wrapper >}}

View File

@ -5,6 +5,12 @@ functions for conditionally handling _null_ values:
- [ifnull](#ifnull)
- [nullif](#nullif)
- [nvl](#nvl)
- [nvl2](#nvl2)
<!-- Will come with next DataFusion upgrade
- [greatest](#greatest)
- [least](#least)
-->
## coalesce
@ -50,10 +56,84 @@ FROM
{{% /expand %}}
{{< /expand-wrapper >}}
<!--
## greatest
Returns the greatest value in a list of expressions.
Returns _null_ if all expressions are _null_.
```sql
greatest(expression1[, ..., expression_n])
```
##### Arguments
- **expression1, expression_n**: Expressions to compare and return the greatest value.
Can be a constant, column, or function, and any combination of arithmetic operators.
Pass as many expression arguments as necessary.
{{< expand-wrapper >}}
{{% expand "View `greatest` query example" %}}
_The following example uses the
[Random numbers sample dataset](/influxdb/version/reference/sample-data/#random-numbers-sample-data)._
```sql
SELECT greatest(a, b) AS greatest FROM numbers LIMIT 4
```
| time | greatest |
| ------------------- | ------------------: |
| 2023-01-01T00:02:00 | -0.482943221384294 |
| 2023-01-01T00:03:00 | -0.0729732928756677 |
| 2023-01-01T00:04:00 | 1.77857552719844 |
| 2023-01-01T00:05:00 | 0.741147445214238 |
{{% /expand %}}
{{< /expand-wrapper >}}
-->
## ifnull
_Alias of [nvl](#nvl)._
<!--
## least
Returns the least value in a list of expressions.
Returns _null_ if all expressions are _null_.
```sql
least(expression1[, ..., expression_n])
```
##### Arguments
- **expression1, expression_n**: Expressions to compare and return the least value.
Can be a constant, column, or function, and any combination of arithmetic operators.
Pass as many expression arguments as necessary.
{{< expand-wrapper >}}
{{% expand "View `least` query example" %}}
_The following example uses the
[Random numbers sample dataset](/influxdb/version/reference/sample-data/#random-numbers-sample-data)._
```sql
SELECT least(a, b) AS least FROM numbers LIMIT 4
```
| time | least |
| ------------------- | -----------------: |
| 2023-01-01T00:02:00 | -0.921037167720451 |
| 2023-01-01T00:03:00 | -0.73880754843378 |
| 2023-01-01T00:04:00 | -0.905980032168252 |
| 2023-01-01T00:05:00 | -0.891164752631417 |
{{% /expand %}}
{{< /expand-wrapper >}}
-->
## nullif
Returns _null_ if _expression1_ equals _expression2_; otherwise it returns _expression1_.
@ -130,3 +210,45 @@ FROM
{{% /expand %}}
{{< /expand-wrapper >}}
## nvl2
Returns _expression2_ if _expression1_ is **not** _null_; otherwise it returns _expression3_.
```sql
nvl2(expression1, expression2, expression3)
```
##### Arguments
- **expression1**: First expression to test for _null_.
Can be a constant, column, or function, and any combination of operators.
- **expression2**: Second expression to return if _expression1_ is not _null_.
Can be a constant, column, or function, and any combination of operators.
- **expression3**: Expression to return if _expression1_ is _null_.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `nvl2` query example" %}}
```sql
SELECT
val1,
val2,
val3,
nvl2(val1, val2, val3) AS nvl2
FROM
(values ('foo', 'bar', 'baz'),
(NULL, 'bar', 'baz'),
(NULL, NULL, 'baz'),
) data(val1, val2, val3)
```
| val1 | val2 | val3 | nvl2 |
| :--: | :--: | :--: | :--: |
| foo | bar | baz | bar |
| | bar | baz | baz |
| | | baz | baz |
{{% /expand %}}
{{< /expand-wrapper >}}

View File

@ -0,0 +1,231 @@
Use hashing functions to hash string values in SQL queries using established
hashing algorithms.
- [digest](#digest)
- [md5](#md5)
- [sha224](#sha224)
- [sha256](#sha256)
- [sha384](#sha384)
- [sha512](#sha512)
## digest
Computes the binary hash of an expression using the specified algorithm.
```sql
digest(expression, algorithm)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
- **algorithm**: String expression specifying algorithm to use.
Must be one of the following:
- md5
- sha224
- sha256
- sha384
- sha512
- blake2s
- blake2b
- blake3
{{< expand-wrapper >}}
{{% expand "View `digest` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
digest(location, 'sha256') AS location_digest
FROM weather
```
| location | location_digest |
| :------------ | :--------------------------------------------------------------- |
| Concord | 21e60acfb20fca2e38c5e51191d44235949de045912dca77e978333c1ec965a2 |
| Hayward | 5d5b651a71084f3117cca3381ff7102efbc318c2026e1d09d5d4707354883102 |
| San Francisco | 5aa34886f7f3741de8460690b636f4c8b7c2044df88e2e8adbb4f7e6f8534931 |
{{% /expand %}}
{{< /expand-wrapper >}}
## md5
Computes an MD5 128-bit checksum for a string expression.
```sql
md5(expression)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `md5` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
md5(location) AS location_md5
FROM weather
```
| location | location_md5 |
| :------------ | :------------------------------- |
| Concord | 7c6a8e5769c20331e6a1b93a44021dbc |
| Hayward | 5823ccc25b256955c4e97cb4a23865ee |
| San Francisco | f4334fdfa1c728eae375fe781e2e2d9d |
{{% /expand %}}
{{< /expand-wrapper >}}
## sha224
Computes the SHA-224 hash of a binary string.
```sql
sha224(expression)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `sha224` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
sha224(location) AS location_sha224
FROM weather
```
| location | location_sha224 |
| :------------ | :------------------------------------------------------- |
| Concord | 3f6c0456de97d3d752672161db8e6f0df115979460a2276d64386114 |
| Hayward | 767cfab6a1562e54f6906c8b5c9ee64583caa3f4b6c37a4298a7639f |
| San Francisco | f723898f95bd53cdaf9c057b6f2cf0537b29e0bff077dabb39059b76 |
{{% /expand %}}
{{< /expand-wrapper >}}
## sha256
Computes the SHA-256 hash of a binary string.
```sql
sha256(expression)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `sha256` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
sha256(location) AS location_sha256
FROM weather
```
| location | location_sha256 |
| :------------ | :--------------------------------------------------------------- |
| Concord | 21e60acfb20fca2e38c5e51191d44235949de045912dca77e978333c1ec965a2 |
| Hayward | 5d5b651a71084f3117cca3381ff7102efbc318c2026e1d09d5d4707354883102 |
| San Francisco | 5aa34886f7f3741de8460690b636f4c8b7c2044df88e2e8adbb4f7e6f8534931 |
{{% /expand %}}
{{< /expand-wrapper >}}
## sha384
Computes the SHA-384 hash of a binary string.
```sql
sha384(expression)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `sha384` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
sha384(location) AS location_sha384
FROM weather
```
| location | location_sha384 |
| :------------ | :----------------------------------------------------------------------------------------------- |
| Concord | 19bf5ba95a6c4a28d2a997fa4e03e542d24b111593395b587a3b357af50cc687364f27b4e96935c234e2ae69236c7883 |
| Hayward | 8b034ee0f7c8d191e145002722bf296a7f310f455458b9ffdbafcb2da2e2300d0f1e7868c6b1d512c81ae0c055979abd |
| San Francisco | 15c0c4a0e80f198e922235ee30a5c2b1e288c88f61bfc55ef9723903a0e948a7de04b65aa35b4ba46251b90460bab625 |
{{% /expand %}}
{{< /expand-wrapper >}}
## sha512
Computes the SHA-512 hash of a binary string.
```sql
sha512(expression)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `sha512` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT DISTINCT
location,
sha512(location) AS location_sha512
FROM weather
```
| location | location_sha512 |
| :------------ | :------------------------------------------------------------------------------------------------------------------------------- |
| Concord | 227e28fd661eebb39b10f49728d17b03e3a1f0cc2d2a413a9f124292d77249a2c0d7cf99941fd3d2eabea1b2894698bbd12c2cf3a7137ec67fca221ee57e0ca7 |
| Hayward | 2db79fba2fc2888f9826d95ce6bb2605d95b841da61f049e8a92467de0d6ec3161f3919275208a3c385f6412d7848bfc957e81cde550f4f28cd834a332381142 |
| San Francisco | 4c84f24d166978fb59d77779bf9a54ac112cba8e5f826c50440b2d3063fa0cbb0e2ccd30c93261a0f96805f71d15c3e726c9e00426161880e6a5dad267b2d883 |
{{% /expand %}}
{{< /expand-wrapper >}}

View File

@ -13,6 +13,7 @@ performing mathematic operations:
- [ceil](#ceil)
- [cos](#cos)
- [cosh](#cosh)
- [cot](#cot)
- [degrees](#degrees)
- [exp](#exp)
- [factorial](#factorial)
@ -56,8 +57,7 @@ abs(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `abs` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT abs(temp) AS abs FROM home LIMIT 3
@ -88,8 +88,7 @@ acos(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `acos` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT acos(temp * .01) AS acos FROM home LIMIT 3
@ -120,8 +119,7 @@ acosh(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `acosh` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT acosh(temp) AS acosh FROM home LIMIT 3
@ -152,8 +150,7 @@ asin(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `asin` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT asin(temp * .01) AS asin FROM home LIMIT 3
@ -184,8 +181,7 @@ asinh(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `asinh` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT asinh(temp) AS asinh FROM home LIMIT 3
@ -216,8 +212,7 @@ atan(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `atan` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT atan(temp * .01) AS atan FROM home LIMIT 3
@ -248,8 +243,7 @@ atanh(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `atanh` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT atanh(temp * .01) AS atanh FROM home LIMIT 3
@ -282,8 +276,7 @@ atan2(expression_y, expression_x)
{{< expand-wrapper >}}
{{% expand "View `atan2` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT atan2(temp, hum) AS atan2 FROM home LIMIT 3
@ -314,8 +307,7 @@ cbrt(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `cbrt` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT cbrt(temp) AS cbrt FROM home LIMIT 3
@ -346,8 +338,7 @@ ceil(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `ceil` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT ceil(temp) AS ceil FROM home LIMIT 3
@ -378,8 +369,7 @@ cos(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `cos` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT cos(temp) AS cos FROM home LIMIT 3
@ -410,8 +400,7 @@ cosh(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `cosh` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT cosh(temp) AS cosh FROM home LIMIT 3
@ -426,6 +415,38 @@ SELECT cosh(temp) AS cosh FROM home LIMIT 3
{{% /expand %}}
{{< /expand-wrapper >}}
## cot
Returns the cotangent of a number.
```sql
cot(numeric_expression)
```
##### Arguments
- **numeric_expression**: Numeric expression to operate on.
Can be a constant, column, or function, and any combination of operators.
{{< expand-wrapper >}}
{{% expand "View `cot` query example" %}}
_The following example uses the
[Random numbers sample dataset](/influxdb/version/reference/sample-data/#random-numbers-sample-data)._
```sql
SELECT cot(a) AS cot FROM numbers LIMIT 3
```
| cot |
| -----------------: |
| 2.9293528483724423 |
| 3.705570308335524 |
| -3.314652247498361 |
{{% /expand %}}
{{< /expand-wrapper >}}
## degrees
Converts radians to degrees.
@ -474,8 +495,7 @@ exp(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `exp` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT exp(temp) AS exp FROM home LIMIT 3
@ -539,8 +559,7 @@ floor(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `floor` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT floor(temp) AS floor FROM home LIMIT 3
@ -722,8 +741,7 @@ ln(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `ln` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT ln(temp) AS ln FROM home LIMIT 3
@ -758,7 +776,7 @@ log([base, ]numeric_expression)
{{% expand "View `log` query example" %}}
_The following example uses the sample data set provided in the
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
{{ influxdb3/home-sample-link }}._
```sql
SELECT
@ -795,8 +813,7 @@ log10(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `log10` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT log10(temp) AS log10 FROM home LIMIT 3
@ -827,8 +844,7 @@ log2(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `log2` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT log2(temp) AS log2 FROM home LIMIT 3
@ -928,8 +944,7 @@ power(base, exponent)
{{< expand-wrapper >}}
{{% expand "View `power` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT power(temp, hum * .1) AS power FROM home LIMIT 3
@ -992,8 +1007,7 @@ random()
{{< expand-wrapper >}}
{{% expand "View `random` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT temp * random() AS random FROM home LIMIT 3
@ -1027,8 +1041,7 @@ round(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `round` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT round(temp) AS round FROM home LIMIT 3
@ -1061,8 +1074,7 @@ signum(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `signum` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT signum(temp - 23) AS signum FROM home LIMIT 3
@ -1093,8 +1105,7 @@ sin(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `sin` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT sin(temp) AS sin FROM home LIMIT 3
@ -1125,8 +1136,7 @@ sinh(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `sinh ` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT sinh(temp) AS sinh FROM home LIMIT 3
@ -1157,8 +1167,7 @@ sqrt(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `sqrt` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT sqrt(temp) AS sqrt FROM home LIMIT 3
@ -1189,8 +1198,7 @@ tan(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `tan` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT tan(temp) AS tan FROM home LIMIT 3
@ -1253,8 +1261,7 @@ trunc(numeric_expression)
{{< expand-wrapper >}}
{{% expand "View `trunc` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{ influxdb3/home-sample-link }}._
```sql
SELECT trunc(temp) AS trunc FROM home LIMIT 3

View File

@ -5,6 +5,7 @@ for performing a variety of operations:
- [arrow_typeof](#arrow_typeof)
- [interpolate](#interpolate)
- [locf](#locf)
- [version](#version)
<!-- - [struct](#struct) -->
## arrow_cast
@ -232,3 +233,11 @@ struct('A', 'B', 3, 4)
{{% /expand %}}
{{< /expand-wrapper >}}
-->
## version
Returns the version of DataFusion.
```sql
version()
```

View File

@ -4,10 +4,55 @@ regular expression [syntax](https://docs.rs/regex/latest/regex/#syntax)
(excluding some features such as look-around and back-references) and supports
the following regular expression functions:
- [regexp_count](#regexp_count)
- [regexp_like](#regexp_like)
- [regexp_match](#regexp_match)
- [regexp_replace](#regexp_replace)
## regexp_count
Returns the number of matches that a regular expression has in a string.
```sql
regexp_count(str, regexp[, start, flags])
```
##### Arguments
- **str**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
- **regexp**: Regular expression to operate on.
Can be a constant, column, or function, and any combination of operators.
- **start**: Optional start position (the first position is 1) to search for the regular expression.
Can be a constant, column, or function.
- **flags**: Optional regular expression flags that control the behavior of the
regular expression. The following flags are supported:
- **i**: (insensitive) Ignore case when matching.
- **m**: (multi-line) `^` and `$` match the beginning and end of a line, respectively.
- **s**: (single-line) `.` matches newline (`\n`).
- **R**: (CRLF) When multi-line mode is enabled, `\r\n` is used to delimit lines.
- **U**: (ungreedy) Swap the meaning of `x*` and `x*?`.
{{< expand-wrapper >}}
{{% expand "View `regexp_count` query example" %}}
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
room,
regexp_count(room::STRING, '[Ro]', 1, 'i') AS regexp_count
FROM home
```
| room | regexp_count |
| :---------- | -----------: |
| Kitchen | 0 |
| Living Room | 3 |
{{% /expand %}}
{{< /expand-wrapper >}}
## regexp_like
True if a regular expression has at least one match in a string;
@ -34,8 +79,7 @@ regexp_like(str, regexp[, flags])
{{< expand-wrapper >}}
{{% expand "View `regexp_like` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -73,11 +117,10 @@ regexp_match(str, regexp, flags)
{{< expand-wrapper >}}
{{% expand "View `regexp_match` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
> [!Note]
> `regexp_match` returns a _list_ Arrow type, which is not supported by InfluxDB.
> `regexp_match` returns a _list_ Arrow type.
> Use _bracket notation_ to reference a value in the list.
> Lists use 1-based indexing.
@ -120,8 +163,7 @@ regexp_replace(str, regexp, replacement, flags)
{{< expand-wrapper >}}
{{% expand "View `regexp_replace` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT

View File

@ -72,16 +72,25 @@ selector_min(expression, timestamp)
{{< expand-wrapper >}}
{{% expand "View `selector_min` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
selector_min(water_level, time)['time'] AS time,
selector_min(water_level, time)['value'] AS water_level
FROM h2o_feet
SELECT
location,
selector_min(temp_min, time)['time'] AS time,
selector_min(temp_min, time)['value'] AS min_temp
FROM
weather
GROUP BY
location
```
| time | water_level |
| :------------------- | ----------: |
| 2019-08-28T14:30:00Z | -0.61 |
| location | time | min_temp |
+---------------+---------------------+----------+
| Concord | 2022-01-02T00:00:00 | 28.0 |
| Hayward | 2021-01-26T00:00:00 | 32.0 |
| San Francisco | 2022-01-02T00:00:00 | 35.0 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -105,16 +114,25 @@ selector_max(expression, timestamp)
{{< expand-wrapper >}}
{{% expand "View `selector_max` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
selector_max(water_level, time)['time'] AS time,
selector_max(water_level, time)['value'] AS water_level
FROM h2o_feet
SELECT
location,
selector_max(temp_max, time)['time'] AS time,
selector_max(temp_max, time)['value'] AS max_temp
FROM
weather
GROUP BY
location
```
| time | water_level |
| :------------------- | ----------: |
| 2019-08-28T07:24:00Z | 9.964 |
| location | time | max_temp |
| :------------ | :------------------ | -------: |
| Concord | 2020-09-07T00:00:00 | 112.0 |
| Hayward | 2022-09-06T00:00:00 | 107.0 |
| San Francisco | 2020-09-06T00:00:00 | 102.0 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -138,16 +156,25 @@ selector_first(expression, timestamp)
{{< expand-wrapper >}}
{{% expand "View `selector_first` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
selector_first(water_level, time)['time'] AS time,
selector_first(water_level, time)['value'] AS water_level
FROM h2o_feet
SELECT
location,
selector_first(precip, time)['time'] AS time,
selector_first(precip, time)['value'] AS first_precip
FROM
(SELECT * FROM weather WHERE precip > 0)
GROUP BY
location
```
| time | water_level |
| :------------------- | ----------: |
| 2019-08-28T07:24:00Z | 9.964 |
| location | time | first_precip |
| :------------ | :------------------ | -----------: |
| Concord | 2020-01-08T00:00:00 | 0.01 |
| Hayward | 2020-01-09T00:00:00 | 0.17 |
| San Francisco | 2020-01-07T00:00:00 | 0.03 |
{{% /expand %}}
{{< /expand-wrapper >}}
@ -171,16 +198,25 @@ selector_last(expression, timestamp)
{{< expand-wrapper >}}
{{% expand "View `selector_last` query example" %}}
_The following example uses the
[NOAA Bay Area weather sample data](/influxdb3/version/reference/sample-data/#noaa-bay-area-weather-data)._
```sql
SELECT
selector_last(water_level, time)['time'] AS time,
selector_last(water_level, time)['value'] AS water_level
FROM h2o_feet
SELECT
location,
selector_last(precip, time)['time'] AS time,
selector_last(precip, time)['value'] AS last_precip
FROM
(SELECT * FROM weather WHERE precip > 0)
GROUP BY
location
```
| time | water_level |
| :------------------- | ----------: |
| 2019-09-17T21:42:00Z | 4.938 |
| location | time | last_precip |
| :------------ | :------------------ | ----------: |
| Concord | 2022-12-31T00:00:00 | 3.04 |
| Hayward | 2022-12-31T00:00:00 | 4.34 |
| San Francisco | 2022-12-31T00:00:00 | 3.67 |
{{% /expand %}}
{{< /expand-wrapper >}}

View File

@ -6,9 +6,10 @@ operating on string values:
- [btrim](#btrim)
- [char_length](#char_length)
- [character_length](#character_length)
- [chr](#chr)
- [concat](#concat)
- [concat_ws](#concat_ws)
- [chr](#chr)
- [contains](#contains)
- [ends_with](#ends_with)
- [find_in_set](#find_in_set)
- [initcap](#initcap)
@ -19,7 +20,6 @@ operating on string values:
- [lower](#lower)
- [lpad](#lpad)
- [ltrim](#ltrim)
- [md5](#md5)
- [octet_length](#octet_length)
- [overlay](#overlay)
- [position](#position)
@ -34,6 +34,8 @@ operating on string values:
- [strpos](#strpos)
- [substr](#substr)
- [substr_index](#substr_index)
- [substring](#substring)
- [substring_index](#substring_index)
- [to_hex](#to_hex)
- [translate](#translate)
- [trim](#trim)
@ -64,8 +66,7 @@ ascii(str)
{{< expand-wrapper >}}
{{% expand "View `ascii` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -106,8 +107,7 @@ bit_length(str)
{{< expand-wrapper >}}
{{% expand "View `bit_length` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -151,8 +151,7 @@ btrim(str[, trim_str])
{{< expand-wrapper >}}
{{% expand "View `btrim` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -177,6 +176,47 @@ _Alias of [length](#length)._
_Alias of [length](#length)._
## chr
Returns the character with the specified ASCII or Unicode code value.
```
chr(expression)
```
#### Arguments
- **expression**: Expression containing the ASCII or Unicode code value to operate on.
Can be a constant, column, or function, and any combination of arithmetic or
string operators.
##### Related functions
[ascii](#ascii)
{{< expand-wrapper >}}
{{% expand "View `chr` query example" %}}
```sql
SELECT
ascii,
chr(ascii) AS chr
FROM
(values (112),
(75),
(214)
) data(ascii)
```
| ascii | chr |
| :---- | :-: |
| 112 | p |
| 75 | K |
| 214 | Ö |
{{% /expand %}}
{{< /expand-wrapper >}}
## concat
Concatenates multiple strings together.
@ -198,8 +238,7 @@ concat(str[, ..., str_n])
{{< expand-wrapper >}}
{{% expand "View `concat` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -244,8 +283,7 @@ concat_ws(separator, str[, ..., str_n])
{{< expand-wrapper >}}
{{% expand "View `concat_ws` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT
@ -267,46 +305,19 @@ LIMIT 3
{{% /expand %}}
{{< /expand-wrapper >}}
## chr
## contains
Returns the character with the specified ASCII or Unicode code value.
```
chr(expression)
```
#### Arguments
- **expression**: Expression containing the ASCII or Unicode code value to operate on.
Can be a constant, column, or function, and any combination of arithmetic or
string operators.
##### Related functions
[ascii](#ascii)
{{< expand-wrapper >}}
{{% expand "View `chr` query example" %}}
Returns true if a string contains a search string (case-sensitive).
```sql
SELECT
ascii,
chr(ascii) AS chr
FROM
(values (112),
(75),
(214)
) data(ascii)
contains(str, search_str)
```
| ascii | chr |
| :---- | :-: |
| 112 | p |
| 75 | K |
| 214 | Ö |
##### Arguments
{{% /expand %}}
{{< /expand-wrapper >}}
- **str**: String expression to operate on.
Can be a constant, column, or function, and any combination of operators.
- **search_str**: The string to search for in _str_.
## ends_with
@ -486,8 +497,7 @@ left(str, n)
{{< expand-wrapper >}}
{{% expand "View `left` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -534,8 +544,7 @@ length(str)
{{< expand-wrapper >}}
{{% expand "View `length` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -612,8 +621,7 @@ lower(str)
{{< expand-wrapper >}}
{{% expand "View `lower` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -654,8 +662,7 @@ lpad(str, n[, padding_str])
{{< expand-wrapper >}}
{{% expand "View `lpad` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -714,40 +721,6 @@ FROM
{{% /expand %}}
{{< /expand-wrapper >}}
## md5
Computes an MD5 128-bit checksum for a string expression.
```sql
md5(str)
```
##### Arguments
- **expression**: String expression to operate on.
Can be a constant, column, or function, and any combination of string operators.
{{< expand-wrapper >}}
{{% expand "View `md5` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
```sql
SELECT DISTINCT
room,
md5(room) AS md5
FROM home
```
| room | md5 |
| :---------- | :------------------------------- |
| Kitchen | 33fa00a66f2edf0d1c5697a9f8693ba8 |
| Living Room | f45b0e6aec165544faccaf2cad820542 |
{{% /expand %}}
{{< /expand-wrapper >}}
## octet_length
Returns the length of a string in bytes.
@ -773,8 +746,7 @@ octet_length(str)
{{< expand-wrapper >}}
{{% expand "View `octet_length` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -929,8 +901,7 @@ replace(str, substr, replacement)
{{< expand-wrapper >}}
{{% expand "View `replace` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -963,8 +934,7 @@ reverse(str)
{{< expand-wrapper >}}
{{% expand "View `reverse` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1002,8 +972,7 @@ right(str, n)
{{< expand-wrapper >}}
{{% expand "View `right` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1044,8 +1013,7 @@ rpad(str, n[, padding_str])
{{< expand-wrapper >}}
{{% expand "View `rpad` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1160,8 +1128,7 @@ starts_with(str, substr)
{{< expand-wrapper >}}
{{% expand "View `starts_with` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1202,8 +1169,7 @@ strpos(str, substr)
{{< expand-wrapper >}}
{{% expand "View `strpos` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1241,8 +1207,7 @@ substr(str, start_pos[, length])
{{< expand-wrapper >}}
{{% expand "View `substr` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1306,6 +1271,14 @@ FROM
{{% /expand %}}
{{< /expand-wrapper >}}
## substring
_Alias of [substr](#substr)._
## substring_index
_Alias of [substr_index](#substr_index)._
## translate
Translates characters in a string to specified translation characters.
@ -1323,8 +1296,7 @@ translate(str, chars, translation)
{{< expand-wrapper >}}
{{% expand "View `translate` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1440,8 +1412,7 @@ upper(str)
{{< expand-wrapper >}}
{{% expand "View `upper` query example" %}}
_The following example uses the sample data set provided in
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
_The following example uses the {{< influxdb3/home-sample-link >}}._
```sql
SELECT DISTINCT
@ -1470,7 +1441,7 @@ uuid()
{{% expand "View `uuid` query example" %}}
_The following example uses the sample data set provided in the
[Get started with InfluxDB tutorial](/influxdb/version/get-started/write/#construct-line-protocol)._
{{< influxdb3/home-sample-link >}}._
```sql
SELECT

View File

@ -3,12 +3,14 @@ that are useful when working with time series data.
- [current_date](#current_date)
- [current_time](#current_time)
- [current_timestamp](#current_timestamp)
- [date_bin](#date_bin)
- [date_bin_gapfill](#date_bin_gapfill)
- [date_bin_wallclock](#date_bin_wallclock)
- [date_bin_wallclock_gapfill](#date_bin_wallclock_gapfill)
- [date_trunc](#date_trunc)
- [datetrunc](#datetrunc)
- [date_format](#date_format)
- [date_part](#date_part)
- [datepart](#datepart)
- [extract](#extract)
@ -76,10 +78,6 @@ LIMIT 3
Returns the current UTC time.
> [!Note]
> `current_date` returns a `TIME64` Arrow type, which isn't supported by InfluxDB.
> To use with InfluxDB, [cast the return value to a string](/influxdb/version/query-data/sql/cast-types/#cast-to-a-string-type).
The `current_time()` return value is determined at query time and returns the same time,
no matter when in the query plan the function executes.
@ -97,7 +95,7 @@ _The following example uses the sample data set provided in the
SELECT
time,
temp,
current_time()::STRING AS current_time
current_time() AS current_time
FROM home
LIMIT 3
```
@ -111,6 +109,10 @@ LIMIT 3
{{% /expand %}}
{{< /expand-wrapper >}}
## current_timestamp
_Alias of [now](#now)._
## date_bin
Calculates time intervals and returns the start of the interval nearest to the specified timestamp.
@ -397,7 +399,7 @@ date_bin_wallclock(interval, expression[, origin_timestamp])
>
> #### Avoid bins in time zone discontinuities
>
> [Time zone shifts](#time-zone-shifts) result in *discontinuities*breaks
> [Time zone shifts](#time-zone-shifts) result in _discontinuities_breaks
> in the continuity of time intervals (losing an hour or gaining an hour)that
> can result in unexpected timestamps when using `date_bin_wallclock`.
> Avoid using an `interval` and `origin_timestamp` combination that results in a
@ -536,7 +538,7 @@ date_bin_wallclock_gapfill(interval, expression[, origin_timestamp])
>
> #### Avoid bins in time zone discontinuities
>
> [Time zone shifts](#time-zone-shifts) result in *discontinuities*breaks
> [Time zone shifts](#time-zone-shifts) result in _discontinuities_breaks
> in the continuity of time intervals (losing an hour or gaining an hour)that
> can result in unexpected timestamps when using `date_bin_wallclock_gapfill`.
> Avoid using an `interval` and `origin_timestamp` combination that results in a
@ -761,6 +763,10 @@ ORDER BY week
_Alias of [date_trunc](#date_trunc)._
## date_format
_Alias of [to_char](#to_char)._
## date_part
Returns the specified part of the date as an integer.
@ -954,6 +960,10 @@ no matter when in the query plan the function executes.
now()
```
##### Aliases
- [current_timestamp](#current_timestamp)
{{< expand-wrapper >}}
{{% expand "View `now` query example" %}}
@ -993,6 +1003,10 @@ to_char(expression, format)
- **format**: [Rust Chrono format string](https://docs.rs/chrono/latest/chrono/format/strftime/index.html)
to use to convert the expression.
##### Aliases
- [date_format](#date_format)
{{< expand-wrapper >}}
{{% expand "View `to_char` query example" %}}

View File

@ -2,19 +2,23 @@ Comparison operators evaluate the relationship between the left and right
operands and returns `true` or `false`.
| Operator | Meaning | |
| :------: | :------------------------------------------------------- | :------------------------------------------------------ |
| `=` | Equal to | [{{< icon "link" >}}](#equal-to) |
| `<>` | Not equal to | [{{< icon "link" >}}](#not-equal-to) |
| `!=` | Not equal to | [{{< icon "link" >}}](#not-equal-to) |
| `>` | Greater than | [{{< icon "link" >}}](#greater-than) |
| `>=` | Greater than or equal to | [{{< icon "link" >}}](#greater-than-or-equal) |
| `<` | Less than | [{{< icon "link" >}}](#less-than) |
| `<=` | Less than or equal to | [{{< icon "link" >}}](#less-than-or-equal) |
| `~` | Matches a regular expression | [{{< icon "link" >}}](#regexp-match) |
| `~*` | Matches a regular expression _(case-insensitive)_ | [{{< icon "link" >}}](#regexp-match-case-insensitive) |
| `!~` | Does not match a regular expression | [{{< icon "link" >}}](#regexp-nomatch) |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | [{{< icon "link" >}}](#regexp-nomatch-case-insensitive) |
| Operator | Meaning | |
| :--------------------: | :------------------------------------------------------- | :------------------------------------------------------ |
| `=` | Equal to | [{{< icon "link" >}}](#equal-to) |
| `<>` | Not equal to | [{{< icon "link" >}}](#not-equal-to) |
| `!=` | Not equal to | [{{< icon "link" >}}](#not-equal-to) |
| `>` | Greater than | [{{< icon "link" >}}](#greater-than) |
| `>=` | Greater than or equal to | [{{< icon "link" >}}](#greater-than-or-equal) |
| `<` | Less than | [{{< icon "link" >}}](#less-than) |
| `<=` | Less than or equal to | [{{< icon "link" >}}](#less-than-or-equal) |
| `IS DISTINCT FROM` | Is distinct from | [{{< icon "link" >}}](#is-distinct-from) |
| `IS NOT DISTINCT FROM` | Is not distinct from | [{{< icon "link" >}}](#is-not-distinct-from) |
| `~` | Matches a regular expression | [{{< icon "link" >}}](#regexp-match) |
| `~*` | Matches a regular expression _(case-insensitive)_ | [{{< icon "link" >}}](#regexp-match-case-insensitive) |
| `!~` | Does not match a regular expression | [{{< icon "link" >}}](#regexp-nomatch) |
| `!~*` | Does not match a regular expression _(case-insensitive)_ | [{{< icon "link" >}}](#regexp-nomatch-case-insensitive) |
<!-- | `<=>` | Three-way comparison _(alias of `IS NOT DISTINCT FROM`)_ | [{{< icon "link" >}}](#three-way-comparison) | -->
## = {#equal-to .monospace}
@ -169,6 +173,141 @@ SELECT 1 <= 2
{{% /flex-content %}}
{{< /flex >}}
## IS DISTINCT FROM {.monospace}
The `IS DISTINCT FROM` operator is a _NULL_-safe operator that returns
`true` if both operands are not equal; otherwise, it returns `false`.
This operator guarantees the result of a comparison is `true` or `false` and not
an empty set.
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT 0 IS DISTINCT FROM NULL
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| Int64(0) IS DISTINCT FROM NULL |
| :----------------------------- |
| true |
{{% /flex-content %}}
{{< /flex >}}
## IS NOT DISTINCT FROM {.monospace}
The `IS NOT DISTINCT FROM` operator is a _NULL_-safe operator that returns
`true` if both operands are equal or _NULL_; otherwise, it returns `false`.
This operator negates [`IS DISTINCT FROM`](#is-distinct-from).
<!--
##### Aliases
- [`<=>`](#three-way-comparison)
-->
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT NULL IS NOT DISTINCT FROM NULL
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| NULL IS NOT DISTINCT FROM NULL |
| :----------------------------- |
| true |
{{% /flex-content %}}
{{< /flex >}}
<!-- IS NOT SUPPORTED YET
## <=> {#three-way-comparison .monospace}
The `<=>` operator is a _NULL_-safe operator that returns `true` if both
operands are equal or _NULL_; otherwise, it returns `false`.
This operator is an alias for [`IS NOT DISTINCT FROM`](#is-not-distinct-from).
{{< expand-wrapper >}}
{{% expand "View `<=>` operator examples" %}}
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT NULL <=> NULL
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| NULL IS NOT DISTINCT FROM NULL |
| :----------------------------- |
| true |
{{% /flex-content %}}
{{< /flex >}}
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT 1 <=> NULL
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| Int64(1) IS NOT DISTINCT FROM NULL |
| :--------------------------------- |
| false |
{{% /flex-content %}}
{{< /flex >}}
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT 1 <=> 2
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| Int64(1) IS NOT DISTINCT FROM Int64(2) |
| :------------------------------------- |
| false |
{{% /flex-content %}}
{{< /flex >}}
{{< flex >}}
{{% flex-content "two-thirds operator-example" %}}
```sql
SELECT 1 <=> 1
```
{{% /flex-content %}}
{{% flex-content "third operator-example" %}}
| Int64(1) IS NOT DISTINCT FROM Int64(1) |
| :------------------------------------- |
| true |
{{% /flex-content %}}
{{< /flex >}}
{{% /expand %}}
{{< /expand-wrapper >}}
-->
## ~ {#regexp-match .monospace}
The `~` operator compares the left string operand to the right regular expression

View File

@ -52,7 +52,6 @@ This guide covers InfluxDB 3 Core (the open source release), including the follo
* [Last values cache](#last-values-cache)
* [Distinct values cache](#distinct-values-cache)
* [Python plugins and the processing engine](#python-plugins-and-the-processing-engine)
* [Diskless architecture](#diskless-architecture)
### Install and startup
@ -69,7 +68,6 @@ This guide covers InfluxDB 3 Core (the open source release), including the follo
To get started quickly, download and run the install script--for example, using [curl](https://curl.se/download.html):
<!--pytest.mark.skip-->
```bash
curl -O https://www.influxdata.com/d/install_influxdb3.sh \
&& sh install_influxdb3.sh
@ -109,7 +107,6 @@ is available for x86_64 (AMD64) and ARM64 architectures.
Pull the image:
<!--pytest.mark.skip-->
```bash
docker pull quay.io/influxdb/influxdb3-core:latest
```
@ -131,7 +128,6 @@ influxdb3 --version
If your system doesn't locate `influxdb3`, then `source` the configuration file (for example, .bashrc, .zshrc) for your shell--for example:
<!--pytest.mark.skip-->
```zsh
source ~/.zshrc
```
@ -148,6 +144,13 @@ and provide the following:
- `--node-id`: A string identifier that determines the server's storage path
within the configured storage location, and, in a multi-node setup, is used to reference the node.
> [!Note]
> #### Diskless architecture
>
> InfluxDB 3 supports a diskless architecture that can operate with object
> storage alone, eliminating the need for locally attached disks.
> {{% product-name %}} can also work with only local disk storage when needed.
The following examples show how to start InfluxDB 3 with different object store configurations:
```bash
@ -249,9 +252,14 @@ InfluxDB is a schema-on-write database. You can start writing data and InfluxDB
After a schema is created, InfluxDB validates future write requests against it before accepting the data.
Subsequent requests can add new fields on-the-fly, but can't add new tags.
{{% product-name %}} is optimized for recent data, but accepts writes from any time period. It persists that data in Parquet files for access by third-party systems for longer term historical analysis and queries. If you require longer historical queries with a compactor that optimizes data organization, consider using [InfluxDB 3 Enterprise](/influxdb3/enterprise/get-started/).
> [!Note]
> #### Core is optimized for recent data
>
> {{% product-name %}} is optimized for recent data but accepts writes from any time period.
> The system persists data to Parquet files for historical analysis with [InfluxDB 3 Enterprise](/influxdb3/enterprise/get-started/) or third-party tools.
> For extended historical queries and optimized data organization, consider using [InfluxDB 3 Enterprise](/influxdb3/enterprise/get-started/).
The database provides three write API endpoints that respond to HTTP `POST` requests:
{{% product-name %}} provides three write API endpoints that respond to HTTP `POST` requests:
#### /api/v3/write_lp endpoint
@ -368,39 +376,43 @@ The response is the following:
InfluxDB rejects all points in the batch.
The response is an HTTP error (`400`) status, and the response body contains `parsing failed for write_lp endpoint` and details about the problem line.
#### Data durability
### Data flow
When you write data to InfluxDB, InfluxDB ingests the data and writes it to WAL files, created once per second, and to an in-memory queryable buffer.
Later, InfluxDB snapshots the WAL and persists the data into object storage as Parquet files.
For more information, see [diskless architecture](#diskless-architecture).
The figure below shows how written data flows through the database.
> [!Note]
> ##### Write requests return after WAL flush
>
> By default, InfluxDB acknowledges writes after flushing the WAL file to the Object store (occurring every second). For high throughput, you can send multiple concurrent write requests.
>
> To reduce the latency of writes, use the [`no_sync` write option](#no-sync-write-option), which acknowledges writes _before_ WAL persistence completes.
{{< img-hd src="/img/influxdb/influxdb-3-write-path.png" alt="Write Path for InfluxDB 3 Core & Enterprise" />}}
##### No sync write option
1. **Incoming writes**: The system validates incoming data and stores it in the write buffer (in memory). If [`no_sync=true`](#no-sync-write-option), the server sends a response to acknowledge the write.
2. **WAL flush**: Every second (default), the system flushes the write buffer to the Write-Ahead Log (WAL) for persistence in the Object store. If [`no_sync=false`](#no-sync-write-option) (default), the server sends a response to acknowledge the write.
3. **Query availability**: After WAL persistence completes, data moves to the queryable buffer where it becomes available for queries. By default, the server keeps up to 900 WAL files (15 minutes of data) buffered.
4. **Long-term storage in Parquet**: Every ten minutes (default), the system persists the oldest data from the queryable buffer to the Object store in Parquet format. InfluxDB keeps the remaining data (the most recent 5 minutes) in memory.
5. **In-memory cache**: InfluxDB puts Parquet files into an in-memory cache so that queries against the most recently persisted data don't have to go to object storage.
The `no_sync` write option reduces latency by acknowledging write requests before WAL persistence completes. When set to `true`, InfluxDB validates the data, writes the data to the WAL, and then immediately confirms the write, without waiting for persistence to the Object store.
#### Write responses
By default, InfluxDB acknowledges writes after flushing the WAL file to the Object store (occurring every second).
For high write throughput, you can send multiple concurrent write requests.
#### Use no_sync for immediate write responses
To reduce the latency of writes, use the `no_sync` write option, which acknowledges writes _before_ WAL persistence completes.
When `no_sync=true`, InfluxDB validates the data, writes the data to the WAL, and then immediately responds to the client, without waiting for persistence to the Object store.
Using `no_sync=true` is best when prioritizing high-throughput writes over absolute durability.
- Default behavior (`no_sync=false`): Waits for data to be written to the Object store before acknowledging the write. Reduces the risk of data loss, but increases the latency of the response.
- With `no_sync=true`: Reduces write latency, but increases the risk of data loss in case of a crash before WAL persistence.
###### Immediate write using the HTTP API
##### Immediate write using the HTTP API
The `no_sync` parameter controls when writes are acknowledged--for example:
```sh
curl "http://localhost:8181/api/v3/write_lp?db=sensors&precision=auto&no_sync=true" \
--data-raw "home,room=Sunroom temp=96"
```
###### Immediate write using the influxdb3 CLI
##### Immediate write using the influxdb3 CLI
The `no_sync` CLI option controls when writes are acknowledged--for example:
@ -422,7 +434,7 @@ To learn more about a subcommand, use the `-h, --help` flag:
influxdb3 create -h
```
### Query a database
### Query data
InfluxDB 3 now supports native SQL for querying, in addition to InfluxQL, an
SQL-like language customized for time series queries.
@ -825,15 +837,4 @@ influxdb3 enable trigger --database mydb trigger1
For more information, see [Python plugins and the Processing engine](/influxdb3/version/plugins/).
### Diskless architecture
InfluxDB 3 is able to operate using only object storage with no locally attached disk.
While it can use only a disk with no dependencies, the ability to operate without one is a new capability with this release. The figure below illustrates the write path for data landing in the database.
{{< img-hd src="/img/influxdb/influxdb-3-write-path.png" alt="Write Path for InfluxDB 3 Core & Enterprise" />}}
As write requests come in to the server, they are parsed, validated, and put into an in-memory WAL buffer. This buffer is flushed every second by default (can be changed through configuration), which will create a WAL file. Once the data is flushed to disk, it is put into a queryable in-memory buffer and then a response is sent back to the client that the write was successful. That data will now show up in queries to the server.
InfluxDB periodically snapshots the WAL to persist the oldest data in the queryable buffer, allowing the server to remove old WAL files. By default, the server will keep up to 900 WAL files buffered up (15 minutes of data) and attempt to persist the oldest 10 minutes, keeping the most recent 5 minutes around.
When the data is persisted out of the queryable buffer it is put into the configured object store as Parquet files. Those files are also put into an in-memory cache so that queries against the most recently persisted data do not have to go to object storage.

View File

@ -42,7 +42,6 @@ This guide covers Enterprise as well as InfluxDB 3 Core, including the following
* [Last values cache](#last-values-cache)
* [Distinct values cache](#distinct-values-cache)
* [Python plugins and the processing engine](#python-plugins-and-the-processing-engine)
* [Diskless architecture](#diskless-architecture)
* [Multi-server setups](#multi-server-setup)
### Install and startup
@ -59,6 +58,7 @@ This guide covers Enterprise as well as InfluxDB 3 Core, including the following
<!--------------- BEGIN LINUX AND MACOS -------------->
To get started quickly, download and run the install script--for example, using [curl](https://curl.se/download.html):
<!--pytest.mark.skip-->
```bash
curl -O https://www.influxdata.com/d/install_influxdb3.sh \
&& sh install_influxdb3.sh enterprise
@ -97,6 +97,7 @@ is available for x86_64 (AMD64) and ARM64 architectures.
Pull the image:
<!--pytest.mark.skip-->
```bash
docker pull quay.io/influxdb/influxdb3-enterprise:latest
```
@ -117,6 +118,7 @@ influxdb3 --version
If your system doesn't locate `influxdb3`, then `source` the configuration file (for example, .bashrc, .zshrc) for your shell--for example:
<!--pytest.mark.skip-->
```zsh
source ~/.zshrc
```
@ -133,16 +135,23 @@ and provide the following:
- `--node-id`: A string identifier that determines the server's storage path
within the configured storage location, and, in a multi-node setup, is used to reference the node.
> [!Note]
> #### Diskless architecture
>
> InfluxDB 3 supports a diskless architecture that can operate with object
> storage alone, eliminating the need for locally attached disks.
> {{% product-name %}} can also work with only local disk storage when needed.
The following examples show how to start InfluxDB 3 with different object store configurations:
```bash
# MEMORY
# Memory object store
# Stores data in RAM; doesn't persist data
influxdb3 serve --node-id=local01 --object-store=memory
```
```bash
# FILESYSTEM
# Filesystem object store
# Provide the filesystem directory
influxdb3 serve \
--node-id=local01 \
@ -155,8 +164,14 @@ To run the [Docker image](/influxdb3/enterprise/install/#docker-image) and persi
- `-v /path/on/host:/path/in/container`: Mounts a directory from your filesystem to the container
- `--object-store file --data-dir /path/in/container`: Uses the mount for server storage
> [!Note]
>
> The {{% product-name %}} Docker image exposes port `8181`, the `influxdb3` server default for HTTP connections.
> To map the exposed port to a different port when running a container, see the Docker guide for [Publishing and exposing ports](https://docs.docker.com/get-started/docker-concepts/running-containers/publishing-ports/).
<!--pytest.mark.skip-->
```bash
# FILESYSTEM USING DOCKER
# Filesystem object store with Docker
# Create a mount
# Provide the mount path
docker run -it \
@ -168,15 +183,29 @@ docker run -it \
```
```bash
# S3 (defaults to us-east-1 for region)
# S3 object store (default is the us-east-1 region)
# Specify the Object store type and associated options
influxdb3 serve --node-id=local01 --object-store=s3 --bucket=[BUCKET] --aws-access-key=[AWS ACCESS KEY] --aws-secret-access-key=[AWS SECRET ACCESS KEY]
```bash
influxdb3 serve \
--node-id=local01 \
--object-store=s3 \
--bucket=BUCKET \
--aws-access-key=AWS_ACCESS_KEY \
--aws-secret-access-key=AWS_SECRET_ACCESS_KEY
```
```bash
# Minio/Open Source Object Store (Uses the AWS S3 API, with additional parameters)
# Specify the Object store type and associated options
influxdb3 serve --node-id=local01 --object-store=s3 --bucket=[BUCKET] --aws-access-key=[AWS ACCESS KEY] --aws-secret-access-key=[AWS SECRET ACCESS KEY] --aws-endpoint=[ENDPOINT] --aws-allow-http
# Minio or other open source object store
# (using the AWS S3 API with additional parameters)
# Specify the object store type and associated options
```bash
influxdb3 serve --node-id=local01 --object-store=s3 --bucket=BUCKET \
--aws-access-key=AWS_ACCESS_KEY \
--aws-secret-access-key=AWS_SECRET_ACCESS_KEY \
--aws-endpoint=ENDPOINT \
--aws-allow-http
```
_For more information about server options, run `influxdb3 serve --help`._
@ -188,10 +217,12 @@ _For more information about server options, run `influxdb3 serve --help`._
> Use the `docker kill` command to stop the container:
>
> 1. Enter the following command to find the container ID:
> <!--pytest.mark.skip-->
> ```bash
> docker ps -a
> ```
> 2. Enter the command to stop the container:
> <!--pytest.mark.skip-->
> ```bash
> docker kill <CONTAINER_ID>
> ```
@ -218,22 +249,43 @@ InfluxDB is a schema-on-write database. You can start writing data and InfluxDB
After a schema is created, InfluxDB validates future write requests against it before accepting the data.
Subsequent requests can add new fields on-the-fly, but can't add new tags.
The database has three write API endpoints that respond to HTTP `POST` requests:
The database provides three write API endpoints that respond to HTTP `POST` requests:
* `/write?db=mydb&precision=ns`
* `/api/v2/write?bucket=mydb&precision=ns`
* `/api/v3/write_lp?db=mydb&precision=nanosecond&accept_partial=true`
#### /api/v3/write_lp endpoint
{{% product-name %}} provides the `/write` and `/api/v2/write` endpoints for backward compatibility with clients that can write data to previous versions of InfluxDB.
However, these APIs differ from the APIs in the previous versions in the following ways:
{{% product-name %}} adds the `/api/v3/write_lp` endpoint.
{{<api-endpoint endpoint="/api/v3/write_lp?db=mydb&precision=nanosecond&accept_partial=true" method="post" >}}
This endpoint accepts the same line protocol syntax as previous versions,
and supports the `?accept_partial=<BOOLEAN>` parameter, which
lets you accept or reject partial writes (default is `true`).
#### /api/v2/write InfluxDB v2 compatibility endpoint
Provides backwards compatibility with clients that can write data to InfluxDB OSS v2.x and Cloud 2 (TSM).
{{<api-endpoint endpoint="/api/v2/write?bucket=mydb&precision=ns" method="post" >}}
#### /write InfluxDB v1 compatibility endpoint
Provides backwards compatibility for clients that can write data to InfluxDB v1.x
{{<api-endpoint endpoint="/write?db=mydb&precision=ns" method="post" >}}
Keep in mind that these compatibility APIs differ from the v1 and v2 APIs in previous versions in the following ways:
- Tags in a table (measurement) are _immutable_
- A tag and a field can't have the same name within a table.
{{% product-name %}} adds the `/api/v3/write_lp` endpoint, which accepts the same line protocol syntax as previous versions, and supports an `?accept_partial=<BOOLEAN>` parameter, which
lets you accept or reject partial writes (default is `true`).
#### Write line protocol
The following code block is an example of [line protocol](/influxdb3/core/reference/syntax/line-protocol/), which shows the table name followed by tags, which are an ordered, comma-separated list of key/value pairs where the values are strings, followed by a comma-separated list of key/value pairs that are the fields, and ending with an optional timestamp. The timestamp by default is a nanosecond epoch, but you can specify a different precision through the `precision` query parameter.
The following code block is an example of time series data in [line protocol](/influxdb3/core/reference/syntax/line-protocol/) syntax:
- `cpu`: the table name.
- `host`, `region`, `applications`: the tags. A tag set is an ordered, comma-separated list of key/value pairs where the values are strings.
- `val`, `usage_percent`, `status`: the fields. A field set is a comma-separated list of key/value pairs.
- timestamp: If you don't specify a timestamp, InfluxData uses the time when data is written.
The default precision is a nanosecond epoch.
To specify a different precision, pass the `precision` query parameter.
```
cpu,host=Alpha,region=us-west,application=webserver val=1i,usage_percent=20.5,status="OK"
@ -244,12 +296,16 @@ cpu,host=Bravo,region=us-central,application=database val=5i,usage_percent=80.5,
cpu,host=Alpha,region=us-west,application=webserver val=6i,usage_percent=25.3,status="Warn"
```
##### Example: write data using the influxdb3 CLI
If you save the preceding line protocol to a file (for example, `server_data`), then you can use the `influxdb3` CLI to write the data--for example:
```bash
influxdb3 write --database=mydb --file=server_data
```
##### Example: write data using the /api/v3 HTTP API
The following examples show how to write data using `curl` and the `/api/3/write_lp` HTTP endpoint.
To show the difference between accepting and rejecting partial writes, line `2` in the example contains a `string` value for a `float` field (`temp=hi`).
@ -279,7 +335,7 @@ With `accept_partial=true`:
Line `1` is written and queryable.
The response is an HTTP error (`400`) status, and the response body contains the error message `partial write of line protocol occurred` with details about the problem line.
##### Parsing failed for write_lp endpoint
###### Parsing failed for write_lp endpoint
With `accept_partial=false`:
@ -310,19 +366,51 @@ The response is the following:
InfluxDB rejects all points in the batch.
The response is an HTTP error (`400`) status, and the response body contains `parsing failed for write_lp endpoint` and details about the problem line.
##### Data durability
### Data flow
When you write data to InfluxDB, InfluxDB ingests the data and writes it to WAL files, created once per second, and to an in-memory queryable buffer.
Later, InfluxDB snapshots the WAL and persists the data into object storage as Parquet files.
For more information, see [diskless architecture](#diskless-architecture).
The figure below shows how written data flows through the database.
> [!Note]
> ##### Write requests return after WAL flush
>
> Because InfluxDB sends a write response after the WAL file has been flushed to the configured object store (default is every second), individual write requests might not complete quickly, but you can make many concurrent requests to achieve higher total throughput.
> Future enhancements will include an API parameter that lets requests return without waiting for the WAL flush.
{{< img-hd src="/img/influxdb/influxdb-3-write-path.png" alt="Write Path for InfluxDB 3 Core & Enterprise" />}}
#### Create a database or table
1. **Incoming writes**: The system validates incoming data and stores it in the write buffer (in memory). If [`no_sync=true`](#no-sync-write-option), the server sends a response to acknowledge the write.
2. **WAL flush**: Every second (default), the system flushes the write buffer to the Write-Ahead Log (WAL) for persistence in the Object store. If [`no_sync=false`](#no-sync-write-option) (default), the server sends a response to acknowledge the write.
3. **Query availability**: After WAL persistence completes, data moves to the queryable buffer where it becomes available for queries. By default, the server keeps up to 900 WAL files (15 minutes of data) buffered.
4. **Long-term storage in Parquet**: Every ten minutes (default), the system persists the oldest data from the queryable buffer to the Object store in Parquet format. InfluxDB keeps the remaining data (the most recent 5 minutes) in memory.
5. **In-memory cache**: InfluxDB puts Parquet files into an in-memory cache so that queries against the most recently persisted data don't have to go to object storage.
#### Write responses
By default, InfluxDB acknowledges writes after flushing the WAL file to the Object store (occurring every second).
For high write throughput, you can send multiple concurrent write requests.
#### Use no_sync for immediate write responses
To reduce the latency of writes, use the `no_sync` write option, which acknowledges writes _before_ WAL persistence completes.
When `no_sync=true`, InfluxDB validates the data, writes the data to the WAL, and then immediately responds to the client, without waiting for persistence to the Object store.
Using `no_sync=true` is best when prioritizing high-throughput writes over absolute durability.
- Default behavior (`no_sync=false`): Waits for data to be written to the Object store before acknowledging the write. Reduces the risk of data loss, but increases the latency of the response.
- With `no_sync=true`: Reduces write latency, but increases the risk of data loss in case of a crash before WAL persistence.
##### Immediate write using the HTTP API
The `no_sync` parameter controls when writes are acknowledged--for example:
```sh
curl "http://localhost:8181/api/v3/write_lp?db=sensors&precision=auto&no_sync=true" \
--data-raw "home,room=Sunroom temp=96"
```
##### Immediate write using the influxdb3 CLI
The `no_sync` CLI option controls when writes are acknowledged--for example:
```sh
influxdb3 write --bucket=mydb --org=my_org --token=my-token --no-sync
```
### Create a database or table
To create a database without writing data, use the `create` subcommand--for example:
@ -336,7 +424,7 @@ To learn more about a subcommand, use the `-h, --help` flag:
influxdb3 create -h
```
### Query the database
### Query data
InfluxDB 3 now supports native SQL for querying, in addition to InfluxQL, an SQL-like language customized for time series queries.
@ -733,19 +821,6 @@ influxdb3 enable trigger --database mydb trigger1
For more information, see [Python plugins and the Processing engine](/influxdb3/version/plugins/).
### Diskless architecture
InfluxDB 3 is able to operate using only object storage with no locally attached disk.
While it can use only a disk with no dependencies, the ability to operate without one is a new capability with this release. The figure below illustrates the write path for data landing in the database.
{{< img-hd src="/img/influxdb/influxdb-3-write-path.png" alt="Write Path for InfluxDB 3 Core & Enterprise" />}}
As write requests come in to the server, they are parsed, validated, and put into an in-memory WAL buffer. This buffer is flushed every second by default (can be changed through configuration), which will create a WAL file. Once the data is flushed to disk, it is put into a queryable in-memory buffer and then a response is sent back to the client that the write was successful. That data will now show up in queries to the server.
InfluxDB periodically snapshots the WAL to persist the oldest data in the queryable buffer, allowing the server to remove old WAL files. By default, the server will keep up to 900 WAL files buffered up (15 minutes of data) and attempt to persist the oldest 10 minutes, keeping the most recent 5 minutes around.
When the data is persisted out of the queryable buffer it is put into the configured object store as Parquet files. Those files are also put into an in-memory cache so that queries against the most recently persisted data do not have to go to object storage.
### Multi-server setup
{{% product-name %}} is built to support multi-node setups for high availability, read replicas, and flexible implementations depending on use case.

View File

@ -6,7 +6,7 @@
"license": "MIT",
"resolutions": {
"serialize-javascript": "^6.0.2"
},
},
"devDependencies": {
"@eslint/js": "^9.18.0",
"@evilmartians/lefthook": "^1.7.1",
@ -35,9 +35,9 @@
"scripts": {
"e2e:chrome": "npx cypress run --browser chrome",
"e2e:o": "npx cypress open",
"e2e:o:links": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/,http://localhost:1313/influxdb3/enterprise/\"; npx cypress open cypress/e2e/article-links.cy.js",
"e2e:links": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/,http://localhost:1313/influxdb3/enterprise/\"; npx cypress run --spec cypress/e2e/article-links.cy.js",
"e2e:api-docs": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/api/,http://localhost:1313/influxdb3/enterprise/api/,http://localhost:1313/influxdb3/cloud-dedicated/api/,http://localhost:1313/influxdb3/cloud-dedicated/api/v1/,http://localhost:1313/influxdb/cloud-dedicated/api/v1/,http://localhost:1313/influxdb/cloud-dedicated/api/management/,http://localhost:1313/influxdb3/cloud-dedicated/api/management/\"; npx cypress run --spec cypress/e2e/article-links.cy.js",
"e2e:o:links": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/,http://localhost:1313/influxdb3/enterprise/\"; npx cypress open cypress/e2e/content/article-links.cy.js",
"e2e:links": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/,http://localhost:1313/influxdb3/enterprise/\"; npx cypress run --spec cypress/e2e/content/article-links.cy.js",
"e2e:api-docs": "export cypress_test_subjects=\"http://localhost:1313/influxdb3/core/api/,http://localhost:1313/influxdb3/enterprise/api/,http://localhost:1313/influxdb3/cloud-dedicated/api/,http://localhost:1313/influxdb3/cloud-dedicated/api/v1/,http://localhost:1313/influxdb/cloud-dedicated/api/v1/,http://localhost:1313/influxdb/cloud-dedicated/api/management/,http://localhost:1313/influxdb3/cloud-dedicated/api/management/\"; npx cypress run --spec cypress/e2e/content/article-links.cy.js",
"lint": "LEFTHOOK_EXCLUDE=test lefthook run pre-commit && lefthook run pre-push",
"pre-commit": "lefthook run pre-commit",
"test-content": "docker compose --profile test up"

508
yarn.lock
View File

@ -2,18 +2,18 @@
# yarn lockfile v1
"@antfu/install-pkg@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-0.4.1.tgz#d1d7f3be96ecdb41581629cafe8626d1748c0cf1"
integrity sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==
"@antfu/install-pkg@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.0.0.tgz#2912a150fc8b35ec912f583f90074ee98f64d66a"
integrity sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==
dependencies:
package-manager-detector "^0.2.0"
tinyexec "^0.3.0"
package-manager-detector "^0.2.8"
tinyexec "^0.3.2"
"@antfu/utils@^0.7.10":
version "0.7.10"
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d"
integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
"@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==
"@babel/code-frame@^7.0.0":
version "7.26.2"
@ -77,9 +77,9 @@
integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==
"@cypress/request@^3.0.7":
version "3.0.7"
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.7.tgz#6a74a4da98d9e5ae9121d6e2d9c14780c9b5cf1a"
integrity sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==
version "3.0.8"
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.8.tgz#992f1f42ba03ebb14fa5d97290abe9d015ed0815"
integrity sha512-h0NFgh1mJmm1nr4jCwkGHwKneVYKghUyWe6TMNrk0B9zsjAJxpg8C4/+BAcmLgCPa1vj1V8rNUaILl+zYRUWBQ==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
@ -94,7 +94,7 @@
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
performance-now "^2.1.0"
qs "6.13.1"
qs "6.14.0"
safe-buffer "^5.1.2"
tough-cookie "^5.0.0"
tunnel-agent "^0.6.0"
@ -118,9 +118,9 @@
kuler "^2.0.0"
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.1"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56"
integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==
version "4.5.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.0.tgz#716637f508a8add5814cc64c56e58cce57bdbe93"
integrity sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==
dependencies:
eslint-visitor-keys "^3.4.3"
@ -129,7 +129,7 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
"@eslint/config-array@^0.19.0":
"@eslint/config-array@^0.19.2":
version "0.19.2"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.2.tgz#3060b809e111abfc97adb0bb1172778b90cb46aa"
integrity sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==
@ -138,17 +138,22 @@
debug "^4.3.1"
minimatch "^3.1.2"
"@eslint/core@^0.11.0":
version "0.11.0"
resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.11.0.tgz#7a9226e850922e42cbd2ba71361eacbe74352a12"
integrity sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==
"@eslint/config-helpers@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.1.0.tgz#62f1b7821e9d9ced1b3f512c7ea731825765d1cc"
integrity sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==
"@eslint/core@^0.12.0":
version "0.12.0"
resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.12.0.tgz#5f960c3d57728be9f6c65bd84aa6aa613078798e"
integrity sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==
dependencies:
"@types/json-schema" "^7.0.15"
"@eslint/eslintrc@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c"
integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==
"@eslint/eslintrc@^3.3.0":
version "3.3.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.0.tgz#96a558f45842989cca7ea1ecd785ad5491193846"
integrity sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
@ -160,28 +165,28 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@9.20.0", "@eslint/js@^9.18.0":
version "9.20.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.20.0.tgz#7421bcbe74889fcd65d1be59f00130c289856eb4"
integrity sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==
"@eslint/js@9.22.0", "@eslint/js@^9.18.0":
version "9.22.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.22.0.tgz#4ff53649ded7cbce90b444b494c234137fa1aa3d"
integrity sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==
"@eslint/object-schema@^2.1.6":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
"@eslint/plugin-kit@^0.2.5":
version "0.2.6"
resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz#a30084164a4ced1efb6ec31d3d04f581cb8929c0"
integrity sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA==
"@eslint/plugin-kit@^0.2.7":
version "0.2.7"
resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz#9901d52c136fb8f375906a73dcc382646c3b6a27"
integrity sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==
dependencies:
"@eslint/core" "^0.11.0"
"@eslint/core" "^0.12.0"
levn "^0.4.1"
"@evilmartians/lefthook@^1.7.1":
version "1.10.10"
resolved "https://registry.yarnpkg.com/@evilmartians/lefthook/-/lefthook-1.10.10.tgz#862c80eca5baa664cefb9b970500ea6d7f2d73dc"
integrity sha512-MRIA0zJzUBbmcbecI7QjI08li4ffpmZ6DeVydEiZSg0vSx5mElEMEjDEjkI60eSV0XOm7LRbQKz2rfW6NqH8Cw==
version "1.11.3"
resolved "https://registry.yarnpkg.com/@evilmartians/lefthook/-/lefthook-1.11.3.tgz#95c654b1aeac812efb34cda3d34f38dc3c9c3b25"
integrity sha512-ic3gCgCnm7XQCxGLsnLXU+33J86iFuC5r4JYSWrMXo0rTjGT6EqKKpSDuA0r/1F14VZmdgmvRUTXTBOvXA2UXA==
"@humanfs/core@^0.19.1":
version "0.19.1"
@ -206,7 +211,7 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a"
integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
"@humanwhocodes/retry@^0.4.1":
"@humanwhocodes/retry@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161"
integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==
@ -217,18 +222,18 @@
integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
"@iconify/utils@^2.1.32":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.2.1.tgz#635b9bd8fd3e5e53742471bc0b5291f1570dda41"
integrity sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==
version "2.3.0"
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.3.0.tgz#1bbbf8c477ebe9a7cacaea78b1b7e8937f9cbfba"
integrity sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==
dependencies:
"@antfu/install-pkg" "^0.4.1"
"@antfu/utils" "^0.7.10"
"@antfu/install-pkg" "^1.0.0"
"@antfu/utils" "^8.1.0"
"@iconify/types" "^2.0.0"
debug "^4.4.0"
globals "^15.13.0"
globals "^15.14.0"
kolorist "^1.8.0"
local-pkg "^0.5.1"
mlly "^1.7.3"
local-pkg "^1.0.0"
mlly "^1.7.4"
"@isaacs/cliui@^8.0.2":
version "8.0.2"
@ -523,9 +528,9 @@
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
"@types/node@*":
version "22.13.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.4.tgz#3fe454d77cd4a2d73c214008b3e331bfaaf5038a"
integrity sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==
version "22.13.10"
resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4"
integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==
dependencies:
undici-types "~6.20.0"
@ -562,9 +567,9 @@
"@types/node" "*"
"@vvago/vale@^3.4.2":
version "3.9.5"
resolved "https://registry.yarnpkg.com/@vvago/vale/-/vale-3.9.5.tgz#18114dbc38e90d4abd2fcb6ab88c6400f5a2bb60"
integrity sha512-Ng+Ty/q2L2A8ovxMX6EVt8QPg5/wg1nBgVIzFqpgMmsVPN3rbtq6I8BrKABr4gZW4iEToOIPEGhCJwvNasMfMA==
version "3.9.6"
resolved "https://registry.yarnpkg.com/@vvago/vale/-/vale-3.9.6.tgz#5d21b9fa3d940c40853e7c47968ee70042f8bbef"
integrity sha512-KD48GmGT5dgFWz14bJb154NVRzjiRbnZk8n+Pk824r2Cn78vzLxzB9mGvn0OcOTZXC3IhqyUUo9vZo/V9SGfTw==
dependencies:
axios "^1.4.0"
rimraf "^5.0.0"
@ -577,9 +582,9 @@ acorn-jsx@^5.3.2:
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.14.0:
version "8.14.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
version "8.14.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb"
integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
aggregate-error@^3.0.0:
version "3.1.0"
@ -684,15 +689,15 @@ at-least-node@^1.0.0:
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
autoprefixer@>=10.2.5:
version "10.4.20"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
version "10.4.21"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==
dependencies:
browserslist "^4.23.3"
caniuse-lite "^1.0.30001646"
browserslist "^4.24.4"
caniuse-lite "^1.0.30001702"
fraction.js "^4.3.7"
normalize-range "^0.1.2"
picocolors "^1.0.1"
picocolors "^1.1.1"
postcss-value-parser "^4.2.0"
aws-sign2@~0.7.0:
@ -706,9 +711,9 @@ aws4@^1.8.0:
integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==
axios@^1.4.0, axios@^1.7.4:
version "1.7.9"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a"
integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==
version "1.8.2"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979"
integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
@ -794,7 +799,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
browserslist@^4.23.3:
browserslist@^4.24.4:
version "4.24.4"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
@ -868,7 +873,7 @@ cachedir@^2.3.0:
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d"
integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==
call-bind-apply-helpers@^1.0.1:
call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
@ -877,22 +882,22 @@ call-bind-apply-helpers@^1.0.1:
function-bind "^1.1.2"
call-bound@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681"
integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==
version "1.0.4"
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
dependencies:
call-bind-apply-helpers "^1.0.1"
get-intrinsic "^1.2.6"
call-bind-apply-helpers "^1.0.2"
get-intrinsic "^1.3.0"
callsites@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688:
version "1.0.30001700"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz#26cd429cf09b4fd4e745daf4916039c794d720f6"
integrity sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==
caniuse-lite@^1.0.30001688, caniuse-lite@^1.0.30001702:
version "1.0.30001703"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001703.tgz#977cb4920598c158f491ecf4f4f2cfed9e354718"
integrity sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==
careful-downloader@^3.0.0:
version "3.0.0"
@ -975,10 +980,10 @@ chownr@^2.0.0:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
ci-info@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83"
integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==
ci-info@^4.1.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7"
integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==
clean-stack@^2.0.0:
version "2.2.0"
@ -1113,6 +1118,11 @@ 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:
version "0.2.1"
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.1.tgz#ae39f2c99699afa451d00206479f15f9a1208a8b"
integrity sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==
core-util-is@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -1154,9 +1164,9 @@ crypto-random-string@^4.0.0:
type-fest "^1.0.1"
cypress@^14.0.1:
version "14.0.3"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-14.0.3.tgz#7873d21f61d0559edb9c041316d450cf7ef9d5fa"
integrity sha512-yIdvobANw3kS+KF/t5vwjjPNufBA8ux7iQHaWxPTkUw2yCKI72m9mKM24eOwE84Wk4ALPsSvEcGbDrwgmhr4RA==
version "14.1.0"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-14.1.0.tgz#b2dbe7bbc529dc0c93ffd4e0e9fa59763afba0b8"
integrity sha512-pPPj8Uu9NwjaaiXAEcjYZZmgsq6v9Zs1Nw6a+zRF+ANgYSNhH4S32SjFRsvMcuOHR/8dp4GBJhBPqIPSs+TxaA==
dependencies:
"@cypress/request" "^3.0.7"
"@cypress/xvfb" "^1.2.4"
@ -1169,7 +1179,7 @@ cypress@^14.0.1:
cachedir "^2.3.0"
chalk "^4.1.0"
check-more-types "^2.24.0"
ci-info "^4.0.0"
ci-info "^4.1.0"
cli-cursor "^3.1.0"
cli-table3 "~0.6.1"
commander "^6.2.1"
@ -1217,9 +1227,9 @@ cytoscape-fcose@^2.2.0:
cose-base "^2.2.0"
cytoscape@^3.29.2:
version "3.31.0"
resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.31.0.tgz#cffbbb8ca51db01cbf360e0cf59088db6d429837"
integrity sha512-zDGn1K/tfZwEnoGOcHc0H4XazqAAXAuDpcYw9mUnUjATjqljyCNGJv8uEvbvxGaGHaVshxMecyl6oc6uKzRfbw==
version "3.31.1"
resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.31.1.tgz#29b12cac715fbb2aacc50cdf5cf1467aadde9c00"
integrity sha512-Hx5Mtb1+hnmAKaZZ/7zL1Y5HTFYOjdDswZy/jD+1WINRU8KVi1B7+vlHdsTwY+VCFucTreoyu1RDzQJ9u0d2Hw==
"d3-array@1 - 2":
version "2.12.1"
@ -1655,9 +1665,9 @@ ecc-jsbn@~0.1.1:
safer-buffer "^2.1.0"
electron-to-chromium@^1.5.73:
version "1.5.102"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz#81a452ace8e2c3fa7fba904ea4fed25052c53d3f"
integrity sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==
version "1.5.114"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.114.tgz#f2bb4fda80a7db4ea273565e75b0ebbe19af0ac3"
integrity sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==
emoji-regex@^8.0.0:
version "8.0.0"
@ -1706,7 +1716,7 @@ es-errors@^1.3.0:
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-object-atoms@^1.0.0:
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
@ -1738,10 +1748,10 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-scope@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442"
integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
eslint-scope@^8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d"
integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
@ -1757,20 +1767,21 @@ eslint-visitor-keys@^4.2.0:
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
eslint@^9.18.0:
version "9.20.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.20.1.tgz#923924c078f5226832449bac86662dd7e53c91d6"
integrity sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==
version "9.22.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.22.0.tgz#0760043809fbf836f582140345233984d613c552"
integrity sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.12.1"
"@eslint/config-array" "^0.19.0"
"@eslint/core" "^0.11.0"
"@eslint/eslintrc" "^3.2.0"
"@eslint/js" "9.20.0"
"@eslint/plugin-kit" "^0.2.5"
"@eslint/config-array" "^0.19.2"
"@eslint/config-helpers" "^0.1.0"
"@eslint/core" "^0.12.0"
"@eslint/eslintrc" "^3.3.0"
"@eslint/js" "9.22.0"
"@eslint/plugin-kit" "^0.2.7"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.1"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
"@types/json-schema" "^7.0.15"
ajv "^6.12.4"
@ -1778,7 +1789,7 @@ eslint@^9.18.0:
cross-spawn "^7.0.6"
debug "^4.3.2"
escape-string-regexp "^4.0.0"
eslint-scope "^8.2.0"
eslint-scope "^8.3.0"
eslint-visitor-keys "^4.2.0"
espree "^10.3.0"
esquery "^1.5.0"
@ -1856,6 +1867,11 @@ executable@^4.1.1:
dependencies:
pify "^2.2.0"
exsolve@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.4.tgz#7de5c75af82ecd15998328fbf5f2295883be3a39"
integrity sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@ -1909,9 +1925,9 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
version "1.19.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89"
integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==
version "1.19.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
dependencies:
reusify "^1.0.4"
@ -2003,11 +2019,11 @@ follow-redirects@^1.15.6:
integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
foreground-child@^3.1.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
version "3.3.1"
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f"
integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
dependencies:
cross-spawn "^7.0.0"
cross-spawn "^7.0.6"
signal-exit "^4.0.1"
forever-agent@~0.6.1:
@ -2096,23 +2112,23 @@ get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.2.5, get-intrinsic@^1.2.6:
version "1.2.7"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044"
integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==
get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
dependencies:
call-bind-apply-helpers "^1.0.1"
call-bind-apply-helpers "^1.0.2"
es-define-property "^1.0.1"
es-errors "^1.3.0"
es-object-atoms "^1.0.0"
es-object-atoms "^1.1.1"
function-bind "^1.1.2"
get-proto "^1.0.0"
get-proto "^1.0.1"
gopd "^1.2.0"
has-symbols "^1.1.0"
hasown "^2.0.2"
math-intrinsics "^1.1.0"
get-proto@^1.0.0:
get-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
@ -2214,7 +2230,7 @@ globals@^14.0.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globals@^15.13.0, globals@^15.14.0:
globals@^15.14.0:
version "15.15.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
@ -2233,7 +2249,7 @@ globby@^14.0.0:
gopd@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
got@^12.6.0:
@ -2317,9 +2333,9 @@ http2-wrapper@^2.1.10:
resolve-alpn "^1.2.0"
hugo-extended@>=0.101.0:
version "0.144.1"
resolved "https://registry.yarnpkg.com/hugo-extended/-/hugo-extended-0.144.1.tgz#10e2f319b1e2749914467eb49b8ef121041f1b24"
integrity sha512-SMXTW7uJToyoTaneBX90Epme2Ae1udlY4S+8KPZwD2nk6F6ypu+g9aVsC4jwvo0udTx/f1/xlQ87n5r2XhzRTA==
version "0.145.0"
resolved "https://registry.yarnpkg.com/hugo-extended/-/hugo-extended-0.145.0.tgz#04fe311dc8176a6a7f909faf1c17c4d5b196ae5d"
integrity sha512-ty+vVfBBxc6w9p4vKt1zbtIPLZi+N+3ibCfil18FtNpXuQhN3vwH/1KLNrj59tSZpMJjk12SosyeRHAefgIEXw==
dependencies:
careful-downloader "^3.0.0"
log-symbols "^5.1.0"
@ -2657,71 +2673,71 @@ lazy-ass@^1.6.0:
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==
lefthook-darwin-arm64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.10.10.tgz#48a3eb7935cb171a36a037e61a68c0dc800efc5f"
integrity sha512-hEypKdwWpmNSl4Q8eJxgmlGb2ybJj1+W5/v13Mxc+ApEmjbpNiJzPcdjC9zyaMEpPK4EybiHy8g5ZC0dLOwkpA==
lefthook-darwin-arm64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.11.3.tgz#adb4c44d4f82a07f97e09deca36fb706d51514d5"
integrity sha512-IYzAOf8Qwqk7q+LoRyy7kSk9vzpUZ5wb/vLzEAH/F86Vay9AUaWe1f2pzeLwFg18qEc1QNklT69h9p/uLQMojA==
lefthook-darwin-x64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.10.10.tgz#729f5ddd296f876da703496e5071a735e6cf3625"
integrity sha512-9xNbeE78i4Amz+uOheg9dcy7X/6X12h98SUMrYWk7fONvjW/Bp9h6nPGIGxI5krHp9iRB8rhmo33ljVDVtTlyg==
lefthook-darwin-x64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.11.3.tgz#b77c231371f6f60ddaf097d500a4aae5c374eb80"
integrity sha512-z/Wp7UMjE1Vyl+x9sjN3NvN6qKdwgHl+cDf98MKKDg/WyPE5XnzqLm9rLLJgImjyClfH7ptTfZxEyhTG3M3XvQ==
lefthook-freebsd-arm64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.10.10.tgz#24abbba49d5d6007381883bb122089f4d33f0e48"
integrity sha512-GT9wYxPxkvO1rtIAmctayT9xQIVII5xUIG3Pv6gZo+r6yEyle0EFTLFDbmVje7p7rQNCsvJ8XzCNdnyDrva90g==
lefthook-freebsd-arm64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.11.3.tgz#27665ae8ab91c40a137d2f5a68ba84594988c120"
integrity sha512-QevwQ7lrv5wBCkk7LLTzT5KR3Bk/5nttSxT1UH2o0EsgirS/c2K5xSgQmV6m3CiZYuCe2Pja4BSIwN3zt17SMw==
lefthook-freebsd-x64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.10.10.tgz#e509ab6efe42741a0b8f57e87155f855c701366e"
integrity sha512-2BB/HRhEb9wGpk5K38iNkHtMPnn+TjXDtFG6C/AmUPLXLNhGnNiYp+v2uhUE8quWzxJx7QzfnU7Ga+/gzJcIcw==
lefthook-freebsd-x64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.11.3.tgz#30f5f398af759212dd68b8b5307229d04ce5c26c"
integrity sha512-PYbcyNgdJJ4J2pEO9Ss4oYo5yq4vmQGTKm3RTYbRx4viSWR65hvKCP0C4LnIqspMvmR05SJi2bqe7UBP2t60EA==
lefthook-linux-arm64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.10.10.tgz#1c5c9339f86fa427d311026af92e9f84a89191a1"
integrity sha512-GJ7GALKJ1NcMnNZG9uY+zJR3yS8q7/MgcHFWSJhBl+w4KTiiD/RAdSl5ALwEK2+UX36Eo+7iQA7AXzaRdAii4w==
lefthook-linux-arm64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.11.3.tgz#ac338808e1c560935704473707e7540171170618"
integrity sha512-0pBMBAoafOAEg345eOPozsmRjWR0zCr6k+m5ZxwRBZbZx1bQFDqBakQ3TpFCphhcykmgFyaa1KeZJZUOrEsezA==
lefthook-linux-x64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.10.10.tgz#629f7f91618073ca8d712ff95e4f0e54d839af3c"
integrity sha512-dWUvPM9YTIJ3+X9dB+8iOnzoVHbnNmpscmUqEOKSeizgBrvuuIYKZJGDyjEtw65Qnmn1SJ7ouSaKK93p5c7SkQ==
lefthook-linux-x64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.11.3.tgz#eea29dc603f34822c57f47bd9777bfa0e1ffa223"
integrity sha512-eiezheZ/bisBCMB2Ur0mctug/RDFyu39B5wzoE8y4z0W1yw6jHGrWMJ4Y8+5qKZ7fmdZg+7YPuMHZ2eFxOnhQA==
lefthook-openbsd-arm64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.10.10.tgz#29859c0357f00ba828f73ada56fe709bd108bb15"
integrity sha512-KnwDyxOvbvGSBTbEF/OxkynZRPLowd3mIXUKHtkg3ABcQ4UREalX+Sh0nWU2dNjQbINx7Eh6B42TxNC7h+qXEg==
lefthook-openbsd-arm64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.11.3.tgz#b6eae9109a1a7520392317d635810e43cabe1b89"
integrity sha512-DRLTzXdtCj/TizpLcGSqXcnrqvgxeXgn/6nqzclIGqNdKCsNXDzpI0D3sP13Vwwmyoqv2etoTak2IHqZiXZDqg==
lefthook-openbsd-x64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.10.10.tgz#2ff9cd0ed72f9d5deabdcc84fba4d8e1b6e14c50"
integrity sha512-49nnG886CI3WkrzVJ71D1M2KWpUYN1BP9LMKNzN11cmZ0j6dUK4hj3nbW+NcrKXxgYzzyLU3FFwrc51OVy2eKA==
lefthook-openbsd-x64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.11.3.tgz#4b681975fe17ad9615b92310ca094c4d292aa5ec"
integrity sha512-l7om+ZjWpYrVZyDuElwnucZhEqa7YfwlRaKBenkBxEh2zMje8O6Zodeuma1KmyDbSFvnvEjARo/Ejiot4gLXEw==
lefthook-windows-arm64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.10.10.tgz#6ba521f289909cd1467b4f408f8ef8a1e87d278f"
integrity sha512-9ni0Tsnk+O5oL7EBfKj9C5ZctD1mrTyHCtiu1zQJBbREReJtPjIM9DwWzecfbuVfrIlpbviVQvx5mjZ44bqlWw==
lefthook-windows-arm64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.11.3.tgz#0cf029605d0c2983bf287269b8347aed460561c5"
integrity sha512-X0iTrql2gfPAkU2dzRwuHWgW5RcqCPbzJtKQ41X6Y/F7iQacRknmuYUGyC81funSvzGAsvlusMVLUvaFjIKnbA==
lefthook-windows-x64@1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.10.10.tgz#aac9caca3152df8f288713929c2ec31ee0a10b54"
integrity sha512-gkKWYrlay4iecFfY1Ris5VcRYa0BaNJKMk0qE/wZmIpMgu4GvNg+f9BEwTMflkQIanABduT9lrECaL1lX5ClKw==
lefthook-windows-x64@1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.11.3.tgz#6baac87f6fb36885dea0c360452049dd8d6dad44"
integrity sha512-F+ORMn6YJXoS0EXU5LtN1FgV4QX9rC9LucZEkRmK6sKmS7hcb9IHpyb7siRGytArYzJvXVjPbxPBNSBdN4egZQ==
lefthook@^1.10.10:
version "1.10.10"
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.10.10.tgz#29d0b221429f55d699785ddeeb6fa3c8f9951e6f"
integrity sha512-YW0fTONgOXsephvXq2gIFbegCW19MHCyKYX7JDWmzVF1ZiVMnDBYUL/SP3i0RtFvlCmqENl4SgKwYYQGUMnvig==
version "1.11.3"
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.11.3.tgz#d4c23eade3f9d6c32900c356555ca6380c601513"
integrity sha512-HJp37y62j3j8qzAOODWuUJl4ysLwsDvCTBV6odr3jIRHR/a5e+tI14VQGIBcpK9ysqC3pGWyW5Rp9Jv1YDubyw==
optionalDependencies:
lefthook-darwin-arm64 "1.10.10"
lefthook-darwin-x64 "1.10.10"
lefthook-freebsd-arm64 "1.10.10"
lefthook-freebsd-x64 "1.10.10"
lefthook-linux-arm64 "1.10.10"
lefthook-linux-x64 "1.10.10"
lefthook-openbsd-arm64 "1.10.10"
lefthook-openbsd-x64 "1.10.10"
lefthook-windows-arm64 "1.10.10"
lefthook-windows-x64 "1.10.10"
lefthook-darwin-arm64 "1.11.3"
lefthook-darwin-x64 "1.11.3"
lefthook-freebsd-arm64 "1.11.3"
lefthook-freebsd-x64 "1.11.3"
lefthook-linux-arm64 "1.11.3"
lefthook-linux-x64 "1.11.3"
lefthook-openbsd-arm64 "1.11.3"
lefthook-openbsd-x64 "1.11.3"
lefthook-windows-arm64 "1.11.3"
lefthook-windows-x64 "1.11.3"
levn@^0.4.1:
version "0.4.1"
@ -2760,13 +2776,14 @@ listr2@^3.8.3:
through "^2.3.8"
wrap-ansi "^7.0.0"
local-pkg@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.1.tgz#69658638d2a95287534d4c2fff757980100dbb6d"
integrity sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==
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==
dependencies:
mlly "^1.7.3"
pkg-types "^1.2.1"
mlly "^1.7.4"
pkg-types "^2.0.1"
quansync "^0.2.8"
locate-path@^6.0.0:
version "6.0.0"
@ -3006,7 +3023,7 @@ mkdirp@^1.0.3:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mlly@^1.7.3, mlly@^1.7.4:
mlly@^1.7.4:
version "1.7.4"
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f"
integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==
@ -3027,9 +3044,9 @@ ms@^2.1.1, ms@^2.1.3:
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
nanoid@^3.3.8:
version "3.3.8"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
version "3.3.9"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.9.tgz#e0097d8e026b3343ff053e9ccd407360a03f503a"
integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==
natural-compare@^1.4.0:
version "1.4.0"
@ -3183,10 +3200,12 @@ package-json-from-dist@^1.0.0:
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
package-manager-detector@^0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-0.2.9.tgz#20990785afa69d38b4520ccc83b34e9f69cb970f"
integrity sha512-+vYvA/Y31l8Zk8dwxHhL3JfTuHPm6tlxM2A3GeQyl7ovYnSp1+mzAxClxaOr0qO1TtPxbQxetI7v5XqKLJZk7Q==
package-manager-detector@^0.2.8:
version "0.2.11"
resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-0.2.11.tgz#3af0b34f99d86d24af0a0620603d2e1180d05c9c"
integrity sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==
dependencies:
quansync "^0.2.7"
parent-module@^1.0.0:
version "1.0.1"
@ -3243,10 +3262,10 @@ path-type@^6.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-6.0.0.tgz#2f1bb6791a91ce99194caede5d6c5920ed81eb51"
integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==
pathe@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.2.tgz#5ed86644376915b3c7ee4d00ac8c348d671da3a5"
integrity sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==
pathe@^2.0.1, pathe@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
pend@~1.2.0:
version "1.2.0"
@ -3258,7 +3277,7 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1:
picocolors@^1.0.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@ -3290,7 +3309,7 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
pkg-types@^1.2.1, pkg-types@^1.3.0:
pkg-types@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df"
integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==
@ -3299,6 +3318,15 @@ pkg-types@^1.2.1, 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==
dependencies:
confbox "^0.2.1"
exsolve "^1.0.1"
pathe "^2.0.3"
points-on-curve@0.2.0, points-on-curve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1"
@ -3376,9 +3404,9 @@ prettier-plugin-sql@^0.18.0:
tslib "^2.6.2"
prettier@^3.2.5:
version "3.5.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.1.tgz#22fac9d0b18c0b92055ac8fb619ac1c7bef02fb7"
integrity sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==
version "3.5.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
pretty-bytes@^5.6.0:
version "5.6.0"
@ -3423,12 +3451,17 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
qs@6.13.1:
version "6.13.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e"
integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==
qs@6.14.0:
version "6.14.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
dependencies:
side-channel "^1.0.6"
side-channel "^1.1.0"
quansync@^0.2.7, quansync@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.8.tgz#2e893d17bb754ba0988ea399ff0bc5f2a8467793"
integrity sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==
queue-microtask@^1.2.2:
version "1.2.3"
@ -3558,9 +3591,9 @@ ret@~0.1.10:
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
version "1.1.0"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f"
integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
rfdc@^1.3.0:
version "1.4.1"
@ -3609,9 +3642,9 @@ rw@1:
integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==
rxjs@^7.5.1:
version "7.8.1"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
version "7.8.2"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
dependencies:
tslib "^2.1.0"
@ -3642,16 +3675,11 @@ seek-bzip@^1.0.5:
dependencies:
commander "^2.8.1"
semver@^7.3.4:
semver@^7.3.4, semver@^7.5.3:
version "7.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
semver@^7.5.3:
version "7.7.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.0.tgz#9c6fe61d0c6f9fa9e26575162ee5a9180361b09c"
integrity sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==
serialize-javascript@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
@ -3705,7 +3733,7 @@ side-channel-weakmap@^1.0.2:
object-inspect "^1.13.3"
side-channel-map "^1.0.1"
side-channel@^1.0.6:
side-channel@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
@ -3788,9 +3816,9 @@ spdx-license-ids@^3.0.0:
integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==
sql-formatter@^15.0.2:
version "15.4.10"
resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-15.4.10.tgz#f7f4745aa1b9fc3c8ce493bf882610ca6200dedf"
integrity sha512-zQfiuxU1F/C7TNu+880BdL+fuvJTd1Kj8R0wv48dfZ27NR3z1PWvQFkH8ai/HrIy+NyvXCaZBkJHp/EeZFXSOA==
version "15.4.11"
resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-15.4.11.tgz#10a8205aa82d60507811360d4735e81d4a21c137"
integrity sha512-AfIjH0mYxv0NVzs4mbcGIAcos2Si20LeF9GMk0VmVA4A3gs1PFIixVu3rtcz34ls7ghPAjrDb+XbRly/aF6HAg==
dependencies:
argparse "^2.0.1"
get-stdin "=8.0.0"
@ -3974,22 +4002,22 @@ through@^2.3.8:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
tinyexec@^0.3.0:
tinyexec@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.2.tgz#941794e657a85e496577995c6eef66f53f42b3d2"
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
tldts-core@^6.1.77:
version "6.1.77"
resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.77.tgz#0fa4563163a7a61d72c4b05650fb66fc7e815500"
integrity sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==
tldts-core@^6.1.84:
version "6.1.84"
resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.84.tgz#f8ac2af9969bf9c2f7a99fa05d9c667b5e5b768c"
integrity sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==
tldts@^6.1.32:
version "6.1.77"
resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.77.tgz#714e3d1989e562886f2ed97b65e95a8e9f9e92d9"
integrity sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==
version "6.1.84"
resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.84.tgz#fb58b1ceb70972a1ecd683606cea3d06c78f7238"
integrity sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==
dependencies:
tldts-core "^6.1.77"
tldts-core "^6.1.84"
tmp@~0.2.3:
version "0.2.3"
@ -4009,9 +4037,9 @@ to-regex-range@^5.0.1:
is-number "^7.0.0"
tough-cookie@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.1.tgz#4641c1fdbf024927e29c5532edb7b6e5377ea1f2"
integrity sha512-Ek7HndSVkp10hmHP9V4qZO1u+pn1RU5sI0Fw+jCU3lyvuMZcgqsNgc6CmJJZyByK4Vm/qotGRJlfgAX8q+4JiA==
version "5.1.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7"
integrity sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==
dependencies:
tldts "^6.1.32"
@ -4131,9 +4159,9 @@ unzipper@^0.10.14:
setimmediate "~1.0.4"
update-browserslist-db@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz#97e9c96ab0ae7bcac08e9ae5151d26e6bc6b5580"
integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==
version "1.1.3"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@ -4348,6 +4376,6 @@ yocto-queue@^0.1.0:
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
yocto-queue@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110"
integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==
version "1.2.0"
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.0.tgz#4a29a93e7591328fa31768701e6ea66962401f79"
integrity sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==