docs(clustered): initial license onboarding guide (#5508)

* docs(clustered): initial license onboarding guide

* refactor: run `deno fmt`

* fix(clustered): make room for documents in between existing ones

* fix(clustered): introduce sensible deterministic order for reference documents

* refactor: separate license installation from license reference

* fix: markdown typo, confusing verbiage

* Licensing content and structure updates (#5520)

* WIP licensing content

* changes to licensing content and structure

* Update content/influxdb/clustered/admin/licensing.md

Co-authored-by: Jennifer Moore <mail@jenniferplusplus.com>

* updated TOC link to license recovery section

* Apply suggestions from code review

Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* updated license recovery content

---------

Co-authored-by: Jennifer Moore <mail@jenniferplusplus.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>

* ported edits to new feature branch

---------

Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com>
Co-authored-by: wayne warren <wayne.warren.s@gmail.com>
Co-authored-by: Scott Anderson <scott@influxdata.com>
Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com>
pull/5517/head^2
Jennifer Moore 2024-07-11 18:03:38 -05:00 committed by GitHub
parent 91714261a9
commit 59d8958ebc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 347 additions and 68 deletions

View File

@ -9,7 +9,7 @@ description: >
menu:
influxdb_clustered:
parent: Administer InfluxDB Clustered
weight: 101
weight: 102
influxdb/clustered/tags: [databases]
---

View File

@ -0,0 +1,169 @@
---
title: Manage your InfluxDB Clustered license
description: >
Install and manage your InfluxDB Clustered license to authorize the use of
the InfluxDB Clustered software.
menu:
influxdb_clustered:
parent: Administer InfluxDB Clustered
name: Manage your license
weight: 101
influxdb/clustered/tags: [licensing]
related:
- /influxdb/clustered/install/licensing/
- /influxdb/clustered/admin/upgrade/
---
Install and manage your InfluxDB Clustered license to authorize the use of
the InfluxDB Clustered software.
- [Install your InfluxDB license](#install-your-influxdb-license)
- [Recover from a license misconfiguration](#recover-from-a-license-misconfiguration)
- [Renew your license](#renew-your-license)
- [License enforcement](#license-enforcement)
- [A valid license is required](#a-valid-license-is-required)
- [Periodic license checks](#periodic-license-checks)
- [License grace periods](#license-grace-periods)
- [License expiry logs](#license-expiry-logs)
- [Query brownout](#query-brownout)
{{% note %}}
#### License enforcement is currently an opt-in feature
In currently available versions of InfluxDB Clustered, license enforcement is an
opt-in feature that allows InfluxData to introduce license enforcement to
customers, and allows customers to deactivate the feature if issues arise.
In the future, all releases of InfluxDB Clustered will require customers to
configure an active license before they can use the product.
To opt into license enforcement, include the `useLicensedBinaries` feature flag
in your `AppInstance` resource _([See the example below](#enable-feature-flag))_.
To deactivate license enforcement, remove the `useLicensedBinaries` feature flag.
{{% /note %}}
## Install your InfluxDB license
{{% note %}}
If setting up an InfluxDB Clustered deployment for the first time, first
[set up the prerequisites](/influxdb/clustered/install/licensing/) and
[configure your cluster](/influxdb/clustered/install/configure-cluster/).
After your InfluxDB namespace is created and prepared, you will be able to
install your license.
{{% /note %}}
1. If you haven't already,
[request an InfluxDB Clustered license](https://influxdata.com/contact-sales).
2. InfluxData provides you with a `license.yml` file that encapsulates your
license token as a custom Kubernetes resource.
3. Use `kubectl` to apply and create the `License` resource in your InfluxDB
namespace:
```sh
kubectl apply --filename license.yml --namespace influxdb
```
4. <span id="enable-feature-flag"></span>
Update your `AppInstance` resource to include the `useLicensedBinaries` feature flag.
Add the `useLicensedBinaries` entry to the `.spec.package.spec.featureFlags`
property--for example:
```yml
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
spec:
featureFlags:
- useLicensedBinaries
```
InfluxDB Clustered detects the `License` resource and extracts the credentials
into a secret required by InfluxDB Clustered Kubernetes pods.
Pods validate the license secret both at startup and periodically (roughly once
per hour) while running.
## Recover from a license misconfiguration
If you deploy a licensed release of InfluxDB Clustered without an invalid or
expired license, many of the pods in your cluster will crash on startup and will
likely enter a `CrashLoopBackoff` state without ever running or becoming healthy.
Because the license is stored in a volume-mounted Kubernetes secret, invalid
licenses affect both old and new pods.
Once a valid `License` resource is applied, new pods will begin to start up normally.
Licenses are validated when the `License` resource is applied. If the license
is invalid when you attempt to apply it, the InfluxDB clustered license
controller will not add or update the required secret.
## Renew your license
In advance of your license expiration, your InfluxData sales representative will
contact you regarding license renewal.
You may also contact your sales representative at any time.
---
## License enforcement
InfluxDB Clustered authorizes use of InfluxDB software through licenses issued
by InfluxData. The following sections provide information about InfluxDB Clustered
license enforcement.
### A valid license is required
_When you include the `useLicensedBinaries` feature flag_,
Kubernetes pods running in your InfluxDB cluster must have a valid `License`
resource to run. Licenses are issued by InfluxData. If there is no `License`
resource installed in your cluster, one of two things may happen:
- Pods may become stuck in a `ContainerCreating` state if the cluster has
never had a valid `License` resource installed.
- If an expired or invalid license is installed in the cluster, pods will become
stuck in a `CrashLoopBackoff` state.
Pod containers will attempt to start, detect the invalid license condition,
print an error message, and then exit with a non-zero exit code.
### Periodic license checks
During normal operation, pods in your InfluxDB cluster check for a valid license
once per hour. You may see messages in your pod logs related to this behavior.
### License grace periods
When InfluxData issues a license, it is configured with two expiry dates.
The first is the expiry date of the contractual license. The second is a hard
expiry of the license credentials, after which pods in your cluster will begin
crash-looping until a new, valid license is installed in the cluster.
The period of time between the contractual license expiry and the hard license
expiry is considered the _grace period_. The standard grace period is 90 days,
but this may be negotiated as needed with your InfluxData sales representative.
#### License expiry logs
The following table outlines license expiry logging behavior to show when the log
messages begin, the level (`Warn` or `Error`), and the periodicity at which they
repeat.
| Starts at | Log level | Log periodicity |
| :-------------------- | :-------- | :-------------- |
| 1 month before expiry | Warn | 1 msg per hour |
| 1 week before expiry | Warn | 1 msg per 5 min |
| At expiry | Error | 1 msg per 5 min |
#### Query brownout
Starting one month after your contractual license expiry, the InfluxDB
[Querier](/influxdb/clustered/reference/internals/storage-engine/#querier)
begins "browning out" requests. Brownouts return
`FailedPrecondition` response codes to queries for a portion of every hour.
| Starts at | Brownout coverage |
| :------------------- | :----------------- |
| 7 days after expiry | 5 minutes per hour |
| 1 month after expiry | 100% of queries |
**Brownouts only occur after the license has contractually expired**.
Also, they **only impact query operations**--no other operations (writes,
compaction, garbage collection, etc) are affected.

View File

@ -8,7 +8,7 @@ description: >
menu:
influxdb_clustered:
parent: Administer InfluxDB Clustered
weight: 101
weight: 102
influxdb/clustered/tags: [tables]
---

View File

@ -8,7 +8,7 @@ description: >
menu:
influxdb_clustered:
parent: Administer InfluxDB Clustered
weight: 101
weight: 102
influxdb/clustered/tags: [tokens]
---

View File

@ -6,7 +6,7 @@ menu:
influxdb_clustered:
name: Set up authentication
parent: Install InfluxDB Clustered
weight: 102
weight: 120
---
Administrative access to your InfluxDB cluster is managed through your identity

View File

@ -7,7 +7,7 @@ menu:
influxdb_clustered:
name: Configure your cluster
parent: Install InfluxDB Clustered
weight: 103
weight: 130
related:
- /influxdb/clustered/admin/upgrade/
---
@ -876,4 +876,4 @@ be last in the bundle.
name: custom-ca
```
{{< page-nav prev="/influxdb/clustered/install/auth/" prevText="Set up authentication" next="/influxdb/clustered/install/deploy/" nextText="Deploy your cluster" >}}
{{< page-nav prev="/influxdb/clustered/install/auth/" prevText="Set up authentication" next="/influxdb/clustered/install/licensing/" nextText="Install your license" >}}

View File

@ -6,9 +6,10 @@ menu:
influxdb_clustered:
name: Deploy your cluster
parent: Install InfluxDB Clustered
weight: 104
weight: 140
related:
- /influxdb/clustered/admin/upgrade/
- /influxdb/clustered/install/licensing/
---
Use Kubernetes and related tools to deploy your InfluxDB cluster.
@ -172,4 +173,4 @@ influxdb iox-shared-querier-7f5998b9b-fpt62 4/4 Running 1 (6
influxdb kubit-apply-influxdb-g6qpx 0/1 Completed 0 8s
```
{{< page-nav prev="/influxdb/clustered/install/configure-cluster/" prevText="Configure your cluster" next="/influxdb/clustered/install/use-your-cluster/" nextText="Use your cluster" >}}
{{< page-nav prev="/influxdb/clustered/install/licensing/" prevText="Install your license" next="/influxdb/clustered/install/use-your-cluster/" nextText="Use your cluster" >}}

View File

@ -0,0 +1,104 @@
---
title: Install your InfluxDB Clustered license
description: >
Install your InfluxDB Clustered license to authorize the use of the InfluxDB
Clustered software.
menu:
influxdb_clustered:
name: Install your License
parent: Install InfluxDB Clustered
weight: 135
influxdb/clustered/tags: [licensing]
related:
- /influxdb/clustered/admin/licensing/
- /influxdb/clustered/admin/upgrade/
---
Install your InfluxDB Clustered license in your cluster to authorize the use
of the InfluxDB Clustered software.
{{% note %}}
#### License enforcement is currently an opt-in feature
In currently available versions of InfluxDB Clustered, license enforcement is an
opt-in feature that allows InfluxData to introduce license enforcement to
customers, and allows customers to deactivate the feature if issues arise.
In the future, all releases of InfluxDB Clustered will require customers to
configure an active license before they can use the product.
To opt into license enforcement, include the `useLicensedBinaries` feature flag
in your `AppInstance` resource _([See the example below](#enable-feature-flag))_.
To deactivate license enforcement, remove the `useLicensedBinaries` feature flag.
{{% /note %}}
## Install your InfluxDB license
1. If you haven't already,
[request an InfluxDB Clustered license](https://influxdata.com/contact-sales).
2. InfluxData provides you with a `license.yml` file that encapsulates your
license token as a custom Kubernetes resource.
3. Use `kubectl` to apply and create the `License` resource in your InfluxDB
namespace:
```sh
kubectl apply --filename license.yml --namespace influxdb
```
4. <span id="enable-feature-flag"></span>
Update your `AppInstance` resource to enable the `useLicensedBinaries` feature flag.
Add the `useLicensedBinaries` entry to the `.spec.package.spec.featureFlags`
property--for example:
```yml
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
spec:
featureFlags:
- useLicensedBinaries
```
InfluxDB Clustered detects the `License` resource and extracts the credentials
into a secret required by InfluxDB Clustered Kubernetes pods.
Pods validate the license secret both at startup and periodically (roughly once
per hour) while running.
## Upgrade from a non-licensed release
If you are currently using a non-licensed preview release of InfluxDB Clustered
and want to upgrade to a licensed release, do the following:
1. [Install an InfluxDB license](#install-your-influxdb-license)
2. In your `myinfluxdb.yml`, update the package version defined in
`spec.package.image` to use a licensed release.
{{% warn %}}
#### Upgrade to checkpoint releases first
When upgrading InfluxDB Clustered, always upgrade to each
[checkpoint release](/influxdb/clustered/admin/upgrade/#checkpoint-releases)
first, before proceeding to newer versions.
Upgrading past a checkpoint release without first upgrading to it may result in
corrupt or lost data.
{{% /warn %}}
{{% code-placeholders "PACKAGE_VERSION" %}}
```yml
apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
package:
# ...
image: us-docker.pkg.dev/influxdb2-artifacts/clustered/influxdb:PACKAGE_VERSION
```
{{% /code-placeholders %}}
Replace {{% code-placeholder-key %}}`PACKAGE_VERSION`{{% /code-placeholder-key %}} with
the version number to upgrade to.
{{< page-nav prev="/influxdb/clustered/install/configure-cluster/" prevText="Configure your cluster" next="/influxdb/clustered/install/deploy/" nextText="Deploy your cluster" >}}

View File

@ -8,7 +8,7 @@ menu:
influxdb_clustered:
name: Prerequisites
parent: Install InfluxDB Clustered
weight: 101
weight: 110
---
InfluxDB Clustered requires the following prerequisites:

View File

@ -6,7 +6,7 @@ menu:
influxdb_clustered:
name: Use your cluster
parent: Install InfluxDB Clustered
weight: 105
weight: 150
---
Now that your InfluxDB cluster is deployed, you can use and test it.

View File

@ -173,7 +173,7 @@ tar -czf "${DATETIME}-cluster-info.tar.gz" "${DATETIME}-cluster-info/"
#### Query analysis
**Outputs (InfluxQl):**
**Outputs (InfluxQL):**
- `explain.csv`
- `explain-verbose.csv`

View File

@ -8,7 +8,7 @@ menu:
influxdb_clustered:
parent: Reference
name: InfluxDB HTTP API
weight: 104
weight: 127
influxdb/clustered/tags: [api]
---

View File

@ -9,7 +9,7 @@ menu:
influxdb_clustered:
parent: Reference
name: CLIs
weight: 104
weight: 120
---
InfluxDB provides command line tools designed to manage and work with your

View File

@ -4,7 +4,7 @@ description: >
InfluxDB client libraries are language-specific tools that integrate with InfluxDB APIs.
View the list of available client libraries.
list_title: API client libraries
weight: 105
weight: 125
aliases:
- /influxdb/clustered/reference/api/client-libraries/
- /influxdb/clustered/tools/client-libraries/

View File

@ -2,7 +2,7 @@
title: Glossary
description: >
Terms related to InfluxData products and platforms.
weight: 109
weight: 180
menu:
influxdb_clustered:
parent: Reference

View File

@ -7,7 +7,7 @@ menu:
parent: Reference
name: InfluxQL reference
identifier: influxql-reference
weight: 102
weight: 143
---
InfluxQL (Influx Query Language) is an SQL-like query language used to interact

View File

@ -5,7 +5,7 @@ description: >
menu:
influxdb_clustered:
parent: Reference
weight: 108
weight: 130
---
{{< children >}}
{{< children >}}

View File

@ -7,7 +7,7 @@ menu:
influxdb_clustered:
name: Release notes
parent: Reference
weight: 101
weight: 190
---
View release notes and updates for products and tools related to

View File

@ -8,7 +8,7 @@ menu:
influxdb_clustered:
name: Sample data
parent: Reference
weight: 110
weight: 182
---
Sample datasets are used throughout the {{< product-name >}} documentation to

View File

@ -6,7 +6,7 @@ menu:
influxdb_clustered:
name: SQL reference
parent: Reference
weight: 101
weight: 141
related:
- /influxdb/clustered/reference/internals/arrow-flightsql/
---

View File

@ -3,7 +3,7 @@ title: Other InfluxDB syntaxes
description: >
InfluxDB uses a handful of languages and syntaxes to perform tasks such as
writing, querying, and processing data.
weight: 105
weight: 145
menu:
influxdb_clustered:
name: Other syntaxes

View File

@ -45,7 +45,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@ -236,7 +236,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
browserslist@^4.23.0:
browserslist@^4.23.0, "browserslist@>= 4.21.0":
version "4.23.0"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
@ -401,16 +401,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
colorette@^2.0.20:
version "2.0.20"
resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
@ -543,7 +543,7 @@ dependency-graph@^0.11.0:
discontinuous-range@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a"
resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz"
integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==
duplexer2@~0.1.4:
@ -765,16 +765,16 @@ get-east-asian-width@^1.0.0:
resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz"
integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==
get-stdin@=8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
get-stdin@^9.0.0:
version "9.0.0"
resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz"
integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
get-stdin@=8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz"
integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
get-stream@^2.2.0:
version "2.3.1"
resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz"
@ -926,7 +926,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@~2.0.0, inherits@~2.0.3:
inherits@~2.0.0, inherits@~2.0.3, inherits@2:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@ -1061,7 +1061,7 @@ jsonfile@^6.0.1:
jsox@^1.2.118:
version "1.2.119"
resolved "https://registry.yarnpkg.com/jsox/-/jsox-1.2.119.tgz#decc12b6d3948d89460da6c5e144ee76c1d054ce"
resolved "https://registry.npmjs.org/jsox/-/jsox-1.2.119.tgz"
integrity sha512-f37obwxWKKuylcaOzNlUlzfDvURSCpqTXs8yEivhvsp86D/DTIySxP4v5Qdlg24qCuzDSZ0mJr3krc/f7TZ/5A==
keyv@^4.5.3:
@ -1240,12 +1240,17 @@ minipass@^3.0.0:
dependencies:
yallist "^4.0.0"
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
version "7.1.2"
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minipass@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
@ -1258,6 +1263,11 @@ minizlib@^2.1.1:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
"mkdirp@>=0.5 0":
version "0.5.6"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
@ -1265,14 +1275,9 @@ minizlib@^2.1.1:
dependencies:
minimist "^1.2.6"
mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
moo@^0.5.0:
version "0.5.2"
resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c"
resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz"
integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==
ms@2.1.2:
@ -1287,7 +1292,7 @@ nanoid@^3.3.7:
nearley@^2.20.1:
version "2.20.1"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474"
resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz"
integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==
dependencies:
commander "^2.19.0"
@ -1302,7 +1307,7 @@ node-releases@^2.0.14:
node-sql-parser@^4.12.0:
version "4.18.0"
resolved "https://registry.yarnpkg.com/node-sql-parser/-/node-sql-parser-4.18.0.tgz#516b6e633c55c5abbba1ca588ab372db81ae9318"
resolved "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.18.0.tgz"
integrity sha512-2YEOR5qlI1zUFbGMLKNfsrR5JUvFg9LxIRVE+xJe962pfVLH0rnItqLzv96XVs1Y1UIR8FxsXAuvX/lYAWZ2BQ==
dependencies:
big-integer "^1.6.48"
@ -1508,7 +1513,7 @@ postcss-value-parser@^4.2.0:
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
postcss@>=8.4.31:
postcss@^8.0.0, postcss@^8.1.0, postcss@>=8.0.9, postcss@>=8.4.31:
version "8.4.38"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@ -1519,7 +1524,7 @@ postcss@>=8.4.31:
prettier-plugin-sql@^0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/prettier-plugin-sql/-/prettier-plugin-sql-0.18.0.tgz#b30fdccf5da714b22233828d1f3536980faef485"
resolved "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.18.0.tgz"
integrity sha512-E7WXooLNtWyv79sYYHtQbfvXZ5B/OOR0ySBsB2evfrfvD4wJos1OKLBvVLC/a7+7YpG30bSUTgc2DEwz8ctPmQ==
dependencies:
jsox "^1.2.118"
@ -1527,7 +1532,7 @@ prettier-plugin-sql@^0.18.0:
sql-formatter "^15.0.2"
tslib "^2.6.2"
prettier@^3.2.5:
prettier@^3.0.3, prettier@^3.2.5:
version "3.2.5"
resolved "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz"
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
@ -1559,12 +1564,12 @@ quick-lru@^5.1.1:
railroad-diagrams@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz"
integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==
randexp@0.4.6:
version "0.4.6"
resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz"
integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==
dependencies:
discontinuous-range "1.0.0"
@ -1643,7 +1648,7 @@ restore-cursor@^4.0.0:
ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
reusify@^1.0.4:
@ -1656,13 +1661,6 @@ rfdc@^1.3.1:
resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz"
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
rimraf@2:
version "2.7.1"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
rimraf@^5.0.0:
version "5.0.7"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz"
@ -1670,6 +1668,13 @@ rimraf@^5.0.0:
dependencies:
glob "^10.3.7"
rimraf@2:
version "2.7.1"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
@ -1780,13 +1785,20 @@ spdx-license-ids@^3.0.0:
sql-formatter@^15.0.2:
version "15.3.2"
resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-15.3.2.tgz#696fb84c3ce6d368b0d16248a605aa0e7a41751e"
resolved "https://registry.npmjs.org/sql-formatter/-/sql-formatter-15.3.2.tgz"
integrity sha512-pNxSMf5DtwhpZ8gUcOGCGZIWtCcyAUx9oLgAtlO4ag7DvlfnETL0BGqXaISc84pNrXvTWmt8Wal1FWKxdTsL3Q==
dependencies:
argparse "^2.0.1"
get-stdin "=8.0.0"
nearley "^2.20.1"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
string-argv@~0.3.2:
version "0.3.2"
resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz"
@ -1828,13 +1840,6 @@ string-width@^7.0.0:
get-east-asian-width "^1.0.0"
strip-ansi "^7.1.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
dependencies:
safe-buffer "~5.1.0"
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
@ -1944,7 +1949,7 @@ to-regex-range@^5.0.1:
tslib@^2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz"
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
type-fest@^1.0.1: